diff --git a/.github/workflows/comprehensive-ci-test.yml b/.github/workflows/comprehensive-ci-test.yml new file mode 100644 index 000000000..a6e1247eb --- /dev/null +++ b/.github/workflows/comprehensive-ci-test.yml @@ -0,0 +1,356 @@ +name: Comprehensive CI Testing + +on: + workflow_dispatch: + pull_request: + branches: + - uhi7 + - main + - feat/** + push: + branches: + - ci/test-comprehensive-workflow + +env: + FOUNDRY_PROFILE: ci + OPTIMISM_RPC_URL: ${{ secrets.OPTIMISM_RPC_URL }} + +jobs: + # Cross-Branch Compliance Testing + compliance-check: + name: Compliance Check - Cross Branch + runs-on: ubuntu-latest + steps: + - name: Checkout current branch + uses: actions/checkout@v4 + with: + fetch-depth: 0 + ref: ${{ github.head_ref || github.ref_name }} + + - name: Checkout uhi7 branch + run: | + git fetch origin uhi7:uhi7 + git checkout uhi7 + + - name: Checkout main branch + run: | + git fetch origin main:main + git checkout main + + - name: Checkout other feature branches + run: | + git fetch origin feat/create-protocol:feat/create-protocol + git fetch origin feat/create-pool:feat/create-pool + git fetch origin feat/master-hook:feat/master-hook + + - name: Compare CI workflows across branches + run: | + echo "## CI Workflow Comparison Results" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + + CURRENT_BRANCH="${{ github.head_ref || github.ref_name }}" + git checkout $CURRENT_BRANCH + + echo "### Current Branch: $CURRENT_BRANCH" >> $GITHUB_STEP_SUMMARY + + # Check if .github/workflows exists + if [ -d ".github/workflows" ]; then + echo "✅ Workflows directory exists" >> $GITHUB_STEP_SUMMARY + ls -la .github/workflows/ >> $GITHUB_STEP_SUMMARY + else + echo "❌ Workflows directory missing" >> $GITHUB_STEP_SUMMARY + fi + + # Compare with uhi7 + echo "### Comparison with uhi7" >> $GITHUB_STEP_SUMMARY + git checkout uhi7 + if [ -d ".github/workflows" ]; then + echo "✅ uhi7 has workflows" >> $GITHUB_STEP_SUMMARY + else + echo "❌ uhi7 missing workflows" >> $GITHUB_STEP_SUMMARY + fi + + # Compare with main + echo "### Comparison with main" >> $GITHUB_STEP_SUMMARY + git checkout main + if [ -d ".github/workflows" ]; then + echo "✅ main has workflows" >> $GITHUB_STEP_SUMMARY + else + echo "❌ main missing workflows" >> $GITHUB_STEP_SUMMARY + fi + + git checkout $CURRENT_BRANCH + + - name: Generate compliance report + run: | + mkdir -p ci-testing + echo "# Compliance Check Report" > ci-testing/compliance-report.md + echo "Generated: $(date)" >> ci-testing/compliance-report.md + echo "" >> ci-testing/compliance-report.md + echo "## Branch Comparison" >> ci-testing/compliance-report.md + echo "- Current branch: ${{ github.head_ref || github.ref_name }}" >> ci-testing/compliance-report.md + echo "- Base branch: uhi7" >> ci-testing/compliance-report.md + echo "- Main branch: main" >> ci-testing/compliance-report.md + + - name: Upload compliance report + uses: actions/upload-artifact@v4 + with: + name: compliance-report + path: ci-testing/compliance-report.md + + # Contracts CI Testing + contracts-ci: + name: Contracts CI + runs-on: ubuntu-latest + defaults: + run: + working-directory: contracts + steps: + - uses: actions/checkout@v4 + + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@v1 + + - name: Build contracts + run: | + forge --version + forge install + forge build --sizes + + - name: Run tests + run: | + forge install > /dev/null + forge test + + - name: Run coverage + run: | + forge install > /dev/null + forge coverage --report summary --report lcov || true + + - name: Check formatting + run: forge fmt --check || true + + # Client2 CI Testing + client2-ci: + name: Client2 CI + runs-on: ubuntu-latest + defaults: + run: + working-directory: client2 + steps: + - uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + cache: 'npm' + cache-dependency-path: client2/package-lock.json + + - name: Install dependencies + run: npm ci + + - name: Build verification + run: npm run build || echo "Build step not configured" + + - name: TypeScript type check + run: npx tsc --noEmit || echo "TypeScript check not configured" + + # Indexer CI Testing + indexer-ci: + name: Indexer CI + runs-on: ubuntu-latest + defaults: + run: + working-directory: indexer + steps: + - uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + cache: 'npm' + cache-dependency-path: indexer/package-lock.json + + - name: Install dependencies + run: npm ci + + - name: TypeScript compilation + run: npm run build + + - name: TypeScript type check + run: npx tsc --noEmit + + - name: Validate squid.yaml + run: | + if [ -f squid.yaml ]; then + echo "✅ squid.yaml exists" + # Basic YAML validation + python3 -c "import yaml; yaml.safe_load(open('squid.yaml'))" || echo "⚠️ YAML validation skipped" + else + echo "❌ squid.yaml missing" + exit 1 + fi + + - name: Validate GraphQL schema + run: | + if [ -f schema.graphql ]; then + echo "✅ schema.graphql exists" + else + echo "❌ schema.graphql missing" + exit 1 + fi + + # Security Scanning + security-scan: + name: Security Scan + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Check .gitignore for .env + run: | + echo "## .gitignore Security Check" >> $GITHUB_STEP_SUMMARY + if grep -q "\.env" .gitignore; then + echo "✅ .env is in .gitignore" >> $GITHUB_STEP_SUMMARY + else + echo "❌ .env NOT in .gitignore" >> $GITHUB_STEP_SUMMARY + exit 1 + fi + + - name: Scan for .env files + run: | + echo "## .env File Scan" >> $GITHUB_STEP_SUMMARY + ENV_FILES=$(find . -name ".env*" -not -path "./.git/*" -not -path "./node_modules/*" 2>/dev/null || true) + if [ -z "$ENV_FILES" ]; then + echo "✅ No .env files found in repository" >> $GITHUB_STEP_SUMMARY + else + echo "❌ Found .env files:" >> $GITHUB_STEP_SUMMARY + echo "$ENV_FILES" >> $GITHUB_STEP_SUMMARY + exit 1 + fi + + - name: Install gitleaks + run: | + wget -q https://github.com/gitleaks/gitleaks/releases/download/v8.18.0/gitleaks_8.18.0_linux_x64.tar.gz + tar -xzf gitleaks_8.18.0_linux_x64.tar.gz + chmod +x gitleaks + sudo mv gitleaks /usr/local/bin/ + + - name: Run gitleaks scan + run: | + mkdir -p ci-testing + gitleaks detect --source . --report-path ci-testing/gitleaks-report.json --no-git || true + gitleaks detect --source . --report-format json --report-path ci-testing/gitleaks-report.json || true + + - name: Check for hardcoded secrets + run: | + echo "## Secret Pattern Scan" >> $GITHUB_STEP_SUMMARY + mkdir -p ci-testing + + # Check for Ethereum private keys (64 hex chars) + PRIVATE_KEY_MATCHES=$(grep -r -E "0x[a-fA-F0-9]{64}" --include="*.ts" --include="*.js" --include="*.sol" --include="*.yaml" --include="*.yml" --include="*.json" . 2>/dev/null | grep -v node_modules | grep -v ".git" | wc -l || echo "0") + + # Check for mnemonic phrases (12 or 24 words) + MNEMONIC_MATCHES=$(grep -r -E "([a-z]+\s+){11,23}[a-z]+" --include="*.ts" --include="*.js" --include="*.sol" . 2>/dev/null | grep -v node_modules | grep -v ".git" | wc -l || echo "0") + + # Check for RPC URLs with embedded keys + RPC_URL_MATCHES=$(grep -r -E "https://.*\.(infura\.io|alchemy\.com|quicknode\.com)/.*/[a-zA-Z0-9_-]+" --include="*.ts" --include="*.js" --include="*.yaml" --include="*.yml" . 2>/dev/null | grep -v node_modules | grep -v ".git" | wc -l || echo "0") + + echo "Private key patterns found: $PRIVATE_KEY_MATCHES" >> $GITHUB_STEP_SUMMARY + echo "Mnemonic patterns found: $MNEMONIC_MATCHES" >> $GITHUB_STEP_SUMMARY + echo "RPC URL patterns found: $RPC_URL_MATCHES" >> $GITHUB_STEP_SUMMARY + + echo "Private key patterns: $PRIVATE_KEY_MATCHES" > ci-testing/security-scan-results.txt + echo "Mnemonic patterns: $MNEMONIC_MATCHES" >> ci-testing/security-scan-results.txt + echo "RPC URL patterns: $RPC_URL_MATCHES" >> ci-testing/security-scan-results.txt + + - name: Upload security report + uses: actions/upload-artifact@v4 + with: + name: security-report + path: ci-testing/ + + # Generate comprehensive findings + generate-findings: + name: Generate Findings + runs-on: ubuntu-latest + needs: [compliance-check, contracts-ci, client2-ci, indexer-ci, security-scan] + if: always() + steps: + - uses: actions/checkout@v4 + + - name: Download all artifacts + uses: actions/download-artifact@v4 + with: + path: ci-testing-artifacts + + - name: Generate findings report + run: | + mkdir -p ci-testing + + echo "# Comprehensive CI Testing Findings" > ci-testing/FINDINGS.md + echo "Generated: $(date -u +"%Y-%m-%d %H:%M:%S UTC")" >> ci-testing/FINDINGS.md + echo "" >> ci-testing/FINDINGS.md + echo "## Test Execution Summary" >> ci-testing/FINDINGS.md + echo "" >> ci-testing/FINDINGS.md + echo "### Jobs Status" >> ci-testing/FINDINGS.md + echo "- Compliance Check: ${{ needs.compliance-check.result }}" >> ci-testing/FINDINGS.md + echo "- Contracts CI: ${{ needs.contracts-ci.result }}" >> ci-testing/FINDINGS.md + echo "- Client2 CI: ${{ needs.client2-ci.result }}" >> ci-testing/FINDINGS.md + echo "- Indexer CI: ${{ needs.indexer-ci.result }}" >> ci-testing/FINDINGS.md + echo "- Security Scan: ${{ needs.security-scan.result }}" >> ci-testing/FINDINGS.md + echo "" >> ci-testing/FINDINGS.md + + echo "## Branch Comparison Results" >> ci-testing/FINDINGS.md + echo "" >> ci-testing/FINDINGS.md + echo "### Tested Against" >> ci-testing/FINDINGS.md + echo "- Base branch: uhi7" >> ci-testing/FINDINGS.md + echo "- Main branch: main" >> ci-testing/FINDINGS.md + echo "- Feature branches: feat/create-protocol, feat/create-pool, feat/master-hook" >> ci-testing/FINDINGS.md + echo "" >> ci-testing/FINDINGS.md + + if [ -f ci-testing-artifacts/compliance-report/compliance-report.md ]; then + cat ci-testing-artifacts/compliance-report/compliance-report.md >> ci-testing/FINDINGS.md + fi + + echo "" >> ci-testing/FINDINGS.md + echo "## Security Scan Results" >> ci-testing/FINDINGS.md + echo "" >> ci-testing/FINDINGS.md + + if [ -f ci-testing-artifacts/security-report/security-scan-results.txt ]; then + cat ci-testing-artifacts/security-report/security-scan-results.txt >> ci-testing/FINDINGS.md + fi + + echo "" >> ci-testing/FINDINGS.md + echo "## Next Steps" >> ci-testing/FINDINGS.md + echo "" >> ci-testing/FINDINGS.md + echo "### Immediate Actions" >> ci-testing/FINDINGS.md + echo "1. Review compliance check results against uhi7 branch" >> ci-testing/FINDINGS.md + echo "2. Verify all CI workflows are properly configured" >> ci-testing/FINDINGS.md + echo "3. Address any security scan findings" >> ci-testing/FINDINGS.md + echo "4. Ensure .env files are properly excluded" >> ci-testing/FINDINGS.md + echo "" >> ci-testing/FINDINGS.md + echo "### Long-term Improvements" >> ci-testing/FINDINGS.md + echo "1. Standardize CI workflows across all branches" >> ci-testing/FINDINGS.md + echo "2. Implement branch protection rules" >> ci-testing/FINDINGS.md + echo "3. Add coverage thresholds for contracts" >> ci-testing/FINDINGS.md + echo "4. Set up automated security scanning on all PRs" >> ci-testing/FINDINGS.md + echo "5. Configure proper linting and formatting checks" >> ci-testing/FINDINGS.md + + - name: Upload findings + uses: actions/upload-artifact@v4 + with: + name: comprehensive-findings + path: ci-testing/ + + - name: Create findings summary + run: | + echo "## CI Testing Complete" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "Findings have been generated in the \`ci-testing/\` directory." >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "Download the \`comprehensive-findings\` artifact to view detailed results." >> $GITHUB_STEP_SUMMARY diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 000000000..50b706421 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,22 @@ + + + + +# GitHub + +The branch we will be psuhing to ins uhi7 + +When creating issues or PR's they need to target the uhi7 upstream branch to. Keep the content of the description minimalistic adn follow goo d practice standards like mentioning the issue PR numer with hyperlink + + + +## DevOps + +# FrontEnd + + +# Contracts + + +# Indexer + diff --git a/client2/.env.example b/client2/.env.example new file mode 100644 index 000000000..4f3894958 --- /dev/null +++ b/client2/.env.example @@ -0,0 +1,27 @@ +# ============================================ +# Environment Variables Template +# ============================================ +# Copy this file to .env and fill in your actual values +# NEVER commit .env to version control - it's in .gitignore +# ============================================ + +# WalletConnect Project ID +# Get your project ID from: https://cloud.walletconnect.com/ +# Required for WalletConnect integration (optional for MetaMask-only usage) +VITE_WALLETCONNECT_PROJECT_ID=your-walletconnect-project-id-here + +# Alchemy API Key +# Get your API key from: https://www.alchemy.com/ +# Used for enhanced RPC endpoints (optional - public RPCs work but may be rate-limited) +VITE_ALCHEMY_API_KEY=your-alchemy-api-key-here + +# Private Key (for scripts/deployment only) +# WARNING: This is sensitive! Only use for local development/testing +# NEVER use production private keys in .env files +# This is typically used for contract deployment scripts +VITE_PRIVATE_KEY=your-private-key-here + +# Protocol Admin Client Contract Address (Localhost) +# Used for localhost/Anvil testing +# Deploy contract to Anvil and paste the address here +VITE_PROTOCOL_ADMIN_CLIENT_LOCALHOST=0xYourDeployedAddressHere diff --git a/client2/build/assets/Arc-VDBY7LNS-BChRXCXW.js b/client2/build/assets/Arc-VDBY7LNS-BChRXCXW.js deleted file mode 100644 index 46898742a..000000000 --- a/client2/build/assets/Arc-VDBY7LNS-BChRXCXW.js +++ /dev/null @@ -1 +0,0 @@ -var l="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20fill%3D%22none%22%20viewBox%3D%220%200%2078%2078%22%3E%3Cdefs%3E%3Cpath%20id%3D%22a%22%20fill%3D%22%231A007F%22%20fill-rule%3D%22evenodd%22%20d%3D%22m26.722%2056.452%206.608-13.904c-5.047-1.073-10.126-4.195-12.999-7.993l-6.91%2014.529a39.257%2039.257%200%200%200%2013.3%207.368Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20id%3D%22b%22%20fill%3D%22%234E000A%22%20fill-rule%3D%22evenodd%22%20d%3D%22M54.304%2034.138c-3.32%204.07-7.931%207.087-12.864%208.263l6.588%2013.863c4.809-1.623%209.304-4.245%2013.185-7.608l-6.91-14.518Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20id%3D%22c%22%20fill%3D%22%231A007F%22%20fill-rule%3D%22evenodd%22%20d%3D%22m13.422%2049.084-3.455%207.265c-1.76%203.694-.437%208.242%203.184%2010.167%203.84%202.04%208.566.448%2010.419-3.434l3.152-6.63a39.427%2039.427%200%200%201-13.3-7.368%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20id%3D%22d%22%20fill%3D%22%23FF9396%22%20fill-rule%3D%22evenodd%22%20d%3D%22M68.02%2018.277a7.586%207.586%200%200%200-8.93%205.952c-.729%203.642-2.436%207.035-4.787%209.92l6.9%2014.528c6.369-5.527%2011.074-13.052%2012.759-21.471.823-4.122-1.842-8.117-5.943-8.93%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20id%3D%22e%22%20fill%3D%22%23002DC8%22%20fill-rule%3D%22evenodd%22%20d%3D%22M41.438%2042.403a19.312%2019.312%200%200%201-4.496.54%2017.33%2017.33%200%200%201-3.61-.395c-5.048-1.072-10.128-4.194-13-7.993-.718-.947-1.301-1.936-1.706-2.945-1.572-3.882-5.996-5.756-9.878-4.195-3.881%201.572-5.755%205.995-4.194%209.877%201.78%204.414%204.923%208.462%208.867%2011.791a39.377%2039.377%200%200%200%2013.291%207.37c3.341%201.071%206.807%201.665%2010.22%201.665%203.788%200%207.525-.656%2011.084-1.853l-6.578-13.862Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20id%3D%22f%22%20fill%3D%22%23FF536A%22%20fill-rule%3D%22evenodd%22%20d%3D%22m64.846%2056.316-3.643-7.66-6.9-14.518-.011.01s0-.01.011-.01L44.27%2013.032a7.589%207.589%200%200%200-6.848-4.33%207.589%207.589%200%200%200-6.848%204.33L20.343%2034.554c2.872%203.799%207.95%206.921%2012.999%207.993l3.309-6.952a.866.866%200%200%201%201.561%200l3.238%206.806h.02-.02l6.588%2013.863%203.236%206.807a7.576%207.576%200%200%200%206.858%204.33%207.44%207.44%200%200%200%202.02-.281c4.569-1.26%206.734-6.515%204.694-10.804%22%20clip-rule%3D%22evenodd%22%2F%3E%3C%2Fdefs%3E%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22evenodd%22%20d%3D%22M37.422%208.702a7.59%207.59%200%200%201%206.848%204.33l10.033%2021.107s0%20.01-.011.01c0%200%200-.011.01-.011%202.353-2.883%204.06-6.276%204.788-9.919.822-4.11%204.818-6.764%208.93-5.952a7.585%207.585%200%200%201%205.953%208.93c-1.686%208.419-6.39%2015.944-12.76%2021.47l3.643%207.66c2.019%204.246-.094%209.44-4.57%2010.771l-.135.043a7.506%207.506%200%200%201-2.019.28%207.595%207.595%200%200%201-6.858-4.33l-3.238-6.805-6.587-13.863h.022-.022l-3.237-6.807a.865.865%200%200%200-1.56%200l-3.31%206.952c-5.048-1.07-10.127-4.194-13-7.993l10.231-21.523a7.55%207.55%200%200%201%206.848-4.35ZM8.749%2027.414a7.582%207.582%200%200%201%209.876%204.195c.407%201.01.99%201.998%201.707%202.945l.01.011.344.436c.032.042.063.074.094.116l.093.114c.053.052.094.115.146.166.01.01.021.022.021.032l-.02-.032c.197.24.415.468.634.699.01.009.01.02.02.02a20.332%2020.332%200%200%200%202.385%202.112c.405.313.822.603%201.248.895.042.021.073.052.115.074%202.404%201.58%205.162%202.767%207.91%203.35%201.165.25%202.33.386%203.465.396h.146c1.509%200%203.018-.188%204.495-.542l6.589%2013.863c-3.56%201.198-7.296%201.853-11.084%201.853-3.414%200-6.869-.593-10.22-1.665l-3.154%206.63a7.583%207.583%200%200%201-10.418%203.434C9.53%2064.59%208.207%2060.053%209.967%2056.348l3.455-7.264c-3.903-3.3-7.015-7.307-8.815-11.657l-.052-.135c-1.56-3.883.312-8.305%204.194-9.878Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20fill-rule%3D%22evenodd%22%20stroke%3D%22%23fff%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20stroke-width%3D%226.021%22%20d%3D%22M37.422%208.702a7.59%207.59%200%200%201%206.848%204.33l10.033%2021.107s0%20.01-.011.01c0%200%200-.011.01-.011%202.353-2.883%204.06-6.276%204.788-9.919.822-4.11%204.818-6.764%208.93-5.952a7.585%207.585%200%200%201%205.953%208.93c-1.686%208.419-6.39%2015.944-12.76%2021.47l3.643%207.66c2.019%204.246-.094%209.44-4.57%2010.771l-.135.043a7.506%207.506%200%200%201-2.019.28%207.595%207.595%200%200%201-6.858-4.33l-3.238-6.805-6.587-13.863h.022-.022l-3.237-6.807a.865.865%200%200%200-1.56%200l-3.31%206.952c-5.048-1.07-10.127-4.194-13-7.993l10.231-21.523a7.55%207.55%200%200%201%206.848-4.35h0ZM8.749%2027.414a7.582%207.582%200%200%201%209.876%204.195c.407%201.01.99%201.998%201.707%202.945l.01.011.344.436c.032.042.063.074.094.116l.093.114c.053.052.094.115.146.166.01.01.021.022.021.032l-.02-.032c.197.24.415.468.634.699.01.009.01.02.02.02a20.332%2020.332%200%200%200%202.385%202.112c.405.313.822.603%201.248.895.042.021.073.052.115.074%202.404%201.58%205.162%202.767%207.91%203.35%201.165.25%202.33.386%203.465.396h.146c1.509%200%203.018-.188%204.495-.542l6.589%2013.863c-3.56%201.198-7.296%201.853-11.084%201.853-3.414%200-6.869-.593-10.22-1.665l-3.154%206.63a7.583%207.583%200%200%201-10.418%203.434C9.53%2064.59%208.207%2060.053%209.967%2056.348l3.455-7.264c-3.903-3.3-7.015-7.307-8.815-11.657l-.052-.135c-1.56-3.883.312-8.305%204.194-9.878h0Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cuse%20xlink%3Ahref%3D%22%23a%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cuse%20xlink%3Ahref%3D%22%23b%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cuse%20xlink%3Ahref%3D%22%23c%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cuse%20xlink%3Ahref%3D%22%23d%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cuse%20xlink%3Ahref%3D%22%23e%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cuse%20xlink%3Ahref%3D%22%23f%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cuse%20xlink%3Ahref%3D%22%23a%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cuse%20xlink%3Ahref%3D%22%23b%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cuse%20xlink%3Ahref%3D%22%23c%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cuse%20xlink%3Ahref%3D%22%23d%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cuse%20xlink%3Ahref%3D%22%23e%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cuse%20xlink%3Ahref%3D%22%23f%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E";export{l as default}; diff --git a/client2/build/assets/Brave-BRAKJXDS-mq-Xo37j.js b/client2/build/assets/Brave-BRAKJXDS-mq-Xo37j.js deleted file mode 100644 index a9e548b36..000000000 --- a/client2/build/assets/Brave-BRAKJXDS-mq-Xo37j.js +++ /dev/null @@ -1 +0,0 @@ -var s="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2078%2078%22%3E%3Cpath%20fill%3D%22url(%23a)%22%20fill-rule%3D%22evenodd%22%20d%3D%22m67.81%2019.54%201.69-4.2s-2.14-2.35-4.75-5c-2.6-2.65-8.1-1.09-8.1-1.09L50.37%202H28.34l-6.28%207.25s-5.5-1.56-8.1%201.1c-2.6%202.64-4.75%204.98-4.75%204.98l1.69%204.21-2.15%206.24s6.3%2024.3%207.04%2027.28c1.46%205.84%202.45%208.1%206.58%2011.06a513.66%20513.66%200%200%200%2012.85%208.89c1.23.78%202.76%202.1%204.13%202.1%201.38%200%202.91-1.32%204.14-2.1%201.22-.78%208.72-5.92%2012.85-8.89%204.13-2.96%205.12-5.22%206.58-11.06.74-2.97%207.04-27.28%207.04-27.28l-2.15-6.24Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20fill-rule%3D%22evenodd%22%20d%3D%22M39.35%2047.5c.42%200%203.11.97%205.27%202.1%202.15%201.14%203.72%201.95%204.22%202.26.5.32.2.92-.26%201.25-.46.33-6.57%205.15-7.17%205.69-.6.53-1.46%201.41-2.06%201.41-.59%200-1.46-.88-2.05-1.41-.6-.54-6.71-5.36-7.17-5.69-.45-.33-.76-.93-.26-1.25.5-.31%202.07-1.12%204.22-2.25%202.16-1.14%204.85-2.1%205.26-2.1Zm.04-34.36c.2.01%201.36.07%203.02.63%201.84.63%203.83%201.4%204.75%201.4.92%200%207.73-1.32%207.73-1.32s8.06%209.94%208.06%2012.06c0%202.13-1.01%202.69-2.03%203.8l-6.05%206.54c-.57.62-1.77%201.55-1.06%203.24.7%201.7%201.73%203.84.58%206.03-1.15%202.18-3.12%203.63-4.38%203.4-1.26-.25-4.23-1.83-5.32-2.55-1.09-.72-4.54-3.62-4.54-4.73%200-1.11%203.57-3.1%204.23-3.56.66-.45%203.67-2.2%203.73-2.9.06-.69.04-.89-.85-2.59-.89-1.7-2.49-3.97-2.22-5.48.26-1.51%202.84-2.3%204.68-3%201.84-.71%205.39-2.05%205.83-2.26.44-.2.33-.4-1.01-.53s-5.15-.65-6.86-.16c-1.72.49-4.65%201.23-4.89%201.62-.24.4-.45.4-.2%201.76.24%201.36%201.5%207.87%201.62%209.02.12%201.16.36%201.92-.87%202.2-1.22.3-3.28.79-3.99.79-.7%200-2.76-.5-3.99-.78-1.22-.29-.98-1.05-.86-2.2.12-1.16%201.38-7.67%201.62-9.03.25-1.35.04-1.37-.2-1.76-.24-.4-3.17-1.13-4.89-1.62-1.71-.49-5.52.03-6.86.16-1.34.13-1.46.32-1.01.53.44.21%203.98%201.55%205.83%202.26%201.84.7%204.42%201.49%204.68%203%20.27%201.51-1.33%203.78-2.22%205.48-.89%201.7-.91%201.9-.85%202.6.06.68%203.07%202.44%203.73%202.89.66.45%204.23%202.45%204.23%203.56%200%201.1-3.45%204.01-4.54%204.73-1.1.72-4.06%202.3-5.32%202.54-1.26.24-3.23-1.21-4.38-3.4-1.15-2.18-.12-4.33.58-6.02.7-1.69-.49-2.62-1.06-3.24L17.8%2029.7c-1.02-1.1-2.04-1.66-2.04-3.79%200-2.12%208.07-12.06%208.07-12.06s6.81%201.33%207.73%201.33c.92%200%202.9-.78%204.74-1.4a11.3%2011.3%200%200%201%203.03-.64h.07Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cmask%20id%3D%22b%22%20width%3D%2252%22%20height%3D%2214%22%20x%3D%2213%22%20y%3D%222%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aalpha%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M56.64%209.25%2050.37%202H28.34l-6.28%207.25s-5.5-1.56-8.1%201.1c0%200%207.34-.68%209.86%203.5%200%200%206.81%201.33%207.73%201.33.92%200%202.9-.78%204.74-1.4%201.84-.63%203.06-.64%203.06-.64s1.23%200%203.06.63c1.84.63%203.83%201.4%204.75%201.4.92%200%207.73-1.32%207.73-1.32%202.52-4.18%209.86-3.5%209.86-3.5-2.6-2.66-8.1-1.1-8.1-1.1Z%22%2F%3E%3C%2Fmask%3E%3Cg%20mask%3D%22url(%23b)%22%3E%3Cpath%20fill%3D%22url(%23c)%22%20d%3D%22M56.64%209.25%2050.37%202H28.34l-6.28%207.25s-5.5-1.56-8.1%201.1c0%200%207.34-.68%209.86%203.5%200%200%206.81%201.33%207.73%201.33.92%200%202.9-.78%204.74-1.4%201.84-.63%203.06-.64%203.06-.64s1.23%200%203.06.63c1.84.63%203.83%201.4%204.75%201.4.92%200%207.73-1.32%207.73-1.32%202.52-4.18%209.86-3.5%209.86-3.5-2.6-2.66-8.1-1.1-8.1-1.1Z%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22a%22%20x1%3D%228.75%22%20x2%3D%2269.96%22%20y1%3D%2239.07%22%20y2%3D%2239.07%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23F50%22%2F%3E%3Cstop%20offset%3D%22.41%22%20stop-color%3D%22%23F50%22%2F%3E%3Cstop%20offset%3D%22.58%22%20stop-color%3D%22%23FF2000%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23FF2000%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22c%22%20x1%3D%2215.05%22%20x2%3D%2264.75%22%20y1%3D%228.68%22%20y2%3D%228.68%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23FF452A%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23FF2000%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3C%2Fsvg%3E";export{s as default}; diff --git a/client2/build/assets/Browser-76IHF3Y2-BMhRaC5Z.js b/client2/build/assets/Browser-76IHF3Y2-BMhRaC5Z.js deleted file mode 100644 index 7543b4308..000000000 --- a/client2/build/assets/Browser-76IHF3Y2-BMhRaC5Z.js +++ /dev/null @@ -1 +0,0 @@ -var D="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2078%2078%22%3E%3Cg%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%3E%3Cpath%20fill%3D%22url(%23a)%22%20d%3D%22M39%2076c20.434%200%2037-16.566%2037-37S59.434%202%2039%202%202%2018.566%202%2039s16.566%2037%2037%2037Zm0-5c17.673%200%2032-14.327%2032-32C71%2021.327%2056.673%207%2039%207%2021.327%207%207%2021.327%207%2039c0%2017.673%2014.327%2032%2032%2032Z%22%2F%3E%3Cpath%20fill%3D%22url(%23b)%22%20d%3D%22M39%2076c20.434%200%2037-16.566%2037-37S59.434%202%2039%202%202%2018.566%202%2039s16.566%2037%2037%2037Zm0-5c17.673%200%2032-14.327%2032-32C71%2021.327%2056.673%207%2039%207%2021.327%207%207%2021.327%207%2039c0%2017.673%2014.327%2032%2032%2032Z%22%2F%3E%3C%2Fg%3E%3Ccircle%20cx%3D%2239%22%20cy%3D%2239%22%20r%3D%2230%22%20fill%3D%22url(%23c)%22%2F%3E%3Ccircle%20cx%3D%2239%22%20cy%3D%2239%22%20r%3D%2230%22%20fill%3D%22url(%23d)%22%20fill-opacity%3D%22.7%22%20style%3D%22mix-blend-mode%3Ascreen%22%2F%3E%3Cg%20filter%3D%22url(%23e)%22%3E%3Ccircle%20cx%3D%2239%22%20cy%3D%2239%22%20r%3D%2229.5%22%20stroke%3D%22%23000%22%2F%3E%3C%2Fg%3E%3Cg%20filter%3D%22url(%23f)%22%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.3%22%20d%3D%22m55.681%2053.597-8.973-18.865c-.54-1.147-1.316-1.924-2.429-2.463l-18.824-8.91c-2.429-1.147-4.25.607-3.103%203.105%201.147%202.497%208.94%2018.831%208.94%2018.831.505%201.08%201.248%201.822%202.428%202.43l18.858%208.943c2.361%201.114%204.183-.742%203.103-3.071Zm-12.38-13.6c0%202.328-1.923%204.252-4.25%204.252-2.328%200-4.251-1.924-4.251-4.252a4.255%204.255%200%200%201%204.25-4.252c2.328%200%204.25%201.89%204.25%204.252Z%22%2F%3E%3C%2Fg%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.8%22%20d%3D%22m55.681%2052.597-8.973-18.865c-.54-1.147-1.316-1.924-2.429-2.463l-18.824-8.91c-2.429-1.147-4.25.607-3.103%203.105%201.147%202.497%208.94%2018.831%208.94%2018.831.505%201.08%201.248%201.822%202.428%202.43l18.858%208.943c2.361%201.114%204.183-.742%203.103-3.071Zm-12.38-13.6c0%202.328-1.923%204.252-4.25%204.252-2.328%200-4.251-1.924-4.251-4.252a4.255%204.255%200%200%201%204.25-4.252c2.328%200%204.25%201.89%204.25%204.252Z%22%2F%3E%3Cpath%20fill%3D%22url(%23g)%22%20d%3D%22m55.681%2052.597-8.973-18.865c-.54-1.147-1.316-1.924-2.429-2.463l-18.824-8.91c-2.429-1.147-4.25.607-3.103%203.105%201.147%202.497%208.94%2018.831%208.94%2018.831.505%201.08%201.248%201.822%202.428%202.43l18.858%208.943c2.361%201.114%204.183-.742%203.103-3.071Zm-12.38-13.6c0%202.328-1.923%204.252-4.25%204.252-2.328%200-4.251-1.924-4.251-4.252a4.255%204.255%200%200%201%204.25-4.252c2.328%200%204.25%201.89%204.25%204.252Z%22%20opacity%3D%22.14%22%2F%3E%3Cpath%20fill%3D%22url(%23h)%22%20fill-opacity%3D%22.08%22%20d%3D%22M61.248%2056.008c.166-.217.25-.325.378-.66.754-1.95-1.183-3.95-3.157-3.26-.338.118-.904.522-2.035%201.332A29.863%2029.863%200%200%201%2039%2059.003a29.863%2029.863%200%200%201-17.425-5.577c-1.132-.809-1.697-1.213-2.035-1.331-1.974-.69-3.911%201.313-3.156%203.263.129.334.212.442.378.659%205.118%206.679%2013.176%2010.986%2022.24%2010.986%209.068%200%2017.129-4.31%2022.246-10.995Z%22%2F%3E%3Cpath%20fill%3D%22url(%23i)%22%20fill-opacity%3D%22.2%22%20d%3D%22M62.26%2040.051C63.805%2041.947%2067%2041.445%2067%2039c0-15.464-12.536-28-28-28S11%2023.536%2011%2039c0%202.445%203.195%202.946%204.74%201.051C21.241%2033.307%2029.618%2029%2039%2029c9.382%200%2017.758%204.307%2023.26%2011.051Z%22%2F%3E%3Cpath%20fill%3D%22url(%23j)%22%20d%3D%22M39%2045a6%206%200%201%201%200-11.999%206%206%200%200%201%200%2012Z%22%2F%3E%3Cpath%20stroke%3D%22%23fff%22%20stroke-opacity%3D%22.24%22%20stroke-width%3D%22.125%22%20d%3D%22M36.728%2044.486a5.938%205.938%200%201%200%204.545-10.971%205.938%205.938%200%200%200-4.545%2010.971Z%22%2F%3E%3Cg%20filter%3D%22url(%23k)%22%3E%3Cpath%20fill%3D%22%231A1B1F%22%20d%3D%22M39%2046a6%206%200%201%201%200-11.999%206%206%200%200%201%200%2012Z%22%2F%3E%3C%2Fg%3E%3Cpath%20fill%3D%22url(%23l)%22%20d%3D%22M39%2044.5a5.5%205.5%200%201%201%200-11%205.5%205.5%200%200%201%200%2011Z%22%2F%3E%3Cpath%20stroke%3D%22%23fff%22%20stroke-opacity%3D%22.24%22%20stroke-width%3D%22.25%22%20d%3D%22M36.944%2043.966a5.376%205.376%200%201%200%204.114-9.934%205.376%205.376%200%200%200-4.114%209.934Z%22%2F%3E%3Cpath%20fill%3D%22url(%23m)%22%20fill-rule%3D%22evenodd%22%20d%3D%22M36.704%2044.544a6.002%206.002%200%200%200%208.297-5.543%206%206%200%201%200-8.297%205.543Zm.191-.463a5.5%205.5%200%201%200%204.21-10.163%205.5%205.5%200%200%200-4.21%2010.163Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22url(%23n)%22%20fill-opacity%3D%22.06%22%20d%3D%22M36.897%2042.12A5.98%205.98%200%200%200%2039%2042.5c1.46%200%202.858-.526%203.89-1.464.256-.233.701-.022.54.285a5%205%200%200%201-9.049-.406c-.098-.238.237-.383.411-.195a5.565%205.565%200%200%200%202.103%201.4Z%22%2F%3E%3Cg%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%3E%3Cpath%20fill%3D%22url(%23o)%22%20d%3D%22M39%2071c17.673%200%2032-14.327%2032-32C71%2021.327%2056.673%207%2039%207%2021.327%207%207%2021.327%207%2039c0%2017.673%2014.327%2032%2032%2032Zm0-2c16.569%200%2030-13.431%2030-30C69%2022.431%2055.569%209%2039%209%2022.431%209%209%2022.431%209%2039c0%2016.569%2013.431%2030%2030%2030Z%22%2F%3E%3Cpath%20fill%3D%22url(%23p)%22%20d%3D%22M39%2071c17.673%200%2032-14.327%2032-32C71%2021.327%2056.673%207%2039%207%2021.327%207%207%2021.327%207%2039c0%2017.673%2014.327%2032%2032%2032Zm0-2c16.569%200%2030-13.431%2030-30C69%2022.431%2055.569%209%2039%209%2022.431%209%209%2022.431%209%2039c0%2016.569%2013.431%2030%2030%2030Z%22%2F%3E%3C%2Fg%3E%3Cpath%20fill%3D%22url(%23q)%22%20fill-rule%3D%22evenodd%22%20d%3D%22M39%2076c20.434%200%2037-16.566%2037-37S59.434%202%2039%202%202%2018.566%202%2039s16.566%2037%2037%2037Zm0-1c19.882%200%2036-16.118%2036-36S58.882%203%2039%203%203%2019.118%203%2039s16.118%2036%2036%2036Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Ccircle%20cx%3D%2239%22%20cy%3D%2239%22%20r%3D%2232%22%20stroke%3D%22%23fff%22%20stroke-opacity%3D%22.3%22%20stroke-width%3D%22.25%22%2F%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22a%22%20x1%3D%2239%22%20x2%3D%2239%22%20y1%3D%222%22%20y2%3D%2276%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23174299%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23001E59%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22b%22%20x1%3D%2239%22%20x2%3D%2239%22%20y1%3D%222%22%20y2%3D%2276%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23D2D8E4%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23C2C9D6%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%2234%22%20x2%3D%2246.5%22%20y1%3D%2245.5%22%20y2%3D%2233%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23fff%22%20stop-opacity%3D%220%22%2F%3E%3Cstop%20offset%3D%22.453%22%20stop-color%3D%22%23fff%22%20stop-opacity%3D%22.64%22%2F%3E%3Cstop%20offset%3D%22.453%22%20stop-color%3D%22%233B3B3B%22%20stop-opacity%3D%22.233%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-opacity%3D%220%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22i%22%20x1%3D%2239%22%20x2%3D%2239%22%20y1%3D%2211%22%20y2%3D%2241.205%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23fff%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23fff%22%20stop-opacity%3D%220%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22j%22%20x1%3D%2239.001%22%20x2%3D%2238.751%22%20y1%3D%2233%22%20y2%3D%2245%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23DCE1EA%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23BEC6D5%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22l%22%20x1%3D%2239.001%22%20x2%3D%2238.772%22%20y1%3D%2233.5%22%20y2%3D%2244.5%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23DCE1EA%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23BEC6D5%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22m%22%20x1%3D%2239%22%20x2%3D%2239%22%20y1%3D%2233%22%20y2%3D%2245.001%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23F2F4F7%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23A3ADC2%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22o%22%20x1%3D%2239%22%20x2%3D%2239%22%20y1%3D%227%22%20y2%3D%2271%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23D2D8E4%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23C2C9D6%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22p%22%20x1%3D%2239%22%20x2%3D%2239%22%20y1%3D%227%22%20y2%3D%2271%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%239FACC6%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23E0E3EB%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22q%22%20x1%3D%2239%22%20x2%3D%2239%22%20y1%3D%222%22%20y2%3D%2276%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23F2F4F7%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23A3ADC2%22%2F%3E%3C%2FlinearGradient%3E%3CradialGradient%20id%3D%22c%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22rotate(-40.077%20108.556%2065.416)%20scale(118.435)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%22.276%22%20stop-color%3D%22%2320FF4D%22%2F%3E%3Cstop%20offset%3D%22.464%22%20stop-color%3D%22%231499FF%22%2F%3E%3Cstop%20offset%3D%22.755%22%20stop-color%3D%22%23FF6FC6%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23BC67FF%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22d%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22rotate(45%20.265%20-.64)%20scale(98.1111)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22red%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%2300A3FF%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22h%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(0%20-29.3887%2057.4838%200%2038.999%2067)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%2F%3E%3Cstop%20offset%3D%221%22%20stop-opacity%3D%220%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22n%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(-.00135%20-5.75038%208.42557%20-.00199%2039.002%2044)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%2F%3E%3Cstop%20offset%3D%221%22%20stop-opacity%3D%220%22%2F%3E%3C%2FradialGradient%3E%3Cfilter%20id%3D%22e%22%20width%3D%2268%22%20height%3D%2268%22%20x%3D%225%22%20y%3D%225%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_2138_47895%22%20stdDeviation%3D%222%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22f%22%20width%3D%2238%22%20height%3D%2238%22%20x%3D%2220%22%20y%3D%2221%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_2138_47895%22%20stdDeviation%3D%221%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22k%22%20width%3D%2216%22%20height%3D%2216%22%20x%3D%2231.001%22%20y%3D%2232%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_2138_47895%22%20stdDeviation%3D%221%22%2F%3E%3C%2Ffilter%3E%3C%2Fdefs%3E%3C%2Fsvg%3E";export{D as default}; diff --git a/client2/build/assets/Chrome-65Q5P54Y-DR9MQEVr.js b/client2/build/assets/Chrome-65Q5P54Y-DR9MQEVr.js deleted file mode 100644 index 26aaebf7f..000000000 --- a/client2/build/assets/Chrome-65Q5P54Y-DR9MQEVr.js +++ /dev/null @@ -1 +0,0 @@ -var D="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2078%2078%22%3E%3Cpath%20fill%3D%22url(%23a)%22%20d%3D%22M71.034%2020.5a37.001%2037.001%200%200%200-64.084%200l2.22%2039.96L71.034%2020.5Z%22%2F%3E%3Cpath%20fill%3D%22url(%23b)%22%20d%3D%22M22.979%2048.25%206.958%2020.5A37%2037%200%200%200%2039%2076l36.26-37-52.281%209.25Z%22%2F%3E%3Cpath%20fill%3D%22url(%23c)%22%20d%3D%22M55.021%2048.25%2039%2076a37.001%2037.001%200%200%200%2032.035-55.5H39l16.021%2027.75Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M39%2057.5a18.5%2018.5%200%201%200%200-37%2018.5%2018.5%200%200%200%200%2037Z%22%2F%3E%3Cpath%20fill%3D%22%231A73E8%22%20d%3D%22M39%2053.652a14.65%2014.65%200%200%200%2013.536-20.26A14.653%2014.653%200%201%200%2039%2053.653Z%22%2F%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22a%22%20x1%3D%226.958%22%20x2%3D%2271.034%22%20y1%3D%2225.125%22%20y2%3D%2225.125%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23D93025%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23EA4335%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22b%22%20x1%3D%2243.003%22%20x2%3D%2210.961%22%20y1%3D%2273.684%22%20y2%3D%2218.184%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%231E8E3E%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%2334A853%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22c%22%20x1%3D%2233.598%22%20x2%3D%2265.64%22%20y1%3D%2276%22%20y2%3D%2220.596%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23FCC934%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23FBBC04%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3C%2Fsvg%3E";export{D as default}; diff --git a/client2/build/assets/Edge-XSPUTORV-DEoZslQE.js b/client2/build/assets/Edge-XSPUTORV-DEoZslQE.js deleted file mode 100644 index a200ea9b9..000000000 --- a/client2/build/assets/Edge-XSPUTORV-DEoZslQE.js +++ /dev/null @@ -1 +0,0 @@ -var t="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2078%2078%22%3E%3Cg%20clip-path%3D%22url(%23a)%22%3E%3Cpath%20fill%3D%22url(%23b)%22%20d%3D%22M68.802%2057.066c-.992.516-2.016.97-3.064%201.359a29.456%2029.456%200%200%201-10.377%201.85c-13.673%200-25.582-9.395-25.582-21.477a9.106%209.106%200%200%201%204.74-7.892c-12.371.52-15.551%2013.413-15.551%2020.957%200%2021.39%2019.685%2023.53%2023.934%2023.53%202.284%200%205.724-.665%207.805-1.33l.376-.115a37.088%2037.088%200%200%200%2019.251-15.263%201.156%201.156%200%200%200-1.532-1.619Z%22%2F%3E%3Cpath%20fill%3D%22url(%23c)%22%20d%3D%22M68.802%2057.066c-.992.516-2.016.97-3.064%201.359a29.456%2029.456%200%200%201-10.377%201.85c-13.673%200-25.582-9.395-25.582-21.477a9.106%209.106%200%200%201%204.74-7.892c-12.371.52-15.551%2013.413-15.551%2020.957%200%2021.39%2019.685%2023.53%2023.934%2023.53%202.284%200%205.724-.665%207.805-1.33l.376-.115a37.088%2037.088%200%200%200%2019.251-15.263%201.156%201.156%200%200%200-1.532-1.619Z%22%20opacity%3D%22.35%22%2F%3E%3Cpath%20fill%3D%22url(%23d)%22%20d%3D%22M32.554%2071.751a22.894%2022.894%200%200%201-6.562-6.157%2023.329%2023.329%200%200%201%208.527-34.687c.925-.434%202.458-1.186%204.51-1.157a9.365%209.365%200%200%201%207.429%203.758%209.222%209.222%200%200%201%201.82%205.406c0-.058%207.083-23.01-23.124-23.01-12.69%200-23.125%2012.025-23.125%2022.605a37.636%2037.636%200%200%200%203.498%2016.188%2037%2037%200%200%200%2045.209%2019.367%2021.825%2021.825%200%200%201-18.153-2.313h-.03Z%22%2F%3E%3Cpath%20fill%3D%22url(%23e)%22%20d%3D%22M32.554%2071.751a22.894%2022.894%200%200%201-6.562-6.157%2023.329%2023.329%200%200%201%208.527-34.687c.925-.434%202.458-1.186%204.51-1.157a9.365%209.365%200%200%201%207.429%203.758%209.222%209.222%200%200%201%201.82%205.406c0-.058%207.083-23.01-23.124-23.01-12.69%200-23.125%2012.025-23.125%2022.605a37.636%2037.636%200%200%200%203.498%2016.188%2037%2037%200%200%200%2045.209%2019.367%2021.825%2021.825%200%200%201-18.153-2.313h-.03Z%22%20opacity%3D%22.41%22%2F%3E%3Cpath%20fill%3D%22url(%23f)%22%20d%3D%22M46.053%2045.013c-.26.289-.983.722-.983%201.618%200%20.752.492%201.503%201.388%202.11%204.133%202.891%2011.967%202.486%2011.996%202.486a17.227%2017.227%200%200%200%208.759-2.399A17.748%2017.748%200%200%200%2076%2033.537c.087-6.475-2.313-10.782-3.266-12.69C66.577%208.88%2053.366%202%2039%202A37%2037%200%200%200%202%2038.48c.145-10.551%2010.637-19.078%2023.125-19.078%201.012%200%206.793.086%2012.14%202.89a20.986%2020.986%200%200%201%208.933%208.47c1.763%203.064%202.08%206.966%202.08%208.527%200%201.561-.78%203.845-2.254%205.752l.03-.028Z%22%2F%3E%3Cpath%20fill%3D%22url(%23g)%22%20d%3D%22M46.053%2045.013c-.26.289-.983.722-.983%201.618%200%20.752.492%201.503%201.388%202.11%204.133%202.891%2011.967%202.486%2011.996%202.486a17.227%2017.227%200%200%200%208.759-2.399A17.748%2017.748%200%200%200%2076%2033.537c.087-6.475-2.313-10.782-3.266-12.69C66.577%208.88%2053.366%202%2039%202A37%2037%200%200%200%202%2038.48c.145-10.551%2010.637-19.078%2023.125-19.078%201.012%200%206.793.086%2012.14%202.89a20.986%2020.986%200%200%201%208.933%208.47c1.763%203.064%202.08%206.966%202.08%208.527%200%201.561-.78%203.845-2.254%205.752l.03-.028Z%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3CradialGradient%20id%3D%22c%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(27.5766%200%200%2026.1977%2047.44%2053.553)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%22.7%22%20stop-opacity%3D%220%22%2F%3E%3Cstop%20offset%3D%22.9%22%20stop-opacity%3D%22.5%22%2F%3E%3Cstop%20offset%3D%221%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22e%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(6.20902%20-40.9798%2033.10754%205.01627%2022.395%2059.506)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%22.8%22%20stop-opacity%3D%220%22%2F%3E%3Cstop%20offset%3D%22.9%22%20stop-opacity%3D%22.5%22%2F%3E%3Cstop%20offset%3D%221%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22f%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(-2.34024%2058.50621%20-124.60636%20-4.98423%209.484%2015.677)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%2335C1F1%22%2F%3E%3Cstop%20offset%3D%22.1%22%20stop-color%3D%22%2334C1ED%22%2F%3E%3Cstop%20offset%3D%22.2%22%20stop-color%3D%22%232FC2DF%22%2F%3E%3Cstop%20offset%3D%22.3%22%20stop-color%3D%22%232BC3D2%22%2F%3E%3Cstop%20offset%3D%22.7%22%20stop-color%3D%22%2336C752%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22g%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22rotate(73.74%2019.467%2059.767)%20scale(28.1258%2022.8719)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%2366EB6E%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%2366EB6E%22%20stop-opacity%3D%220%22%2F%3E%3C%2FradialGradient%3E%3ClinearGradient%20id%3D%22b%22%20x1%3D%2218.968%22%20x2%3D%2270.537%22%20y1%3D%2253.164%22%20y2%3D%2253.164%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%230C59A4%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23114A8B%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22d%22%20x1%3D%2246.14%22%20x2%3D%2213.967%22%20y1%3D%2230.791%22%20y2%3D%2265.854%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%231B9DE2%22%2F%3E%3Cstop%20offset%3D%22.2%22%20stop-color%3D%22%231595DF%22%2F%3E%3Cstop%20offset%3D%22.7%22%20stop-color%3D%22%230680D7%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%230078D4%22%2F%3E%3C%2FlinearGradient%3E%3CclipPath%20id%3D%22a%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M0%200h74v74H0z%22%20transform%3D%22translate(2%202)%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fsvg%3E";export{t as default}; diff --git a/client2/build/assets/Firefox-AAHGJQIP-Bp_Hm04m.js b/client2/build/assets/Firefox-AAHGJQIP-Bp_Hm04m.js deleted file mode 100644 index b1ce1e393..000000000 --- a/client2/build/assets/Firefox-AAHGJQIP-Bp_Hm04m.js +++ /dev/null @@ -1 +0,0 @@ -var o="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2078%2078%22%3E%3Cg%20clip-path%3D%22url(%23a)%22%3E%3Cpath%20fill%3D%22url(%23b)%22%20d%3D%22M72.049%2026.827c-1.559-3.75-4.72-7.798-7.195-9.078a37.264%2037.264%200%200%201%203.632%2010.883l.007.06c-4.055-10.105-10.929-14.186-16.546-23.06a43.39%2043.39%200%200%201-.845-1.373%2011.337%2011.337%200%200%201-.395-.74%206.525%206.525%200%200%201-.535-1.42.092.092%200%200%200-.08-.093.128.128%200%200%200-.069%200c-.004%200-.012.008-.017.01-.006.002-.018.01-.026.014l.014-.024C40.986%207.28%2037.927%2017.042%2037.65%2021.928a17.944%2017.944%200%200%200-9.874%203.804c-.295-.25-.604-.484-.925-.701a16.629%2016.629%200%200%201-.1-8.766%2026.558%2026.558%200%200%200-8.634%206.672h-.016c-1.421-1.802-1.322-7.743-1.24-8.983a6.44%206.44%200%200%200-1.197.635%2026.119%2026.119%200%200%200-3.506%203.003%2031.312%2031.312%200%200%200-3.352%204.023v.005-.006a30.287%2030.287%200%200%200-4.812%2010.863l-.048.237a57.058%2057.058%200%200%200-.353%202.24c0%20.026-.005.051-.008.078a34.183%2034.183%200%200%200-.582%204.944v.185a35.867%2035.867%200%200%200%2071.205%206.065c.06-.463.11-.92.163-1.388a36.883%2036.883%200%200%200-2.326-18.017l.004.006ZM30.713%2054.902c.168.08.325.167.497.244l.025.016c-.174-.083-.348-.17-.522-.26Zm37.78-26.2v-.034l.007.038-.007-.004Z%22%2F%3E%3Cpath%20fill%3D%22url(%23c)%22%20d%3D%22M72.05%2026.828c-1.558-3.75-4.72-7.798-7.195-9.078a37.261%2037.261%200%200%201%203.632%2010.882v.034l.007.038a32.48%2032.48%200%200%201-1.116%2024.207c-4.11%208.82-14.056%2017.86-29.63%2017.415C20.926%2069.85%206.101%2057.362%203.335%2041.011c-.505-2.579%200-3.886.253-5.982a26.723%2026.723%200%200%200-.576%204.949v.185a35.867%2035.867%200%200%200%2071.205%206.065c.06-.463.11-.921.163-1.389a36.884%2036.884%200%200%200-2.326-18.016l-.004.005Z%22%2F%3E%3Cpath%20fill%3D%22url(%23d)%22%20d%3D%22M72.05%2026.828c-1.558-3.75-4.72-7.798-7.195-9.078a37.261%2037.261%200%200%201%203.632%2010.882v.034l.007.038a32.48%2032.48%200%200%201-1.116%2024.207c-4.11%208.82-14.056%2017.86-29.63%2017.415C20.926%2069.85%206.101%2057.362%203.335%2041.011c-.505-2.579%200-3.886.253-5.982a26.723%2026.723%200%200%200-.576%204.949v.185a35.867%2035.867%200%200%200%2071.205%206.065c.06-.463.11-.921.163-1.389a36.884%2036.884%200%200%200-2.326-18.016l-.004.005Z%22%2F%3E%3Cpath%20fill%3D%22url(%23e)%22%20d%3D%22M54.615%2031.037c.078.055.15.11.223.164a19.525%2019.525%200%200%200-3.33-4.344c-11.151-11.15-2.922-24.17-1.535-24.837l.014-.02C40.978%207.274%2037.92%2017.037%2037.643%2021.923c.418-.029.832-.064%201.26-.064a18.1%2018.1%200%200%201%2015.712%209.176v.002Z%22%2F%3E%3Cpath%20fill%3D%22url(%23f)%22%20d%3D%22M38.923%2033.268c-.06.892-3.211%203.969-4.313%203.969-10.198%200-11.854%206.169-11.854%206.169.451%205.195%204.071%209.476%208.447%2011.733.2.104.403.197.605.29.352.154.703.298%201.054.43a15.91%2015.91%200%200%200%204.666.9c17.878.839%2021.339-21.375%208.438-27.825a12.381%2012.381%200%200%201%208.648%202.1A18.1%2018.1%200%200%200%2038.9%2021.857c-.425%200-.842.036-1.26.064a17.943%2017.943%200%200%200-9.873%203.804c.546.463%201.164%201.081%202.464%202.363%202.433%202.397%208.675%204.881%208.689%205.172l.002.008Z%22%2F%3E%3Cpath%20fill%3D%22url(%23g)%22%20d%3D%22M38.923%2033.268c-.06.892-3.211%203.969-4.313%203.969-10.198%200-11.854%206.169-11.854%206.169.451%205.195%204.071%209.476%208.447%2011.733.2.104.403.197.605.29.352.154.703.298%201.054.43a15.91%2015.91%200%200%200%204.666.9c17.878.839%2021.339-21.375%208.438-27.825a12.381%2012.381%200%200%201%208.648%202.1A18.1%2018.1%200%200%200%2038.9%2021.857c-.425%200-.842.036-1.26.064a17.943%2017.943%200%200%200-9.873%203.804c.546.463%201.164%201.081%202.464%202.363%202.433%202.397%208.675%204.881%208.689%205.172l.002.008Z%22%2F%3E%3Cpath%20fill%3D%22url(%23h)%22%20d%3D%22M26.097%2024.542c.29.185.53.346.74.491a16.628%2016.628%200%200%201-.1-8.765%2026.557%2026.557%200%200%200-8.633%206.671c.174-.004%205.377-.098%207.993%201.603Z%22%2F%3E%3Cpath%20fill%3D%22url(%23i)%22%20d%3D%22M3.327%2041.013c2.768%2016.35%2017.59%2028.843%2034.414%2029.315%2015.573.44%2025.52-8.6%2029.63-17.415a32.48%2032.48%200%200%200%201.115-24.207v-.034c0-.027-.005-.043%200-.035l.007.06c1.272%208.307-2.953%2016.351-9.56%2021.802l-.02.046c-12.871%2010.484-25.188%206.324-27.677%204.627-.174-.084-.348-.17-.522-.26-7.503-3.587-10.604-10.42-9.938-16.286a9.21%209.21%200%200%201-8.495-5.344%2013.528%2013.528%200%200%201%2013.186-.53%2017.86%2017.86%200%200%200%2013.464.53c-.014-.292-6.256-2.776-8.69-5.173-1.3-1.282-1.917-1.899-2.464-2.363-.295-.25-.604-.484-.925-.7-.213-.146-.453-.303-.74-.492-2.616-1.701-7.818-1.608-7.99-1.603h-.017c-1.422-1.802-1.322-7.742-1.24-8.983-.42.169-.822.382-1.198.636a26.105%2026.105%200%200%200-3.505%203.002%2031.315%2031.315%200%200%200-3.366%204.013v.006-.006a30.287%2030.287%200%200%200-4.812%2010.863c-.018.073-1.292%205.644-.664%208.533l.007-.002Z%22%2F%3E%3Cpath%20fill%3D%22url(%23j)%22%20d%3D%22M51.507%2026.855a19.527%2019.527%200%200%201%203.33%204.349c.198.149.382.297.538.44%208.132%207.496%203.871%2018.09%203.554%2018.84%206.605-5.442%2010.826-13.491%209.559-21.8C64.43%2018.568%2057.55%2014.487%2051.942%205.613a43.401%2043.401%200%200%201-.844-1.373%2011.29%2011.29%200%200%201-.396-.74%206.525%206.525%200%200%201-.534-1.42.093.093%200%200%200-.082-.093.127.127%200%200%200-.067%200c-.005%200-.012.008-.018.01l-.026.014c-1.387.658-9.614%2013.686%201.536%2024.827l-.004.016Z%22%2F%3E%3Cpath%20fill%3D%22url(%23k)%22%20d%3D%22M55.375%2031.65a7.495%207.495%200%200%200-.538-.441c-.073-.055-.145-.11-.223-.164a12.382%2012.382%200%200%200-8.647-2.1c12.9%206.45%209.439%2028.658-8.438%2027.825a15.95%2015.95%200%200%201-4.667-.9%2018.885%2018.885%200%200%201-1.053-.431%2013.248%2013.248%200%200%201-.605-.289l.025.016c2.493%201.702%2014.806%205.86%2027.677-4.627l.02-.046c.322-.75%204.582-11.345-3.553-18.84l.002-.004Z%22%2F%3E%3Cpath%20fill%3D%22url(%23l)%22%20d%3D%22M22.756%2043.4s1.655-6.17%2011.853-6.17c1.102%200%204.257-3.076%204.313-3.968a17.86%2017.86%200%200%201-13.463-.53%2013.529%2013.529%200%200%200-13.186.53%209.21%209.21%200%200%200%208.495%205.344c-.664%205.864%202.436%2012.696%209.938%2016.286.168.08.325.167.497.244-4.38-2.262-7.996-6.541-8.447-11.733V43.4Z%22%2F%3E%3Cpath%20fill%3D%22url(%23m)%22%20d%3D%22M72.049%2026.827c-1.559-3.75-4.72-7.798-7.195-9.078a37.261%2037.261%200%200%201%203.632%2010.883l.007.06c-4.055-10.105-10.929-14.186-16.546-23.06a43.39%2043.39%200%200%201-.844-1.373%2011.337%2011.337%200%200%201-.396-.74%206.525%206.525%200%200%201-.534-1.42.092.092%200%200%200-.082-.093.128.128%200%200%200-.067%200c-.005%200-.012.008-.018.01l-.026.014.014-.024C40.986%207.28%2037.928%2017.042%2037.65%2021.928c.418-.028.833-.064%201.26-.064a18.1%2018.1%200%200%201%2015.713%209.177%2012.38%2012.38%200%200%200-8.648-2.1c12.9%206.45%209.439%2028.658-8.438%2027.826a15.952%2015.952%200%200%201-4.666-.9%2018.933%2018.933%200%200%201-1.054-.432c-.202-.093-.405-.185-.605-.289l.025.016a19.04%2019.04%200%200%201-.522-.26c.168.08.325.167.497.244-4.38-2.263-7.996-6.542-8.447-11.733%200%200%201.655-6.17%2011.853-6.17%201.102%200%204.257-3.076%204.313-3.968-.013-.292-6.255-2.776-8.688-5.173-1.3-1.281-1.918-1.899-2.465-2.362-.295-.25-.604-.485-.925-.702a16.628%2016.628%200%200%201-.1-8.765%2026.557%2026.557%200%200%200-8.634%206.671h-.016c-1.422-1.801-1.322-7.742-1.24-8.983-.42.169-.822.382-1.197.636a26.112%2026.112%200%200%200-3.506%203.002%2031.304%2031.304%200%200%200-3.352%204.023v.006-.007a30.287%2030.287%200%200%200-4.812%2010.864l-.048.236c-.068.316-.37%201.919-.414%202.263a41.724%2041.724%200%200%200-.53%205v.185a35.866%2035.866%200%200%200%2071.206%206.064c.06-.462.11-.92.163-1.388a36.885%2036.885%200%200%200-2.326-18.016l.002-.002Zm-3.558%201.842.006.038-.006-.038Z%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3CradialGradient%20id%3D%22c%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22translate(64.999%2010.329)%20scale(74.768)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%22.129%22%20stop-color%3D%22%23FFBD4F%22%2F%3E%3Cstop%20offset%3D%22.186%22%20stop-color%3D%22%23FFAC31%22%2F%3E%3Cstop%20offset%3D%22.247%22%20stop-color%3D%22%23FF9D17%22%2F%3E%3Cstop%20offset%3D%22.283%22%20stop-color%3D%22%23FF980E%22%2F%3E%3Cstop%20offset%3D%22.403%22%20stop-color%3D%22%23FF563B%22%2F%3E%3Cstop%20offset%3D%22.467%22%20stop-color%3D%22%23FF3750%22%2F%3E%3Cstop%20offset%3D%22.71%22%20stop-color%3D%22%23F5156C%22%2F%3E%3Cstop%20offset%3D%22.782%22%20stop-color%3D%22%23EB0878%22%2F%3E%3Cstop%20offset%3D%22.86%22%20stop-color%3D%22%23E50080%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22d%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22translate(37.239%2040.865)%20scale(74.768)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%22.3%22%20stop-color%3D%22%23960E18%22%2F%3E%3Cstop%20offset%3D%22.351%22%20stop-color%3D%22%23B11927%22%20stop-opacity%3D%22.74%22%2F%3E%3Cstop%20offset%3D%22.435%22%20stop-color%3D%22%23DB293D%22%20stop-opacity%3D%22.343%22%2F%3E%3Cstop%20offset%3D%22.497%22%20stop-color%3D%22%23F5334B%22%20stop-opacity%3D%22.094%22%2F%3E%3Cstop%20offset%3D%22.53%22%20stop-color%3D%22%23FF3750%22%20stop-opacity%3D%220%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22e%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22translate(46.49%20-6.328)%20scale(54.1606)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%22.132%22%20stop-color%3D%22%23FFF44F%22%2F%3E%3Cstop%20offset%3D%22.252%22%20stop-color%3D%22%23FFDC3E%22%2F%3E%3Cstop%20offset%3D%22.506%22%20stop-color%3D%22%23FF9D12%22%2F%3E%3Cstop%20offset%3D%22.526%22%20stop-color%3D%22%23FF980E%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22f%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22translate(28.91%2060.297)%20scale(35.5981)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%22.353%22%20stop-color%3D%22%233A8EE6%22%2F%3E%3Cstop%20offset%3D%22.472%22%20stop-color%3D%22%235C79F0%22%2F%3E%3Cstop%20offset%3D%22.669%22%20stop-color%3D%22%239059FF%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23C139E6%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22g%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(18.34852%20-4.43626%205.19374%2021.48145%2040.856%2034.448)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%22.206%22%20stop-color%3D%22%239059FF%22%20stop-opacity%3D%220%22%2F%3E%3Cstop%20offset%3D%22.278%22%20stop-color%3D%22%238C4FF3%22%20stop-opacity%3D%22.064%22%2F%3E%3Cstop%20offset%3D%22.747%22%20stop-color%3D%22%237716A8%22%20stop-opacity%3D%22.45%22%2F%3E%3Cstop%20offset%3D%22.975%22%20stop-color%3D%22%236E008B%22%20stop-opacity%3D%22.6%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22h%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22translate(36.313%207.553)%20scale(25.6136)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23FFE226%22%2F%3E%3Cstop%20offset%3D%22.121%22%20stop-color%3D%22%23FFDB27%22%2F%3E%3Cstop%20offset%3D%22.295%22%20stop-color%3D%22%23FFC82A%22%2F%3E%3Cstop%20offset%3D%22.502%22%20stop-color%3D%22%23FFA930%22%2F%3E%3Cstop%20offset%3D%22.732%22%20stop-color%3D%22%23FF7E37%22%2F%3E%3Cstop%20offset%3D%22.792%22%20stop-color%3D%22%23FF7139%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22i%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22translate(56.67%20-9.104)%20scale(109.283)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%22.113%22%20stop-color%3D%22%23FFF44F%22%2F%3E%3Cstop%20offset%3D%22.456%22%20stop-color%3D%22%23FF980E%22%2F%3E%3Cstop%20offset%3D%22.622%22%20stop-color%3D%22%23FF5634%22%2F%3E%3Cstop%20offset%3D%22.716%22%20stop-color%3D%22%23FF3647%22%2F%3E%3Cstop%20offset%3D%22.904%22%20stop-color%3D%22%23E31587%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22j%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22rotate(83.976%2025.485%2024.914)%20scale(80.0845%2052.5588)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23FFF44F%22%2F%3E%3Cstop%20offset%3D%22.06%22%20stop-color%3D%22%23FFE847%22%2F%3E%3Cstop%20offset%3D%22.168%22%20stop-color%3D%22%23FFC830%22%2F%3E%3Cstop%20offset%3D%22.304%22%20stop-color%3D%22%23FF980E%22%2F%3E%3Cstop%20offset%3D%22.356%22%20stop-color%3D%22%23FF8B16%22%2F%3E%3Cstop%20offset%3D%22.455%22%20stop-color%3D%22%23FF672A%22%2F%3E%3Cstop%20offset%3D%22.57%22%20stop-color%3D%22%23FF3647%22%2F%3E%3Cstop%20offset%3D%22.737%22%20stop-color%3D%22%23E31587%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22k%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22translate(36.313%2016.807)%20scale(68.2166)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%22.137%22%20stop-color%3D%22%23FFF44F%22%2F%3E%3Cstop%20offset%3D%22.48%22%20stop-color%3D%22%23FF980E%22%2F%3E%3Cstop%20offset%3D%22.592%22%20stop-color%3D%22%23FF5634%22%2F%3E%3Cstop%20offset%3D%22.655%22%20stop-color%3D%22%23FF3647%22%2F%3E%3Cstop%20offset%3D%22.904%22%20stop-color%3D%22%23E31587%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22l%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22translate(53.894%2020.507)%20scale(74.6662)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%22.094%22%20stop-color%3D%22%23FFF44F%22%2F%3E%3Cstop%20offset%3D%22.231%22%20stop-color%3D%22%23FFE141%22%2F%3E%3Cstop%20offset%3D%22.509%22%20stop-color%3D%22%23FFAF1E%22%2F%3E%3Cstop%20offset%3D%22.626%22%20stop-color%3D%22%23FF980E%22%2F%3E%3C%2FradialGradient%3E%3ClinearGradient%20id%3D%22b%22%20x1%3D%2267.302%22%20x2%3D%227.762%22%20y1%3D%2213.461%22%20y2%3D%2270.907%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%22.048%22%20stop-color%3D%22%23FFF44F%22%2F%3E%3Cstop%20offset%3D%22.111%22%20stop-color%3D%22%23FFE847%22%2F%3E%3Cstop%20offset%3D%22.225%22%20stop-color%3D%22%23FFC830%22%2F%3E%3Cstop%20offset%3D%22.368%22%20stop-color%3D%22%23FF980E%22%2F%3E%3Cstop%20offset%3D%22.401%22%20stop-color%3D%22%23FF8B16%22%2F%3E%3Cstop%20offset%3D%22.462%22%20stop-color%3D%22%23FF672A%22%2F%3E%3Cstop%20offset%3D%22.534%22%20stop-color%3D%22%23FF3647%22%2F%3E%3Cstop%20offset%3D%22.705%22%20stop-color%3D%22%23E31587%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22m%22%20x1%3D%2266.58%22%20x2%3D%2215.926%22%20y1%3D%2213.156%22%20y2%3D%2263.819%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%22.167%22%20stop-color%3D%22%23FFF44F%22%20stop-opacity%3D%22.8%22%2F%3E%3Cstop%20offset%3D%22.266%22%20stop-color%3D%22%23FFF44F%22%20stop-opacity%3D%22.634%22%2F%3E%3Cstop%20offset%3D%22.489%22%20stop-color%3D%22%23FFF44F%22%20stop-opacity%3D%22.217%22%2F%3E%3Cstop%20offset%3D%22.6%22%20stop-color%3D%22%23FFF44F%22%20stop-opacity%3D%220%22%2F%3E%3C%2FlinearGradient%3E%3CclipPath%20id%3D%22a%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M0%200h71.64v74H0z%22%20transform%3D%22translate(3%202)%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fsvg%3E";export{o as default}; diff --git a/client2/build/assets/Linux-OO4TNCLJ-B0aw93n9.js b/client2/build/assets/Linux-OO4TNCLJ-B0aw93n9.js deleted file mode 100644 index 41d229029..000000000 --- a/client2/build/assets/Linux-OO4TNCLJ-B0aw93n9.js +++ /dev/null @@ -1 +0,0 @@ -var e="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2248%22%20height%3D%2248%22%20fill%3D%22none%22%3E%3Cpath%20fill%3D%22%23020204%22%20d%3D%22M23.803%200c-1.125%200-2.254.221-3.274.772a6.025%206.025%200%200%200-2.518%202.62c-.547%201.102-.761%202.28-.795%203.577-.062%202.464.056%205.048.242%207.39.049.712.139%201.129.047%201.862-.304%201.556-1.665%202.602-2.392%203.969-.801%201.508-1.139%203.212-1.742%204.81-.553%201.46-1.33%202.83-1.853%204.302-.733%202.057-.952%204.319-.469%206.449.37%201.623%201.14%203.146%202.18%204.449-.15.27-.297.546-.45.814-.483.83-1.072%201.62-1.345%202.54-.137.46-.191.951-.103%201.423.088.473.328.925.703%201.225.245.195.543.322.85.394.305.069.622.086.937.08%201.194-.026%202.353-.388%203.508-.692a41.85%2041.85%200%200%201%202.068-.483c2.464-.505%205.212-.302%207.498.028.774.118%201.543.27%202.304.455%201.193.29%202.38.657%203.606.692.322.01.649-.005.964-.075.315-.071.62-.198.872-.4.377-.3.617-.753.705-1.225.088-.473.033-.966-.105-1.427-.278-.923-.872-1.708-1.364-2.535-.195-.328-.375-.662-.568-.99%201.482-1.663%202.674-3.587%203.364-5.7.752-2.306.89-4.79.574-7.196-.317-2.406-1.08-4.739-2.083-6.947-1.26-2.768-2.32-3.77-3.088-6.201-.83-2.629-.145-5.74-.762-8.123a8.333%208.333%200%200%200-1.021-2.293%207.856%207.856%200%200%200-1.997-2.15C27.024.49%2025.426%200%2023.803%200Z%22%2F%3E%3Cpath%20fill%3D%22%23FDFDFB%22%20d%3D%22M19.337%2013.875a1.938%201.938%200%200%200-.345.73c-.066.262-.09.534-.101.806-.021.542.013%201.093-.132%201.616-.153.559-.497%201.044-.832%201.515-.583.817-1.172%201.657-1.459%202.62a4.652%204.652%200%200%200-.17%201.803%2019.233%2019.233%200%200%200-1.684%203.034c-.709%201.607-1.195%203.317-1.365%205.064-.21%202.14.063%204.34.91%206.317.608%201.43%201.52%202.737%202.695%203.758.597.517%201.26.958%201.97%201.306%202.457%201.21%205.495%201.212%207.912-.077%201.263-.673%202.33-1.657%203.358-2.653.618-.6%201.235-1.215%201.708-1.935.91-1.389%201.226-3.077%201.423-4.725.343-2.88.354-5.925-.91-8.537a9.406%209.406%200%200%200-1.71-2.446%2013.35%2013.35%200%200%200-1.08-3.642c-.384-.834-.85-1.627-1.207-2.47-.146-.348-.274-.704-.435-1.043-.163-.34-.362-.666-.636-.927a2.592%202.592%200%200%200-.99-.575%204.244%204.244%200%200%200-1.136-.195c-.77-.04-1.541.062-2.312.03-.613-.025-1.224-.132-1.837-.096a2.829%202.829%200%200%200-.896.19%201.793%201.793%200%200%200-.74.532Z%22%2F%3E%3Cmask%20id%3D%22a%22%20width%3D%2228%22%20height%3D%2247%22%20x%3D%2210%22%20y%3D%220%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M23.803%200c-1.125%200-2.254.221-3.274.772a6.025%206.025%200%200%200-2.518%202.62c-.547%201.102-.761%202.28-.795%203.577-.062%202.464.056%205.048.242%207.39.049.712.139%201.129.047%201.862-.304%201.556-1.665%202.602-2.392%203.969-.801%201.508-1.139%203.212-1.742%204.81-.553%201.46-1.33%202.83-1.853%204.302-.733%202.057-.952%204.319-.469%206.449.37%201.623%201.14%203.146%202.18%204.449-.15.27-.297.546-.45.814-.483.83-1.072%201.62-1.345%202.54-.137.46-.191.951-.103%201.423.088.473.328.925.703%201.225.245.195.543.322.85.394.305.069.622.086.937.08%201.194-.026%202.353-.388%203.508-.692a41.85%2041.85%200%200%201%202.068-.483c2.464-.505%205.212-.302%207.498.028.774.118%201.543.27%202.304.455%201.193.29%202.38.657%203.606.692.322.01.649-.005.964-.075.315-.071.62-.198.872-.4.377-.3.617-.753.705-1.225.088-.473.033-.966-.105-1.427-.278-.923-.872-1.708-1.364-2.535-.195-.328-.375-.662-.568-.99%201.482-1.663%202.674-3.587%203.364-5.7.752-2.306.89-4.79.574-7.196-.317-2.406-1.08-4.739-2.083-6.947-1.26-2.768-2.32-3.77-3.088-6.201-.83-2.629-.145-5.74-.762-8.123a8.333%208.333%200%200%200-1.021-2.293%207.856%207.856%200%200%200-1.997-2.15C27.024.49%2025.426%200%2023.803%200Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23b)%22%20mask%3D%22url(%23a)%22%20opacity%3D%22.25%22%3E%3Cpath%20fill%3D%22url(%23c)%22%20d%3D%22M16.626%2021.596c.163.246-.104%201.095%203.723.552%200%200-.673.073-1.335.226-1.029.345-1.925.73-2.619%201.24-.684.506-1.187%201.164-1.815%201.729%200%200%201.018-1.86%201.271-2.421.255-.56-.041-.535.16-1.36.2-.825.692-1.618.692-1.618s-.402%201.167-.077%201.652Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22d%22%20width%3D%2228%22%20height%3D%2247%22%20x%3D%2210%22%20y%3D%220%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M23.803%200c-1.125%200-2.254.221-3.274.772a6.025%206.025%200%200%200-2.518%202.62c-.547%201.102-.761%202.28-.795%203.577-.062%202.464.056%205.048.242%207.39.049.712.139%201.129.047%201.862-.304%201.556-1.665%202.602-2.392%203.969-.801%201.508-1.139%203.212-1.742%204.81-.553%201.46-1.33%202.83-1.853%204.302-.733%202.057-.952%204.319-.469%206.449.37%201.623%201.14%203.146%202.18%204.449-.15.27-.297.546-.45.814-.483.83-1.072%201.62-1.345%202.54-.137.46-.191.951-.103%201.423.088.473.328.925.703%201.225.245.195.543.322.85.394.305.069.622.086.937.08%201.194-.026%202.353-.388%203.508-.692a41.85%2041.85%200%200%201%202.068-.483c2.464-.505%205.212-.302%207.498.028.774.118%201.543.27%202.304.455%201.193.29%202.38.657%203.606.692.322.01.649-.005.964-.075.315-.071.62-.198.872-.4.377-.3.617-.753.705-1.225.088-.473.033-.966-.105-1.427-.278-.923-.872-1.708-1.364-2.535-.195-.328-.375-.662-.568-.99%201.482-1.663%202.674-3.587%203.364-5.7.752-2.306.89-4.79.574-7.196-.317-2.406-1.08-4.739-2.083-6.947-1.26-2.768-2.32-3.77-3.088-6.201-.83-2.629-.145-5.74-.762-8.123a8.333%208.333%200%200%200-1.021-2.293%207.856%207.856%200%200%200-1.997-2.15C27.024.49%2025.426%200%2023.803%200Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23e)%22%20mask%3D%22url(%23d)%22%20opacity%3D%22.42%22%3E%3Cpath%20fill%3D%22url(%23f)%22%20d%3D%22M28.927%2021.373c-.78.544-1.237.48-2.182.585-.947.107-3.506.068-3.506.068s.37-.006%201.192.146c.822.154%202.496.3%203.439.658.945.36%201.288.463%201.862.825.816.516%201.416%201.324%202.195%201.89%200%200%20.038-.75-.277-1.31-.315-.561-1.162-1.444-1.412-2.27-.247-.824-.367-2.444-.367-2.444s-.165%201.31-.944%201.852Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22g%22%20width%3D%2228%22%20height%3D%2247%22%20x%3D%2210%22%20y%3D%220%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M23.803%200c-1.125%200-2.254.221-3.274.772a6.025%206.025%200%200%200-2.518%202.62c-.547%201.102-.761%202.28-.795%203.577-.062%202.464.056%205.048.242%207.39.049.712.139%201.129.047%201.862-.304%201.556-1.665%202.602-2.392%203.969-.801%201.508-1.139%203.212-1.742%204.81-.553%201.46-1.33%202.83-1.853%204.302-.733%202.057-.952%204.319-.469%206.449.37%201.623%201.14%203.146%202.18%204.449-.15.27-.297.546-.45.814-.483.83-1.072%201.62-1.345%202.54-.137.46-.191.951-.103%201.423.088.473.328.925.703%201.225.245.195.543.322.85.394.305.069.622.086.937.08%201.194-.026%202.353-.388%203.508-.692a41.85%2041.85%200%200%201%202.068-.483c2.464-.505%205.212-.302%207.498.028.774.118%201.543.27%202.304.455%201.193.29%202.38.657%203.606.692.322.01.649-.005.964-.075.315-.071.62-.198.872-.4.377-.3.617-.753.705-1.225.088-.473.033-.966-.105-1.427-.278-.923-.872-1.708-1.364-2.535-.195-.328-.375-.662-.568-.99%201.482-1.663%202.674-3.587%203.364-5.7.752-2.306.89-4.79.574-7.196-.317-2.406-1.08-4.739-2.083-6.947-1.26-2.768-2.32-3.77-3.088-6.201-.83-2.629-.145-5.74-.762-8.123a8.333%208.333%200%200%200-1.021-2.293%207.856%207.856%200%200%200-1.997-2.15C27.024.49%2025.426%200%2023.803%200Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23h)%22%20mask%3D%22url(%23g)%22%20opacity%3D%22.2%22%3E%3Cpath%20fill%3D%22url(%23i)%22%20d%3D%22M21.594%2020.214c-.03.235-.067.47-.112.702a2.085%202.085%200%200%201-.09.337.763.763%200%200%201-.191.29c-.077.07-.17.117-.263.16a4.02%204.02%200%200%201-1.147.326c.157.012.315.027.474.044.1.01.199.022.294.046a.837.837%200%200%201%20.274.122.758.758%200%200%201%20.21.252c.103.19.137.412.156.631.024.278.026.56.005.837.02-.186.058-.372.117-.548.106-.322.275-.622.504-.872a1.66%201.66%200%200%201%201.47-.55%201.822%201.822%200%200%201-1.163-.361%201.508%201.508%200%200%201-.416-.469%201.31%201.31%200%200%201-.122-.947Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22j%22%20width%3D%2228%22%20height%3D%2247%22%20x%3D%2210%22%20y%3D%220%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M23.803%200c-1.125%200-2.254.221-3.274.772a6.025%206.025%200%200%200-2.518%202.62c-.547%201.102-.761%202.28-.795%203.577-.062%202.464.056%205.048.242%207.39.049.712.139%201.129.047%201.862-.304%201.556-1.665%202.602-2.392%203.969-.801%201.508-1.139%203.212-1.742%204.81-.553%201.46-1.33%202.83-1.853%204.302-.733%202.057-.952%204.319-.469%206.449.37%201.623%201.14%203.146%202.18%204.449-.15.27-.297.546-.45.814-.483.83-1.072%201.62-1.345%202.54-.137.46-.191.951-.103%201.423.088.473.328.925.703%201.225.245.195.543.322.85.394.305.069.622.086.937.08%201.194-.026%202.353-.388%203.508-.692a41.85%2041.85%200%200%201%202.068-.483c2.464-.505%205.212-.302%207.498.028.774.118%201.543.27%202.304.455%201.193.29%202.38.657%203.606.692.322.01.649-.005.964-.075.315-.071.62-.198.872-.4.377-.3.617-.753.705-1.225.088-.473.033-.966-.105-1.427-.278-.923-.872-1.708-1.364-2.535-.195-.328-.375-.662-.568-.99%201.482-1.663%202.674-3.587%203.364-5.7.752-2.306.89-4.79.574-7.196-.317-2.406-1.08-4.739-2.083-6.947-1.26-2.768-2.32-3.77-3.088-6.201-.83-2.629-.145-5.74-.762-8.123a8.333%208.333%200%200%200-1.021-2.293%207.856%207.856%200%200%200-1.997-2.15C27.024.49%2025.426%200%2023.803%200Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23k)%22%20mask%3D%22url(%23j)%22%20opacity%3D%22.11%22%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M20.597%2025.714a14.133%2014.133%200%200%200-.407%202.308c-.103%201.1-.079%202.209-.139%203.313-.048.936-.16%201.883.004%202.807.077.44.216.87.413%201.271.03-.154.054-.307.067-.463.07-.75-.056-1.502-.1-2.252-.074-1.316.108-2.632.183-3.949.056-1.01.05-2.025-.021-3.035Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22l%22%20width%3D%2228%22%20height%3D%2247%22%20x%3D%2210%22%20y%3D%220%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M23.803%200c-1.125%200-2.254.221-3.274.772a6.025%206.025%200%200%200-2.518%202.62c-.547%201.102-.761%202.28-.795%203.577-.062%202.464.056%205.048.242%207.39.049.712.139%201.129.047%201.862-.304%201.556-1.665%202.602-2.392%203.969-.801%201.508-1.139%203.212-1.742%204.81-.553%201.46-1.33%202.83-1.853%204.302-.733%202.057-.952%204.319-.469%206.449.37%201.623%201.14%203.146%202.18%204.449-.15.27-.297.546-.45.814-.483.83-1.072%201.62-1.345%202.54-.137.46-.191.951-.103%201.423.088.473.328.925.703%201.225.245.195.543.322.85.394.305.069.622.086.937.08%201.194-.026%202.353-.388%203.508-.692a41.85%2041.85%200%200%201%202.068-.483c2.464-.505%205.212-.302%207.498.028.774.118%201.543.27%202.304.455%201.193.29%202.38.657%203.606.692.322.01.649-.005.964-.075.315-.071.62-.198.872-.4.377-.3.617-.753.705-1.225.088-.473.033-.966-.105-1.427-.278-.923-.872-1.708-1.364-2.535-.195-.328-.375-.662-.568-.99%201.482-1.663%202.674-3.587%203.364-5.7.752-2.306.89-4.79.574-7.196-.317-2.406-1.08-4.739-2.083-6.947-1.26-2.768-2.32-3.77-3.088-6.201-.83-2.629-.145-5.74-.762-8.123a8.333%208.333%200%200%200-1.021-2.293%207.856%207.856%200%200%200-1.997-2.15C27.024.49%2025.426%200%2023.803%200Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23m)%22%20mask%3D%22url(%23l)%22%20opacity%3D%22.75%22%3E%3Cpath%20fill%3D%22%237C7C7C%22%20d%3D%22M33.765%2024.606c.193-.03%201.376.976%201.215%201.351-.161.374-.467.149-.684.15-.218.004-.812.274-.912.104-.1-.171.263-.569.452-.902.154-.268-.262-.673-.071-.703Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22n%22%20width%3D%2228%22%20height%3D%2247%22%20x%3D%2210%22%20y%3D%220%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M23.803%200c-1.125%200-2.254.221-3.274.772a6.025%206.025%200%200%200-2.518%202.62c-.547%201.102-.761%202.28-.795%203.577-.062%202.464.056%205.048.242%207.39.049.712.139%201.129.047%201.862-.304%201.556-1.665%202.602-2.392%203.969-.801%201.508-1.139%203.212-1.742%204.81-.553%201.46-1.33%202.83-1.853%204.302-.733%202.057-.952%204.319-.469%206.449.37%201.623%201.14%203.146%202.18%204.449-.15.27-.297.546-.45.814-.483.83-1.072%201.62-1.345%202.54-.137.46-.191.951-.103%201.423.088.473.328.925.703%201.225.245.195.543.322.85.394.305.069.622.086.937.08%201.194-.026%202.353-.388%203.508-.692a41.85%2041.85%200%200%201%202.068-.483c2.464-.505%205.212-.302%207.498.028.774.118%201.543.27%202.304.455%201.193.29%202.38.657%203.606.692.322.01.649-.005.964-.075.315-.071.62-.198.872-.4.377-.3.617-.753.705-1.225.088-.473.033-.966-.105-1.427-.278-.923-.872-1.708-1.364-2.535-.195-.328-.375-.662-.568-.99%201.482-1.663%202.674-3.587%203.364-5.7.752-2.306.89-4.79.574-7.196-.317-2.406-1.08-4.739-2.083-6.947-1.26-2.768-2.32-3.77-3.088-6.201-.83-2.629-.145-5.74-.762-8.123a8.333%208.333%200%200%200-1.021-2.293%207.856%207.856%200%200%200-1.997-2.15C27.024.49%2025.426%200%2023.803%200Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23o)%22%20mask%3D%22url(%23n)%22%3E%3Cpath%20fill%3D%22%237C7C7C%22%20d%3D%22M26.535%202.085c-.414.293-.234.658-.056%201.024.178.367-.392%201.423-.398%201.468-.005.045%201.122-.534%201.429-.913.364-.445%201.28.604%201.23.444.002-.285-1.79-2.314-2.205-2.023Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22p%22%20width%3D%2228%22%20height%3D%2247%22%20x%3D%2210%22%20y%3D%220%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M23.803%200c-1.125%200-2.254.221-3.274.772a6.025%206.025%200%200%200-2.518%202.62c-.547%201.102-.761%202.28-.795%203.577-.062%202.464.056%205.048.242%207.39.049.712.139%201.129.047%201.862-.304%201.556-1.665%202.602-2.392%203.969-.801%201.508-1.139%203.212-1.742%204.81-.553%201.46-1.33%202.83-1.853%204.302-.733%202.057-.952%204.319-.469%206.449.37%201.623%201.14%203.146%202.18%204.449-.15.27-.297.546-.45.814-.483.83-1.072%201.62-1.345%202.54-.137.46-.191.951-.103%201.423.088.473.328.925.703%201.225.245.195.543.322.85.394.305.069.622.086.937.08%201.194-.026%202.353-.388%203.508-.692a41.85%2041.85%200%200%201%202.068-.483c2.464-.505%205.212-.302%207.498.028.774.118%201.543.27%202.304.455%201.193.29%202.38.657%203.606.692.322.01.649-.005.964-.075.315-.071.62-.198.872-.4.377-.3.617-.753.705-1.225.088-.473.033-.966-.105-1.427-.278-.923-.872-1.708-1.364-2.535-.195-.328-.375-.662-.568-.99%201.482-1.663%202.674-3.587%203.364-5.7.752-2.306.89-4.79.574-7.196-.317-2.406-1.08-4.739-2.083-6.947-1.26-2.768-2.32-3.77-3.088-6.201-.83-2.629-.145-5.74-.762-8.123a8.333%208.333%200%200%200-1.021-2.293%207.856%207.856%200%200%200-1.997-2.15C27.024.49%2025.426%200%2023.803%200Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23q)%22%20mask%3D%22url(%23p)%22%3E%3Cpath%20fill%3D%22%23838384%22%20d%3D%22M29.676%2014.368c-.35.319.165.797.407%201.358.151.348.57.841.975.763.305-.06.493-.499.465-.807-.057-.596-.56-.736-.925-.94-.289-.162-.677-.597-.922-.374Z%22%2F%3E%3C%2Fg%3E%3Cpath%20fill%3D%22%23020204%22%20d%3D%22M15.746%2018.92c-1.144%201.298-2.32%202.556-2.964%203.96-.32.713-.47%201.488-.69%202.238a16.86%2016.86%200%200%201-.964%202.478c-.35.74-.737%201.465-1.121%202.186-.281.527-.566%201.064-.664%201.652-.077.465-.034.945.086%201.401.118.456.308.89.523%201.309.915%201.79%202.29%203.332%203.917%204.513.74.534%201.529.997%202.36%201.378.45.204.922.388%201.417.396.247.005.496-.036.723-.135.225-.1.428-.26.563-.467.165-.255.221-.572.187-.874a2.104%202.104%200%200%200-.309-.85c-.386-.633-.996-1.092-1.582-1.546a53.126%2053.126%200%200%201-3.666-3.109c-.33-.31-.662-.626-.893-1.016-.225-.379-.347-.81-.429-1.243-.227-1.187-.169-2.436.234-3.576.16-.446.368-.872.57-1.3.35-.74.68-1.496%201.138-2.174.572-.846%201.337-1.562%201.802-2.47.394-.767.554-1.627.705-2.475.12-.664.347-1.312.463-1.976-.226.431-.958%201.138-1.406%201.7Z%22%2F%3E%3Cmask%20id%3D%22r%22%20width%3D%2211%22%20height%3D%2224%22%20x%3D%229%22%20y%3D%2217%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M15.746%2018.92c-1.144%201.298-2.32%202.556-2.964%203.96-.32.713-.47%201.488-.69%202.238a16.86%2016.86%200%200%201-.964%202.478c-.35.74-.737%201.465-1.121%202.186-.281.527-.566%201.064-.664%201.652-.077.465-.034.945.086%201.401.118.456.308.89.523%201.309.915%201.79%202.29%203.332%203.917%204.513.74.534%201.529.997%202.36%201.378.45.204.922.388%201.417.396.247.005.496-.036.723-.135.225-.1.428-.26.563-.467.165-.255.221-.572.187-.874a2.104%202.104%200%200%200-.309-.85c-.386-.633-.996-1.092-1.582-1.546a53.126%2053.126%200%200%201-3.666-3.109c-.33-.31-.662-.626-.893-1.016-.225-.379-.347-.81-.429-1.243-.227-1.187-.169-2.436.234-3.576.16-.446.368-.872.57-1.3.35-.74.68-1.496%201.138-2.174.572-.846%201.337-1.562%201.802-2.47.394-.767.554-1.627.705-2.475.12-.664.347-1.312.463-1.976-.226.431-.958%201.138-1.406%201.7Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23s)%22%20mask%3D%22url(%23r)%22%20opacity%3D%22.95%22%3E%3Cpath%20fill%3D%22%237C7C7C%22%20d%3D%22M14.43%2023.644a5.32%205.32%200%200%200-.962%201.183c-.431.72-.684%201.53-1%202.308-.232.58-.504%201.162-.536%201.787-.016.32.03.641.042.962.011.32-.019.654-.177.933-.13.235-.35.419-.603.509.343.114.647.335.862.624.18.244.296.527.452.784.128.21.283.405.476.557.192.153.422.262.664.292a1.17%201.17%200%200%200%20.932-.296%2021.852%2021.852%200%200%201%20.832-8.694c.055-.177.111-.355.126-.539a.775.775%200%200%200-.135-.526.56.56%200%200%200-.52-.22.573.573%200%200%200-.271.107.584.584%200%200%200-.182.229Z%22%2F%3E%3C%2Fg%3E%3Cpath%20fill%3D%22%23020204%22%20d%3D%22M34.267%2023.835c.983.791%201.607%201.986%201.8%203.232.15.972.053%201.971-.166%202.93-.22.96-.557%201.886-.895%202.812-.133.367-.268.74-.32%201.129-.055.39-.021.8.166%201.145.216.396.617.668%201.049.795.425.128.885.124%201.316.017.431-.107%201.157-.246%201.507-.52.891-.691%201.103-1.893%201.315-2.947.22-1.1.112-2.254-.08-3.365-.265-1.517-.71-2.999-1.274-4.43a15.429%2015.429%200%200%200-1.583-2.992c-.622-.917-1.503-1.631-2.156-2.527-.227-.312-.498-.634-.72-.949-.48-.679-.371-.551-.67-.992-.215-.319-.556-.427-.914-.566a1.82%201.82%200%200%200-1.133-.077c-.487.137-.887.523-1.098.982-.212.462-.25.99-.167%201.491.107.645.401%201.245.735%201.808.375.635.81%201.248%201.378%201.72.592.494%201.309.82%201.91%201.304Z%22%2F%3E%3Cmask%20id%3D%22t%22%20width%3D%2211%22%20height%3D%2220%22%20x%3D%2230%22%20y%3D%2216%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M34.267%2023.835c.983.791%201.607%201.986%201.8%203.232.15.972.053%201.971-.166%202.93-.22.96-.557%201.886-.895%202.812-.133.367-.268.74-.32%201.129-.055.39-.021.8.166%201.145.216.396.617.668%201.049.795.425.128.885.124%201.316.017.431-.107%201.157-.246%201.507-.52.891-.691%201.103-1.893%201.315-2.947.22-1.1.112-2.254-.08-3.365-.265-1.517-.71-2.999-1.274-4.43a15.429%2015.429%200%200%200-1.583-2.992c-.622-.917-1.503-1.631-2.156-2.527-.227-.312-.498-.634-.72-.949-.48-.679-.371-.551-.67-.992-.215-.319-.556-.427-.914-.566a1.82%201.82%200%200%200-1.133-.077c-.487.137-.887.523-1.098.982-.212.462-.25.99-.167%201.491.107.645.401%201.245.735%201.808.375.635.81%201.248%201.378%201.72.592.494%201.309.82%201.91%201.304Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23u)%22%20mask%3D%22url(%23t)%22%3E%3Cpath%20fill%3D%22%23838384%22%20d%3D%22M31.954%2022.31c.078.076.161.152.245.224.604.493.925%201.046%201.538%201.53%201.001.791%202.015%202.156%202.212%203.403.154.973-.048%201.502-.296%202.647-.247%201.148-.949%202.772-1.33%203.878-.15.44.308.259.248.724-.03.228-.033.459-.005.688.003-.043.005-.09.01-.133.074-.634.267-1.243.479-1.842.407-1.149.874-2.278%201.196-3.459.323-1.18.287-2.029.118-3.043-.212-1.277-.954-2.454-2.004-3.233-.744-.549-1.62-.901-2.411-1.383Z%22%2F%3E%3C%2Fg%3E%3Cpath%20fill%3D%22url(%23v)%22%20d%3D%22M10.309%2032.874a1.47%201.47%200%200%201%20.823-.077c.276.051.536.171.767.327.463.315.806.772%201.134%201.226a43.064%2043.064%200%200%201%202.141%203.203c.535.896%201.024%201.82%201.643%202.658.403.55.857%201.058%201.262%201.603.405.548.763%201.14.943%201.797a3.603%203.603%200%200%201-.263%202.578%203.397%203.397%200%200%201-1.256%201.348%203.224%203.224%200%200%201-1.716.463c-.988%200-1.953-.53-2.872-.896-1.871-.746-3.904-.979-5.833-1.56-.593-.178-1.176-.39-1.772-.553-.266-.074-.534-.137-.786-.252-.25-.112-.485-.283-.624-.519-.107-.184-.15-.4-.15-.611%200-.214.053-.424.126-.623.144-.4.378-.761.536-1.157.257-.645.304-1.355.268-2.049-.034-.692-.146-1.38-.193-2.072-.023-.31-.03-.622.03-.928.058-.304.19-.602.412-.816a1.53%201.53%200%200%201%20.76-.375c.28-.058.568-.06.853-.054.285.006.572.023.857-.002.285-.022.572-.086.82-.229.235-.135.429-.335.588-.555.16-.219.289-.459.422-.697.131-.236.268-.473.442-.683.173-.21.386-.392.638-.495Z%22%2F%3E%3Cmask%20id%3D%22w%22%20width%3D%2217%22%20height%3D%2216%22%20x%3D%223%22%20y%3D%2232%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M10.309%2032.874a1.47%201.47%200%200%201%20.823-.077c.276.051.536.171.767.327.463.315.806.772%201.134%201.226a43.064%2043.064%200%200%201%202.141%203.203c.535.896%201.024%201.82%201.643%202.658.403.55.857%201.058%201.262%201.603.405.548.763%201.14.943%201.797a3.603%203.603%200%200%201-.263%202.578%203.397%203.397%200%200%201-1.256%201.348%203.224%203.224%200%200%201-1.716.463c-.988%200-1.953-.53-2.872-.896-1.871-.746-3.904-.979-5.833-1.56-.593-.178-1.176-.39-1.772-.553-.266-.074-.534-.137-.786-.252-.25-.112-.485-.283-.624-.519-.107-.184-.15-.4-.15-.611%200-.214.053-.424.126-.623.144-.4.378-.761.536-1.157.257-.645.304-1.355.268-2.049-.034-.692-.146-1.38-.193-2.072-.023-.31-.03-.622.03-.928.058-.304.19-.602.412-.816a1.53%201.53%200%200%201%20.76-.375c.28-.058.568-.06.853-.054.285.006.572.023.857-.002.285-.022.572-.086.82-.229.235-.135.429-.335.588-.555.16-.219.289-.459.422-.697.131-.236.268-.473.442-.683.173-.21.386-.392.638-.495Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23x)%22%20mask%3D%22url(%23w)%22%3E%3Cpath%20fill%3D%22%23D99A03%22%20d%3D%22M10.717%2033.319c.235-.094.501-.105.747-.049.247.056.478.176.677.332.4.31.678.744.947%201.174a77.015%2077.015%200%200%201%201.86%203.16c.45.809.877%201.632%201.428%202.373.366.491.784.943%201.157%201.428.373.486.705%201.015.87%201.605.214.76.128%201.602-.24%202.3a3.07%203.07%200%200%201-1.162%201.214%202.988%202.988%200%200%201-1.63.401c-.904-.04-1.73-.493-2.582-.798-1.633-.593-3.4-.673-5.077-1.135-.6-.163-1.185-.38-1.787-.532-.268-.068-.54-.124-.793-.23-.253-.108-.491-.273-.63-.51a1.134%201.134%200%200%201-.137-.591%201.88%201.88%200%200%201%20.131-.599c.147-.382.375-.727.522-1.11.223-.577.25-1.213.21-1.83-.042-.616-.15-1.23-.188-1.846a3.207%203.207%200%200%201%20.038-.827c.056-.272.174-.535.37-.73.215-.212.507-.326.805-.373.296-.045.598-.024.896.002.3.026.6.06.9.043.3-.019.604-.092.852-.26.225-.152.393-.375.523-.613.13-.239.221-.495.32-.747.098-.253.205-.504.358-.73.154-.222.362-.42.615-.522Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22y%22%20width%3D%2217%22%20height%3D%2216%22%20x%3D%223%22%20y%3D%2232%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M10.309%2032.874a1.47%201.47%200%200%201%20.823-.077c.276.051.536.171.767.327.463.315.806.772%201.134%201.226a43.064%2043.064%200%200%201%202.141%203.203c.535.896%201.024%201.82%201.643%202.658.403.55.857%201.058%201.262%201.603.405.548.763%201.14.943%201.797a3.603%203.603%200%200%201-.263%202.578%203.397%203.397%200%200%201-1.256%201.348%203.224%203.224%200%200%201-1.716.463c-.988%200-1.953-.53-2.872-.896-1.871-.746-3.904-.979-5.833-1.56-.593-.178-1.176-.39-1.772-.553-.266-.074-.534-.137-.786-.252-.25-.112-.485-.283-.624-.519-.107-.184-.15-.4-.15-.611%200-.214.053-.424.126-.623.144-.4.378-.761.536-1.157.257-.645.304-1.355.268-2.049-.034-.692-.146-1.38-.193-2.072-.023-.31-.03-.622.03-.928.058-.304.19-.602.412-.816a1.53%201.53%200%200%201%20.76-.375c.28-.058.568-.06.853-.054.285.006.572.023.857-.002.285-.022.572-.086.82-.229.235-.135.429-.335.588-.555.16-.219.289-.459.422-.697.131-.236.268-.473.442-.683.173-.21.386-.392.638-.495Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23z)%22%20mask%3D%22url(%23y)%22%3E%3Cpath%20fill%3D%22%23F5BD0C%22%20d%3D%22M10.498%2032.732c.229-.113.497-.135.746-.084.25.05.482.172.68.331.391.32.642.775.875%201.221.532%201.024%201.031%202.07%201.668%203.036.465.699%201%201.35%201.469%202.047.635.943%201.153%201.982%201.366%203.094.143.75.14%201.558-.22%202.231a2.479%202.479%200%200%201-1.079%201.035c-.454.229-.977.32-1.485.276-.8-.07-1.526-.463-2.28-.739-1.337-.486-2.782-.604-4.159-.971-.579-.154-1.149-.355-1.736-.477-.26-.054-.525-.093-.772-.187-.248-.094-.482-.25-.61-.478a.967.967%200%200%201-.105-.533c.013-.181.068-.36.139-.53.144-.338.356-.649.467-.998.165-.515.097-1.072-.026-1.6-.122-.524-.3-1.04-.355-1.576a2.138%202.138%200%200%201%20.032-.716c.054-.235.165-.46.34-.627.224-.215.54-.324.854-.354.314-.03.629.011.94.056.311.045.626.094.94.08.314-.014.635-.096.88-.29.244-.19.398-.474.486-.767.088-.294.116-.6.152-.903.036-.304.08-.611.199-.895.118-.283.317-.543.594-.682Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22A%22%20width%3D%2217%22%20height%3D%2216%22%20x%3D%223%22%20y%3D%2232%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M10.309%2032.874a1.47%201.47%200%200%201%20.823-.077c.276.051.536.171.767.327.463.315.806.772%201.134%201.226a43.064%2043.064%200%200%201%202.141%203.203c.535.896%201.024%201.82%201.643%202.658.403.55.857%201.058%201.262%201.603.405.548.763%201.14.943%201.797a3.603%203.603%200%200%201-.263%202.578%203.397%203.397%200%200%201-1.256%201.348%203.224%203.224%200%200%201-1.716.463c-.988%200-1.953-.53-2.872-.896-1.871-.746-3.904-.979-5.833-1.56-.593-.178-1.176-.39-1.772-.553-.266-.074-.534-.137-.786-.252-.25-.112-.485-.283-.624-.519-.107-.184-.15-.4-.15-.611%200-.214.053-.424.126-.623.144-.4.378-.761.536-1.157.257-.645.304-1.355.268-2.049-.034-.692-.146-1.38-.193-2.072-.023-.31-.03-.622.03-.928.058-.304.19-.602.412-.816a1.53%201.53%200%200%201%20.76-.375c.28-.058.568-.06.853-.054.285.006.572.023.857-.002.285-.022.572-.086.82-.229.235-.135.429-.335.588-.555.16-.219.289-.459.422-.697.131-.236.268-.473.442-.683.173-.21.386-.392.638-.495Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23B)%22%20mask%3D%22url(%23A)%22%3E%3Cpath%20fill%3D%22url(%23C)%22%20d%3D%22M13.35%2035.29c.422.76.679%201.634%201.097%202.403.384.707.821%201.434%201.211%202.085.175.29.58.737.988%201.429.371.626.746%201.502.956%201.796-.12-.345-.367-1.27-.663-1.927-.276-.615-.598-.966-.795-1.298-.39-.65-.812-1.237-1.213-1.858-.553-.857-.975-1.815-1.581-2.63Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22D%22%20width%3D%2228%22%20height%3D%2247%22%20x%3D%2210%22%20y%3D%220%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M23.803%200c-1.125%200-2.254.221-3.274.772a6.025%206.025%200%200%200-2.518%202.62c-.547%201.102-.761%202.28-.795%203.577-.062%202.464.056%205.048.242%207.39.049.712.139%201.129.047%201.862-.304%201.556-1.665%202.602-2.392%203.969-.801%201.508-1.139%203.212-1.742%204.81-.553%201.46-1.33%202.83-1.853%204.302-.733%202.057-.952%204.319-.469%206.449.37%201.623%201.14%203.146%202.18%204.449-.15.27-.297.546-.45.814-.483.83-1.072%201.62-1.345%202.54-.137.46-.191.951-.103%201.423.088.473.328.925.703%201.225.245.195.543.322.85.394.305.069.622.086.937.08%201.194-.026%202.353-.388%203.508-.692a41.85%2041.85%200%200%201%202.068-.483c2.464-.505%205.212-.302%207.498.028.774.118%201.543.27%202.304.455%201.193.29%202.38.657%203.606.692.322.01.649-.005.964-.075.315-.071.62-.198.872-.4.377-.3.617-.753.705-1.225.088-.473.033-.966-.105-1.427-.278-.923-.872-1.708-1.364-2.535-.195-.328-.375-.662-.568-.99%201.482-1.663%202.674-3.587%203.364-5.7.752-2.306.89-4.79.574-7.196-.317-2.406-1.08-4.739-2.083-6.947-1.26-2.768-2.32-3.77-3.088-6.201-.83-2.629-.145-5.74-.762-8.123a8.333%208.333%200%200%200-1.021-2.293%207.856%207.856%200%200%200-1.997-2.15C27.024.49%2025.426%200%2023.803%200Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23E)%22%20mask%3D%22url(%23D)%22%20opacity%3D%22.2%22%3E%3Cpath%20fill%3D%22url(%23F)%22%20d%3D%22M41.006%2040.427c-.075.25-.191.491-.34.712-.327.486-.805.853-1.282%201.191-.812.576-1.659%201.104-2.416%201.759-.507.439-.97.932-1.397%201.45-.366.442-.711.907-1.13%201.3-.421.398-.916.72-1.45.895a3.52%203.52%200%200%201-1.963.041c-.44-.112-.869-.307-1.14-.662-.272-.354-.36-.832-.392-1.301-.057-.829.043-1.674.133-2.516.075-.7.144-1.4.172-2.097.05-1.269-.034-2.525-.204-3.759a2.817%202.817%200%200%201-.043-.628c.017-.214.088-.435.238-.6.139-.152.332-.242.523-.285.191-.045.386-.047.58-.053.455-.01.91-.039%201.359.002.283.025.56.077.842.103.47.045.96.023%201.432-.116.508-.15.992-.43%201.51-.506.211-.032.423-.028.63.002.21.028.42.086.58.215.125.098.215.231.284.373.105.214.169.449.206.69.032.214.045.434.1.64.09.34.296.628.541.862.248.235.535.42.824.604.286.182.575.362.88.512.145.071.293.135.43.216.139.082.266.182.358.313a.885.885%200%200%201%20.135.643Z%22%2F%3E%3C%2Fg%3E%3Cpath%20fill%3D%22url(%23G)%22%20d%3D%22M43.776%2041.797c-.424.503-1.013.835-1.6%201.135-1%20.508-2.036.956-2.975%201.57-.63.41-1.212.892-1.755%201.411-.465.445-.906.919-1.427%201.296-.527.38-1.135.656-1.778.752-.178.026-.356.039-.536.039a4.47%204.47%200%200%201-1.774-.39c-.506-.22-.994-.536-1.286-1.005-.293-.472-.36-1.048-.36-1.605-.002-.98.18-1.952.35-2.92.143-.804.278-1.608.366-2.42.16-1.474.158-2.964.053-4.446-.019-.247-.04-.496-.002-.742.037-.246.139-.491.326-.653a1.05%201.05%200%200%201%20.638-.228c.228-.014.457.022.684.056.534.079%201.074.139%201.597.277.33.087.653.203.981.293.551.148%201.127.22%201.691.154.61-.072%201.202-.3%201.815-.285.252.005.501.052.741.129.244.077.486.188.666.371.136.139.232.313.303.495.107.27.165.559.19.848.02.257.017.517.065.77.081.415.3.795.57%201.12.272.326.597.602.921.873.324.272.649.542.997.78.164.113.332.218.488.34.156.124.298.266.396.439a1.023%201.023%200%200%201%20.086.789c-.084.268-.24.529-.431.758Z%22%2F%3E%3Cmask%20id%3D%22H%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%2230%22%20y%3D%2233%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M43.776%2041.797c-.424.503-1.013.835-1.6%201.135-1%20.508-2.036.956-2.975%201.57-.63.41-1.212.892-1.755%201.411-.465.445-.906.919-1.427%201.296-.527.38-1.135.656-1.778.752-.178.026-.356.039-.536.039a4.47%204.47%200%200%201-1.774-.39c-.506-.22-.994-.536-1.286-1.005-.293-.472-.36-1.048-.36-1.605-.002-.98.18-1.952.35-2.92.143-.804.278-1.608.366-2.42.16-1.474.158-2.964.053-4.446-.019-.247-.04-.496-.002-.742.037-.246.139-.491.326-.653a1.05%201.05%200%200%201%20.638-.228c.228-.014.457.022.684.056.534.079%201.074.139%201.597.277.33.087.653.203.981.293.551.148%201.127.22%201.691.154.61-.072%201.202-.3%201.815-.285.252.005.501.052.741.129.244.077.486.188.666.371.136.139.232.313.303.495.107.27.165.559.19.848.02.257.017.517.065.77.081.415.3.795.57%201.12.272.326.597.602.921.873.324.272.649.542.997.78.164.113.332.218.488.34.156.124.298.266.396.439a1.023%201.023%200%200%201%20.086.789c-.084.268-.24.529-.431.758Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23I)%22%20mask%3D%22url(%23H)%22%3E%3Cpath%20fill%3D%22%23CD8907%22%20d%3D%22M43.727%2040.523c-.1.249-.24.483-.416.688-.389.453-.925.752-1.46%201.02-.914.457-1.86.858-2.718%201.41-.574.369-1.106.802-1.603%201.27-.424.4-.827.828-1.303%201.165a3.767%203.767%200%200%201-1.622.675c-.712.105-1.447-.03-2.11-.313-.46-.199-.907-.48-1.175-.906-.266-.423-.328-.94-.328-1.441-.004-.883.163-1.757.32-2.625.132-.722.255-1.446.334-2.175.143-1.328.137-2.667.047-3.998-.015-.223-.032-.448.002-.67.034-.22.126-.44.294-.586a.956.956%200%200%201%20.583-.206c.209-.012.417.022.625.052.49.071.98.126%201.459.25.302.078.596.183.896.262.502.135%201.03.199%201.545.139.557-.064%201.097-.27%201.655-.257.231.005.458.049.677.116.224.07.445.169.61.334.123.126.208.283.277.446.1.242.167.5.17.763.007.274-.052.548-.016.82.03.219.124.427.244.615.118.187.262.358.407.526.277.329.555.662.903.914.396.286.867.455%201.275.721.122.081.24.171.327.29a.767.767%200%200%201%20.1.7Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22J%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%2230%22%20y%3D%2233%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M43.776%2041.797c-.424.503-1.013.835-1.6%201.135-1%20.508-2.036.956-2.975%201.57-.63.41-1.212.892-1.755%201.411-.465.445-.906.919-1.427%201.296-.527.38-1.135.656-1.778.752-.178.026-.356.039-.536.039a4.47%204.47%200%200%201-1.774-.39c-.506-.22-.994-.536-1.286-1.005-.293-.472-.36-1.048-.36-1.605-.002-.98.18-1.952.35-2.92.143-.804.278-1.608.366-2.42.16-1.474.158-2.964.053-4.446-.019-.247-.04-.496-.002-.742.037-.246.139-.491.326-.653a1.05%201.05%200%200%201%20.638-.228c.228-.014.457.022.684.056.534.079%201.074.139%201.597.277.33.087.653.203.981.293.551.148%201.127.22%201.691.154.61-.072%201.202-.3%201.815-.285.252.005.501.052.741.129.244.077.486.188.666.371.136.139.232.313.303.495.107.27.165.559.19.848.02.257.017.517.065.77.081.415.3.795.57%201.12.272.326.597.602.921.873.324.272.649.542.997.78.164.113.332.218.488.34.156.124.298.266.396.439a1.023%201.023%200%200%201%20.086.789c-.084.268-.24.529-.431.758Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23K)%22%20mask%3D%22url(%23J)%22%3E%3Cpath%20fill%3D%22%23F5C021%22%20d%3D%22M43.67%2040.24a3.051%203.051%200%200%201-.427.695c-.397.484-.936.816-1.5%201.03-.932.352-1.948.399-2.861.8-.557.244-1.06.611-1.568.96-.408.28-.828.551-1.278.746-.51.223-1.05.347-1.594.435a5.002%205.002%200%200%201-1.044.077%202.247%202.247%200%200%201-1.007-.28%201.414%201.414%200%200%201-.568-.58c-.137-.28-.162-.608-.16-.927.01-.843.191-1.68.186-2.525-.006-.737-.152-1.463-.193-2.198-.081-1.414.223-2.85-.045-4.236-.042-.223-.1-.444-.098-.67a.997.997%200%200%201%20.058-.333.648.648%200%200%201%20.19-.266.597.597%200%200%201%20.245-.105.834.834%200%200%201%20.265.002c.174.028.34.096.511.146.488.146%201.004.143%201.5.253.312.068.612.182.921.265a4.166%204.166%200%200%200%201.586.14c.57-.067%201.127-.273%201.701-.258.236.005.469.048.696.116.227.067.453.163.626.337.122.126.212.285.283.45.107.242.18.505.178.771-.002.139-.022.276-.036.414a1.32%201.32%200%200%200%20.017.413c.034.135.104.257.182.367.079.111.169.21.252.32.228.301.393.654.571.993.178.34.38.675.662.92.385.332.882.465%201.31.73.127.077.246.167.335.29a.773.773%200%200%201%20.136.34.84.84%200%200%201-.031.367Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22L%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%2230%22%20y%3D%2233%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M43.776%2041.797c-.424.503-1.013.835-1.6%201.135-1%20.508-2.036.956-2.975%201.57-.63.41-1.212.892-1.755%201.411-.465.445-.906.919-1.427%201.296-.527.38-1.135.656-1.778.752-.178.026-.356.039-.536.039a4.47%204.47%200%200%201-1.774-.39c-.506-.22-.994-.536-1.286-1.005-.293-.472-.36-1.048-.36-1.605-.002-.98.18-1.952.35-2.92.143-.804.278-1.608.366-2.42.16-1.474.158-2.964.053-4.446-.019-.247-.04-.496-.002-.742.037-.246.139-.491.326-.653a1.05%201.05%200%200%201%20.638-.228c.228-.014.457.022.684.056.534.079%201.074.139%201.597.277.33.087.653.203.981.293.551.148%201.127.22%201.691.154.61-.072%201.202-.3%201.815-.285.252.005.501.052.741.129.244.077.486.188.666.371.136.139.232.313.303.495.107.27.165.559.19.848.02.257.017.517.065.77.081.415.3.795.57%201.12.272.326.597.602.921.873.324.272.649.542.997.78.164.113.332.218.488.34.156.124.298.266.396.439a1.023%201.023%200%200%201%20.086.789c-.084.268-.24.529-.431.758Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23M)%22%20mask%3D%22url(%23L)%22%3E%3Cpath%20fill%3D%22url(%23N)%22%20d%3D%22M31.515%2034.046c.529-.142.979.259%201.363.56.248.213.608.16.911.17.505-.017%201.005.084%201.51.022.993-.084%201.967-.328%202.964-.37.476-.03%201.013-.057%201.423.22.167.116.413.606.576.422-.068-.514-.448-1.01-.958-1.148-.401-.063-.806.047-1.212.012-1.198-.028-2.39-.252-3.592-.188-.836.008-1.67-.032-2.507-.064-.328-.067-.444.224-.622.336.047.036.063.047.144.028Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22O%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%2230%22%20y%3D%2233%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M43.776%2041.797c-.424.503-1.013.835-1.6%201.135-1%20.508-2.036.956-2.975%201.57-.63.41-1.212.892-1.755%201.411-.465.445-.906.919-1.427%201.296-.527.38-1.135.656-1.778.752-.178.026-.356.039-.536.039a4.47%204.47%200%200%201-1.774-.39c-.506-.22-.994-.536-1.286-1.005-.293-.472-.36-1.048-.36-1.605-.002-.98.18-1.952.35-2.92.143-.804.278-1.608.366-2.42.16-1.474.158-2.964.053-4.446-.019-.247-.04-.496-.002-.742.037-.246.139-.491.326-.653a1.05%201.05%200%200%201%20.638-.228c.228-.014.457.022.684.056.534.079%201.074.139%201.597.277.33.087.653.203.981.293.551.148%201.127.22%201.691.154.61-.072%201.202-.3%201.815-.285.252.005.501.052.741.129.244.077.486.188.666.371.136.139.232.313.303.495.107.27.165.559.19.848.02.257.017.517.065.77.081.415.3.795.57%201.12.272.326.597.602.921.873.324.272.649.542.997.78.164.113.332.218.488.34.156.124.298.266.396.439a1.023%201.023%200%200%201%20.086.789c-.084.268-.24.529-.431.758Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23P)%22%20mask%3D%22url(%23O)%22%20opacity%3D%22.35%22%3E%3Cpath%20fill%3D%22url(%23Q)%22%20d%3D%22M38.53%2035.177a.852.852%200%200%200-.441-.388%201.485%201.485%200%200%200-.587-.102c-.4.004-.797.107-1.196.074-.336-.03-.655-.156-.983-.237-.34-.082-.7-.114-1.035-.022-.36.097-.677.34-.875.654-.177.278-.26.606-.285.934-.027.328.001.656.035.984.023.237.05.473.107.704a1.9%201.9%200%200%200%20.285.648c.2.278.499.477.82.595a2.281%202.281%200%200%200%201.636-.029%204.514%204.514%200%200%200%202.16-1.987c.17-.315.302-.65.386-.996.034-.138.06-.279.06-.422a.863.863%200%200%200-.088-.41Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22R%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%2230%22%20y%3D%2233%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M43.776%2041.797c-.424.503-1.013.835-1.6%201.135-1%20.508-2.036.956-2.975%201.57-.63.41-1.212.892-1.755%201.411-.465.445-.906.919-1.427%201.296-.527.38-1.135.656-1.778.752-.178.026-.356.039-.536.039a4.47%204.47%200%200%201-1.774-.39c-.506-.22-.994-.536-1.286-1.005-.293-.472-.36-1.048-.36-1.605-.002-.98.18-1.952.35-2.92.143-.804.278-1.608.366-2.42.16-1.474.158-2.964.053-4.446-.019-.247-.04-.496-.002-.742.037-.246.139-.491.326-.653a1.05%201.05%200%200%201%20.638-.228c.228-.014.457.022.684.056.534.079%201.074.139%201.597.277.33.087.653.203.981.293.551.148%201.127.22%201.691.154.61-.072%201.202-.3%201.815-.285.252.005.501.052.741.129.244.077.486.188.666.371.136.139.232.313.303.495.107.27.165.559.19.848.02.257.017.517.065.77.081.415.3.795.57%201.12.272.326.597.602.921.873.324.272.649.542.997.78.164.113.332.218.488.34.156.124.298.266.396.439a1.023%201.023%200%200%201%20.086.789c-.084.268-.24.529-.431.758Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23S)%22%20mask%3D%22url(%23R)%22%20opacity%3D%22.35%22%3E%3Cpath%20fill%3D%22url(%23T)%22%20d%3D%22M38.53%2034.667c-.09-.13-.256-.225-.441-.281a2.026%202.026%200%200%200-.587-.074c-.4.004-.797.08-1.196.053-.336-.02-.655-.113-.983-.169-.34-.06-.7-.084-1.035-.017-.36.07-.677.244-.875.473-.177.2-.26.439-.285.675-.027.236.001.474.035.71.023.171.05.344.107.51.058.167.146.33.285.47.2.2.499.342.82.429a3.09%203.09%200%200%200%201.636-.021c.915-.287%201.69-.802%202.16-1.436.17-.229.302-.47.386-.72a.97.97%200%200%200%20.06-.304.483.483%200%200%200-.088-.298Z%22%2F%3E%3C%2Fg%3E%3Cpath%20fill%3D%22%23020204%22%20d%3D%22M39.29%2033.51a1.19%201.19%200%200%200-.322-.463%201.732%201.732%200%200%200-.482-.3c-.348-.148-.73-.205-1.104-.274-.35-.066-.701-.146-1.054-.206-.367-.062-.746-.103-1.11-.02a1.894%201.894%200%200%200-.851.455%202.43%202.43%200%200%200-.563.79c-.238.522-.313%201.11-.268%201.681.034.426.143.864.422%201.185.227.26.548.424.878.521.57.17%201.19.16%201.755-.024a4.632%204.632%200%200%200%202.315-1.742c.184-.268.342-.559.413-.874.054-.24.056-.498-.028-.729Z%22%2F%3E%3Cmask%20id%3D%22U%22%20width%3D%227%22%20height%3D%225%22%20x%3D%2233%22%20y%3D%2232%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M39.29%2033.51a1.19%201.19%200%200%200-.322-.463%201.732%201.732%200%200%200-.482-.3c-.348-.148-.73-.205-1.104-.274-.35-.066-.701-.146-1.054-.206-.367-.062-.746-.103-1.11-.02a1.894%201.894%200%200%200-.851.455%202.43%202.43%200%200%200-.563.79c-.238.522-.313%201.11-.268%201.681.034.426.143.864.422%201.185.227.26.548.424.878.521.57.17%201.19.16%201.755-.024a4.632%204.632%200%200%200%202.315-1.742c.184-.268.342-.559.413-.874.054-.24.056-.498-.028-.729Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23V)%22%20mask%3D%22url(%23U)%22%3E%3Cpath%20fill%3D%22url(%23W)%22%20d%3D%22M35.417%2032.076a2.015%202.015%200%200%200-1.626.975%202.014%202.014%200%200%200-.268%201.157%201.82%201.82%200%200%201%20.223-.803c.23-.418.65-.733%201.121-.82.29-.052.587-.02.878.016.281.035.563.073.838.13.428.095.85.237%201.208.486.082.059.16.124.227.203a.604.604%200%200%201%20.136.266.642.642%200%200%201-.086.43%201.61%201.61%200%200%201-.277.348%205.614%205.614%200%200%201-.268.248c.414-.08.832-.193%201.177-.433.144-.103.277-.225.364-.379a.73.73%200%200%200%20.08-.516.78.78%200%200%200-.172-.313%201.54%201.54%200%200%200-.272-.232%203.238%203.238%200%200%200-1.464-.56%2016.983%2016.983%200%200%200-1.017-.157%204.421%204.421%200%200%200-.802-.046Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22X%22%20width%3D%227%22%20height%3D%225%22%20x%3D%2233%22%20y%3D%2232%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M39.29%2033.51a1.19%201.19%200%200%200-.322-.463%201.732%201.732%200%200%200-.482-.3c-.348-.148-.73-.205-1.104-.274-.35-.066-.701-.146-1.054-.206-.367-.062-.746-.103-1.11-.02a1.894%201.894%200%200%200-.851.455%202.43%202.43%200%200%200-.563.79c-.238.522-.313%201.11-.268%201.681.034.426.143.864.422%201.185.227.26.548.424.878.521.57.17%201.19.16%201.755-.024a4.632%204.632%200%200%200%202.315-1.742c.184-.268.342-.559.413-.874.054-.24.056-.498-.028-.729Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23Y)%22%20mask%3D%22url(%23X)%22%3E%3Cpath%20fill%3D%22url(%23Z)%22%20d%3D%22M35.417%2032.076a2.015%202.015%200%200%200-1.626.975%202.014%202.014%200%200%200-.268%201.157%201.82%201.82%200%200%201%20.223-.803c.23-.418.65-.733%201.121-.82.29-.052.587-.02.878.016.281.035.563.073.838.13.428.095.85.237%201.208.486.082.059.16.124.227.203a.604.604%200%200%201%20.136.266.642.642%200%200%201-.086.43%201.61%201.61%200%200%201-.277.348%205.614%205.614%200%200%201-.268.248c.414-.08.832-.193%201.177-.433.144-.103.277-.225.364-.379a.73.73%200%200%200%20.08-.516.78.78%200%200%200-.172-.313%201.54%201.54%200%200%200-.272-.232%203.238%203.238%200%200%200-1.464-.56%2016.983%2016.983%200%200%200-1.017-.157%204.421%204.421%200%200%200-.802-.046Z%22%2F%3E%3C%2Fg%3E%3Cpath%20fill%3D%22url(%23aa)%22%20d%3D%22M19.584%207.177a1.246%201.246%200%200%200-.772.345c-.212.197-.36.456-.452.728-.182.547-.14%201.14-.1%201.716.038.519.077%201.05.272%201.533.098.244.235.471.417.659.182.185.412.33.665.391.237.06.492.05.724-.024.235-.075.446-.208.623-.379.255-.25.425-.575.525-.919.099-.343.127-.703.122-1.06a4.478%204.478%200%200%200-.205-1.319%202.993%202.993%200%200%200-.675-1.146%201.887%201.887%200%200%200-.516-.386%201.288%201.288%200%200%200-.628-.139Z%22%2F%3E%3Cpath%20fill%3D%22%23020204%22%20d%3D%22M18.89%209.56c-.06.364-.061.745.063%201.09.082.229.219.437.384.615.107.116.23.221.373.29.144.07.31.098.465.06a.682.682%200%200%200%20.358-.241c.092-.115.154-.252.197-.392.13-.414.109-.866-.02-1.28-.093-.303-.248-.593-.488-.796a.967.967%200%200%200-.398-.208.69.69%200%200%200-.442.036c-.152.07-.27.2-.347.348a1.624%201.624%200%200%200-.144.479Z%22%2F%3E%3Cmask%20id%3D%22ab%22%20width%3D%223%22%20height%3D%224%22%20x%3D%2218%22%20y%3D%228%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M18.89%209.56c-.06.364-.061.745.063%201.09.082.229.219.437.384.615.107.116.23.221.373.29.144.07.31.098.465.06a.682.682%200%200%200%20.358-.241c.092-.115.154-.252.197-.392.13-.414.109-.866-.02-1.28-.093-.303-.248-.593-.488-.796a.967.967%200%200%200-.398-.208.69.69%200%200%200-.442.036c-.152.07-.27.2-.347.348a1.624%201.624%200%200%200-.144.479Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23ac)%22%20mask%3D%22url(%23ab)%22%3E%3Cpath%20fill%3D%22url(%23ad)%22%20d%3D%22M19.657%209.298c.04.103.171.14.244.223a.94.94%200%200%201%20.182.263c.073.19-.073.47.08.605.048.042.145.043.192%200%20.186-.168.144-.508.071-.748a.912.912%200%200%200-.433-.525c-.094-.049-.234-.088-.315-.02-.05.045-.045.138-.02.202Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22ae%22%20width%3D%224%22%20height%3D%226%22%20x%3D%2218%22%20y%3D%227%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M19.584%207.177a1.246%201.246%200%200%200-.772.345c-.212.197-.36.456-.452.728-.182.547-.14%201.14-.1%201.716.038.519.077%201.05.272%201.533.098.244.235.471.417.659.182.185.412.33.665.391.237.06.492.05.724-.024.235-.075.446-.208.623-.379.255-.25.425-.575.525-.919.099-.343.127-.703.122-1.06a4.478%204.478%200%200%200-.205-1.319%202.993%202.993%200%200%200-.675-1.146%201.887%201.887%200%200%200-.516-.386%201.288%201.288%200%200%200-.628-.139Z%22%2F%3E%3C%2Fmask%3E%3Cg%20mask%3D%22url(%23ae)%22%3E%3Cpath%20fill%3D%22url(%23af)%22%20d%3D%22M18.964%208.336c.435-.258.962-.319%201.466-.272.503.05.988.195%201.476.329.358.097.72.187%201.055.345.334.157.645.39.83.712.03.05.055.105.087.156.032.05.07.097.116.133.047.035.107.06.165.056.03-.002.06-.01.085-.024a.155.155%200%200%200%20.062-.064.201.201%200%200%200%20.018-.1.48.48%200%200%200-.018-.1c-.122-.445-.411-.822-.629-1.229-.13-.244-.24-.499-.37-.742-.456-.835-1.204-1.49-2.054-1.915-.85-.425-1.798-.63-2.747-.684-1.099-.066-2.2.066-3.283.257-.47.082-.949.18-1.363.414-.208.116-.4.266-.547.454-.15.185-.256.409-.291.645-.032.229.002.463.082.679.08.215.203.412.35.59.288.358.661.636%201.004.943.343.306.66.645%201.044.899.192.127.4.232.621.294.221.062.458.079.683.032a1.57%201.57%200%200%200%20.639-.308%203.45%203.45%200%200%200%20.508-.498c.311-.362.602-.758%201.01-1.002Z%22%2F%3E%3C%2Fg%3E%3Cg%20filter%3D%22url(%23ag)%22%3E%3Cpath%20fill%3D%22url(%23ah)%22%20d%3D%22M20.77%206.857c.404.379.704.847.909%201.342-.09-.545-.23-.986-.587-1.342a2.744%202.744%200%200%200-.746-.51c-.248-.11-.52-.18-.677-.182-.156-.004-.193%200-.225.002-.034.002-.058.002.043.015.101.011.328.073.572.182.243.109.491.288.71.493Z%22%2F%3E%3C%2Fg%3E%3Cpath%20fill%3D%22url(%23ai)%22%20d%3D%22M24.677%207.177c-.448.31-.825.74-1.009%201.253-.232.647-.144%201.37.08%202.02.23.665.614%201.299%201.193%201.698.289.2.625.338.973.379.351.041.713-.017%201.026-.178.379-.199.67-.546.85-.934.18-.39.256-.82.28-1.249a4.204%204.204%200%200%200-.202-1.614c-.195-.56-.547-1.078-1.046-1.4a2.039%202.039%200%200%200-.825-.314%201.763%201.763%200%200%200-.876.098%202.27%202.27%200%200%200-.444.241Z%22%2F%3E%3Cpath%20fill%3D%22%23020204%22%20d%3D%22M25.714%208.535c-.169.011-.334.07-.478.16a1.24%201.24%200%200%200-.36.352c-.194.28-.278.62-.291.96-.01.253.019.51.103.75.085.24.225.463.422.624.2.167.454.267.714.28.261.01.523-.064.737-.212a1.31%201.31%200%200%200%20.405-.465c.098-.182.158-.385.184-.59a1.823%201.823%200%200%200-.174-1.068%201.486%201.486%200%200%200-.795-.72%201.139%201.139%200%200%200-.467-.071Z%22%2F%3E%3Cmask%20id%3D%22aj%22%20width%3D%224%22%20height%3D%224%22%20x%3D%2224%22%20y%3D%228%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M25.714%208.535c-.169.011-.334.07-.478.16a1.24%201.24%200%200%200-.36.352c-.194.28-.278.62-.291.96-.01.253.019.51.103.75.085.24.225.463.422.624.2.167.454.267.714.28.261.01.523-.064.737-.212a1.31%201.31%200%200%200%20.405-.465c.098-.182.158-.385.184-.59a1.823%201.823%200%200%200-.174-1.068%201.486%201.486%200%200%200-.795-.72%201.139%201.139%200%200%200-.467-.071Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23ak)%22%20mask%3D%22url(%23aj)%22%3E%3Cpath%20fill%3D%22url(%23al)%22%20d%3D%22M26.758%2010.005c.188-.187-.133-.684-.384-.889-.182-.146-.709-.302-.686-.14.022.159.26.365.418.523.196.193.562.596.652.506Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22am%22%20width%3D%226%22%20height%3D%227%22%20x%3D%2223%22%20y%3D%226%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M24.677%207.177c-.448.31-.825.74-1.009%201.253-.232.647-.144%201.37.08%202.02.23.665.614%201.299%201.193%201.698.289.2.625.338.973.379.351.041.713-.017%201.026-.178.379-.199.67-.546.85-.934.18-.39.256-.82.28-1.249a4.204%204.204%200%200%200-.202-1.614c-.195-.56-.547-1.078-1.046-1.4a2.039%202.039%200%200%200-.825-.314%201.763%201.763%200%200%200-.876.098%202.27%202.27%200%200%200-.444.241Z%22%2F%3E%3C%2Fmask%3E%3Cg%20mask%3D%22url(%23am)%22%3E%3Cpath%20fill%3D%22url(%23an)%22%20d%3D%22M22.98%208.814c.386-.32.834-.564%201.313-.712.984-.304%202.1-.184%202.97.37.3.189.568.425.847.646.277.22.574.426.91.544a1.3%201.3%200%200%200%20.566.08c.172-.016.339-.082.482-.18.142-.099.262-.23.352-.378.18-.297.238-.657.206-1.002-.062-.691-.452-1.3-.778-1.914-.103-.191-.2-.386-.324-.564-.377-.55-.98-.912-1.613-1.123-.632-.212-1.3-.29-1.961-.372-.296-.037-.594-.077-.889-.04-.34.04-.658.177-.99.262-.157.04-.317.069-.472.114-.156.045-.31.107-.437.208-.184.148-.3.371-.35.602-.051.232-.04.472-.003.707.073.469.25.924.233%201.399-.011.324-.115.645-.101.969.003.096.022.29.039.384Z%22%2F%3E%3C%2Fg%3E%3Cg%20filter%3D%22url(%23ao)%22%3E%3Cpath%20fill%3D%22url(%23ap)%22%20d%3D%22M26.237%205.846a1.63%201.63%200%200%200-.2.319c.346.075.676.218.972.414.574.381%201.01.936%201.315%201.555.071-.079.135-.163.191-.257-.308-.645-.75-1.228-1.343-1.622a2.898%202.898%200%200%200-.935-.409Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22aq%22%20width%3D%2228%22%20height%3D%2247%22%20x%3D%2210%22%20y%3D%220%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M23.803%200c-1.125%200-2.254.221-3.274.772a6.025%206.025%200%200%200-2.518%202.62c-.547%201.102-.761%202.28-.795%203.577-.062%202.464.056%205.048.242%207.39.049.712.139%201.129.047%201.862-.304%201.556-1.665%202.602-2.392%203.969-.801%201.508-1.139%203.212-1.742%204.81-.553%201.46-1.33%202.83-1.853%204.302-.733%202.057-.952%204.319-.469%206.449.37%201.623%201.14%203.146%202.18%204.449-.15.27-.297.546-.45.814-.483.83-1.072%201.62-1.345%202.54-.137.46-.191.951-.103%201.423.088.473.328.925.703%201.225.245.195.543.322.85.394.305.069.622.086.937.08%201.194-.026%202.353-.388%203.508-.692a41.85%2041.85%200%200%201%202.068-.483c2.464-.505%205.212-.302%207.498.028.774.118%201.543.27%202.304.455%201.193.29%202.38.657%203.606.692.322.01.649-.005.964-.075.315-.071.62-.198.872-.4.377-.3.617-.753.705-1.225.088-.473.033-.966-.105-1.427-.278-.923-.872-1.708-1.364-2.535-.195-.328-.375-.662-.568-.99%201.482-1.663%202.674-3.587%203.364-5.7.752-2.306.89-4.79.574-7.196-.317-2.406-1.08-4.739-2.083-6.947-1.26-2.768-2.32-3.77-3.088-6.201-.83-2.629-.145-5.74-.762-8.123a8.333%208.333%200%200%200-1.021-2.293%207.856%207.856%200%200%200-1.997-2.15C27.024.49%2025.426%200%2023.803%200Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23ar)%22%20mask%3D%22url(%23aq)%22%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.259%22%20d%3D%22M18.96%2016.75c.276.798.829%201.479%201.485%202.01.218.177.448.34.705.455.255.116.538.182.818.157.273-.022.534-.13.774-.266.24-.135.461-.298.694-.444.397-.253.823-.458%201.237-.683.497-.271.98-.58%201.399-.963.193-.175.371-.366.583-.516.212-.152.467-.26.726-.242.195.013.377.096.568.137.095.02.193.03.29.015a.445.445%200%200%200%20.257-.126.449.449%200%200%200%20.115-.33.784.784%200%200%200-.102-.339c-.11-.212-.279-.394-.354-.62-.068-.203-.054-.42-.049-.632.006-.214.002-.435-.095-.625a.813.813%200%200%200-.343-.332%201.216%201.216%200%200%200-.465-.131c-.323-.03-.645.034-.97.05-.427.025-.859-.027-1.288-.003-.534.034-1.06.187-1.596.19-.61.001-1.222-.2-1.826-.104-.26.041-.508.135-.756.218-.249.084-.506.157-.768.153-.298-.005-.587-.108-.885-.129-.148-.011-.3%200-.44.053a.617.617%200%200%200-.335.28.586.586%200%200%200-.061.246.902.902%200%200%200%20.028.255c.04.165.118.321.18.479.225.575.273%201.203.474%201.786Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22as%22%20width%3D%2228%22%20height%3D%2247%22%20x%3D%2210%22%20y%3D%220%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M23.803%200c-1.125%200-2.254.221-3.274.772a6.025%206.025%200%200%200-2.518%202.62c-.547%201.102-.761%202.28-.795%203.577-.062%202.464.056%205.048.242%207.39.049.712.139%201.129.047%201.862-.304%201.556-1.665%202.602-2.392%203.969-.801%201.508-1.139%203.212-1.742%204.81-.553%201.46-1.33%202.83-1.853%204.302-.733%202.057-.952%204.319-.469%206.449.37%201.623%201.14%203.146%202.18%204.449-.15.27-.297.546-.45.814-.483.83-1.072%201.62-1.345%202.54-.137.46-.191.951-.103%201.423.088.473.328.925.703%201.225.245.195.543.322.85.394.305.069.622.086.937.08%201.194-.026%202.353-.388%203.508-.692a41.85%2041.85%200%200%201%202.068-.483c2.464-.505%205.212-.302%207.498.028.774.118%201.543.27%202.304.455%201.193.29%202.38.657%203.606.692.322.01.649-.005.964-.075.315-.071.62-.198.872-.4.377-.3.617-.753.705-1.225.088-.473.033-.966-.105-1.427-.278-.923-.872-1.708-1.364-2.535-.195-.328-.375-.662-.568-.99%201.482-1.663%202.674-3.587%203.364-5.7.752-2.306.89-4.79.574-7.196-.317-2.406-1.08-4.739-2.083-6.947-1.26-2.768-2.32-3.77-3.088-6.201-.83-2.629-.145-5.74-.762-8.123a8.333%208.333%200%200%200-1.021-2.293%207.856%207.856%200%200%200-1.997-2.15C27.024.49%2025.426%200%2023.803%200Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23at)%22%20mask%3D%22url(%23as)%22%20opacity%3D%22.3%22%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M18.193%2014.475c.534.33%201.014.737%201.418%201.198.373.43.69.917%201.179%201.234.343.225.758.35%201.178.39.493.045.991-.028%201.468-.158.44-.118.866-.287%201.256-.508.744-.422%201.365-1.04%202.184-1.318.178-.062.364-.105.537-.18.172-.073.335-.185.418-.343.078-.154.075-.328.1-.495.029-.18.09-.352.125-.53.033-.179.037-.368-.045-.531a.732.732%200%200%200-.34-.312%201.249%201.249%200%200%200-.47-.104c-.323-.015-.643.061-.968.088-.427.035-.859-.015-1.288-.002-.534.015-1.061.125-1.596.15-.609.026-1.216-.064-1.826-.083a3.952%203.952%200%200%200-.79.038c-.26.041-.515.122-.734.257-.214.129-.388.307-.583.459a1.72%201.72%200%200%201-.315.2.998.998%200%200%201-.368.096c-.066.002-.133-.002-.197.008a.423.423%200%200%200-.275.155.363.363%200%200%200-.068.291Z%22%2F%3E%3C%2Fg%3E%3Cpath%20fill%3D%22url(%23au)%22%20d%3D%22M20.936%2010.974c.287-.32.482-.712.756-1.042.137-.165.296-.317.482-.424.185-.107.403-.167.617-.148.238.02.46.139.635.302.175.163.304.37.407.585.1.208.178.427.32.607.153.192.364.321.558.473.095.075.189.155.264.251a.797.797%200%200%201%20.161.326.695.695%200%200%201-.03.366.827.827%200%200%201-.204.308%201.186%201.186%200%200%201-.668.3c-.49.069-.988-.077-1.485-.064-.5.015-.991.191-1.494.174a1.337%201.337%200%200%201-.71-.214.941.941%200%200%201-.26-.271.769.769%200%200%201-.108-.357.799.799%200%200%201%20.073-.349c.047-.11.114-.21.19-.303.151-.186.337-.34.496-.52Z%22%2F%3E%3Cpath%20fill%3D%22url(%23av)%22%20d%3D%22M18.214%2014.072a.509.509%200%200%200%20.052.137c.043.071.107.13.175.178.067.05.14.092.212.135.376.238.684.57.958.922.365.473.69.996%201.179%201.34.345.243.758.38%201.178.423.493.049.991-.03%201.468-.17.44-.13.866-.312%201.256-.554.744-.457%201.365-1.129%202.184-1.43.178-.066.364-.113.537-.194.172-.082.335-.202.418-.375.078-.165.075-.356.1-.538.029-.193.09-.38.125-.573.033-.194.037-.4-.045-.578a.744.744%200%200%200-.34-.336%201.131%201.131%200%200%200-.47-.116c-.323-.015-.643.068-.968.098-.427.039-.859-.017-1.288-.004-.534.017-1.061.137-1.596.163-.609.028-1.216-.066-1.826-.09a3.718%203.718%200%200%200-.791.037c-.26.044-.516.134-.733.284-.212.146-.38.345-.576.513a1.48%201.48%200%200%201-.319.218.798.798%200%200%201-.37.088c-.067-.002-.136-.011-.198.008a.293.293%200%200%200-.105.065.63.63%200%200%200-.077.098%201.567%201.567%200%200%200-.14.25Z%22%2F%3E%3Cmask%20id%3D%22aw%22%20width%3D%2211%22%20height%3D%226%22%20x%3D%2218%22%20y%3D%2212%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M18.214%2014.072a.509.509%200%200%200%20.052.137c.043.071.107.13.175.178.067.05.14.092.212.135.376.238.684.57.958.922.365.473.69.996%201.179%201.34.345.243.758.38%201.178.423.493.049.991-.03%201.468-.17.44-.13.866-.312%201.256-.554.744-.457%201.365-1.129%202.184-1.43.178-.066.364-.113.537-.194.172-.082.335-.202.418-.375.078-.165.075-.356.1-.538.029-.193.09-.38.125-.573.033-.194.037-.4-.045-.578a.744.744%200%200%200-.34-.336%201.131%201.131%200%200%200-.47-.116c-.323-.015-.643.068-.968.098-.427.039-.859-.017-1.288-.004-.534.017-1.061.137-1.596.163-.609.028-1.216-.066-1.826-.09a3.718%203.718%200%200%200-.791.037c-.26.044-.516.134-.733.284-.212.146-.38.345-.576.513a1.48%201.48%200%200%201-.319.218.798.798%200%200%201-.37.088c-.067-.002-.136-.011-.198.008a.293.293%200%200%200-.105.065.63.63%200%200%200-.077.098%201.567%201.567%200%200%200-.14.25Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23ax)%22%20mask%3D%22url(%23aw)%22%3E%3Cpath%20fill%3D%22%23D9B30D%22%20d%3D%22M20.606%2014.73a1.074%201.074%200%200%200%20.703%201.268c.32.106.68.054.977-.102.175-.09.332-.217.431-.386a.71.71%200%200%200%20.1-.274.632.632%200%200%200-.03-.289.647.647%200%200%200-.186-.256.838.838%200%200%200-.281-.154%202.861%202.861%200%200%200-.733-.128c-.379-.007-.919.064-.98.321Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22ay%22%20width%3D%2211%22%20height%3D%226%22%20x%3D%2218%22%20y%3D%2212%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M18.214%2014.072a.504.504%200%200%200%20.052.137c.043.071.107.13.175.178.067.05.14.092.212.135.376.238.684.57.958.922.365.473.69.996%201.179%201.34.345.243.758.38%201.178.423.493.049.991-.03%201.468-.17.44-.13.866-.312%201.256-.554.744-.457%201.365-1.129%202.184-1.43.178-.066.364-.113.537-.194.172-.082.335-.202.418-.375.078-.165.075-.356.1-.538.029-.193.09-.38.125-.573.033-.194.037-.4-.045-.578a.745.745%200%200%200-.34-.336%201.132%201.132%200%200%200-.47-.116c-.323-.015-.643.068-.968.098-.427.039-.859-.017-1.288-.004-.534.017-1.061.137-1.596.163-.609.028-1.216-.066-1.826-.09a3.724%203.724%200%200%200-.791.037c-.26.044-.516.134-.733.284-.212.146-.38.345-.576.513a1.477%201.477%200%200%201-.319.218.797.797%200%200%201-.37.088c-.067-.002-.136-.011-.198.008a.292.292%200%200%200-.105.065.63.63%200%200%200-.077.098%201.563%201.563%200%200%200-.14.25Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23az)%22%20mask%3D%22url(%23ay)%22%3E%3Cpath%20fill%3D%22%23604405%22%20d%3D%22M19.558%2012.724a8.872%208.872%200%200%200-.63.412c-.107.077-.216.158-.272.276a.65.65%200%200%200-.05.268c0%20.094.005.186-.008.277-.007.062-.024.124-.026.186a.311.311%200%200%200%20.007.094c.01.03.025.06.045.082.029.03.066.05.105.06.04.012.08.017.12.027.19.045.355.16.5.292.143.13.275.278.427.4.408.333.95.472%201.479.48.529.009%201.052-.102%201.568-.218.404-.092.81-.186%201.198-.33a5.277%205.277%200%200%200%201.635-.973c.219-.19.423-.398.669-.551.216-.137.457-.227.679-.357a.42.42%200%200%200%20.056-.037.195.195%200%200%200%20.045-.053.165.165%200%200%200%20.006-.116.33.33%200%200%200-.059-.103.863.863%200%200%200-.091-.094c-.231-.197-.542-.268-.846-.292-.302-.023-.607-.006-.906-.056-.28-.047-.547-.152-.819-.239a5.763%205.763%200%200%200-2.968-.161%206.126%206.126%200%200%200-1.864.726Z%22%2F%3E%3C%2Fg%3E%3Cpath%20fill%3D%22url(%23aA)%22%20d%3D%22M19.489%2011.99c-.312.21-.593.467-.83.758a1.809%201.809%200%200%200-.327.551c-.055.162-.073.33-.107.497-.013.062-.028.124-.026.188%200%20.03.003.062.013.094.01.03.026.058.047.08a.278.278%200%200%200%20.139.07c.052.009.105.01.157.016.234.029.45.141.645.276.195.133.375.29.576.416.44.28.967.403%201.49.424.522.02%201.043-.058%201.557-.161.406-.08.811-.178%201.198-.33.592-.235%201.127-.593%201.635-.973.232-.173.46-.351.669-.552.07-.069.139-.138.214-.202a.776.776%200%200%201%20.253-.146.962.962%200%200%201%20.444-.008c.11.019.221.043.334.04a.55.55%200%200%200%20.165-.034.324.324%200%200%200%20.137-.098.323.323%200%200%200%20.071-.204.42.42%200%200%200-.06-.212.72.72%200%200%200-.34-.274c-.185-.082-.386-.122-.582-.17a8.299%208.299%200%200%201-1.752-.64c-.277-.137-.547-.289-.819-.435a5.01%205.01%200%200%200-.87-.388c-.683-.206-1.425-.139-2.098.096a4.477%204.477%200%200%200-1.933%201.322Z%22%2F%3E%3Cmask%20id%3D%22aB%22%20width%3D%2210%22%20height%3D%226%22%20x%3D%2218%22%20y%3D%2210%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M19.489%2011.99c-.312.21-.593.467-.83.758a1.809%201.809%200%200%200-.327.551c-.055.162-.073.33-.107.497-.013.062-.028.124-.026.188%200%20.03.003.062.013.094.01.03.026.058.047.08a.278.278%200%200%200%20.139.07c.052.009.105.01.157.016.234.029.45.141.645.276.195.133.375.29.576.416.44.28.967.403%201.49.424.522.02%201.043-.058%201.557-.161.406-.08.811-.178%201.198-.33.592-.235%201.127-.593%201.635-.973.232-.173.46-.351.669-.552.07-.069.139-.138.214-.202a.776.776%200%200%201%20.253-.146.962.962%200%200%201%20.444-.008c.11.019.221.043.334.04a.55.55%200%200%200%20.165-.034.324.324%200%200%200%20.137-.098.323.323%200%200%200%20.071-.204.42.42%200%200%200-.06-.212.72.72%200%200%200-.34-.274c-.185-.082-.386-.122-.582-.17a8.299%208.299%200%200%201-1.752-.64c-.277-.137-.547-.289-.819-.435a5.01%205.01%200%200%200-.87-.388c-.683-.206-1.425-.139-2.098.096a4.477%204.477%200%200%200-1.933%201.322Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23aC)%22%20mask%3D%22url(%23aB)%22%3E%3Cpath%20fill%3D%22%23F6DA4A%22%20d%3D%22M24.272%2012.14a.307.307%200%200%200-.146-.095.39.39%200%200%200-.175-.008.83.83%200%200%200-.319.15c-.275.19-.519.424-.733.683-.28.343-.513.739-.592%201.176a.814.814%200%200%200-.013.223c.01.075.037.148.092.2a.301.301%200%200%200%20.172.085.43.43%200%200%200%20.195-.02c.124-.042.227-.13.326-.216.538-.484%201.026-1.062%201.221-1.76a.821.821%200%200%200%20.036-.213.331.331%200%200%200-.064-.204Z%22%2F%3E%3C%2Fg%3E%3Cg%20filter%3D%22url(%23aD)%22%20opacity%3D%22.8%22%3E%3Cpath%20fill%3D%22url(%23aE)%22%20d%3D%22M21.135%2011.074c-.144-.047-.38.206-.304.335.02.036.087.081.131.057.066-.036.12-.167.192-.218.047-.034.037-.157-.019-.174Z%22%2F%3E%3C%2Fg%3E%3Cg%20filter%3D%22url(%23aF)%22%20opacity%3D%22.8%22%3E%3Cpath%20fill%3D%22url(%23aG)%22%20d%3D%22M22.98%2011.141c.037.12.23.1.343.158.098.05.176.161.287.165.105.002.27-.038.283-.143.017-.137-.184-.225-.313-.275-.167-.064-.38-.098-.536-.012-.036.021-.075.068-.064.107Z%22%2F%3E%3C%2Fg%3E%3Cmask%20id%3D%22aH%22%20width%3D%2211%22%20height%3D%228%22%20x%3D%2218%22%20y%3D%2210%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aluminance%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M18.214%2014.072a.504.504%200%200%200%20.052.137c.043.071.107.13.175.178.067.05.14.092.212.135.376.238.684.57.958.922.365.473.69.996%201.179%201.34.345.243.758.38%201.178.423.493.049.991-.03%201.468-.17.44-.13.866-.312%201.256-.554.744-.457%201.365-1.129%202.184-1.43.178-.066.364-.113.537-.194.172-.082.335-.202.418-.375.078-.165.075-.356.1-.538.029-.193.09-.38.125-.573.033-.194.037-.4-.045-.578a.745.745%200%200%200-.34-.336%201.132%201.132%200%200%200-.47-.116c-.323-.015-.643.068-.968.098-.427.039-.859-.017-1.288-.004-.534.017-1.061.137-1.596.163-.609.028-1.216-.066-1.826-.09a3.724%203.724%200%200%200-.791.037c-.26.044-.516.134-.733.284-.212.146-.38.345-.576.513a1.477%201.477%200%200%201-.319.218.797.797%200%200%201-.37.088c-.067-.002-.136-.011-.198.008a.292.292%200%200%200-.105.065.63.63%200%200%200-.077.098%201.563%201.563%200%200%200-.14.25Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M19.489%2011.99c-.312.21-.593.467-.83.758a1.809%201.809%200%200%200-.327.551c-.055.162-.073.33-.107.497-.013.062-.028.124-.026.188%200%20.03.003.062.013.094.01.03.026.058.047.08a.278.278%200%200%200%20.139.07c.052.009.105.01.157.016.234.029.45.141.645.276.195.133.375.29.576.416.44.28.967.403%201.49.424.522.02%201.043-.058%201.557-.161.406-.08.811-.178%201.198-.33.592-.235%201.127-.593%201.635-.973.232-.173.46-.351.669-.552.07-.069.139-.138.214-.202a.776.776%200%200%201%20.253-.146.962.962%200%200%201%20.444-.008c.11.019.221.043.334.04a.55.55%200%200%200%20.165-.034.324.324%200%200%200%20.137-.098.323.323%200%200%200%20.071-.204.42.42%200%200%200-.06-.212.72.72%200%200%200-.34-.274c-.185-.082-.386-.122-.582-.17a8.299%208.299%200%200%201-1.752-.64c-.277-.137-.547-.289-.819-.435a5.01%205.01%200%200%200-.87-.388c-.683-.206-1.425-.139-2.098.096a4.477%204.477%200%200%200-1.933%201.322Z%22%2F%3E%3C%2Fmask%3E%3Cg%20filter%3D%22url(%23aI)%22%20mask%3D%22url(%23aH)%22%3E%3Cpath%20fill%3D%22url(%23aJ)%22%20d%3D%22M27.988%2012.966a.723.723%200%200%201-.181.403.477.477%200%200%201-.346.167.37.37%200%200%201-.307-.167.594.594%200%200%201-.09-.403.743.743%200%200%201%20.18-.405.552.552%200%200%201%20.165-.124.416.416%200%200%201%20.182-.043c.06%200%20.119.014.171.043.053.029.1.071.136.124a.523.523%200%200%201%20.08.186c.015.07.019.143.01.219Z%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3Cfilter%20id%3D%22b%22%20width%3D%228.329%22%20height%3D%227.958%22%20x%3D%2213.3%22%20y%3D%2218.664%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.64%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22e%22%20width%3D%2212.61%22%20height%3D%229.944%22%20x%3D%2221.279%22%20y%3D%2217.561%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.98%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22h%22%20width%3D%226.224%22%20height%3D%226.466%22%20x%3D%2218.431%22%20y%3D%2218.854%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.68%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22k%22%20width%3D%225.686%22%20height%3D%2214.699%22%20x%3D%2217.469%22%20y%3D%2223.214%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%221.25%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22m%22%20width%3D%228.748%22%20height%3D%228.782%22%20x%3D%2229.807%22%20y%3D%2221.045%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%221.78%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22o%22%20width%3D%229.581%22%20height%3D%229.443%22%20x%3D%2222.621%22%20y%3D%22-1.403%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%221.73%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22q%22%20width%3D%225.087%22%20height%3D%225.311%22%20x%3D%2227.998%22%20y%3D%2212.746%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.78%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22s%22%20width%3D%228.267%22%20height%3D%2214.209%22%20x%3D%229.234%22%20y%3D%2221.343%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.98%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22u%22%20width%3D%229.302%22%20height%3D%2217.853%22%20x%3D%2229.574%22%20y%3D%2219.931%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%221.19%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22x%22%20width%3D%2227.674%22%20height%3D%2227.545%22%20x%3D%22-2.396%22%20y%3D%2226.476%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%223.38%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22z%22%20width%3D%2220.937%22%20height%3D%2221.708%22%20x%3D%22.653%22%20y%3D%2228.422%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%222.1%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22B%22%20width%3D%225.532%22%20height%3D%228.994%22%20x%3D%2212.71%22%20y%3D%2234.649%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.32%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22E%22%20width%3D%2219.339%22%20height%3D%2220.36%22%20x%3D%2225.579%22%20y%3D%2231.435%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%221.95%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22I%22%20width%3D%2229.258%22%20height%3D%2229.438%22%20x%3D%2222.752%22%20y%3D%2225.588%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%224.12%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22K%22%20width%3D%2224.677%22%20height%3D%2224.614%22%20x%3D%2225.273%22%20y%3D%2226.613%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%223.12%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22M%22%20width%3D%2210.531%22%20height%3D%223.078%22%20x%3D%2230.551%22%20y%3D%2232.852%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.41%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22P%22%20width%3D%2215.3%22%20height%3D%2214.513%22%20x%3D%2228.217%22%20y%3D%2229.546%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%222.45%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22S%22%20width%3D%229.98%22%20height%3D%227.887%22%20x%3D%2230.877%22%20y%3D%2231.899%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%221.12%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22V%22%20width%3D%229.163%22%20height%3D%226.16%22%20x%3D%2231.758%22%20y%3D%2230.311%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.88%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22Y%22%20width%3D%229.163%22%20height%3D%226.16%22%20x%3D%2231.758%22%20y%3D%2230.311%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.88%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22ac%22%20width%3D%222.609%22%20height%3D%223.121%22%20x%3D%2218.759%22%20y%3D%228.18%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.44%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22ag%22%20width%3D%222.744%22%20height%3D%222.516%22%20x%3D%2219.174%22%20y%3D%225.923%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.12%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22ak%22%20width%3D%222.928%22%20height%3D%222.911%22%20x%3D%2224.787%22%20y%3D%228.007%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.45%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22ao%22%20width%3D%222.999%22%20height%3D%222.808%22%20x%3D%2225.776%22%20y%3D%225.586%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.13%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22ar%22%20width%3D%2217.334%22%20height%3D%2213.111%22%20x%3D%2214.777%22%20y%3D%229.767%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%221.75%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22at%22%20width%3D%2213.092%22%20height%3D%227.695%22%20x%3D%2216.586%22%20y%3D%2211.216%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.8%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22ax%22%20width%3D%225.325%22%20height%3D%224.725%22%20x%3D%2219.037%22%20y%3D%2212.869%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.77%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22az%22%20width%3D%2211.147%22%20height%3D%226.304%22%20x%3D%2217.271%22%20y%3D%2210.575%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.65%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22aC%22%20width%3D%224.965%22%20height%3D%225.446%22%20x%3D%2220.831%22%20y%3D%2210.571%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.73%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22aD%22%20width%3D%22.768%22%20height%3D%22.805%22%20x%3D%2220.616%22%20y%3D%2210.868%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.1%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22aF%22%20width%3D%221.316%22%20height%3D%22.881%22%20x%3D%2222.778%22%20y%3D%2210.783%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.1%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22aI%22%20width%3D%221.853%22%20height%3D%222.062%22%20x%3D%2226.599%22%20y%3D%2211.934%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_3120_48255%22%20stdDeviation%3D%22.23%22%2F%3E%3C%2Ffilter%3E%3CradialGradient%20id%3D%22c%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(3.5625%200%200%203.375%2015.221%2022.723)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%2F%3E%3Cstop%20offset%3D%221%22%20stop-opacity%3D%22.25%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22f%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(4.425%200%200%203.375%2027.326%2024.675)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%2F%3E%3Cstop%20offset%3D%221%22%20stop-opacity%3D%22.25%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22i%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(1.75312%200%200%201.875%2021.414%2023.9)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%2F%3E%3Cstop%20offset%3D%221%22%20stop-opacity%3D%22.25%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22Q%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22rotate(15%20-120.74%20153.33)%20scale(3.68625%203.87)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23110800%22%2F%3E%3Cstop%20offset%3D%22.59%22%20stop-color%3D%22%23A65A00%22%20stop-opacity%3D%22.8%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23FF921E%22%20stop-opacity%3D%220%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22T%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(3.69795%20-.15628%20.11765%202.78377%2035.57%2035.604)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23110800%22%2F%3E%3Cstop%20offset%3D%22.59%22%20stop-color%3D%22%23A65A00%22%20stop-opacity%3D%22.8%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23FF921E%22%20stop-opacity%3D%220%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22W%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(1.19505%20.51962%20-.24%20.55196%2038.372%2033.116)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%237C7C7C%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%237C7C7C%22%20stop-opacity%3D%22.33%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22aa%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(1.9199%20-.0201%20.03079%202.93984%2019.967%209.64)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23FEFEFC%22%2F%3E%3Cstop%20offset%3D%22.75%22%20stop-color%3D%22%23FEFEFC%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23D4D4D4%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22af%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(1.1563%20-.19039%20.17577%201.0675%2019.667%208.201)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23C8C8C8%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23797978%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22ai%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(2.55624%20-.08033%20.09235%202.93855%2025.886%209.64)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23FEFEFC%22%2F%3E%3Cstop%20offset%3D%22.75%22%20stop-color%3D%22%23FEFEFC%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23D4D4D4%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22au%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22rotate(-36%2028.375%20-28.307)%20scale(2.145%201.94625)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23020204%22%2F%3E%3Cstop%20offset%3D%22.73%22%20stop-color%3D%22%23020204%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%235C5C5C%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22av%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(4.70652%20-1.93989%201.36256%203.30583%2024.332%2013.24)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23D2940A%22%2F%3E%3Cstop%20offset%3D%22.75%22%20stop-color%3D%22%23D89C08%22%2F%3E%3Cstop%20offset%3D%22.87%22%20stop-color%3D%22%23B67E07%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23946106%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22aE%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(.2475%200%200%20.26625%2021.02%2011.227)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%233A2903%22%2F%3E%3Cstop%20offset%3D%22.55%22%20stop-color%3D%22%23735208%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23AC8C04%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22aG%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(.52125%200%200%20.30375%2023.372%2011.194)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%233A2903%22%2F%3E%3Cstop%20offset%3D%22.55%22%20stop-color%3D%22%23735208%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23AC8C04%22%2F%3E%3C%2FradialGradient%3E%3ClinearGradient%20id%3D%22v%22%20x1%3D%228.096%22%20x2%3D%2215.808%22%20y1%3D%2236.189%22%20y2%3D%2249.129%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23B98309%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23382605%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22C%22%20x1%3D%2215.838%22%20x2%3D%2218.264%22%20y1%3D%2239.531%22%20y2%3D%2244.102%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23EBC40C%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23EBC40C%22%20stop-opacity%3D%220%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22F%22%20x1%3D%2231.299%22%20x2%3D%2231.913%22%20y1%3D%2239.742%22%20y2%3D%2244.199%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%2F%3E%3Cstop%20offset%3D%221%22%20stop-opacity%3D%220%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22G%22%20x1%3D%2232.156%22%20x2%3D%2239.926%22%20y1%3D%2247.441%22%20y2%3D%2234.845%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%233E2A06%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23AD780A%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22N%22%20x1%3D%2234.277%22%20x2%3D%2234.048%22%20y1%3D%2233.876%22%20y2%3D%2235.932%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23F3CD0C%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23F3CD0C%22%20stop-opacity%3D%220%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22Z%22%20x1%3D%2234.817%22%20x2%3D%2235.301%22%20y1%3D%2232.546%22%20y2%3D%2232.526%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%237C7C7C%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%237C7C7C%22%20stop-opacity%3D%22.33%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22ad%22%20x1%3D%2219.554%22%20x2%3D%2220.497%22%20y1%3D%228.745%22%20y2%3D%2210.431%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23757574%22%20stop-opacity%3D%220%22%2F%3E%3Cstop%20offset%3D%22.25%22%20stop-color%3D%22%23757574%22%2F%3E%3Cstop%20offset%3D%22.5%22%20stop-color%3D%22%23757574%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23757574%22%20stop-opacity%3D%220%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22ah%22%20x1%3D%2219.423%22%20x2%3D%2221.465%22%20y1%3D%226.096%22%20y2%3D%228.181%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23646464%22%20stop-opacity%3D%220%22%2F%3E%3Cstop%20offset%3D%22.31%22%20stop-color%3D%22%23646464%22%20stop-opacity%3D%22.58%22%2F%3E%3Cstop%20offset%3D%22.47%22%20stop-color%3D%22%23646464%22%2F%3E%3Cstop%20offset%3D%22.73%22%20stop-color%3D%22%23646464%22%20stop-opacity%3D%22.26%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23646464%22%20stop-opacity%3D%220%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22al%22%20x1%3D%2225.851%22%20x2%3D%2226.936%22%20y1%3D%228.859%22%20y2%3D%2210.146%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23949494%22%20stop-opacity%3D%22.39%22%2F%3E%3Cstop%20offset%3D%22.5%22%20stop-color%3D%22%23949494%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23949494%22%20stop-opacity%3D%22.39%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22an%22%20x1%3D%2224.919%22%20x2%3D%2228.372%22%20y1%3D%226.793%22%20y2%3D%228.814%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23747474%22%2F%3E%3Cstop%20offset%3D%22.13%22%20stop-color%3D%22%238C8C8C%22%2F%3E%3Cstop%20offset%3D%22.25%22%20stop-color%3D%22%23A4A4A4%22%2F%3E%3Cstop%20offset%3D%22.5%22%20stop-color%3D%22%23D4D4D4%22%2F%3E%3Cstop%20offset%3D%22.62%22%20stop-color%3D%22%23D4D4D4%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%237C7C7C%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22ap%22%20x1%3D%2226.093%22%20x2%3D%2228.391%22%20y1%3D%225.918%22%20y2%3D%228.089%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23646464%22%20stop-opacity%3D%220%22%2F%3E%3Cstop%20offset%3D%22.31%22%20stop-color%3D%22%23646464%22%20stop-opacity%3D%22.58%22%2F%3E%3Cstop%20offset%3D%22.47%22%20stop-color%3D%22%23646464%22%2F%3E%3Cstop%20offset%3D%22.73%22%20stop-color%3D%22%23646464%22%20stop-opacity%3D%22.26%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23646464%22%20stop-opacity%3D%220%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22aA%22%20x1%3D%2218.392%22%20x2%3D%2227.519%22%20y1%3D%2212.986%22%20y2%3D%2212.915%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23AD780A%22%2F%3E%3Cstop%20offset%3D%22.12%22%20stop-color%3D%22%23D89E08%22%2F%3E%3Cstop%20offset%3D%22.25%22%20stop-color%3D%22%23EDB80B%22%2F%3E%3Cstop%20offset%3D%22.39%22%20stop-color%3D%22%23EBC80D%22%2F%3E%3Cstop%20offset%3D%22.53%22%20stop-color%3D%22%23F5D838%22%2F%3E%3Cstop%20offset%3D%22.77%22%20stop-color%3D%22%23F6D811%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23F5CD31%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22aJ%22%20x1%3D%2227.514%22%20x2%3D%2227.514%22%20y1%3D%2212.654%22%20y2%3D%2213.329%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23F5CE2D%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23D79B08%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3C%2Fsvg%3E";export{e as default}; diff --git a/client2/build/assets/Macos-MW4AE7LN-Vvm8Drw3.js b/client2/build/assets/Macos-MW4AE7LN-Vvm8Drw3.js deleted file mode 100644 index c244a4754..000000000 --- a/client2/build/assets/Macos-MW4AE7LN-Vvm8Drw3.js +++ /dev/null @@ -1 +0,0 @@ -var B="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20fill%3D%22none%22%20viewBox%3D%220%200%2048%2048%22%3E%3Cpath%20fill%3D%22url(%23a)%22%20d%3D%22M0%200h48v48H0z%22%2F%3E%3Cdefs%3E%3Cpattern%20id%3D%22a%22%20width%3D%221%22%20height%3D%221%22%20patternContentUnits%3D%22objectBoundingBox%22%3E%3Cuse%20xlink%3Ahref%3D%22%23b%22%20transform%3D%22scale(.00694)%22%2F%3E%3C%2Fpattern%3E%3Cimage%20xlink%3Ahref%3D%22data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAJAAAACQCAYAAADnRuK4AAAAAXNSR0IArs4c6QAAALRlWElmTU0AKgAAAAgABgEGAAMAAAABAAIAAAESAAMAAAABAAEAAAEaAAUAAAABAAAAVgEbAAUAAAABAAAAXgEoAAMAAAABAAIAAIdpAAQAAAABAAAAZgAAAAAAAqY3AAAJbAACpjcAAAlsAAaQAAAHAAAABDAyMTCRAQAHAAAABAECAwCgAAAHAAAABDAxMDCgAQADAAAAAQABAACgAgAEAAAAAQAAAJCgAwAEAAAAAQAAAJAAAAAAdWMR1AAAAAlwSFlzAAALEgAACxIB0t1%2B%2FAAABNJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDYuMC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIj4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT42NTUzNTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24%2BMTAyNDwvZXhpZjpQaXhlbFhEaW1lbnNpb24%2BCiAgICAgICAgIDxleGlmOkV4aWZWZXJzaW9uPjAyMTA8L2V4aWY6RXhpZlZlcnNpb24%2BCiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj4xMDI0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6Rmxhc2hQaXhWZXJzaW9uPjAxMDA8L2V4aWY6Rmxhc2hQaXhWZXJzaW9uPgogICAgICAgICA8ZXhpZjpDb21wb25lbnRzQ29uZmlndXJhdGlvbj4KICAgICAgICAgICAgPHJkZjpTZXE%2BCiAgICAgICAgICAgICAgIDxyZGY6bGk%2BMTwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpPjI8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaT4zPC9yZGY6bGk%2BCiAgICAgICAgICAgICAgIDxyZGY6bGk%2BMDwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpTZXE%2BCiAgICAgICAgIDwvZXhpZjpDb21wb25lbnRzQ29uZmlndXJhdGlvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ%2BMjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPHRpZmY6UGhvdG9tZXRyaWNJbnRlcnByZXRhdGlvbj4yPC90aWZmOlBob3RvbWV0cmljSW50ZXJwcmV0YXRpb24%2BCiAgICAgICAgIDx0aWZmOkNvbXByZXNzaW9uPjE8L3RpZmY6Q29tcHJlc3Npb24%2BCiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24%2BCiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjE3MzYyMy8yNDEyPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj4xNzM2MjMvMjQxMjwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24%2BCiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE%2BCspvVSsAAEAASURBVHgB7L0JtOdXVed7%2FuOdp5pTSaVSmUOYZEgYhYiCIBDB1taljU8EUXmvl6z2red6vvXEZa%2FX3eu19vKh2PJasJWWxumhTCKDCQQykRASM1dVKjXfqrq37vy%2F%2F%2Fl9Pvv8%2Fze3UlNCIqLNr%2Bp3f9MZ9%2FmevffZZ5%2FzT%2Bm7x3cp8F0KfJcC36XAdynwXQp8lwL%2F41Gg8D9elc9e4263%2B5ToUSgUumdP5btf%2FllTQJBwFjnLnJXe6X3p%2Fe9%2Ff%2FF8lTeMYTmfHN%2F3TwmA58vjn9L3f%2FYVplEFRQDjz%2F7sz7o%2F9mM%2F1j5PAw383d%2F9XWVycrJcrVYjXqPR6MzNzbVuuOGGJnHr54r%2Fp3%2F6p6Uf%2FdEf7dO1A7fqnCv8P%2FVv%2FYr%2BU6%2FHWvl7XKB01113FV784he3nixuAMfkNddcs2N4eHgXANlVLBYvJvKFXDcRdgPnCM9DnBXOEqeHoBM8NdJf5pztdDoneD7EdT8Ae2xlZeWxBx988AAgm%2BP92mF5KEuZsij22k8uz1rAf6I3%2FywA1AeNbUADtda1ReXIkSNXwk1eVCqVruPbCwHK5Vy3cj6rdacMHtPtdns3%2Bd%2FD9Q641t0XXHDBwzyvlYkw5V75%2FlmA6Vkl4rqG%2B7bc0hhyiCJYkDvEcd9992295JJLXlmpVN7A%2BSq%2BXc15mm5DXBswxAv30qFPi%2F61l%2BJpl74C3SV%2B3BPf9Es8nxKY9x3Oh5rN5lc4%2F%2Fb%2B%2B%2B%2F%2F6ste9rLpfiC%2ByeUUc%2BcTq%2F0o370%2BUwpAdJXgUHr7ad1%2B%2B%2B0bESE%2FQSP9RavVmuH7KQdiptk7W1zbnB7dONvtbmftbK27X%2F%2B%2Bf%2B%2F3%2Fsm7jmcvHVPMaZtH5HdKIXiAK81YxqWlpZ%2BwzP3y86mvlJ%2BKwH6A7%2BDrP5kCQ2TLWqa3Kg6i58%2FOzr4SXeany%2BXyjYioLX0621accgjjyB0KqbvGOOIxwZSexDByov1EcqhT3p2TWJF%2Bl%2FCnhCJTuVx8tDh9nSoBsmMA6hOA6Y82bNjw1V620Tm4P013W1es76jbU2r7HVWyJwoTRIX4feAMzs%2FP%2FwuA8wsA5xX9YOClr2fYSNSLtgvM2IaC5YmqKrdgJandRPI1llOnsUozr%2FKyyXvetZup01WqtEUe78EgZ7dI0qVqKpUGUqoOp0JlGFV7MJXKAwnd6hToUB4z6RWPvMnfN9yFuKI8fV0oAaSvLi8v%2F%2BeJiYk%2FJwIFSU%2Bucy%2Bd77zLWiW%2B84qW0te%2F%2FvXK3r171RGav%2Fx%2F%2F%2FLIr%2F38r%2F3M4MDgvy5XyldYXhrJFrJBQgT4zs4uWAo0aL9F27Rce2UhdedPptbi0ZQWDqW0iCpSX0yFNu8ZYJXHhlJxYjwamtYjIRkXf7mXq3QFVasO0LpkyLcy4YvV1EAnbhaHU3FwUyqMbE1pZHMqDU%2FwzGCuWF4bxiHrRAUFK5RNnWOt7HDPV46Pj78S8fZ%2Frq6u%2Fj%2B%2F%2Fuu%2F%2FhHqsKxJ4NJLLy2%2B5CUvWdPxctTvnL9PdMvvnDKlJxGuvLi4%2BLMMuX%2BF8xKLCftvKaFobRTXAFIAp1gqBXhsoGa9lhrHD6fOwd1pYHFfajanUxngtLurqVgZgmsMc5ZTC%2B5RqFRTYQCOMj5mimaRDxPykascC1YBCDqwEQBUKqZiu5U6zXrqAiwKRZguqOBcLaRydzR1Nl2dCtuuTKWpbak4PGoyQI%2FvLdKy9H3dXkyCUbhYdGg40mP1ev3fj4yMfJgorX5Hego2LIJ%2Fe4911Pr2Zny23BipVK%2B99tqG3xcWFt4yODj4bxlNPd9n1N8mKjRNnCkvA%2BI%2BCRyPRr2eakcOpMajd6fOnjtTdfruVGnPpsEtu1LasTM1BwFJmyojjoJLkVK3TJMq4qqIppERwHQWpgyABEigKcQhOQMoRVWb91EOgba8kDrzc6m8tJhKtenU4Et78OLUveDFqbDrJam0fWeqDGlqEpTAzTr00uNVcCWA5OgM0DfvhSP9H3CnT%2Fq8njY%2Bfycc3zEAoiFKN910UwFDXOvRRx%2B9bMeOHb85MDBwo0RyVMNFlIRcsSELRYCDmJLiK9NH09xD96ba%2FXelyqG70lAR0AxvSNXqEOFKgKQNOLjfsiF1B6uII4BDwxfhQAnABEfhWhgcgCtVM9ch3fVHgCdEm5yD%2BMFxWr0C5SjdeiM1F%2BZSASAXW51UgkOlBkVfXUrdpVk4UzMtTV6ZGlfckAavfmkau%2BDCXAfFpNxNIAWYTgVSq9H6xEOPPPTLz3ve8%2FZgCC2%2F9rWvdYAQutT6Mv5j3H9HAIjGrEKQ4DqMSt4H1%2Fm%2F0AsGGSDTxYMswWJsdIkscGDzaWb%2F42nmrq%2Bn%2Bn1fTZXVE2lotJIAXSoX26nKjMMAA6BShQTgUCWAVBgZTK1tm1JxaDi1ESOhJ5UqmZ8hklIFACHOYBqnH8F94Bq9MlA2QASASN7giqX2Csp4owbroCpNvqGklxqNVKy34CadtLpaT43aaqotNtNieWMqXvm9aeol16XJS3elKmLVtDEp5HLlEmirss4l6gszWv3fR0dH%2F5Of1tMsB%2F3H%2BXsmUn3bSuLEJPNGZUXW7t27L7%2Fooov%2BCwB4jaBpd9Bau0wnWEIIazOVyqXUpFcf370nTX%2F1NjjOg2mg3EyD48U0UGqlKvpNFZtipbjCeL%2BTyoioMnGMV6igs3BtIz7amzcAIkZS8o8SnMdMzKdMdjwHW8mcgJenHjZyHFy9VeEOUQZQOnAewdMVNJSzWIf71ADUcp3XgAcQtTuVULob7SIDwJVUJ3xh14vS5HWvT1PXXEMHqMJxTTuL58ivkJp0gKAFutHNBw8efNfll1%2B%2BW5HG%2FF4LOsqI%2F1GOEAn%2FGDnLiiFAQfCcPHnyHRdffPG9ggfO0KS3QcHkTDmsHS6iqKGkRx7Zk%2B768J%2Blh373T9LyIw%2BlgQ0DqToB12DIXWo3kHEtGjTGSOq4mqijagUkgg3d9tphJDWPnlLjGunC3OBoaLCqRmQLKnoYOTddAnYEIXUaG02a23Xt2FJ8rfAaQIWeU0JaFlMFoA90F5lsW0hDI5U0NLU1dQ8dSAc%2B%2Bv%2BmBz7y%2B%2BnI%2Fd8kPHWBawaXE6XQArp0pY002rlz573STNpJQ2l57rL%2Bw33NFP6HS%2F%2BMKa9TBiu1Wu13EVnvFixYkZs0C0KHfzwrqrD1pLnpY%2Bnxm29J87d9I5UHumlgBLsLEq%2FcrcNx4DqoqtUiQ3FFFqffKsiWMrUrodsw7Ec80SBwIa9ddKO2o66J0VQeHkYHcghEYJXpOHk%2BH2UEmW0bozM4TU9sqQd1EVMFRoGF5moCL3xDEiPSPFt0iGarkIIDyY0ofaswwCzrAHhDtK100sBznp92ft8PpA07Ub6J3jYu%2FxRnpga4Kt4j0j40NDT0Xt45KvWduuK39TgfmZ71wqAgD1xxxRX122677aIXvOAFfwl4XsroCrrC0%2BEFAgf0oI4MpCYNsfeOe9LBz92SBhv02KkqbGkZUQVwivVUgV5FgKOCVGZaqlyk5wIcOQ%2FYg2kBR5VtxZfgQTygWac2oqpN%2Bt0qQBwdQZwNEg5gkfVTBhB5ytU6HfQdh%2BUNzlYz9CCfQ4QxvFeMFTBUdvjeaagLoSsRtN1hdEYJGVZyAqTOCDalwbSKM0BtpZtW69W05bUvS5d873VpcGwstRGLHj0Qyeo6jE7LjdXGHd%2F45jd%2BhDm2g33aRsBv059vK4D6FTxw4MD1W7du%2FSQE2AzXadDM1eA6vdGVIuv440fS%2FZ%2F8Uqo9ciCNbaimKrpOCfFTLawEcAbQcwaC0%2FDeKwAqgZoSgCkpv7TTAApFH%2B5jEB6KVlAjAFF7cDAhC9CJsAE58uLZ0VhwICMQ9rwciOS0CcUAUYkLMAqOuuQWjrzgSKXVzIm6dYzLjMracJ8uehDo4R6O2y6FIbLerqR6d4izmla7I3CkoeBMyycZCGzemna97Ya0%2FapdiENAuE7Jhm4NuGsVveg4x1sYud7%2B6KNdOmjhnD5Lzya2vl0AKgCeqpzn6NGjN05NTf2lzlrYOWS5WdehN5dpYOYn0wNf%2B0ba84mvphG4RnUMULRqPbDAdYo1uA0iC9EFj%2BI5n6E0A54yukPYhbgvIMMK6B2OwgSUFqQuSnILztPFJlQeADhVgKPyXOUEuEAtwHN%2BwkTI4JYCwlFYF71HBbrDaKsIeEoo1QXeFfnOsA99TmARlucm79uIslYHLgQ3aiLOGAakGtqRQGp0B1IHC3djtZSWlzpp2%2Fddl66%2B4RXYkBB55BGcqCfS6IiVJhr67MnZt2%2Fbtu2veh1VlqUE%2FAc9zk%2BnZ579GniOHTv2zs2bN%2F8Bdh2H4WoHzqqjR3RTFc4wP7uU7v7Lr6bjX384jW4eToOKJ0ZWgmQA8VQuOsqqMTRTx%2BEZkvu%2BVOzwrM6D%2BHLIDmhCJFXQh%2BBKHTmRIzHA0lV8YevpVpnDEkgDFcQbz%2BhGASB0oLBxK87OU3eV8zjkQHCGLiJMThR6kDqRijXfSo6qHJWhUBfhUIUQdwIKcca3MAHwvSkQOwwFOFcRZ812NTXRjVplxNqJhTRw6RVpx41vTWPbdgIiwEnmmiIAUwu9yInmNDs7986NG6c%2B8u0C0flodB4SnvfzGnhOnDjx3o0bN%2F4O3ntGQgtgZhrw2EkEz8HdR9Itf%2FzVVJxR14GLhLjqBGAETqUkaOppMK0ArDbAqQcnUg8CG4BLJgPHAUDBeZz4RjBKYLlORy4jh4l7hsqIrBIcqECPdujeiQTK6E8k9HQPwSaXwS7E0IkTUSM30tjIldEBVzQepzy8ogsVYL4Fwhd4liu1VLCDOxGXJBhXQh7KRQvhVEQnGIxh%2F0ppQ5p420%2BnTc95Mco1nEgaRpmxsWMvqtARsOC%2Fl4nZD347QPQPCaA18OB28V7E1u8gq7WgRo3zVBZtjJj6%2BzsfTzf94W1pgvuhUXpUZxG7Tj2NwWmGKotpuDSfhhBZlWILoCDGIK9iLMQWvU4JpY1HnUfcxGhLrsOEQLE8mDoldRyAAkg6EFhFuiNHEmyKLsI6jDchIPh04bMWHuEXoOFP1o9aIkHxBWfqAUnxVVJyqxcBGsUbPkaEB1ByL3Ql0MIZXDoUbiZwEGnoS6VxkiukxflmGv7Bn0hbX%2FaqAJB2o6L9kUiQg1mZSmFmZua9mzZt%2BgcH0bdOrTWynfnmscceG9y1a9dqX2wJHroKp9YWakmF7fQPf%2FmudN%2Bf3ZEmNpdiKD6UFtNocRkAofcU4UaIqMGyOo%2FDehofXcYGN7L2FaV8ATB048QoKKeBozg0a%2BMT77RSFxscHxBVcKCqcQVQGa6GEBI4uQdbrGd2yDo8olzeW124IGCQIwkeuVQB4HQQd4IrRBqcpMikrHpScKdGmDRgXIi4VtaRWgCIIQTj9cFUZ6S2OLOUJl7xurTj9W%2FMHQPghWWdHMi4MDBQKdBxEWcbP9JvC4v2bB%2FPlGRnLE%2BPddYPHz78w%2FgE%2F39ZbOEIQTfXbUc9BRik3Z%2B7KR3625vS5JZyqI8VXGEqcBp1H%2FUbRVa5pG3H0RVxAI1g8ZkFOVluOYENELQoOzwPyzLvur6Xy3DpkF8XIAWAKg7xAZHzlWBH0ORZ8WdACooSXUPAePQBpHjpnVgqEFcaMhFpcJoOIzW5TUkgYS8qqDMpknzfQKQBHk1Mrb6izZBhFX2o2RlI9c4odcUUOVdLI89%2FYbr6LW8KfU7jvXoQhy4wxSo6Hz7hb9u%2Bffsn%2Bm3ix2fzkITP6qGR0NEWqH8Zzux%2F0aS3QU98P7HxOASl1VBhYoj%2B%2BOe%2Flga3yZYhmPIetoE6jMwHIMEOAAwarWCTLhLHeyegbCrbyT%2F66OQrL%2BjFYZsJBRYfHhrLIbRcQI5VRAR4rh2Z4GuP39KNycXJnyhoj6sBVMscrwKtvKc%2BMXmr8iv142o47tXe%2FQ7o8I51oAEtGKlhJ4qzg2KNFtgoDKZaizi4iUz%2F%2Ff509ye%2BmNq1FhKYjiNRYNYMVNot6j41ueEvbAvbxLb5lup3jkjPKoA0qWte%2F%2BIXv7hzy5Ytfz00OIQ9rYuVlIGIDShd%2BXfPp25K%2B%2F%2Fu7jS0aYreRgNnWEhBvqIHhJrUa4x4C2BIJMMGQAZoclr9v7mOAMVQtIZhyZGkyTGG8L326eWSw%2FtXKD7zw7Yn895JngEMykH%2B6leOBnM54IZyxDjpKIpi9LAwaqKbFTFlyCkr6Gwxj8cIs6SpgsEC4zGFGNKbk7yKcJwRnODmHjyY7vyrz%2BMDhYLugABaU60SXKw1ODRQ3Lp1219%2F%2FvOfvNi2ebanPazys3LQwK6OEJAlRgG3jI2NvaS20mzyDjsPDes0AyLlG39zR9r%2FWXSeLWOp3GZIXlI51qrMCAsjYTWMg42w%2Bzg9UcFrIazLNgIKcAlxFQ3Bs%2FqQZ5FG6nBVr0HOcVWUwc1onKL3Dtt5tmHQ2omi%2BKLqADXDh3tvni1qRKIC2Q5BonI9aCBXcWTGTYzKtBmpD8UoDTFWRnxpP3JStstIzeE9U2ChB7VaZf0L4EAD2IqwDyHKtFoj8GOYP7fQSBuec0W67sZXRN11WQmuhmAcHKpWVlZqd4yMDH%2Fva1%2F72jYgUsRRkGd%2BQNFn5Sgwm06rpDqTfL%2FXA4%2Fj9Wp2VcbAR4%2B670vfTLs%2FfV%2Ba2LqRgUmN3tJvwLO1nu%2Bt55NaVg4TAKBhbHv%2BhL9y6EOCQ1ZnnKwwF4fwBaJ3%2BxhTFXC84BikSwcHO%2FyLRj89K96c%2ByBe6D%2B9ImbbkODxhSdl4b8rfwSTg1At4yV0uzAfVPMoLDXhLSjaRazihVWU6uUlrsuhDzlBjGxGD0CkAcYCfIjeQB4mjIcBivbgxFQ6et%2F%2B9A28DF70gy%2FnGyBVtBfwdKk1GsPDQ9ctLCx%2BYHx87OdoK10RbJ9%2Brbn91o5nBUAoaKH3oLD9DHrPu2ordJ9ugXEzPY6WGWC6YPfXd6dvfvwbafICXDvpaQWIuL78QKBXg3zNOpCEE0C0PIdhcq%2BGcBxynq7iCU6j8iz3ocOG7aSIbak0MsY0BeCB83VsOBog2lkAyhFQYMEwB29tcE%2FSVG%2Fpl8av5z0Ur%2BEFAEhsZBsvAJPFVkffLxrbebmcMOlbLbyjFXUOKuSeuoUU9FYcAywTk7iCMDJbWuJcSKXl5TQkl3JwUViCEw3BfepphWmPWnc8rbSGUnnjSDp4x%2B5UnhpLL3j181MbBzYP2qBaX222xsZG382o%2BFbUi76h8RlPeTxjAClTVdBYvnsNPrwfrNN7aBzFmZw6HLwO7sFI%2BLE70vhmnKa01gYd%2BRPAEBw2WL%2FRMjiktCHiJC3B4kHfzV%2FkMmuNDYho8RBTuKWWR3Fyp0HaOIhlTpBjqocQGcJq0KMcODrq4Qp%2FDJDFaM4y0aA5Z%2BOd%2BxDQaltUjDJQB7BipyED6cADeZqHANcGFWXms%2BJXXFkAUigGG%2BNOoql8o%2BR0hlGKNXaOTaUWPkVtwNSpOWpDYcZvYYBJZShDiRfAIg5rSMPqhsF07Au3pIMTw2nH865MLefjqDd6UbGBY9vI8NgHb7311ttoswdtOz1Az13Dc399pgAqMIkHJVLpyiuv%2FH285QaXl2quaSqryDFZnBZmF9IX%2F%2FhWRtSDNBZsG0I76rZhs8rrO04IKA2D2BB%2FTUQTTjBK8C5ELUr4fiPwvg0r7wwAzBGc5MdG8nAWgtF8ZEKaNp7AIeEuukV7qcbwGM4TI0KTovczLOxiM9IfWkNkQDdAdG7i%2BdXmFwkFgMJqNG4BgMZBDYMO2RU5fIu6Wwy4pHmqx6m3qRcWMS10cUaw%2BoLK%2BJZbaIpNxo4YdqAfHaI9ClwBQpvBB3s%2BaKOMEaYGyTI%2BUW10peGx8fTAZ76Whqem0sbtG7EOxNxZkVFdc3hkcPDa5zz398nlhl7bWYXImuvTPp4RgPqia3p6%2Bn8FPK9eWgqeWVFZjDkolMCvfOKe1JhJaXQSzqGhrAcU4WMze40mowrqBlIQ0sYZjQ%2FrD%2FcMHnLPhqwaBhFRHVxUO6MTiCnXZ9EA9jTTsVld9Wx63LbxCmwvLKbuKnoX2ZWCM9C4ggfuE2KQmXHFGc61GaCUQFYpdT2yzpTv1%2F%2FVzJDBo34ikNQ9QAENqp3H2XPG1MFZIg3qEw5ogo3Em4hfvQFK6mkaQalDQTsHtRBvHk5XyJlKpOl7Oa31lVlqD5OLad0uUvkC6RYY9pcA7Tf%2B5vb08h97LSqEk9SCslChgzfHxkdfPT19%2FH1bt27%2Bj8%2FUPvQtA6gvumCH1wwPj%2FzGykqILib0qBS0GaBn3fWVB9Mjdx5LW7YMQkx7AR9sXnQCh%2Bve5yO%2Fdw2WQ9aS81twK9RExv%2F0QDiPluYyDvEJ%2F53uMA5hnOo2ciSxYmsEyRV10DZEHrpWZ3oudXB0rzh9EGWjIWjg0IkAUJeFgnKeDipbKOIGooECexTrbMDpFTy%2B51qQuw0tgLgWBJM2KTpRsAltUdqmos5y1ZxCcZU48%2FNwUrgSE7sJva0AoIruLGM5KI9rKotyX85GnfT9B0BKFM56MAkGjQSattU2xsZ5BpvDaeno%2FvTILbenF%2F7A99JRcrkAb3kF3%2B2RkaHfYLnQpxBlDz0TUfatAqiAJ6HN1rrqqqv%2Bw%2BjoyIDcR4Tbuwa0gD5%2BIt3y13vT5Ea4BMSjnweBM90kge2pBMfrkKtzXGUt0Ng4SsGlaADAUILLpPFRCEs6sPEuc1sxjCdOiAcBAxCKAME0Y%2Bjup9mTqXD4aKqsLEdjxYCkzwl6ItDe3i2LULgZDdglb8FXwLUiJkKjjL6Qy%2FCw7ojHXJnMsXqI0B0lJrDgPKYRk530%2FiLiTLtNwYlUuRNpBfith%2F9dFYui3DkBu5bDjjLYGMfIyqjKKZdQ1qQhHUuvA0ITDdCpnPMuG0vtOGpk6EPoR2NTlTR9z9%2Bn%2FZdcmC6%2B6opY9kQbYVPtNGmzwcsuu%2BI%2FUIwbe225vkevq%2Bm5b78lAGHRrGCUqu%2Fbt%2B%2FtExOTb1lcXCFz%2BCY9QtG1iiT70qfuBxjMeAsGWq%2BL7IieE6RTXDC%2BhAwV3DNK%2BPhU6GVlOE8FQlZwwxiCgJVRwMIIrq2fEL0xRBiNUCw436WiCYb1KkSvCEWRea7ici119x9IaXpa62WINXY6yFyBXuvMtmJUV1fLJMvXRuNEq3hw1lv3CzkIbyN%2Bn1usJ6Vh%2B5iK0ZU6DZOn8U%2FwBOcBC%2BTtnERB8PDekYUWeRucXRhIX%2FQIIBufOpmuixWpRzp6PFaStNFlOuh3RWxYFQGDz3RRLk75mSokXQYLdgoeHOaXmf4YoBPUmTcroog%2F%2FOWvpQ1bNuHZyBSIk7p09KWllfbk5Phb9%2BzZ9%2FbLLrvkL9e5Ga%2Bv5nnvnzaAaMTCe97zHmk3gsvAr3fs2jSKFLBxBhn93HXr3nTwgeW0eRMN71CZb4oE%2FXZksZUSnsBUVjeNUvj36Ci2ksbKK0ioSqrq8wyxVDI1Y%2BtYryhxJCOhcJfBGQxxFiCA6PrzALx06EBqP3IwtVZWgkuFhqWWSRqCoOUQiaNKjw7nLg2NKD6CvsgQGZYRaYYO54y4taRJ5ZPZui3tbeInHRbOxqd8umlEROMCHMVXMQDEfW9aBTKErqZ%2BpDIclRN6klGAkLUg7wKG7uxiKh6fTx3cTtpTDO0nEHFarMlrCBeXgYr0hLsBpJU60x5tlwcZHxDRQcu4tODfkQ58%2Fc50%2BQ03RJWsgYMci8fGDr%2FO49%2FccsstTduWw5I%2F5eNpA%2Bizn%2F1s9UMf%2BlAdt9T3YPN57sLCkoJdCQXnKKXj04vp1r%2Fdn0anGDVAvEqwXNZpaVVGRPgc3AYFehA2O1QCOAPLaWwI%2B%2BqAlmYlI0dvuJ%2FtO7JruRugUuHUi9AhsS4aUuH4kdR87FCqT89QDDiBoole2GQmVV0B1CHtFJQ638OhAD1rDYPzhBsEAGV9DWmRx4Br4K0SZKZOklPfIdAR70K%2FOQ1EhOWd0xBhpkD3yiDiGiDqIwZQkHYbrhcrLngtSHS015GMx%2BhoDiPacFkiI6SkIQBfZoS1eIx6nEjFqfFU2DDK%2Fg7Yfgbg8mXoCK2nAFEDp%2F7leinNt3CPbemUVknlkY1p7pv70sldh9KGXReG7xGJlxaXFluTk2PPPbDvwDt3XLLjd3CJ1cD4tGxDTwtA72cd15ve9Kb2G97whg3YfH655xxGC%2BVDJfKOmx%2BnooBjEsd45L5uGDEdEdin4XRKgNuMl4%2BnTcX5NDKEgxgiy%2BkFh8GogLQFIooGCZ8henfXxtNCy2grpiZQNg1ZPH4i1R6bTrXjc5hGnMLYhD8x2GNUEoY80nBiltLIQ3ANOUmbDMOJ6J1OmdC4jpj0t5GthWKv6PEkDEnlMiAqvRcU%2BW085D9E7R%2BOAh1uxwSuHoPUPZRx0wvuw1XQQKfwj5bDMAKQw7UpZzMmlHXZEGDkqJsr4IG%2FhGmqFGvfGIycACknZ1J1qAKdhxBNg%2FQnOghuL0OFxTQOV9oCUOuNwbSEgbHWmEzziPq9d32T1bBbs9lAMQ27a6CTjU6M%2FzJt%2Bie07YJtzCmWn9LxtAB03XXX2S3qf%2FAHH%2FlpHMR2LsyDlLD50L6w1YO7j6aHbj%2BYNk7RK7BJYPGgB6smwywQXUPl%2BbSxMp2mKifTRGkOUaJZkFAuyIAzCRT1ibAJcd%2BBKG0tyo64EGkOXVU827Dk1b2H0%2BJhLLEtNjGobAvR1mhrp5XToB%2BQbxvfYngez900XJwDuvjS4Caq%2BCxSnjIiLRqS8qmTFSA87CcAJJfqGyGzsQ%2FugJgisYCR1F3P7MWR4BLgZZZRt3AY09cnh1YcCRrT5743UmsD9OBGhAJLAfY6vtBNhlRyIfNSJ28wQmzDUewURcpZxNlOU8TAInnMI%2F4Ha2l8vJzGRll7VrUD6t4r6BoJzyFcP46kC1l5sjx9V%2Bru2ZoK115HNVl2hOxmaRBcaHynbXrRRdv%2FE238tLjQUwZQj%2FuIzMnhweH3NvAPo0J0bHslfryw7Tu%2B8jiNQ8MTqk2PRu1l8DSfJksn00Z6%2F9DAMbjAEpWzgWkMiNlxTkhiSUGIpRiRe3dgzQmLcsn1WwApFtqhpyztPZhm9zbTycaGcBirYLfpMBe0ig4v0dnnhWTUnXBKh%2BCKrwHACsnTanuKv8KLpUG4zGpAbMGBQkfhfVlRxhluppTR6oVcUdcKIxHfQpRBhScdqkxyG%2BkR0yhT2KdwsXAIHguWqJ6H%2BpWg5UJQ%2BWhemdEC7IpZ69Dmqt%2BPTmRyJgWZVDKsbh3d%2BmSAuIQcLpN%2BFWvzSWxd5WPtNDrWTZOjhTQ2iKqAaJPnFwN8qE%2BjzVT%2F5l%2BmlZ1XoBuxHs764sPrUiMmWn%2BR4n0ELrT8dLhQr1pRt3P%2B6Wvpe%2Ffu%2FdlLdu76LwsLy6H7qIwNwB32PTqd%2Fvt%2F%2Fvu0bbIAG11Om0qLaWPpOHoNwGF0JQmqzLiXHXFRLTmSiwBLJa5wFUdSXeX5MCIAJRrrV9hodHiHj6XFk0tp%2BrFWmpnD0bWMDiDh4C8d2HyN0YaENg%2BSxuEKOxE90HmpAXrhYJmJyZ5I0NNxsHwyTRWwlZSWYjSjmB0k78ogDYeSmtiKxYTCKU2OOMqmrXJBuRTlDIV5PeUII3aeeAWIqFN3BvsOo8EyE8dd5rU66FktlOwWHocduQ81U2wJHldhAAeuPtsJGaPyvokPkCv9qVmIMuwOAA%2BggcpGAA7uSQgXGVTKmEAYTJQ6NQYkLQCzmjYM4%2BFZWaae2unIY35vWn7Fr6T0vBtQ%2BFcpt50stcbHR8v7Hn%2F8XZdeeskf9Nv6nIDofXxKHEjtnDXYRqmOjUy8W07sO1%2Boq9Rh1XfetjddPLKQdgwup1E4ziCehfAFejc9KojOEJOwKqPaKRjExqjM%2BI487LXdCQ2EgIeNm8LllW%2FLi%2FV0fH8zHTg8lVZKG5kSoU8xhyVclvHMq0Fo%2BBmkh9UDojrExZwcBBewHQhXU8xh66E5wmTQIUwd7qKIUzdC3U5DMSqxn1NEOQNGPzmjBC4qR%2BCWIbLWyS1BE5zHOJxPHADKFt%2FAhlW1ldSZQVw44esKOAMBEGoPV8wil%2BanBHYHVGY5qZyHb3IcaQa5ecczXKkN2dXh5EoBJO5dU9Zt4kcEJ3FxZRVdaYVNHqZPYCrhfmRgIW0ESBsB0kR5exq%2B%2F7Npedd1oVdCGOrYxcLQSWMjY%2B8mqz8GQNG%2BtI1VPOfxlADkPsdsbtS4%2B%2B57v394ZOR6tmNjxB4bQ7KCtJqm9x1OU488mqY2MHGHDhENgBxSmLjoLygPIdR4lOMluIfiTXKGNXmUBX5YmDWgKeOV3zXmew4fSWnvocm00JziG%2Bu44CgdelcDIjfaYzrAkp72pDZrNfJSGAmuYEBrgJjorhC33VQvIl%2FEZTQOjdGEa3VpkAIjQzlRBy8bGxdmwnvUVuUwTRo9XrGmuOWN%2BotiUuAbQe6Yb42dD0WTOo%2BbVRU3b0qdRfYLUqlWyXY0yDje7y04pWvAYlKHOnVCZLmsJwNLoKtkhwjjSrLUH0AFwIgnqMhfTiY1M9fCJoRIp4YxzK9As7naRDqyrGW%2FlcYZtGw5%2Fkga23t%2FGr72JSGy6QSlxeWVzvDI6PXf%2FOb9r37BC679optaURuHk%2Bc8nhKA2CHMMWyTuZOfxMMt4SAPLVF3oZyW15l7HkYsrFIxejQNKmDC7QKwBJVp3KLA0doMoIoAyI3eqsMonHAcHd0VhSVWn7bhFIcOp7T%2F8OZ0bHFLqhVHiQfXYX2YbhKrLUz05CPrV8tSB6gLKN4Jzo7GNcqA%2FTr0hVV7J4R3KZDWZsnIwDitdHD1EHxwsxFMCZE%2FzwEMFJQADGlHXRjh2SkEvG4b2SVV5dx%2F5zgwFroChLkcRqbLAWh6T2pRxjACwuW6ALnh%2Bi8gL1hC77GpBY4n9xlIcEyBwruw2VIXn12Y6DVARlEElCO4Om6vi9iE7AiD6HOD0E5YLqA%2F7a9Npck7TqaXXU6HDwOt1ewCoGpxy6ZNP0UyX%2By3%2BTlqF5%2FOCyC3m2PKv%2Fnbv%2F3bFzO7%2FuZFCEGvZ8ROgVAuV07Mp9kH9ofFFMFM8QUPFQrw0HLqOYgS11yWIJh9ZZDh58AwvZG5HTpiniSsrqaZxQ3p0cPb0qHZTSjFG1IdPaKKTHcaQEv0EoRegShNuBuqJxXoou%2FoJ0w6nA55nRsaRediyoew8ib8kfgqV1rjPoCUJYmkIQdhBw0aoUXPdiKP4gR4QBQpBgPKlmGG4k6hhP81oWij%2BE6Q0461bySm3aegb88Um1sdhaUSz7Vncq1Y1x%2ByTnFKWSmX2qKKb%2BZGcBgAoyizcyi%2BAiioAXYKKktydtIemIgZ8UkfFStoYlpLEQ8dlO%2FD9IkRRmSH99TTzKGTacuuzWHMZMBQXGJUV6lWf%2Bh3f%2Fd3d9Dmh237822rd14AMWUhnRtvesObvn9iYmrT0uIKZooOM0gSuJBOPHwg1ZlIHRnATA4x1GdM1AYOjuOQmWcJhrRLY8Ms3%2BFq02lEK1cbDK1H0%2B4DF6fdR7enE4UNaRWbkDPLgwBOctZ5Vt%2BpQxUd0TSuyg8WAZLGAkVLm%2FdOKo7Q8OotS9y3SMN5I%2FP2cGSI7ZYGIX1DAbQBrOJOpNqTyUb00BtNwytcjjI6Ugu3U6dMbBmmLPJWmRlwARgbtH%2BQIRCjkQnnCU3ShZgaFhGVTJxCGPQqacWJCNU6zy3lEjAQB9BYc00SdkRB5FXOElcBEqCgLOSlcm8ZyIk0BA%2BAot6kHmkq1nVvWeY6y3WA%2Bmpjevj%2B2bRl5xZLSrqdYh2HobHxsc2ve93rf4CqfJi2t6VUwc56nA9AhTvuuCPaf3Rs4ocdrtuTKTHERwnEMevIQ%2FvRgxgSSkAqpgnepTlVxAJPKLya3LE2D6%2BwSNCpDIjBCKLEKEG6Hl24JN01fVk6uoxzOKOrFdIdR6zg6RuFXmIpy6z5QsSK4inAwEI73i%2BFFSGgAMEYDQb5GJ3Q8KuUA2mRhh2OQ0p7cfgIYUikoHzTkEiM6goczUQBlTUVPADPN7GLHA0XbhJUMGOEv3DamCglAvgyuThsRLLtHT5w%2BgxYumzk0Nl1SSo8%2BACKtVM40BCuI4iK1MvSyfWspyCSk1jmUKS5hp4EweTYoiXEWZQ7c187jeXQlBBKN3Gslzw%2FOpigI4C1UNvrYDf68qMr6Rr8ozYwfWQf8VCET0yMubXgR%2Fptz725nvGQZGc9YGHFn%2FmZn2l%2B%2BMMf3lWpVl61vEIP6rSZH6RxFClH59PSoTlsNeo%2BiHuA45yWVHTU4%2FB9w8CJNDFyFBmMKMJMDDYg3gIW0oF02%2BHr0qf3vSjdt7oz7R3YmE5g7xmAiFVq0wJI06WRtJcNBmow344E4J09c644kI5xqkTXYBuLgDLGZXARr%2FNwimXe2%2FMczam8y3W0oWioC50DcdjB8ChBNdyFe6zoRKcLrmGjUxYNi3hixRRFsAm5hpwWQJFdbjQaRMIjmOLqfRhEHd6TpOFiTnCYDr3jQkpjY%2FO3F4doxGM%2BSPsYJRUsHcraoVyKMvUhlz15qvup78UyH0HiN8OTgMUlZ%2BgbJaFmWrEd%2FDmJ42jNeQpHqpSLqaB9sykdeHyRkRo0ok3RA%2FGcZThSKr%2FaNrftxcBZAcKH83GgEF%2FXX%2F%2BKV4yMjk6xf6EMXJMaR5fR1xFoStNgsCo77AU48B%2BG2gwZqzNpqjRDZSA2uohCTVO7sR9fuDZ9eeaF6bH6VFoaLMB1KmkY5XQDaQyTwRy99STFlqWX7W30UH5ggAoitgDHIqxFLwz1MAlkbx4gXBPCqRnpaIIdDZLRFKTbIE5PaAXHcDSneBhgBSzBEFGM5nTlQKHN68eoBwCxv3qolMfmCTZSiB6aRlsGc19knVu%2FF9Zc80F8WRrfw6mMl07VFGJURifbfwh6McViOUlfsRWA0j5GzZtQGooCIEdimXsoynxn57J0wf1Ml1NxpeVc%2B5f3gt3G9VndMBRunptkGDYy0xlgidWek%2BmFV%2FurC7kiOPa3WRQx9dKXXv8KXu7lPKcYOxeACuykEejDGft1FV0noKp6i8pkA8PY0p5DWDCdsKDIFH4QfWeyeiyNY0Cs0iBam%2B39uh5Uy7Npvr0r3Tl7ffr6yja4zViaQ5rUaYEtsKUxwCBLPwQ4jlN59ZwRG06ikINEnEfpnofbiOoCQ3IBJdFHuSqklujxAmiAxpfp8xFwkD%2FPNqws3Vv1CBuuOKDIANwA2O%2FR9IovvtlAvTd8gjMwWRmeB3ZzDue7ShbSstFANqFPPnuQU3Cf4ESAzjfhSkKdKhdvT108BtpHMeQFAvsxjEt5ScuRZ4Gy48pM55EGxue7ABEUhHLpvfWR9pozpJU5%2Bc5pIe9N0doJKtyoo16CEHKjepTS1x9rpbcu1NPUGGLTclKNMsugxscnX0e0jy4vBwYkTa4eN%2BuPswIIc3bhgx%2F8oGWYKpcqL6%2FVtGSqwtI4NOLiCXZ9P8xeyGO4XzBNsYnJ0bHSLPoPMopGiWEoxHHqwumE%2B%2Be%2FL928%2FIL0IGuZ5gZRjOECdIC0lY4%2FTuXlQo%2FhG7zK%2FQi5gpUgmsy4CTFOwLkWVT6pRpVGbtu7AcgY9zZCDftKjaujMFbK0OBMIUDoGmHkOBLPPsl%2BMtKIcuG%2BQVi5T99eJkez0SSu9eQzNzxgLQ%2F7lnkBIBujyKjMhsp4Ab42OB1G0WZsEo%2B%2F7klk%2FW2bSI80nLKoXHEZPj%2B7U3ER1xNWVtj0hCRs5i4UO2igWcJOEDYfQSFYIm05i9zIegksosY3ykj2WXHOqdoRFNZa5uyMPgsiFx7cv9hO%2B4%2B10ga8J%2FLK4UJR3ZYNGl5OaaY%2B85kP%2BvtoAVKL9%2BTjrAB6zWte46xs83Of%2B9yVTDVcUavF8B36BGnTHENA7MRpyyCm8jSNvgOFeKMJD6EQ8nwQXWemfkW6eenl6bbVLWl2qJxm8eHVlWIrDTHBVVvwERroBHGl%2BChX7mhwehpAbdCARwDPAuHAHf2T7d%2BCXkyZADbJKSGXeKecF4z2YDlTjOH6RI1U5RYkQh00MjqSkQM5SuKWEPxRJuY%2F0SB54EAcR15W0egq5jqPqRs5Cx5NGAmQlmEog2lzb0PGftQAWk01wEnd3YWtcvWFafSevUy8Ah4VAyJYFgHRB5xAir4ilwWIFk8QOHWjb5ScKXQc68C%2FEIfUsW1EC2CdOGw3eZv0Vg%2BxKupmpv3Igdn0%2FCuYASCMSOGXj7xcYdszS3%2FHTTfdJNMPypjW%2BuOsAOq7rF500c7vGRubLC4tzZMAApkCaduoHH8w7Rg%2FgNiyEWjoEC0qgPzcH7oFY5z0teU3py%2FVrkQRxgoEW1mC8KOkshlL6RgKYh1F5jFE3RzEmSA%2BfSDit6iVBrQTtNh%2Biu6oaih6blQQQiAuIYINKntf4GaR5zHSiV5OPvZMFWqljJOTDjJs3CxG6H%2BRR7YCS2zGhXyEu2g8pJUVCRkxXEkjWjSaC9EV1KeZ9bnWj9liGT8C9hRYCkJx8kHGbNyDRVzDIZGVn9AQg0wauXJrat03wxB7wkQ4zI9WpURmI7cJ0whlLKFDtQQRZRc0dhzDCCg7nKNM6%2Bjaf1IP%2FNgp5LiQPF5Yuhg6mA2AuQAxdu%2BRWnojKzwGBSEV52iNj42Xt2%2B%2F6HuIdXsfC9yfdpwNQAV2%2F4zqDA1WX6LHnuAMgFKRDggtHd%2BH3cTRD81pSL67T2EZf5RHG89LN6%2B8MN3d2ZBqWJznERcy6O2MzMa4KyOfjhFlDxGLgIMFG6RiHlkUOOk3Sxd8hHQ168vgtfHYxyywJQt6cL9Iz2XKh%2Ffanxx3CEJm4TKSLFb0OHsdO5eHCOzi3CboI7UoPI0D8XK3V7cyFidxLJMDgfBg9L2KhwfE6DIxGjYjuQH%2FbKyIZDzDcI1i%2BAVF3onhTpsZcuLKmQpMqhY2bUzDu9ppePcM9i48D0IUZqBbDw2ipmxCVcqhIr1KXIFj5wnjKe1jzoZbpX2aVKUMiBT3fhDIcqow8BqOtCyrNi70k3RoBvUAPWh4A75SWs85bPORoZEXe9%2FDQs7CF%2BuOMwLICvKLMQYbZknyc5tsO8KrEF%2F23FVWSraQ3VVWSWjccnLAEc1c%2B6L0tdUb0t92LkjzGKvqjM7s8SPwFubPGWmhqxD%2FONXfy%2FB4HL2H%2FdoBoI2We71DzAO09gM0nPYX5sGDmygYKxBnGKIYXqqskNYMpLEnbqYRw9fZdIBjPRqengoV1YuctrCZwxBpzUiHVybGH8vAMz1cTpUh6A1Eh0PSZuhUNAGgDkevCEU%2BuFEUmzq5yYXpInDR%2FmEDmXL%2BQ3G9wYIaS5uY5%2BuD1E03yxdvTBuWDqba0ZW0yo%2FAFAFNGB%2FJ33iemSNSB7grHlJaGxiA5HQFh3U0x7AjkW2I%2BT6t4ktOQ86kEq6oC32RDrg8303Hj7fTBQzGaCLrgmcuaki1%2FFyCD998883OfVKmqBGvnjjOCCDM10Vm39u%2F%2Bqu%2FupUtiXfpJilrM3XKmVpz89hOAA5KnXaflc5EuqP%2BkvTF5o70IFqMM%2BBLuFFMoPzxI0gADHYM2z5G%2FMcZveyD4FfCZYYgjcqnPa0FOHC6SLv5%2FpiusL1Ks4sJBkJ1InQempYp16i8SvQMyvFJiLFB8FCu4D404hKFVF9Qf5VD%2BEVNRdGh034Qz0YgTXun%2FIvKEUfwRTXjar%2FVPhKciobOS6PJiBJHL8bttsC2dbEg0decUOnMB%2B%2F1L9LrwD2AtFgF6IxHnsO7tqaNyydSY8FdWvM0S4CaRLUF2SkUywZ3kCDQawwqoll4G8AgHbN3qkRlogY4BJ%2BmkAoKj3Gz%2FkOdCCgXlDonaJcDJ1fSc%2BnmvYOf%2B8CDqli69N%2F86q9uRhc%2BzAy9TN9sTzl8edrxi7%2F4i5aj%2FcpXvuYiyLm54eZHvb4ESVN7ZiYsvC3sGN9AXH1o6QfSbzavTvzUSTqBv88SHELOgvs37FSu002HEMK3rLbTXvSe7TSySmzwBApvJadpvJtZFv0YWZWxVGtmkUVrD2nQyu6nDPmDy3ThXIch6gGpwDtn70nC%2FzHaWuGmCXrqEEinEpVria8egHmOtLISGgqnaVI%2Bl8voY6OfTpxQ26kZ3WPdvyhWUnCN9V6ASiYYOhM%2BPkJMMKw%2ForfSKUg4Tp%2B5o1EQSfh0G8dDyLoBuU7yE5eP4rszq7sRZVKzQbBH3bKxMJzLAIKtaOcYhg15zXnwXuD4LMfloshiQgn9UOOqAw1pkg2LOj47yVSjGHXUuD2zuNs432d8UmDPd8XY5teBAZ7bPUzEx%2FV%2FzsiBekteW5umJi%2FBfaNQW6HlVVNMndFEjZ8zerRwVbqpcVX6cmMY7uIk3jJcCW6AwsqPJkFgphvocav0%2BmkWbe%2Bli0wiby%2Bg0GGZojGtbIfedoBG2OOiViysFojtJjNRAIhDbJtGrEhywXOC0cxe8hqBAzpBaD%2By3uoD8EpABM8wMFeoEGn2G1jRoCEu1H0%2By%2FJdiyZ3CoMiQJAjutZcc4RHsG8o4E4j9niNk5EhQEzuBQCwJA8feW9JuI265SLkN7zkm3NU%2Bnd3deKXe%2FHoe42NAyOjadOli2n%2B4eOsWL2Q5TmYH9ARw8xA2mFNBwS5tirDjFrJW50nc1E7CvUQlNS7Eh1FEwdgIYw8yDhUlSOP4AS2iyF2z%2BISg2I%2FmGfnLXIbv%2FfSpk0bL%2BH%2Bq2DijFg548u%2BAZFdNS4JV1L5OEewRjL505OXpo%2B0RhhtWchVhti4S6LzbGZoKkVWOJ0rc5OO3QCjRkXG0farrqSIBqd0dJ1l2uEImwacQCeQu%2FA2Kp8bgTr0iGXmYJQmKiO2UjqI8loGqOoejpjcYFwhhFNGjE5c1isI3A4l1EuIZM4jcg7%2B4ddl10dn4QkADaBXONFqaF7GfYgXymp9tAE5ArIMEdGQyj6e9TCMiVEIL4AMYzB1HLLlNDPeefGe%2FNQjXc7c4Vd7YjWrHI7POnVNbB5JO5ZOMrSehIuiD6G0m6aDhDo0DaU5ElSMRq9m9AlAEFfqe5oPBKU9PsQsVRokzwZlW%2BSDFMDcFtMJhlOGq1s%2BtMh35jqG0RG0%2BlvSWDo0MLjT7PqY8H79cSYAuWEC8dW%2BRy7SnmIPtIZFuvUcS3H%2FCDntcLcGQFZwApuE52qkYvU5DUUhId4x3CWP1aiG81uAx7mmsI1Sah3dl%2BBKB5jIa2PhkzhyhCCyPJlGjAdeWMc4ec8vAKRpPO1C7ocMtE%2BRJ%2BH0MGRhU4R1GUxMJJJU2GMCLfRfRFSTObJYq863GNkBthJzeP7MAOSPtJ1n0s8IwUnuApswcJ8yQLJEGgvDnmSDCSw2L%2Bhi43IgEMpvICdXIQhJCmsHdNBhrTAIkFYRZeqXfDRc1JbG27xjKC0vH0l7jjP%2B5PdZcSoMm40%2FKiM16phF7CARkStJom%2FCmSiPyoadN1xGcgBor2cDIINOS1z5oU%2FqDHC4F8ADJHAPsmwFp7MC3rzBcUnHA4fBi7z2MGExLe7acSYA9T%2BiIxe25cRgd2QkXU4CoAPzjXTRKMogHEfvvBUqbUEcqraQdsfhKjUCl1xJEUK6XyltMzigMYKbh%2F0UkWGy5xAnFo2wrqYI8PBsSe0l9mJ1oDkspI6CXB2h1dUQXtSO%2BEk3JgolFCDgOzwFIrsVk3qBimjWdZxMpO8bKd7JwRzV6TLagfBdNlmIbtBvH2HvdzoFW45EWAJHfMWj6%2Bzd9SN%2BMpN0uxhFafWogyU0n%2F4R3CjKrQ7EJ%2Fy%2F46ehcnF4l%2FOx8Xdc1knz9RNpZR7nfJZtN4J72lmIx9kgTJgCuBfiHtrBrOtCEM1w0JNUzUuQ4X8Z3BecACS7CyDinLJM1G2hRuNqLDAvIjjvVyqULyB6luVm8qSjn%2FfaazTuAr9H5TO%2B5oVNLVgoPYvBDLkKFqd0IdyQwz8yWISYNQq%2BzOsjLMfdv1DTdSxsRMrhMIJRWa%2BrlG96GvCcRH3Tkkuaa6e1pDL5oNpxGy9pL9KHY9FxIYoNmsPKifRLVMZbjphppkYrNDgr4nn2dLibFXCd0uqUw1TlIsYuaBYnvC6uTt7iUQwLzx6CGkO9bzuDT6ZdBxNEVrwFPbREWyjsYr4PZzNoYvHizMW3sNTfNzaZnQaQ2lEY1ruRQuhniNEsNikPc4POs1156Sxr5%2FgFREqmLYqIpIDaQAObQ4NGXkGM10hKPuZAYZAwwwBIa3lsKWO%2BltncuR0g7xE6mCJdv9I5IgkbhsNpZgW%2B2mtnGEf4SbM4wJnWqpgQG9yfcpwGIL%2Fee%2B%2BCSbJCpzxhesGWo%2BIUVn0amkGn0G2c1V6mJDNz6Dr8VJFcqYCuY%2B8wEQ10urOuzNfSzLGTqblCM0MA147nkQ2haMw4JUz85w%2FxJZdEbyIqOxjdYC2RZu5XpM1Xw8xBMC3RDo4FiGxaLzzn1RRCgghIAwJFGx%2Bj1qRF2GgY5%2B5cRqOnIkDSOJrdJHRYQ%2BkGRGHQw8TgEVw5wG9jAybFKgZCa5y3V4lga2Hzkw0p%2FTmpmzuq2hOK7G2EZZVvcnE%2BIaY8tQ8NjRXSVVc9zo6IJxGpih25KMFJQvFjcqjidBjqDDrU7bSJyVUmoJW6TtS3R0u7jDQb4nkYE4CgVrJoFJdQc85s845g8S1EcrGIO2Wq3nvvveR4%2BnGaCGO8X7jzzjsNKZhHYr%2Fi6FQZEEsovHQI2D%2B%2BKazrbrHqQKOTRHB%2FG2sY%2B%2FxE29PTaPiV%2BaXUdtTBPzcyoOpUnlJKcP%2FaNYK4vBdMARMqyDt%2Fe4KW5R1hQj%2FKXy2NCv4i6S3ytUy%2BJbiTxkDmuXnj4fIhymNvJ90avVjbkw0Flmi%2FDKBY7kJHMOe2Lh1OCJsfaYu3Nl4GoWTDNUOMAZqwL1l4w7muXi40NgmeGBCQOD86oKBcdxAu2sdInNQ5tpMBCUU2x%2Bqy%2B7yju6ip8alDB%2B6wYVM9Xb3zcLpz70ZGS4CZ%2BkkqPS21B2kwrCuyqaPgCGBxVXcdI6CjL%2B1isd7OfKmltBug7iNECGpHxbEbrSAAozNDG6rISVhmv2FczIfVXvrSl5rAKQfJn3rwE5SJXTe6b3%2F72xltFwb7DerVtJWf8EZ%2BRLaRWrMM3Vd5gWIqlwoMWFgKFlwCH9smTmedJXonHIduDecxvqWDcBYwuI7lsihe8xk2GsDTdXjfM6%2FHJ0J4qAuY1BzXJgYeXVIVZSfJn9VeYe7XrG%2BvlPtoyFxW8Y5Cqj9wC%2BD4sVaKpaNW5kDx212AyFVniq5OrMtitSijTH%2FLIkBlmW1qL5wxCmP7uRBtcg%2F0IhspPvYuPJxyRDGwB4Ueww4kLO0lvuNAweNhQ%2Be679x2NF259TGs3nQa0I%2B0iUNziK4r1kWPBVZ%2Fof%2BoHwk%2FKEn9J3CaGyKAfkByHNM2b80c%2Bl4N6eEg8qANv%2BuKBIOjyun5ngcFhYG3vOUtVTCRxMaTj9M4UD%2FAhRdeyLdiJSyxAZ7MHRr4P6cTDJhlbBQYdzYuFstHrirC6CvFWea%2FsJGAkEwQSq2S6CFDsAGskHpMbgxLzAfSCEUa7uYPtMVhKQ1GeM88CkKc0ht1hvdQGV9CJwmDI2lqY9KFSb3Aw1GZGbuIMVZW6EQWwkqrk86wNCLF053LMaE%2Bw5EPxXLlqlvK8JNKvO%2FVgTxM0oYOrstS5gI%2FcVnEl8b52GAFvc9eokVyhHgkNvER9XAqgVfklxPdSa1MXqZpA6r2aHsSCNdeujstLU%2Bmh1YuxoHPehMMcjlIcIQlz3RUaSeCH4YYC4WbSunh4He8sQGPopCwIQkIJxc2IWhVB0CRaECsP72UKvyWrS3At9OPaMr1rx944IEgy8TEYGDdpbhUZS1IGz2HNcJBNAknIaRk13XrZj%2B3zDYrJ1MH18jYOUNEy3aJ5o%2Bz2TvDrERZg6utpUxkQBCHs9b4H%2FnTAJG1WdhgUtWD%2FOyrckOHrfZ3FcEaqFHiyRSRNqFYBi%2BQsHQz9YOBB9DqAABAAElEQVQwTEI0gUKzBb10tHdZTVagdWx3WbSgggvBeZzNd9NZfrGUSkBpy2mnsg7SnPsCAOq6Na%2FfsOJqvSa7dUfvgc8eXjzdoVVew%2FZrjMrYVAouZI3IiDNXX%2Fq5Nc4LrronbWOZ9iDLjOBduUXJRA5jaZ0WclZey7PuL3qlO%2FfotA%2BLo1itYsfC0GhR7Kg8U5vgaipW%2FpQfWXHYA3IJCVpkG5%2FASR8bhugfpwGo94F4DPrWKBCp5k%2F0YHK05lEIuUnYHGjwzlGAcxxWHiMsSOA1ugbFUeuWLoLAXuzJrXVZ%2BytI4DqCxx0yiE0YQ0BkyhL4sbHsuYpR0oslwoTRCu6pLiARBJCn7WtKPRWXNDQbyAuzGDNvR2Aq0C7MEzgugMngQbR5HyMxrrjmajGOzkv%2BsUKDxotNvWNUoTJNIxEGdpU7lIXmzKqAVc73Nn9UjcaVa5Fw7JPYZSNNYgRtovDW1xJDx5FqLV1%2F5V3M%2FS3S3nIOzQ8GVpQFEyEu9eIL3Zfpi6z%2FOHDWAKm9Zxz6SHo7HjUgJH8pA9HEFE%2F9Q3pDJ%2BJSH18%2F8akfhCvRznzMLs%2FCLOhfEqB%2FkISKaySl7ERxLtnQM3hnHz6ZivxorKGjV0LQcLiitCFXAzAQzV67lqahKQKVkpfFbhZsY%2BvPHsm%2B4yDPJ0qey2J6%2FMYq8QRTXMjLdJ0tz%2Bk7unBUFtMbcAXNDE5SoOkHq3cIrDFQTtRyYR%2FgacQaM9epqxMxMmtjMeK94HKH%2BDojNd1oLVso%2BNbDk%2FLEoIDVFkWGNM5jQXW%2B9UtujyZSLn5US8L7aNN03bwBVSC2sWGPRBstc1tvJIQgol4oPxsnDqVXXnZnGmDUV0WHK8Vw3XAMz3mGj5EO9CFdRuVpgdMRao3epgKuyJqE3nIeQeRINEoJIflhCsYzlDvahPJYZIjNSmSLesbjbAAqHNh9QDGJ6pAVKgll4zv6ZM0OWUC0BVZpHGJTpzlGIAFV2DaACoXZHuk7iKuiHMpyPEuM%2FpHvJE7qcR7BE8q1n3ocMAAXVcjFdQSUle%2BoIOUCxDaY3THCRXNF29qGTso6iSinzCMyRi2RtpxIjuEwPdt%2FXPkQi%2FkATqxHp1EUae72IchcNpwTtn7mmeup5EILRe9TcAAygOQ%2B1AQIOjikiZFbv%2BqEd1ZLcegotFABrDYm%2B%2FgUBthI1NYDCP0O57Pxu%2FXhtHXTgfR9O%2B5nVw4BQZtQNzfVsml0d1Eotnhvd6ZlYqpJ04bLeeTEVn2MUhq3FuKKQHxnL0Zwqy3IKpIfAVGrm3sP77UHEOv04zQAMYzv8vNAhU9%2B8pMN9B9scCRC5bVO6u5QVX1fQt5Ps0TtGJMXEpC0vQan4aoxKgxSXAWRhQmC9PMnCQ%2BqEmy%2B4Iy2CrecB6CqSzs6sabUMYMi4vCs0hwV9L4HTMsQnIBA5hlxMlgUVasQVx3J1RtaavXoayKCaS%2BA4YJfd%2FNwFWteHeqSJFeKxu4YAkcAwYFck98KAFk%2FEox8%2BNOrc3QcFOHowb7z1xkpl%2FXMijsKsXHsfL2e7oAhmIycnVGZYQv8SrM719txbLU1Gsj9QpyV0uVb7kqvuuhhfluDyWtJBY01AlhH9xZRNLnzqxwYr%2FQ0Cy1VomuEszPJMfXHYvEzHcNCYVblh8MzGW0v2sI26Hbrf%2FOJv2mKCbFBwFOO0wDk1ze%2F%2Bc1esJ63l53D4iBd43bTmOxh9zwNDigpDJSmFbz2Tgvz5NNv8Y5rpGKFyRrO4K%2F1dBFbujREepJM4ETAnKu3PufaEUz%2BbHpyW09BFVfvOWU7EEbyu%2FmYDNjRmZYeo0pAeYNKvzpP3hHDuSy5DiDhjKXGAir0H3QfnLw6bX6amx2%2FIjPyz9KFq1S3sbkU2EI3jKTQJn6JkNBxRBDqGuDhgcNovIi62aBuohUUgjTFYVxcox6GAWRxTyVtWPLuskfAi7bfkr5%2Fw35Gq0U20CJ%2F4mk41JAoiORI%2FGYA9WHAwTlHHgt8kws5CDEvAaQpQ5E7PCBFpEnQHekm8IOJNXqY8PMpx2kAYjkru8uO2wINlKd5E4la%2Bpcch1xKARdSmQw53%2BMyob4Dpv61T9Bo6CAUf2x0m7WXpMP0Nl594S6qRuw38sv%2F%2BtlGnXjgqxULMFIQichF3WcNRAaVKp5xwG1Il2UFtAWNwGkuii%2BjOTOeAUNPVdcJsAAU3suZBE1fjPmthY606o6o5k2a1lEA9E%2BnbhKbmbP7RHyzUyheDRBcBKAHZxYMAQrSobB9nIRHo9v3mSb%2B0h0MjJI3Q0yuYH4SjyM6byVdd%2FHn03Ujh1KxxqS1Io%2FPzheOMVoURJExNBW6zn%2FN8v0kp51KrixDrcr9aNMxTdcAygKYl8bIZqsu42qICbFhkuuP0wD0%2Fve%2FP%2FGb7oZp8nNTbFqsCDM9qsrN0CBRRtgRw%2FGytcN7UB%2BhABOg0mUzPxNJkBmGuEHkyDlqyIJ%2BgOPvhjLkpTutlUn0Gzh68xORokIBwEjL9Pqnwc2DU4B69r6p38iB5ni2lzlC07Co45X6Bo8BFL0DQlxxdWrG55hcBVShRCvOeMcOhNQbv2Xz6B2SPIrZr6fzAnX0INIuwZn92aYcAM7BXWz1S3nkWqfoRL1QBX4chp0z83cUauY6ct2CJqRAPFV%2F9aegFQr763d%2BMT1%2FAJWioc856VJXuexwAInwEpMCuffiCj1njlO3GOQINqOcmva8cTbYin5M6mZTRLlqd5pgwJ1Ztiax8eTjNAARoNsDkIsUpxVhgXw%2BWOBx3BYKMKgTzH%2FFalQIl3%2BxmGsQEdBYihglQby47wPCRGhop0M8tU7LClR6qCyhOH3mJK%2FgJNGloAZB187Qg%2BBTxo34gicDaE25JrIz6BoaBU6sB%2BNe0dWMHkma2k3oqa67ilWfhJPdZ64jaJ4AkztnOOVRZ%2BfTMH5K4SgjZYgyCw7LzHtsYJ3oFNQIQAX3sR4BdJ%2BjlsTP5TYFj%2FDlYTQliFzAWXS%2FJEHU6xyGD%2FFCPnLBACDb15XZge3Nuz6TruXHiR0x4ikSNiHdOyYYdY4qrsjeiWd7zSr2jWVP0giznm1FWHfJDROErWDduOKjdJSbVg8T%2FaJa3DjOBKDEMo6IvbpSO5Sdvwkb9cddApP7q%2FiBXEqABZQGt2ElGgTLBMmEypOC3ueMgmTe2yM5HW0FgNaKRFhVP9Nci5Yr7JcsAghMXv3TBgvASJ04c179vwIyLNAAVH8Ena60kTgrF0q6ogo7j1zHyVNB5Jp0ASR4MtfJV9%2BpG9XQgxRxsdq1B6JozF65gnMyYRx1Q1H2Jx7il5gtFEW3YRTD1sk%2FChde%2BpQP7uOnFxRl0pUd%2BtuxKy3ggbModhHGvbCWg6qzG%2BsoG2n%2BGOLskvYyzm%2FoQOiqLleCB6YJToQhdFU5EExM8ZCP28OzjWM6gk%2FWOPrPJCZtVfG15AlTW149RGbdHiZ6hXzickYA9cb9hcXlpf2uyID7WfTo5O7GetmFsNlZN8%2B19BBJ4pFvKNLBCXrAWkcYCevvhAWAQmwRITgWH6JiAgci8S8AIopIn7eAxLTNC8JzyQDq9cbIO4eJGP08AZS32m1EJFBkRBLkAQje84JD46MrVgVWrLmCwPpHMjgmL2IRXw4WOpHAwjbUQg%2FiQ6531MFm4gwOw6foIMCUesX2eO48D4HsVHKZ8EuJnke5KYsObnmS2RLxHfFaZI%2FIePKRH5TRRhQ%2BV%2BZjGNIJjo%2BaUGTn%2Bg7b%2BG0Y2Jf%2Bp4u%2FkDZjI7LLuBzKMhGaxQ1wJm5k9q4sJtfAuLvyL7Mm7EX8Nscw%2Bm1f2iB5Cg0GOEsry%2FsJXDibLeiMAHrsscdssuKJE0f2r6wsmKg5ghNcBSrNdOkFEHAPhn%2BJECMwh6u54fOIxND87ym8UVFEViHEFsRUb5Lw5zisdNAJFIR5wPD2yLhyv6ZM%2B97GEy2cvcP4Nk5wZ4gu4VQaFWE6jokrC%2BkCxnADkaAq2XzzquO9ey7q2uHehDG5CtDqAMhTvc2O0y9bvspn%2BccWxzhORQOHv5Bur72yBafu6YwWwRIHzSxO%2F%2BBljMjYDU6RVVQv0td0ff165ItfJiSMP%2BTSwc14%2B9Cj6ecu%2BEoaofHZTQefHM0WJEznmSJD9%2Bw2Ti9nLNh85LdWr2TfpgGmMyQvwSxWaWVluXv48KED3Bd7mOD21OOMAMpb2KXSF77w6UPoQcfL%2FpAJdBHN%2BgLv3IZcJpv42SRztAJmTLbBjaKRLQMHlZbz6LUXjicxv2CU3nfDmLhl9l2k5TXHVc5nI9wT74KQErN%2FRlhA5LP39nKvPZDxo61wEfUfQAJbd518WI6D62TOEzoQAHE5dB6FEdbv6BBhXHSIDwobXBvoQaAkipuLHQkGuJ07DJuZP2rHfdhn4LgxoLBpgk4ULgYYXH1F%2BfT%2BCw4mh6HOkiJ0IcAclRlHPUa5zvlZOW57nTYe%2BOMPtrQbA%2BmS4dvSv9785ejcw8R3%2BZVWYQ2MG%2FAadZI11x%2BAWQBE3uVTDDS4kduSML8oRb1bzROf%2B9ynFWGlHib6Wa1dzwSgLr972nnnO99Z%2FMM%2F%2FNgMPj%2F72BvICNYJIrIcdhvbamzDIKXYsgAWiK9RIUMZkD98oRIEwu9X8MSQFgJKxBzGAL0j4nDfixu5ca%2BOk%2FUcwWtPo0cizvqnCnyckSYR%2Bte1pJyIlLvIfbJ7B6UhYYEEIPimnqSLqN%2BtEryS0zjqEOpMxIUJy43cUq%2FdgRuELLWGMmevvdMyc%2Btvk8VolArx09UkYK6kzkf%2FqReF4ZHw%2FOdPj37e%2B4bn%2BO0Ntzsmmgp1AkRWL3OziBWh%2FWNx1AnDp6g5mZ4zdkv6nyfvSXONSpoiAQ2MTYoqYCYBkYsKXYgZ%2BCT%2BDn5VScOjIzZzr7AUm1HUvo997GMnxIKYINipmfLiTABKLCrs8jNOfMbZsF570F9KhkWTMgSm52ycHE2Xv5BNnpbYvFHC2eP5HOcagHinokxPzCMRv1MGqWHPWV8Wi7UWz2yJy6GCqO6TuZpAIp5cpQ8ar%2BbbJ%2F76dCI9Xgg6Gk0DG83IUDwb1ixzgAQAyGlibTnZ%2Bs61VAEiRRhnGN24xnCf%2BKuuduRwWiRX22vP8u2V%2BEXEtXsI2LLqONGJoqzc8%2BxKDwGW9R%2FKSKxQzAMipk5hSEtf65jltK76DblPIEkE%2Bayjh9ceHaKDyR3RiV49%2Bfn0nrFH01F0tik4byzwRFSUuJ8COTbbinFRjrZN0LbKex4ZAQYHQnF%2BgNRXxIKYiLye9OeMADIMi8osZntu4eQ98RNB8jwBhAgaY0u01147xfZWDbZ0sfDrUqVAKoRuPNBlcjFcMpxwhWBZHBE2ikLp8%2F9MACviGYeVywpd5mx%2B8zOE5pTTxWK%2FXhzfR1y%2F91KIlPxjeF7WaYyYlUYEy3F8Z7EVZ3IaxZvACTHHfR6FwXECXE4rKN4ESQVjIruuElfQ0KycXhETcfUeGzCLtbr6TvXKze7iwYWjeHYggKWlOkQb9zlgX4xF6eOVLsJdl5CTkDuqFvnJpvgxGevsYZ1PoX%2B8jPf8TlZ6%2B4aPp3dUH09H2VJ4YyY8dcdajd1nAsYwi6HsezdWuptG4UrqsxKGLtembPMLs%2FfwgDdIYMGETzvOBqDu%2Fv377bClffv2fHNxcYmRH3yIqRLldRVl64XXYGo%2FwY4OIVDN2FrkBnSIzrgP8MD8NaZZWdEdFTVLC8k7acAp%2FXyTD%2Fti7yRNOYycKBRN40eXz88BLp6DdcOpMjcijPn10yRhbjMQooHhIGRI0xGsDxzFGGun0HdClAkon2H12oxCdPGubyNyr32t1A6JFWEOiyklV8EDcCIf7pepf9AFXQjFuouBMcpGrGgoyqxoj%2Fr3ytzX4%2FI7K0zcQWzKijA5Fz9fyY6mmabkazjrR23i2nvgvaNU6ATZ37HhL9LrC8fSDGX2RxKc4lAnGsOHC0Kkl20rMcNAudGFnA2jnUuLCwud3bsfuZegpR4WzOa042wASvfdd1%2F7%2BuvfWH73u9%2B9p9Go7x0YiEJbzWB1l%2B%2BEA9GydbhL%2FGAbBVKmOoTtMALJ%2B%2BcQWAJGo0Pk4JA8B35sWRsxV7xfumwHEgwQzh7B%2FyCqxA7xlYESSrvgMSJp5Gu%2B9zmzCDNS%2FGJxhfh55YJrp3JuWqQbAqXHeZziWNN%2F0AfkKP0z60F%2Bh0vhJuoQ3xGb4qqLITLWr6Ngy6nkTHIrf%2Bw2tvm1PJTB3TwEQZQXVcBGjnfqSFTAf3aGqCcXSyn5wmWYWfr8gkYe58fn4Ex2GMNEfblZE%2BfQztFqAW8AfZiGsTm%2Fb8Mn02Vst%2BySqFHy0qVL53zF4%2FdsRbHGsUoXGFkdm0vxg771vb%2FwC7%2Bw5%2Frrry%2BLBbM503E2AHVxou6%2B8Y3XG2e2tlq7s4qdANERo19Z3fatw%2BlVbxtOx2bY1xCVQD2jgP9y%2FNKev48qUahEVLFHwFxRCmmtrbCnOcQfbzi491HQ5HmjTHDF1hMn30jzyWeAKBIxAeOTAWf4BnHV1bMOwczeo97jOKtkWLczeFKP4D6UQt9iRZq%2B1e645ooPAVZnp1dFnOJLfyK5kPqK1o4AlDUg7S4yM6YyehWNXy1EmY6GJpb1jBUqgImQUWY5rcFDmTUAZSACw3is085ZSUtGSN0JDJp%2B5jHqbRye42%2FM9PuEPYm47e5o2lZ5OP3a5FfY4IJ5MiI4bzYnfcYr3Us208lYZq1RAwnTEUArq0uurJh94xvfmMRCTpi%2FTzrOBiCDdZeWRkRee%2FrY9M1NZTjswYoyR8YP6QykH7iOObNHVtME4OoInnnmgBRbEsTC8d%2B6R6XjIb%2BL5yBOBDGvtcOSRm81jR5IAohwH%2B1KYcWN3kXC9ua4J1bkx7N5mkj%2FanI2NISzN7s6SF3Id8FNaPQYrsez79R%2FuNJwyvA8enNExjCebxJkFVbvnHd2Pqfuch24ka6j6kJyowgLp8q%2FSGg54Th6HGDOcNWKhsV8UpKgGd9UfuM0Z0vYOwSVjliD2U8oaOqiRDYMDzob0MpFXK82K2UM%2BtkGLIBobkjPL38p%2FdbQfek2RpI76BSzKIA%2Ft6WTNo1Q59B9CAsfaMIpj08f%2BzKJ8FP1gQEpesbjnAC6%2F%2F4vWZPy5z%2F%2FmTsW5xfnsQ2g8VgsOV87veR5TroyUnDlBL%2FhZSVsU%2BtC%2FTkJaeX9F7F4Ga3LNw97F%2FFzheMN74xvIsT1nmvk6HPvDLuJ70nfsKeEiWQIG2ycRjMM%2BSiCnEwUHMukS0lDlNWpkRxGnyFHaP3t4lwPtgq7d9mMS2McpcVIjTC6fzC%2FAAAUY3ADr8GF5EByJkdKDJj1K6rlukRZNT42WPKomOofoiEU7CwlMvj5jmqQaRZkkChZ9%2FHnPQPa5DrGBAWrKfL0w3op06erBIS7UPYunv6d7lT6wdG%2FTr9R4decsVMjX9Mrd%2Fj7aSjNgB4yOfoqzS8szP%2FtF%2FjNcNr%2B%2FvtDF15X4H7B8%2FVcAEr8vGX7l37p%2FcUPfOADjy%2FVlm4bdBhpt%2BHPKvJ9%2B46x9OofGU4Hv36S0ZitAlgEjVSgwtpnAgy%2Bg%2FD%2B81DceWQo%2Bs0zH9G7DO8rr4JJ3Sfufc5nX96bVZ%2FtRx48h4sHhCtofgYI0t6NC5yZlwPp6qnlWKOioMn2H7lM5jx5ROY3OVAe0kcYuYxACpDAgYirIh6Ks%2BKLc437mC9hO33zd64eBaFPahOiHNYl6sttTPPYQTjinXXmNHUSJiwfAHlBi3TEhbauiBnXO0Aa9JvSMhHEaL0yCCJQFLDTDfY9E59JN7Tw0hgZ6l6%2BDY7a88UiXts2xgJ9m21u23%2F2sx9Yj8wo3%2Fo%2F%2FVzXv%2BvfRzGrVafcUv3Y0SOfdWjHEa3vkudRhpc3vkouVE8TzKOEj5DA6RHCBKxN7n3ekp2VOeXwuf%2BOyvcBYxqCJZTKfB8913em6ffedY0DGTfiQOjQ1npJmyfBNYJjH45lzx1HWDSww%2FT%2ByEvuoxuELh8u0vSaV6Z6VQxm8eaPu2QQWTydwLKynQ2PWRfyXsNck59h6rCejJrlhraMYVSkIFbBi38Ei4OGOHoKdk8ZjleUJerktEaFDXQIaicq%2BmM1%2FNaZ%2BmHQsUfjzHV6zUv9%2B7pZHX1oc%2FF4%2Bt%2BG%2Fy79mwu7aRO%2FWeIPzmWE0udRHU4cn%2F4ML%2Bq9tjdhS3jG41wAMkL3vvtcIpEqH%2F2TP7ppfn5utlwW9uAZAmnbefELd%2FDI8uaweWSOIwcIVsyXOKj82rV%2F33u1hp14ppyybggTIAxAUH4IGVvcx5V7KpnfEV7AcIaCTRo%2BZhD1uJ%2FPvUMAMW8YzlQtGjeLrAwWvfRiBEa9tBPJaXymNFwhMnpLHqG5hIh3bsIQXMdRl6JLXch36CoMlxXLsQ8RYqylyT7AYFn55KSyQ1JiBXgsNAAKF1jvo3NY%2Fl49AUe%2Fw8S0MGvIQvwLKsqKjw22IWkGeOkQlsUjuGOULYtZvzmh2%2BB3R64ZuDv97MUn7BSRBM52eNEivuZPzn7s4398M9ErGBJtewp09uN8AEKMfaD9K7%2FyK4WPf%2Fzjj2Mb%2BDwbLloZURnI3b5tPL33f9meTu6rpy2gOSpvnhAhQNDPPoATNe4xIV%2F0sgdtPoVYEgxKScCT15XB9SQ2z1l6ci%2BXWwMXGQRq7H89MSnBe2UwhxAJNLp8AEdvfGAcb8hh3E%2Box2koQDYiKqb6upBAAtOIDr%2BRMw0ll3IFh%2BJcbpMbzfVi7jGtLqECLZBCpHHfwG9Z4EQ5varzOBqjnFqigztZSDi8DnmBH%2BvIfXZAC3LHexMqMMnaHWINmQCDNm6b5y88qhuSqISgdpaLlKPeEsGX1oE6tVZTffTybnVyoxozb2QGnc7Q0HDil5w%2F%2F9GPfvRx2xwxZpXPeZwPQDZ%2FZ2FhQR2088juh%2F98ZYXfMeewR1hg1erXfd%2B1fMZUHryJW2N59OrTf7YOcXhDDzdO%2F1W8V%2B5bbYgXXMZngRIUJaSf4wQeASAyWOuxkUIGrbf9vAVkENor3CVEG9wEwjpkz1zoCcDEMJ7oXt0NNcQZvTu4EmnGwjzcW5tdRkR81xaUf45A5dklQ1mXUqmOXfDhRs06DSxXjiKSCKMuNiGk%2BtxbUOpnnXO97fRWMpo%2F1486hJ5nWL8B6ISjWaQnrQyL35CML75Tt8wdKYNko%2Fx6UgSY4LwtRmXL217IJqj8ihjxbUfWhhVX%2BC2UPY888ucm0m%2FzSNxkz3KcD0BG67JLZ%2BNtb3tH5Z3v%2FOnbFhZO3o2iRT8s4K8EgVHALr9iS7rxJy9Khx6up0n34KVAfZbrvRXMLJdYxAkLLsG45T7fGF5dKYsue0R%2Bll4h79WFeBenafKfQPn0Pe%2BiB0YY3isSAJnKcoCwJ1b7wIsRFT1S0WWTmbwanhZq%2B6TKtkPb4Eqk7WoOORMlBHxyJDgQvdwzD%2B%2BzuMtD%2ByzW1JnkSA0Si9UcVDVIQRk7TjBbD49%2BfShrnjcUTAb2tC6ULDqBdYIuinB6a5ef2Iq4vCui%2FBb9vVnTtlyRdu%2B%2BJ1IFfNGZgaHt3dXNV%2BJ4Rj75X3t4cKjI4Ovun37nT932jne8o2KbWzLOcx5PBUCJ5RztK6%2B8QPouHD5y6L9ZOBocQQZROYf5zYkff%2BsVfMY%2BJF3JtkeruAnHfCAnTZ5cong2POl4BpCCoLzsX3vf%2BiIuA0nwZBYe4Qjj1X8a58KRiyCRYVxNG4JFOC3QDt%2F7hkP1HpXnfM2z8%2Bo%2BtB2n1moBF0pxKN9wJwCkmNBDUN0ilNaotcY%2BhvnqQnxTP%2BywgqLuTpaEDABYKPSgjlxIgMQpSBRh5CjoPaw%2FyI5Fkz3u3H8fABt1XkyiWg7AAYDcJMHYil6nWMIpjrII8hZlbzOlsnzh9zAzPwhWsVRLs2jKTjp88PB%2FI%2BrCBRdc0LLNI6%2Fz%2FHkqAKIWqXv77bfXL7zw6sqNN77l0zOzxx9nakOGqSrBnkGNdM1zLkhv%2FfGL08EHa4mfXQhCmXds3SLLdQhqhTijc%2FnNf1Q0ANEXVxLP%2B%2F5pg3MGsHr3Eji4f3%2BkZSE45V5ggpM%2FwZ28kmeEk6I89ojtRhsaFHXtjElWwsmFgvOQmkN%2BTKPBkTRCZm6iFsYpBwIUvo9ZeKcyMBmE%2FkNvj6G8ulBwIHUvuBCrJrLyT8bUIyz1roWznAAnWh1W6yx9%2BE9Rhv4R4gsOlJVq68QXyl1gGXShip%2BQ9bVumFKKiDI7VvZ8VIz2ACWngft0Bjd357deRdmwCwUR2Wyftjw5d2LfjW9%2F46evvvrqysc%2FfrvIjlz6ZTjb9akAyLhObbTe%2BtYfppjp6NHpo%2F%2B1ip8uZfI5esgwv9%2F%2BUz%2F6XJ74leBYHsJnwCJwoHMcXvv3uXz2ED4BiCdElsTgtCf2QBQjrACEVOIMIJF%2BxBU4vfSNSrwOjlWCMw7C6gWYG4l7u6adnMbqGw9V8FzqnI2IeSjfNy6GOCOK30OEca91usZmC2HnoWdTAr5pF5LL%2BCxZ5UzM4KsjOeJrMPVg3ry18T34VRMSyzNza3iXpLjA5tUqhl1f516dIrbfuBnB3TUmtawjwsvJVlQu4ylws%2Bil3hg8%2FZnv1Qtf2m2X9d2w1JF%2Bh58ypVGP%2FFdiHb3hhh%2Fu7Nt3E4lF6lzOfTxlAJFM5557bnY6qfLmN%2F%2Fgx2dOHD84MMBGI7SuQGmw0PD5V29L737vlengQytp2xgE7HEcyXbKIbDipJS9Edba9x54sheinAYCBpgElC3%2FxCmwMpggBrdBtHjnPVkEeAzPQ3yHkHGfh%2BTqODHBymc5j5WTIzlSUQHwm1wpikTYGMH0rqvBaRy65%2BG7ozB%2Bry24jgprfp%2B%2FqZPoxdjEWzAgJJcVRHotqAv5kl7QL1vUHXOGgJCbWK%2B4qgtREWkSjvp8L2CZTkPjEbffkcojgpv0c8IBniJuxM2JS7pz267GcbGn3qAiyX1OzBw%2F%2BEM%2F9IY%2FTWl7pdfGQS0SOO%2FxVAFkQt1bb721%2Bb73vc%2FEjxw4dOBDFXeVCAdbCaV4aqcf%2BeEX8BmdAaNL%2FFY6PVcgnXYILogYw3Fbl%2FsY0srOJRD1VwXMgPE7xJKg%2FTOIaiAIH%2BG5D8D4nMEjgGLJUXAyXnINH2U4lDY7FegYaQECR2NOJ0raUJ4JLh%2BXK2kUDE4UXAhRxfNKDNPzUN0l0YqpmFQFLOoezq%2F1R2GOiFzRsVpHvJASBLFyudwCyDrxIpzmeS9YukxuBmh49Jv1D1pYF%2BuVCcQXYO3SH9yOo%2BK8L6FdFBnMCPysh7EJQ6fZnb%2F45d16iR0Uzd4moe0qAPDI4SO%2Fz9OR973vX3Zs45whf5%2FC8bQARHodPNNqr3%2F969GF3vTfp48dfWRoaNAlV9IUAq2mS3ZMpH%2F3H5%2BfZvg9zh38LidVlavTogDGewN6BAH5E4Dw2pfxEohTAqlASoXemWV9fl6753GNuMTx%2FRPf%2BCilSC7nl6%2BmbV927ULso0hvVYkWJCrQUjAmUbnvgyc28I6kiEt9VrADxY6uKtHkAbwpZu9EHwrdo8edYkhNmrVVDIA2vlThKvALGBljN5IooPW2%2FnAdZ8edZO0flDkGAFqNrSNlkctEp2KWvjvh%2BjGJwcHHCr%2BMTY%2FkFvtUcyXVtjyvu7hhB7%2FD48%2BnSxemLYaGyseOTz%2F8lhvf8HHb1LYldo9akdJ5%2FzwdAJlY9%2BDBg83LLrvMms3s3vPwb7J%2BHkxIDD9D8Ppy%2BsHXPCe96s3b0v4H%2FQVDasp7%2F8cZwXwgAkCJeBJV0ASH4JOACXGVgwWglCUEjiG9kSQ%2B4YOo8Zy%2F9wHZTzfSCmrznTxCoUYXCe7Dqye4TuY8ciCnMxRn7jutMt0Hk5UO1xC%2B13HmdVFigAYghk8QXMd1ZRoRdcBX5JEj8eFK6EH15jicWWuw5gXLw4lo6eg%2FHbSQQ3JabWkRc2YCijfx0ivQl1a8CB2Gv07xFLBOd4acJzMM7%2FAXKsOFup1Vflh4vDt7ycuIR2DiOdCIwQzleOTRh36LxGZsU9s2EubPUz2eNoBIuPN7v%2Fd7tXe9612Vn%2FzJH%2F%2FUkSOHvjg6OsoCjQKdFWLRQQZwEPql93wP3ZQ9LeTsHEImDjmQuUoQ6dA%2FrJTPEgeCPXHff%2BZddD7AGuFMQuDyIEDincQzHRsBjsa3J4uxbAeCG5CV4HFpL463Ibqc%2F%2FK3NRRdUlIOpWhzz2uBlbmRNiC%2Foe%2BwN6SGQ8WXQ3mNh%2Bo7PoeBkXvFt8%2B2nWvKGo2e7QbuFFxImDmctzNYdk5BEFxKBVsnNA%2Ffc4T%2Bo4U6ekh%2BF98Abfw%2BPXkFDQFaZbjM0it%2B4HjHK7u16hQF08oVHLM1MjpSOnrs8Bf%2B1b%2F68U%2FZlrYpqUnFXk69tM9zeboAMjkzaNUOxT4mrb%2F65Cf%2B3ezJGTYKZcdl2kx0rLJz67WXTqZ%2F%2B1vPT9N3raad%2BNvGyAQdwg0OMjh65YxeyD0EjIr3FOVQrgWHgOKagUK46I1cJWB8A1Wy%2FKh7rxGilMYTbMS1cQgi9zFJg7IUD%2FHFjDzvVZxVmOuk7fA%2BfuQFUKpYZy6C2CKMc2nKakFSYy7M4XrMgpOuxYqqRPJ2F0FjGEisVwDhTa%2B2yi%2FikFbW9%2BwUhGWZeMyDWW5iCZLwyJQmAMi6h1i2mjGK5L10Ir04SCLiuIJ1zJWzaI8CtL2QGhe%2FpDOz7QpGAGzSTmDScteN8tzJ2fqnPvHX%2F55XLea8BI9SvZ8it0%2Ft6PGHpxZ4faj7dt%2FX%2Ffmf%2F%2FnBD3zgt4%2B%2B%2BU0%2FVLjwootehRukzQRMJFgrXbFrQzrRXEi3fo5R2c5qWoKQsQOFHGN9WamwLRncgSbLh1fr0z%2BN48GzXKx%2F2AUQD3Hipxl58ze4EuHcvi2bE3jXj0YJJ%2BCS4esjqEyP%2F%2F9%2Fe2cCHVd13vE7i2a0jDRarV0yDg4Y2YbYxYANJsQUSMxioLQYEnpM2pM2h5S0yelpStP6hFNK49AQCC0JzYIptgNZCBASjH2cctqkicE2XiAE4xVZtmXt60iamf7%2B350nC6cLxcIYypXevPvuu%2Bv3%2Fd93v7trsFTMFVE0Z0gUVce6eEZMdB0GKxtosPMVnBE5bB%2BEmupq0nvRqi88yAd37DYuJpoQXm%2BShYcpBaDIlcOkjvJpy6dyklPFxq%2F%2B2BbO28mbn9JnLy1t%2BVKeveFOk3xM55hJ18lLZPfVL6GGY9mFvhzSA4jp4kRReOeunSs%2BdesnHoOHoW9961tsbGmEDyLKxfe%2F31SqN2OU0Nj9998%2FcM2l1%2BRduWTx19sOtm5MJIq0HzYD3WrysicffWd%2FtGyWc2cWuIP9nMxMf4U6w6wlZJKGQhGTDZpac5UHdfoFn7LqdrXmhCVJmfGLcPjx4p53IqAu3HwVlYsXMa4dVm3jbn3F0qMsDuYGob%2BoepK0kR7jm%2FQ84%2BY7F9XByGArQSSVrHVGZv0mlayJAxja8oVXll0p0n78CcDIzdylB6lK8%2FQgx8y9KUCoCIr44N%2BksYBBp6ItA9LHhbtJHMszKetUH%2FOsGCT%2FSEGAMJ4rHmgj%2BkFTzVyMFpdQ7tFsa93V2aFwguNYqQY9eMYSieIoasfGq6669AHxDh5q%2F6k3JX0IR17enAloNJIpyEj8Df7gB9%2B9TVUZXzxVmWQvDKDFUFcRd6tuo4PxJQ6L0xlYKqiR2CdseoBAQggtzxVhvN5CEjDcY0MECy5FDUGIZ7y1JcDZexEzByLiMhrrWRb5UZWn5LFLv9HAqgAiXShFeF06%2BXkQquj8D80Fkz%2Bxj%2B0zzZ8BiucBOua0dzQigQgFHtm9pLDmPHarwpBMqr51qXmvuUSDY6xowcXKrHwp74wpaoNRGX0Y9nHgxwohPYisB2mZH4FGrTSVSVkwR%2BWDedBMGTrceHm2M6%2BeUW%2BGK0gXo%2Bka0Z7eI6nHf%2FjobTwP5nhHJD52efq%2FGpX4uMyvfvWrDEpY%2Fn333du28MKLepobmy5mghLVsCp%2BVeFjrnFKoTvtrHz36L2HXeOpUcem7J4w3Kz1RfVlRYRentEinPxwHbWYH09YnI1vqhCwiEBUAVphoCrSqiwFHXfHn97DRO9GHzGdbZI6Wt5iLRLSEbZk15afQzBWAquQcAZU3hXxTrLDqh7CzgofZk2eP9PLK6fkVlm3assz0%2BzEbe6WBhthcvxOInqYsio%2Fkiq6Uakp%2F%2BpJNrAQxtx5q4zQX6PDbMYljyLEn%2FLiy4adfIeyA643ckZmX2w2hWPEj%2Fe5%2FGcKCmPhF1%2Fadtuf%2FtmtP4FnoVWrVh2X9CF7Vt3rflxm06ZNaUZwE8uXf%2F6Fq65a0lhbWzcrldKsKcVPOQDR9KYyV%2F6%2BqHvi64fd1Ol5LLlFFIvY%2BoJ0eQr7L08UDUxgFzVl7I6j3CGOBwR3rVPRtFqoOj6SbXjx76S8%2B0BiGJEk2CQB5kk6MZPBxuwEKBlFOwzTJHl0MIkJCZijNXBx%2FCgq9Rm1hLpcCccg2BxpY5RC8xIA%2BcFVMVTpKtNEanYBhJ1S462WjsSQPgpfLOJGhwmMz41CQh8Bzd55V%2FMvyUpmtOBQVWgom%2BLwlebMrvBZqjNxENgtttFkSXF0965fP3LVksUr4FUUvYc5rVZ1EcmbN8ctgUjaypKfn5%2BpqKjI%2F9KX%2Fv7n11573cKysrJaFuTTBcIxt5QiTROy5dRyF68acU8%2F2OGmcU55JxuWmwRS%2FnMg8s1TohRh5e4pJdtRM05ZmCNui0c6xsCkjP%2BizZ13fiYARJY%2FjLyancV56dwSAQFO0kcfupgpNWwY1Eh66ChsvVMZCuiYE4AUh6a6zoz2sWXuILqQZ7rPqqorQCfF2nyqCErbPysbOhWoNH4YRVy9TQKZQgoA3NheP6Qt9s2NZzPKFLnwexR4f0K1iGP%2BaMJzvkcqXJ3dHT6b7gLbFgzwSHqy8UsikYeOuu1DF59%2Fy%2BzZ54z29HT0tba2qrfCiubTeHO%2FkwEgS5kMZefPnx%2BmShsbTqV%2BMWvW7KvIOIe1cOoon7%2FKqYWHs2dMcZHSlHvm4W53CtVZl3a915eEB5FZEsHbRRx9HJ5IAZEtMXnUJSNuSvoAHm1AflTS4EFu9g7mWABLwcJmkUBgwaJXNLKbOgGHRfhR0GQj%2B0g1nws21wJATGFXTWm75J8Z6uU4JgGIdMhIMLXVSkK2PRjxzHvpPyqK8qthjURkkHMqjlBU8oyzvwR4mM5uraKBGYuHGC0s7uTN6CIFCmM6D6dGpvJqszvD5wH8HHiIEVoyST4fvaer875%2FvOf3t217oW3%2B%2FHnD69at0%2B6%2Fxw0epT9pAFJZAE966dKlsdWrH%2B6c%2Fv7TtzU2NFwby4tH6HXVgKsJmwiK9JwzGpwrH3TrVrW5qafEqc58I8CqFgONJzosVbT2LwJ7MuvGk%2F4FHnET4KgZb%2BCRR703D9ztvR7lWX65yQ0AyZ%2F4IPCIP4ZdPMiuD16WqADEe%2BVQe%2BsUIW2EyQ78zYZx9eFeqjOqJZBhirIh2kspAUlVmbivOI3cSpt50nnRYVcS28u8JfrI8GMAt3xg8zMdLH0DjoX1%2BQrrRCT8KeO26RRtmFSkOrsrbx56Gwc5EcDiAj3ssBEZGh7MbFi%2FdtmXv7JiM7zRUJQON%2FIEt3iP72cyAWQ52b59e%2Frmm28uWLHizj3z5p27l0NbPgL1VGRjlSagRRC3c2ZWu%2FzKtHt69QHXdErM9TF31H908ioDyY2zuWdxAGtAaDHMNg4XWGCKfbkw20sgiwDP%2Fp0BRXZdxKObBxDMFUb1PG6UDxxwl7NmXdqUCJ7iMKeYaRuCyxGY3sLx5s0cCKed7QWe8fwrPMb3KAm4MrqL3ORRZcFPRXy%2FuVtY3L2yy0t0HUlOtUaPmtx7VXECIXGFM4NMS23M7s4%2Fn4UC%2BXxGQr3KR5cpih13t2nzxk%2Fd%2BulP%2FgSehB966CEdb3tcrS5LYMLPZAMoO9fNdU9tfmps2bJliS98YfmOBQsWdNbXNS7S1FIITKOA0mFRI3fuzBo3pSniHl%2F5mquppxkMkUeoOvQVidFmjBf8SFSY2JbdHP1dfLGqiqJINIhBhhL5hwkmnfCv%2Bgh3vTUhIAkkpVvOPhgWbyx2KUTkM4MfedGj%2BreKiFOyRufDNoeH3elhjrOy5rvCislemhgGyaeUaL%2FBnmL1Cdk71tGX5qMHcUx6hi4BC61ySfTJG%2FqOQsiv7sqELWsi81laZOHMgBssODXzSnw%2BmhTnEEIz%2F52iooOdGDtgbNn6%2FG3Llt24Gl7koTR3OzcX8LRNStWlLMlMNoBcG39kNLtly1NjaPtFy5f%2F9aYLzr9wsK6u%2FkLrHhJNciDSwGDLjCr3%2Fg8UuO89cJjNiNOumpUd%2FUwRDIhmudSPKCnK2mcuauriWcQWgLTZAHcRWsYqEQFETAkuXEnaHrPFzL0VGMw%2FfhS%2F7MQrPyaZlAv72gUEASlDq4sdX7nUd1QDOM9y3VR96Dj41YCqcq5oBCQZPxJPPOPusiMGAFBxrNcVRTvQvZh%2BQSDLCj8GQZ0t7yNSJLnQ8oO8ig65vviczK9j54Q4hdHg56WdVxU4bVvguf2jH%2F3df9b85gcffFDgQWl%2BflLBo3L4Uso2eYZP3zKaWrlyZfdN190UXXrjtV%2Fbun3L7Xl8FfBGaUonghT0%2FI6k3G%2FPb3QPf3cuNI64Q5tTrikhZkA9XSJicJ%2BQR2OJUTjniJ%2FxFp2C6Z2Fs4ecXVKQS35zEmZClONWHxZIIDVVjTB2TlQcVoLm0Ee8OtZc00C6GN8aNtCopaaWl2STB4uRNtexKDcNhwQ6kvUl8653pJJueyBBXKYrmX9AqIlmSkyxkX1dBkhWU4THhrKd%2BR%2FMvJw%2Flw3O1NYzX%2FzyQP0tybN126bbb7zxuq%2BpuS4e8DIAD7yZXDPpEiiXPYrsWf%2FCiy%2Bkb7jhhkL6iDaec855XTXV1R%2BisxreMLkUMIl4Y3QZNVQn3JILp7rOdJd7bm2Xq6tnvg3EVW%2BSBAIU5EcWb%2BRm40%2BSOjyoL8RLC70X1fEgd5hq428mSXKBdbMqTGFz3hW9GUWMRQOw3G33ebmTviSDzljnSAnS9h1%2FF7B1iqaTaUmPYVZeFSkSSPfg8gn5Z4sOwJE79KADpCO%2F3uiuFmeWbomw1kmZ5CPldJ8bi1Vm91Rflj2QN52tCTT5gdglhenzzGNRoD5KJM9fIXm%2BAc2jrO9SX4%2F6CoTGSQcPcU5%2BFaZIJxjRI6P9ZQSi229fvunMs%2BbsqZ5SfSmL2CLsAqEZEqbsaXlQMhFxC%2BbVu1o6HH9EC22EfVcaaqN8qZ68otVRYMCkADzcVYX5%2Bkh08u9EUKHAahMf2LImxtnyEfUd%2FRdGwBGAzCgN%2BceoV1f7LerUQ%2FGkHeZ%2BmNMnCmG4vgYF8%2BDRd6kwqnAkXQDLuJ6Es8iOf53DWhY%2FZP1Bqup8EIFTDQRCqvdZfQuZbjeY%2FEBmz5TFoc5IJfuFAW6loDSZ8K1JfUOcePzcpl%2Fc%2BvGPf2z1DTd8PLpqlUmeNz3Krly%2BEaOSvtUmANEYBSu6887lO6ZNPeX5mtraD5UmS4tGtJeI1FmIMcZgILLJtZxe5RZeXOV2dfS5Xz%2Fb76rq2G2d3bQGNLvL8zKHIxgJsU33UW%2Fs6%2FDAg6SO0EDc8ieGyngAoUSrRWNO%2Bgku3soqxlkwWjtYJF0sbeIUprSMsJV66XL6c0pp2GgvRQOMSRPsgMuexWRiMGApDZMoyoFmQUYYYO5lWEP9QVoP5cNo9F1SKRIecOmCgmx75aXZ3cUoyyCYPhHFYnFDs1EGR%2FN6ejo716778R989rOf%2BokHzze68BBIHnn3QRRsks2JAJCyTAFakERPj15%2F%2FbKCr9yzYm9fX9f6GTNa5lZVVtFjTbcdHIIg1kIb0yDslLhbdF6tq5%2BW53685ogbODTmGprUWmFAUroNjFETe3zZkKowAUVMMHJx17OAw903ffXefDCwxagWzWXjs3e2cLKam9KQX5NAsgkCiktu%2FpSbHqTGxXQk1rDRtzag8gE9WNR3pBC651K093LTJZRm6BLQRk9l8X3oUFTZufIwko4wHc4OVZ6Z3TPlcncgUouWztQ1DUTrgwHe5CVTnGRk%2FeBr2%2B%2F96pdvvu%2B%2Bu7dA29Dq1d8EPC3oPO1BX48viLLxFpgTCKD2rE572bBhLSC6PvbII4%2F0PPjgN350yaWXTcG0oBNJL1LFblXaKNJGsxlbZlS6j1xRw%2BDnsPu3H3W5FBN1GuqYOAUVU7R%2BvPSBoxN1IAOO2MZ7ERypYf7kboZn6UDq8bVmGO7CZA404pBVYXIDQMYBlG%2FJDfsnngIAr6OTFkZQ%2BhnY0FEIaqmpx9kASBQGCJM%2B5MEi8e99NMQG6DSVpITTdqy7gSZ8ZBSpU9KcPTR1cXZfxZmhoXSelgPyPgdg6s4I%2Bk4%2Bmxru2vXy9y657KJbX3xxexs0HVuz5l96oPFIe%2FuOt0zn8fQ7%2BnuiAKQUs%2B3t7SJjhs7GsUWLFoWLi4uzd9991zO%2F9YG57SWlpQuSydIYRyuo8BJG8BM9gZH6ynKONZpT5%2BYtrOQIxx639Zl%2BpoaGXT17%2B0UBx5A4Zj3RSkWh%2FUUUWAEX%2F2Kmr4eMk6xkoMqwwUme%2BTcGAwr9mfEzUgAmgXHz4JI%2BBaAAHSe9cx67c3MiGXc6tYUOdVFYrwthV564DFTkQi0vr7koPeLQe4wGYqvyWjkDvtONFdSwcuKC7P6680Jd0XLpOhRBmVMehKBQuiiRiPb196ZQlv%2Fm966%2F5h9mz543MnPm6UMcEKgeZsDTrqZ6ToHD9habEwkgFUXc0ZXZvXv3GAOumYsuuij%2Bd3f%2B7WZ2jfnXpsbG0yorqxqYT4Q0yoxLI007BUquqSbhzj%2Bn3s07P8kpaMNuKzMdhzj4qqImxuCktuH1zQ0RXOAxwmPXik3PBDFDtEVJZV%2BdkM5q50kwMwBhx%2BpzqDVY8q4qTLqUKUG8wy4QMWhAHvLcLHqjZ4UGbDWHeqwlVdRxKEVY0zMUv4%2FUSzJFL2mjSfb6OFjr54oraHc1z8webFgQOlLUYHPgWD5hoFfepChHOay2qKgofPBg63NrvvPtT37%2B83%2F5DOe4h9va9vdu3LhR0zI0523S%2B3mI8380Ks%2FbYZSuPispNfmI35I1a9bouWj1w99f1tzc%2FCdlZRWx%2Fn5Ot5JUyDVR1IcjvYcFjZqv717a2eHW%2F7TVPfwk9OvnWzgt5upLWIOFnx5IqR02OPTKlGWTJDzDPUs6PIXFeGyYbhLH3HhlEojXQhGtQrNJTwKAJoEkfVDmQ1xJwnTj78rIiLs10qY8qqIBaAKjgMNl0iMHoVwamhVpG05JilUWZGNTS7L5FXmhFLt%2F246uConfHLBtAwvGpCNdzGHeu3f3vUtvvOab5GsQmmWgmYYmAmVZX4ZPTBk%2FQeZES6Bji5Whzs5s2LBhRFXa9OnTQ19cccd%2FMCvzp%2FX1jbXFJcXTWLwY9s19I6wNyjPAz75%2BbM9fU%2BTOOavaLV5U5poBT0fPmNu9bcAN0PsxxsF4NUwF1l7IEaSBpqpaNSYm61IVVkAzGZJbVTeB9CaN9C2rr8aa%2BrmXCiowcQnIWvZTSlwLGdKQZFM1pdaTOgXpY8SNZ9zUcZlhrE9CLVoQyxY3FrnEjDJXOK3EpZOqqVh4HHQbeKBp6Va6kOZ5OJINtx7Yv%2BGRNas%2B%2FRe3feYJ1m9lpk6dqipL%2Bk6KKktIVwYnlICnE2REkrfbSPLo0hhlHLFcwoixPd9zzz99uKVl5i1Tquqmc2YHsxtNP%2FL%2ByblGz5mzyYFrCDKY1TOQdvva%2BtzmHT3uCYD06g56CLRisJqok1FXDagYJkLhpSVXnnBDZazTIg4ej5KfeKy68qoYOQIEqooAixl17iGVpBrRX%2BymM7vgrlgHUz04vhPwSCfXioi0erppcgtCURaDxsoKXbwm7uIlHDjAiXC025gKDkrxZgD2WZAUYZvdeDRGGu0dB1%2FZvmPLV2%2B55Y9%2FjPsotNFouqSO5vKo%2B8P8c3%2FbzMkAIBVe%2BRAw9N3GmFdUWFFRX%2FTEE49KDpSv%2FPaa32lqmrYM%2FahulHnAqWF%2FzIv8S0ewfYHghKZeaKMATZTvoQutrX3IvbK3z73wyoB7bD8f6mG4pVWCgioraF1dOVWRdttX4gKOYuRCYmR1krRypSPOpQeZWOImsKrPibR03AITU91KAFSZHuSZMS38hmk%2BxorzsrEkRyiVxVwE8MoNwLH5hh8WUXym4BMehdrkHYf5RZR%2F1qof2Lvv1W%2FedNPS7%2FG684orrot0dPQM%2FOxnazWPJ9B1BB7l%2BG01JwuARATlRZeAJN0ofuWVVxa1tbXloyRKTNc%2B9NB3rm6sb1haXjGlSS0Zel%2BltUgQiO3GYhvn4oHREvGeCKOcykeLib1CD3H0WVv7oNvVPur2dMdCL0eK3C7WZNnGiZxtYSoowDAJBIDMcI6oOhzNTc18rbTVchOJIAGReWmrkt2ugZXF2lolzJ7LeYzlSU8icVQnHcZNOPKrDKqG0s4g0uyo7tRoi7BtID45ELejfd%2F%2B1tbVH%2FvYdT8g5razzz47yl49w48%2F%2FriW3UjqiA4BcN528JAXY5juJ5MRiHQJFHnJZDK%2BaNHlRevXr6PH9ZC%2B1OoHHlh5ySnN065LlibPLGTb22EOdaF2o9IwPUkANF1Jz%2FqXANEJNTYEgfRQJ3OKqi1FiL50NDsEuPoRaj10DaTY14WqhePNMlk2XkAfthZXVrMrImy6EysIZ4vpQkrEdPwnfTjci6NMdaUPneFWpJBfDWJVngATkBiAKDcYGvySlLGI31K3z3X39rzw2t49j978hzetJe%2BHOJ80smDBxaPr1z850NPTE1RXKjtR2MXt5DBi1MlqlDeBQUCKNjQ05M%2BbN6%2Fw%2Bed35O3d%2B7KIWXLHHSvOntUy84pkafkHkyVlZWHAQfWmc65ovdHrIgAQhxgmFUbUl06S01NN9xCw9Cw9RHqUPnBUXnxFEBGER6RZq0pjvyg4kmiKTNszSAfTKLl0HvXrSNooFYtLNvxhp4a1qKSrReLaDBMEd3d3dHX3dP70xZe2PP65z33uObz3cqxSBMV49Je%2F%2FOUg69SD1pUiDaQO1pPLnMwACij1OiA1NTXFmRheONLbE1v77FoRNnLuuec2LVv2iflNDU0XJxIlcxPFJSU6zkjDbCM6t4vVmGJmzlhPN0%2B%2B7Dlg4Sl47%2B%2F2NnDjIbDqrUegj0D%2BeIeTcKK3gpU8SR%2BKxGJMX5VexvSMXra57e8feI4J7uvvv%2F%2Fuf6dq3o%2FH9CULLwnHSpIjW7f%2BYpCTcYKq6qQGjgoq44no7Sfzb5DPQCJF6ISMzZlzQX4ymcj%2F%2FvdXedGBdnLZZZc3Xn3l1XNq6hvOKy4qOiueX9CcKGIamDruaEdrX0B1AyBlpNPCaaSJBIuIEYiOgBK4GxQAR%2BCke4AUgSZHQgVlhIGecS6OC7C0Bgb62AYxtbe3v3PLgQNtP3%2FqqR9uevLJJwUagSR8zTU3ZKiWh1kWNcyJgIFyHADHktLPyWwCxpzMeTw2b8qzABOAKdrScl7sfe%2Brygclsccee0zvJZmkiJd95jN%2FPnXGjNlnVJZXzSwojL8%2FHitogMkVhSi8bJoOaGhRSWZQrWjLW0mRiRdxCFivu9TSsjE2L3bocxzmeABaYel0B%2FsD7B8aSr3Sfvjw9pde3vriXXd9cQ9RdHIJGOElS5aQVP7Iq6%2FuHd6x4%2BcCjRTjADTK9%2BvAyvNJbd6JAAoIqrwfCybpEDF0Cc2NiO3cuTO8detWMUSXdKmiWbNmlS9efHVNQ21dfWlFWV1RQWktK0eqEFBl6LXFDF0UUMfFAA1zx1CKSAFMobbQf5xl2D2bHQIofaOpTNfwSKp9aHCgraPj0IG2A62tT69be3Dz5o0dpBMsmwnNnj07dOqpp2Y4X2Hk5dfaUjnQCDDHguYdBRzyb%2BadDKBjyzARTCadqOaiM2fOjJWVvwP38wAAAVpJREFU1efF4%2BnooUOHIs8%2B%2B6zCBaCS3ZR07mqUa2a%2F7nkALVqRrDCdWWem57oS1LbXJckR2CU1ZJR%2BaOHChY5WVDqViox1dbWOMnA8QvV0rJSZKGnekcCxEucKHdjfDffggzBmUiABSXaBJFxeXh5hmVGktLQ0WlxcQzM6zRhlIpwe6A9RBYU6BztDhw71OFp5eP9N09x8GuBIuvLC8mxheSFHI0XY1jmWGR4eGevrO5ju7u4eY4FlurOzM5AuugsgAWACsAT330zkHeYSEPwdlu03nN2gfAGgJt4DcMktXFlZGQJYbL6dCJeWUr8wIyDp6K3G9PAnsHQzPT0a7c8AlOyRI0eOBcZEkOhdcCmKdw1gVJiJJiDwRLd3s31ieQP7sXeVP3A7lhYTgRDYj70rTOB2bPh33fN%2FR6h3XUHfYIHeKD3%2B3wDkDdLtPW%2FvUeA9CrxHgbeBAv8JW9MkIVlj4loAAAAASUVORK5CYII%3D%22%20id%3D%22b%22%20width%3D%22144%22%20height%3D%22144%22%20preserveAspectRatio%3D%22none%22%2F%3E%3C%2Fdefs%3E%3C%2Fsvg%3E";export{B as default}; diff --git a/client2/build/assets/Opera-KQZLSACL-Cwv5MDFy.js b/client2/build/assets/Opera-KQZLSACL-Cwv5MDFy.js deleted file mode 100644 index 1cf141d8e..000000000 --- a/client2/build/assets/Opera-KQZLSACL-Cwv5MDFy.js +++ /dev/null @@ -1 +0,0 @@ -var t="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2078%2078%22%3E%3ClinearGradient%20id%3D%22a%22%20x2%3D%221%22%20gradientTransform%3D%22matrix(0%20-54.944%20-54.944%200%2023.62%2079.474)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23ff1b2d%22%2F%3E%3Cstop%20offset%3D%22.3%22%20stop-color%3D%22%23ff1b2d%22%2F%3E%3Cstop%20offset%3D%22.614%22%20stop-color%3D%22%23ff1b2d%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23a70014%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22b%22%20x2%3D%221%22%20gradientTransform%3D%22matrix(0%20-48.595%20-48.595%200%2037.854%2076.235)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%239c0000%22%2F%3E%3Cstop%20offset%3D%22.7%22%20stop-color%3D%22%23ff4b4b%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23ff4b4b%22%2F%3E%3C%2FlinearGradient%3E%3Cpath%20fill%3D%22url(%23a)%22%20d%3D%22M28.346%2080.398C12.691%2080.398%200%2067.707%200%2052.052%200%2036.85%2011.968%2024.443%2026.996%2023.739a28.244%2028.244%200%200%201%2020.241%207.18c-3.322-2.203-7.207-3.47-11.359-3.47-6.75%200-12.796%203.348-16.862%208.629-3.134%203.7-5.164%209.169-5.302%2015.307v1.335c.138%206.137%202.168%2011.608%205.302%2015.307%204.066%205.28%2010.112%208.63%2016.862%208.63%204.152%200%208.038-1.269%2011.36-3.474a28.239%2028.239%200%200%201-18.785%207.215l-.108.001z%22%20transform%3D%22matrix(1.3333%200%200%20-1.3333%200%20107.2)%22%2F%3E%3Cpath%20fill%3D%22url(%23b)%22%20d%3D%22M19.016%2068.025c2.601%203.07%205.96%204.923%209.631%204.923%208.252%200%2014.941-9.356%2014.941-20.897s-6.69-20.897-14.941-20.897c-3.67%200-7.03%201.85-9.63%204.922%204.066-5.281%2010.11-8.63%2016.862-8.63%204.152%200%208.036%201.268%2011.359%203.472%205.802%205.19%209.455%2012.735%209.455%2021.133%200%208.397-3.653%2015.94-9.453%2021.13-3.324%202.206-7.209%203.473-11.361%203.473-6.75%200-12.796-3.348-16.862-8.63%22%20transform%3D%22matrix(1.3333%200%200%20-1.3333%200%20107.2)%22%2F%3E%3C%2Fsvg%3E";export{t as default}; diff --git a/client2/build/assets/Safari-ZPL37GXR-C4Ggg6rz.js b/client2/build/assets/Safari-ZPL37GXR-C4Ggg6rz.js deleted file mode 100644 index e3900f7df..000000000 --- a/client2/build/assets/Safari-ZPL37GXR-C4Ggg6rz.js +++ /dev/null @@ -1 +0,0 @@ -var a="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20viewBox%3D%220%200%2078%2077%22%3E%3Cdefs%3E%3Cmask%20id%3D%22d%22%3E%3Cg%20filter%3D%22url(%23a)%22%3E%3Cpath%20d%3D%22M0%200h78v77H0z%22%20style%3D%22fill%3A%23000%3Bfill-opacity%3A.529412%3Bstroke%3Anone%22%2F%3E%3C%2Fg%3E%3C%2Fmask%3E%3Cmask%20id%3D%22h%22%3E%3Cg%20filter%3D%22url(%23a)%22%3E%3Cpath%20d%3D%22M0%200h78v77H0z%22%20style%3D%22fill%3A%23000%3Bfill-opacity%3A.407843%3Bstroke%3Anone%22%2F%3E%3C%2Fg%3E%3C%2Fmask%3E%3Cmask%20id%3D%22j%22%3E%3Cg%20filter%3D%22url(%23a)%22%3E%3Cpath%20d%3D%22M0%200h78v77H0z%22%20style%3D%22fill%3A%23000%3Bfill-opacity%3A.243137%3Bstroke%3Anone%22%2F%3E%3C%2Fg%3E%3C%2Fmask%3E%3CradialGradient%20id%3D%22f%22%20cx%3D%22413.061%22%20cy%3D%22136.818%22%20r%3D%2282.125%22%20fx%3D%22413.061%22%20fy%3D%22136.818%22%20gradientTransform%3D%22matrix(.4505%200%200%20.44664%20-146.86%20-29.291)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%220%22%20style%3D%22stop-color%3A%2306c2e7%3Bstop-opacity%3A1%22%2F%3E%3Cstop%20offset%3D%22.25%22%20style%3D%22stop-color%3A%230db8ec%3Bstop-opacity%3A1%22%2F%3E%3Cstop%20offset%3D%22.5%22%20style%3D%22stop-color%3A%2312aef1%3Bstop-opacity%3A1%22%2F%3E%3Cstop%20offset%3D%22.75%22%20style%3D%22stop-color%3A%231f86f9%3Bstop-opacity%3A1%22%2F%3E%3Cstop%20offset%3D%221%22%20style%3D%22stop-color%3A%23107ddd%3Bstop-opacity%3A1%22%2F%3E%3C%2FradialGradient%3E%3ClinearGradient%20id%3D%22e%22%20x1%3D%22412.975%22%20x2%3D%22412.975%22%20y1%3D%22237.608%22%20y2%3D%2259.392%22%20gradientTransform%3D%22translate(206.79%20159.773)%20scale(.35154)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%220%22%20style%3D%22stop-color%3A%23bdbdbd%3Bstop-opacity%3A1%22%2F%3E%3Cstop%20offset%3D%221%22%20style%3D%22stop-color%3A%23fff%3Bstop-opacity%3A1%22%2F%3E%3C%2FlinearGradient%3E%3CclipPath%20id%3D%22b%22%3E%3Cpath%20d%3D%22M0%200h78v77H0z%22%2F%3E%3C%2FclipPath%3E%3Cfilter%20id%3D%22a%22%20width%3D%22100%25%22%20height%3D%22100%25%22%20x%3D%220%25%22%20y%3D%220%25%22%20filterUnits%3D%22objectBoundingBox%22%3E%3CfeColorMatrix%20in%3D%22SourceGraphic%22%20values%3D%220%200%200%200%201%200%200%200%200%201%200%200%200%200%201%200%200%200%201%200%22%2F%3E%3C%2Ffilter%3E%3Cg%20id%3D%22i%22%20clip-path%3D%22url(%23b)%22%3E%3Cpath%20d%3D%22m15.316%2059.238%2027.657-18.445%2019.859-26.54Zm0%200%22%20style%3D%22stroke%3Anone%3Bfill-rule%3Anonzero%3Bfill%3A%23000%3Bfill-opacity%3A1%22%2F%3E%3C%2Fg%3E%3C%2Fdefs%3E%3Cuse%20xlink%3Ahref%3D%22%23c%22%20mask%3D%22url(%23d)%22%2F%3E%3Cpath%20d%3D%22M383.295%20211.976c0%2017.3-14.026%2031.324-31.327%2031.324-17.3%200-31.326-14.024-31.326-31.324%200-17.3%2014.026-31.324%2031.326-31.324s31.327%2014.024%2031.327%2031.324Zm0%200%22%20style%3D%22fill-rule%3Anonzero%3Bfill%3Aurl(%23e)%3Bstroke-width%3A.0930123%3Bstroke-linecap%3Around%3Bstroke-linejoin%3Around%3Bstroke%3A%23cdcdcd%3Bstroke-opacity%3A1%3Bstroke-miterlimit%3A4%22%20transform%3D%22matrix(1.1811%200%200%201.17096%20-376.637%20-211.47)%22%2F%3E%3Cpath%20d%3D%22M73.172%2036.746c0%2018.672-15.266%2033.809-34.098%2033.809S4.977%2055.418%204.977%2036.746c0-18.672%2015.265-33.805%2034.097-33.805s34.098%2015.133%2034.098%2033.805Zm0%200%22%20style%3D%22stroke%3Anone%3Bfill-rule%3Anonzero%3Bfill%3Aurl(%23f)%22%2F%3E%3Cpath%20d%3D%22M39.074%204.703a.493.493%200%200%200-.496.492v5.688c0%20.273.223.492.496.492a.491.491%200%200%200%20.496-.492V5.195a.491.491%200%200%200-.496-.492Zm-3.254.203a.495.495%200%200%200-.543.543l.25%202.38a.5.5%200%200%200%20.547.437.489.489%200%200%200%20.442-.54l-.25-2.378a.495.495%200%200%200-.446-.442Zm6.528.004c-.23.02-.418.2-.446.438l-.25%202.379a.49.49%200%200%200%20.442.543.496.496%200%200%200%20.547-.438l.254-2.379a.496.496%200%200%200-.547-.543Zm-9.868.477a.493.493%200%200%200-.484.598l1.188%205.558c.058.27.32.437.59.383a.492.492%200%200%200%20.382-.586L32.97%205.777a.494.494%200%200%200-.489-.39Zm13.211.004a.502.502%200%200%200-.492.39l-1.191%205.563a.497.497%200%200%200%20.972.207l1.192-5.563a.492.492%200%200%200-.48-.597Zm-16.398.886a.548.548%200%200%200-.195.024.492.492%200%200%200-.32.62l.745%202.274a.493.493%200%200%200%20.625.317.49.49%200%200%200%20.32-.621l-.745-2.274a.5.5%200%200%200-.43-.34Zm19.566.004a.5.5%200%200%200-.43.336l-.745%202.278a.496.496%200%200%200%20.945.304l.746-2.277a.49.49%200%200%200-.516-.64Zm-22.718%201.14a.492.492%200%200%200-.445.695l2.327%205.197a.497.497%200%200%200%20.91-.402l-2.331-5.196a.493.493%200%200%200-.461-.293Zm25.91.02a.494.494%200%200%200-.465.293l-2.336%205.192c-.113.25%200%20.539.25.648.254.114.547%200%20.656-.246l2.336-5.195a.488.488%200%200%200-.25-.649.486.486%200%200%200-.191-.043ZM23.21%208.957a.491.491%200%200%200-.281.066.49.49%200%200%200-.184.672l1.207%202.075a.5.5%200%200%200%20.68.18.494.494%200%200%200%20.183-.677l-1.207-2.07a.5.5%200%200%200-.398-.246Zm31.727%200a.5.5%200%200%200-.399.246l-1.207%202.07a.494.494%200%200%200%20.184.676.5.5%200%200%200%20.68-.18l1.206-2.074a.49.49%200%200%200-.183-.672.524.524%200%200%200-.282-.066ZM20.37%2010.715a.501.501%200%200%200-.273.094.487.487%200%200%200-.114.687l3.368%204.602a.5.5%200%200%200%20.695.113.49.49%200%200%200%20.11-.691l-3.368-4.602a.502.502%200%200%200-.418-.203Zm37.442.027a.488.488%200%200%200-.418.2l-3.375%204.597a.494.494%200%200%200%20.109.691c.223.16.535.11.695-.109l3.375-4.598a.49.49%200%200%200-.11-.687.465.465%200%200%200-.276-.094Zm-39.981%202.086a.496.496%200%200%200-.36.125.487.487%200%200%200-.038.695l1.617%201.778a.495.495%200%201%200%20.738-.66l-1.613-1.774a.495.495%200%200%200-.344-.164Zm42.488.004a.506.506%200%200%200-.343.16l-1.614%201.778a.491.491%200%200%200%20.04.699c.202.18.515.164.699-.04l1.617-1.777a.487.487%200%200%200-.04-.695.496.496%200%200%200-.359-.125Zm-44.925%202.313a.511.511%200%200%200-.344.164.49.49%200%200%200%20.039.695l4.262%203.805a.5.5%200%200%200%20.703-.036.491.491%200%200%200-.04-.699l-4.261-3.8a.5.5%200%200%200-.36-.13Zm47.375.02a.496.496%200%200%200-.36.124l-4.265%203.8a.49.49%200%200%200-.04.696c.188.203.5.219.704.04l4.265-3.802a.49.49%200%200%200-.305-.86ZM13.37%2017.726a.502.502%200%200%200-.418.203.486.486%200%200%200%20.11.687l1.949%201.406c.222.16.535.114.695-.109a.486.486%200%200%200-.11-.687l-1.949-1.407a.525.525%200%200%200-.277-.093Zm51.418.02a.481.481%200%200%200-.273.093l-1.954%201.402a.494.494%200%200%200-.109.692c.16.218.473.27.695.109l1.954-1.406a.49.49%200%200%200%20.109-.688.489.489%200%200%200-.422-.203ZM11.48%2020.48a.49.49%200%200%200-.215.918l4.965%202.844a.5.5%200%200%200%20.68-.18.492.492%200%200%200-.18-.675l-4.968-2.84a.491.491%200%200%200-.282-.067Zm55.188%200a.462.462%200%200%200-.281.067l-4.969%202.84a.492.492%200%200%200-.18.675.5.5%200%200%200%20.68.18l4.965-2.844a.49.49%200%200%200-.215-.918Zm-56.617%202.934a.494.494%200%200%200-.215.945l2.203.973c.254.11.547%200%20.656-.25a.485.485%200%200%200-.25-.648l-2.203-.977a.486.486%200%200%200-.191-.043Zm58.058.02a.545.545%200%200%200-.191.043l-2.207.972a.492.492%200%200%200-.25.653.5.5%200%200%200%20.656.25l2.203-.973a.493.493%200%200%200%20.254-.652.498.498%200%200%200-.465-.293ZM8.773%2026.48a.492.492%200%200%200-.11.96l5.45%201.763a.492.492%200%201%200%20.309-.938l-5.453-1.761a.548.548%200%200%200-.196-.024Zm60.61.024a.415.415%200%200%200-.195.023l-5.458%201.754a.493.493%200%201%200%20.309.938l5.453-1.754a.495.495%200%200%200%20.32-.625.496.496%200%200%200-.43-.336Zm-61.403%203.2a.494.494%200%200%200-.492.39.493.493%200%200%200%20.387.582l2.36.496c.269.058.53-.11.59-.379a.493.493%200%200%200-.387-.582l-2.36-.5a.822.822%200%200%200-.098-.008Zm62.192.003c-.035%200-.067.004-.102.008l-2.36.5a.491.491%200%201%200%20.207.96l2.36-.495a.49.49%200%200%200-.105-.973ZM7.379%2032.941c-.23.02-.422.2-.445.438a.495.495%200%200%200%20.441.543l5.703.598a.499.499%200%200%200%20.547-.442.491.491%200%200%200-.441-.539l-5.704-.598a.441.441%200%200%200-.101%200Zm63.398.04c-.035%200-.07%200-.101.003l-5.703.59a.492.492%200%201%200%20.101.98l5.703-.59a.495.495%200%200%200%200-.984ZM7.281%2036.253a.493.493%200%201%200%200%20.988h2.414a.493.493%200%201%200%200-.988Zm61.172%200a.493.493%200%201%200%200%20.988h2.414a.493.493%200%201%200%200-.988ZM13.176%2038.94a.442.442%200%200%200-.102%200l-5.703.59a.493.493%200%201%200%20.102.98l5.703-.59a.492.492%200%200%200%200-.98Zm51.793.036a.493.493%200%200%200-.004.98l5.703.598a.496.496%200%200%200%20.547-.438.49.49%200%200%200-.442-.543l-5.703-.597a.441.441%200%200%200-.101%200Zm-54.637%203.328a.477.477%200%200%200-.102.011l-2.359.496a.497.497%200%200%200-.383.586c.059.266.32.438.59.38l2.36-.497a.492.492%200%200%200%20.382-.586.5.5%200%200%200-.488-.39Zm57.484.008a.49.49%200%200%200-.488.39.488.488%200%200%200%20.383.582l2.36.5a.499.499%200%200%200%20.59-.383.494.494%200%200%200-.384-.582l-2.359-.5a.93.93%200%200%200-.102-.008Zm-53.511%201.94a.484.484%200%200%200-.196.02L8.656%2046.03a.492.492%200%201%200%20.309.938l5.453-1.758a.491.491%200%200%200-.113-.957Zm49.53.017a.492.492%200%200%200-.11.96l5.455%201.762a.5.5%200%200%200%20.625-.316.487.487%200%200%200-.317-.621l-5.453-1.762c-.066-.023-.133-.027-.2-.023Zm-51.612%203.832a.486.486%200%200%200-.192.043l-2.203.972a.496.496%200%200%200-.254.653.503.503%200%200%200%20.656.25l2.207-.973a.494.494%200%200%200-.215-.945Zm53.695.02a.494.494%200%200%200-.465.292c-.113.25%200%20.54.25.648l2.203.977c.254.11.547%200%20.656-.25a.49.49%200%200%200-.25-.652l-2.203-.973a.486.486%200%200%200-.191-.043Zm-49.402%201.066a.497.497%200%200%200-.286.066l-4.964%202.844a.49.49%200%200%200-.184.672c.14.238.441.316.68.18l4.968-2.84a.492.492%200%200%200%20.18-.676.493.493%200%200%200-.394-.246Zm45.117%200a.493.493%200%200%200-.395.246.492.492%200%200%200%20.18.675l4.969%202.84a.498.498%200%200%200%20.68-.18.49.49%200%200%200-.184-.671l-4.965-2.844a.53.53%200%200%200-.285-.066Zm-46.356%204.171a.524.524%200%200%200-.277.094l-1.95%201.406a.49.49%200%200%200-.113.688.5.5%200%200%200%20.696.11l1.953-1.403a.49.49%200%200%200%20.11-.691.502.502%200%200%200-.419-.204Zm47.582.016a.502.502%200%200%200-.418.203.49.49%200%200%200%20.11.692l1.953%201.406c.223.16.531.11.691-.11a.49.49%200%200%200-.11-.691l-1.948-1.402a.498.498%200%200%200-.278-.098Zm-43.16.172a.496.496%200%200%200-.36.125l-4.265%203.8a.486.486%200%200%200-.035.696.495.495%200%200%200%20.7.039l4.265-3.8a.487.487%200%200%200%20.039-.696.511.511%200%200%200-.344-.164Zm38.739.012a.511.511%200%200%200-.344.164.486.486%200%200%200%20.039.695l4.262%203.805a.5.5%200%200%200%20.703-.035.486.486%200%200%200-.04-.696l-4.261-3.804a.5.5%200%200%200-.36-.13Zm-34.696%203.613a.487.487%200%200%200-.418.203l-3.375%204.598a.49.49%200%200%200%20.11.687c.222.16.535.113.695-.11l3.375-4.597a.49.49%200%200%200-.387-.781Zm30.633.02a.512.512%200%200%200-.273.093.486.486%200%200%200-.11.688l3.367%204.601a.495.495%200%201%200%20.805-.578l-3.367-4.601a.509.509%200%200%200-.422-.204Zm-34.984.71a.496.496%200%200%200-.344.164l-1.613%201.778a.487.487%200%200%200%20.035.695.5.5%200%200%200%20.703-.039l1.613-1.777a.487.487%200%200%200-.039-.696.492.492%200%200%200-.355-.125Zm39.367%200a.5.5%200%200%200-.36.13.487.487%200%200%200-.039.695l1.614%201.777a.5.5%200%200%200%20.703.035.486.486%200%200%200%20.039-.695l-1.613-1.778a.511.511%200%200%200-.344-.164Zm-30.305%201.973a.493.493%200%200%200-.46.293l-2.337%205.191c-.113.25%200%20.54.25.653a.5.5%200%200%200%20.657-.25l2.335-5.192a.492.492%200%200%200-.445-.695Zm21.211.016a.491.491%200%200%200-.45.691l2.333%205.195c.11.25.402.364.656.25a.486.486%200%200%200%20.25-.648l-2.328-5.195a.493.493%200%200%200-.46-.293Zm-25.316%201.59a.499.499%200%200%200-.395.246l-1.207%202.07a.494.494%200%200%200%20.184.676.498.498%200%200%200%20.68-.184l1.206-2.07a.49.49%200%200%200-.183-.672.497.497%200%200%200-.285-.067Zm29.453%200a.497.497%200%200%200-.285.066.485.485%200%200%200-.18.672l1.203%202.07a.5.5%200%200%200%20.68.184.494.494%200%200%200%20.183-.676l-1.207-2.07a.499.499%200%200%200-.394-.247Zm-20.145.074a.497.497%200%200%200-.488.39l-1.191%205.563a.488.488%200%200%200%20.382.582c.27.058.532-.11.59-.38l1.192-5.558a.493.493%200%200%200-.485-.597Zm10.82.004a.45.45%200%200%200-.101.011.488.488%200%200%200-.383.582l1.188%205.563c.054.27.32.437.59.379a.49.49%200%200%200%20.382-.582l-1.187-5.563a.497.497%200%200%200-.488-.39Zm-5.402.562a.493.493%200%200%200-.496.492v5.684c0%20.273.223.492.496.492a.491.491%200%200%200%20.496-.492v-5.684a.491.491%200%200%200-.496-.492Zm-9.125%201.836a.49.49%200%200%200-.43.34l-.746%202.273a.49.49%200%200%200%20.317.621.499.499%200%200%200%20.629-.316l.746-2.273a.49.49%200%200%200-.32-.622.488.488%200%200%200-.196-.023Zm18.246%200a.57.57%200%200%200-.195.023.492.492%200%200%200-.32.622l.746%202.273a.493.493%200%200%200%20.625.316.486.486%200%200%200%20.32-.62l-.746-2.274a.49.49%200%200%200-.43-.34Zm-12.242%201.27a.491.491%200%200%200-.445.437l-.25%202.379a.489.489%200%200%200%20.441.539.493.493%200%200%200%20.547-.437l.25-2.38a.489.489%200%200%200-.543-.538Zm6.223%200a.49.49%200%200%200-.543.543l.25%202.378c.027.27.27.465.543.438a.492.492%200%200%200%20.445-.54l-.25-2.378a.499.499%200%200%200-.445-.441Zm0%200%22%20style%3D%22stroke%3Anone%3Bfill-rule%3Anonzero%3Bfill%3A%23f4f2f3%3Bfill-opacity%3A1%22%2F%3E%3Cuse%20xlink%3Ahref%3D%22%23g%22%20mask%3D%22url(%23h)%22%2F%3E%3Cpath%20d%3D%22m42.973%2040.793-7.797-8.094%2027.656-18.445Zm0%200%22%20style%3D%22stroke%3Anone%3Bfill-rule%3Anonzero%3Bfill%3A%23ff5150%3Bfill-opacity%3A1%22%2F%3E%3Cpath%20d%3D%22m42.973%2040.793-7.797-8.094-19.86%2026.54Zm0%200%22%20style%3D%22stroke%3Anone%3Bfill-rule%3Anonzero%3Bfill%3A%23f1f1f1%3Bfill-opacity%3A1%22%2F%3E%3Cuse%20xlink%3Ahref%3D%22%23i%22%20mask%3D%22url(%23j)%22%2F%3E%3C%2Fsvg%3E";export{a as default}; diff --git a/client2/build/assets/Windows-PPTHQER6-BlyV2p7Y.js b/client2/build/assets/Windows-PPTHQER6-BlyV2p7Y.js deleted file mode 100644 index b489961a1..000000000 --- a/client2/build/assets/Windows-PPTHQER6-BlyV2p7Y.js +++ /dev/null @@ -1 +0,0 @@ -var a="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2248%22%20height%3D%2248%22%20fill%3D%22none%22%3E%3Cg%20clip-path%3D%22url(%23a)%22%3E%3Cpath%20fill%3D%22%230078D4%22%20d%3D%22M0%200h22.755v22.745H0V0Zm25.245%200H48v22.745H25.245V0ZM0%2025.245h22.755V48H0V25.245Zm25.245%200H48V48H25.245%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3CclipPath%20id%3D%22a%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M0%200h48v48H0z%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fsvg%3E";export{a as default}; diff --git a/client2/build/assets/add-DwnGuSM-.js b/client2/build/assets/add-DwnGuSM-.js deleted file mode 100644 index dd3ee51ac..000000000 --- a/client2/build/assets/add-DwnGuSM-.js +++ /dev/null @@ -1,15 +0,0 @@ -import{b as o}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const d=o` - `;export{d as addSvg}; diff --git a/client2/build/assets/all-wallets-BHaMYqWF.js b/client2/build/assets/all-wallets-BHaMYqWF.js deleted file mode 100644 index 3a51453b5..000000000 --- a/client2/build/assets/all-wallets-BHaMYqWF.js +++ /dev/null @@ -1,6 +0,0 @@ -import{b as o}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const p=o` - -`;export{p as allWalletsSvg}; diff --git a/client2/build/assets/apechain-SX5YFU6N-q5qBv-mp.js b/client2/build/assets/apechain-SX5YFU6N-q5qBv-mp.js deleted file mode 100644 index 7ceac4ce8..000000000 --- a/client2/build/assets/apechain-SX5YFU6N-q5qBv-mp.js +++ /dev/null @@ -1 +0,0 @@ -var a="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2028%2028%22%3E%3Cg%20transform%3D%22translate(0%2C0)%20scale(0.7)%22%3E%3Cpath%20fill%3D%22url(%23a)%22%20d%3D%22M0%200h40v40H0z%22%2F%3E%3Cpath%20fill%3D%22url(%23b)%22%20fill-opacity%3D%22.6%22%20d%3D%22M0%200h40v40H0z%22%2F%3E%3Cpath%20fill%3D%22%230054FA%22%20d%3D%22M10.158%2012h2.933l1.89%2016h-2.486l-.276-3.481h-1.317L10.625%2028H8.267l1.89-16Zm1.169%207.113-.255%203.287h.977l-.276-3.287-.191-2.767h-.064l-.191%202.767ZM20.193%2028h-2.529V12h3.315c1.806%200%202.911%201.081%202.911%203.027v3.935c0%201.925-1.105%203.006-2.911%203.006h-.786V28Zm.021-7.957h.553c.425%200%20.595-.389.595-1.08v-3.936c0-.713-.17-1.103-.595-1.103h-.553v6.12ZM26.803%2028V12h4.93v2.119h-2.401v4.735h2.146v2.119h-2.146v4.908h2.401V28h-4.93Z%22%2F%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22a%22%20x1%3D%2220%22%20x2%3D%2220%22%20y1%3D%220%22%20y2%3D%2240%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23fff%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23F7F7F8%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22b%22%20x1%3D%2220%22%20x2%3D%2220%22%20y1%3D%220%22%20y2%3D%2240%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23fff%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23E6EDFA%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3C%2Fg%3E%3C%2Fsvg%3E";export{a as default}; diff --git a/client2/build/assets/app-store-BJFa5f-j.js b/client2/build/assets/app-store-BJFa5f-j.js deleted file mode 100644 index 4e904dbf3..000000000 --- a/client2/build/assets/app-store-BJFa5f-j.js +++ /dev/null @@ -1,17 +0,0 @@ -import{b as t}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const e=t` - - - - - - - - - -`;export{e as appStoreSvg}; diff --git a/client2/build/assets/apple-BLJwEllz.js b/client2/build/assets/apple-BLJwEllz.js deleted file mode 100644 index 7a867fefa..000000000 --- a/client2/build/assets/apple-BLJwEllz.js +++ /dev/null @@ -1,18 +0,0 @@ -import{b as i}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const h=i` - - - - - - - - - - - - - -`;export{h as appleSvg}; diff --git a/client2/build/assets/ar_AR-CTNWGWSS-DlAFo0vZ.js b/client2/build/assets/ar_AR-CTNWGWSS-DlAFo0vZ.js deleted file mode 100644 index 29b6dab3e..000000000 --- a/client2/build/assets/ar_AR-CTNWGWSS-DlAFo0vZ.js +++ /dev/null @@ -1,1427 +0,0 @@ -var u=`{ - "connect_wallet": { - "label": "اتصال المحفظة", - "wrong_network": { - "label": "شبكة خاطئة" - } - }, - "intro": { - "title": "ما هو المحفظة؟", - "description": "تُستخدم المحفظة لإرسال واستلام وتخزين وعرض الأصول الرقمية. إنها أيضاً طريقة جديدة لتسجيل الدخول، دون الحاجة إلى إنشاء حسابات وكلمات مرور جديدة على كل موقع.", - "digital_asset": { - "title": "دار لأصولك الرقمية", - "description": "تُستخدم المحافظ لإرسال واستلام وتخزين وعرض الأصول الرقمية مثل إيثيريوم والـ NFTs." - }, - "login": { - "title": "طريقة جديدة لتسجيل الدخول", - "description": "بدلاً من إنشاء حسابات وكلمات مرور جديدة على كل موقع، فقط قم بتوصيل محفظتك." - }, - "get": { - "label": "احصل على محفظة" - }, - "learn_more": { - "label": "تعلم المزيد" - } - }, - "sign_in": { - "label": "تحقق من حسابك", - "description": "لإنهاء الاتصال، يجب عليك توقيع رسالة في محفظتك للتحقق من أنك صاحب هذا الحساب.", - "message": { - "send": "إرسال الرسالة", - "preparing": "جارٍ تجهيز الرسالة...", - "cancel": "إلغاء", - "preparing_error": "خطأ في تجهيز الرسالة، يرجى المحاولة مرة أخرى!" - }, - "signature": { - "waiting": "انتظار التوقيع...", - "verifying": "جار التحقق من التوقيع...", - "signing_error": "خطأ في توقيع الرسالة، يرجى المحاولة مرة أخرى!", - "verifying_error": "خطأ في التحقق من التوقيع، يرجى المحاولة مرة أخرى!", - "oops_error": "عذرًا، حدث خطأ ما!" - } - }, - "connect": { - "label": "اتصل", - "title": "اتصال بالمحفظة", - "new_to_ethereum": { - "description": "جديد في محافظ Ethereum؟", - "learn_more": { - "label": "تعلم المزيد" - } - }, - "learn_more": { - "label": "أعرف أكثر" - }, - "recent": "الأخير", - "status": { - "opening": "جار فتح %{wallet}...", - "connecting": "جارٍ الاتصال", - "connect_mobile": "استمر في %{wallet}", - "not_installed": "%{wallet} غير مثبت", - "not_available": "%{wallet} غير متاح", - "confirm": "تأكيد الاتصال في الامتداد", - "confirm_mobile": "قبل طلب الاتصال في المحفظة" - }, - "secondary_action": { - "get": { - "description": "لا يوجد لديك %{wallet}؟", - "label": "احصل" - }, - "install": { - "label": "تثبيت" - }, - "retry": { - "label": "أعد المحاولة" - } - }, - "walletconnect": { - "description": { - "full": "هل تحتاج إلى النافذة الرسمية لـ WalletConnect؟", - "compact": "هل تحتاج إلى النافذة لـ WalletConnect؟" - }, - "open": { - "label": "افتح" - } - } - }, - "connect_scan": { - "title": "المسح باستخدام %{wallet}", - "fallback_title": "المسح باستخدام هاتفك" - }, - "connector_group": { - "installed": "مُثبّت", - "recommended": "موصى به", - "other": "آخر", - "popular": "شائع", - "more": "المزيد", - "others": "الآخرين" - }, - "get": { - "title": "احصل على محفظة", - "action": { - "label": "احصل" - }, - "mobile": { - "description": "محفظة الموبايل" - }, - "extension": { - "description": "ملحق المتصفح" - }, - "mobile_and_extension": { - "description": "محفظة موبايل وملحق" - }, - "mobile_and_desktop": { - "description": "محفظة الموبايل والكمبيوتر" - }, - "looking_for": { - "title": "ليست هذه هي ما تبحث عنه؟", - "mobile": { - "description": "حدد محفظة على الشاشة الرئيسية للبدء باستخدام موفر محفظة مختلف." - }, - "desktop": { - "compact_description": "حدد محفظة على الشاشة الرئيسية للبدء باستخدام موفر محفظة مختلف.", - "wide_description": "حدد محفظة على اليسار للبدء باستخدام موفر محفظة مختلف." - } - } - }, - "get_options": { - "title": "ابدأ مع %{wallet}", - "short_title": "احصل على %{wallet}", - "mobile": { - "title": "%{wallet} للجوال", - "description": "استخدم محفظة الموبايل لاستكشاف عالم Ethereum.", - "download": { - "label": "احصل على التطبيق" - } - }, - "extension": { - "title": "%{wallet} لـ %{browser}", - "description": "وصول لمحفظتك مباشرة من متصفح الويب المفضل لديك.", - "download": { - "label": "أضف إلى %{browser}" - } - }, - "desktop": { - "title": "%{wallet} لـ %{platform}", - "description": "قم بالوصول إلى محفظتك بشكل أصلي من كمبيوترك القوي.", - "download": { - "label": "أضف إلى %{platform}" - } - } - }, - "get_mobile": { - "title": "قم بالتثبيت %{wallet}", - "description": "استخدم هاتفك للتحميل على iOS أو Android", - "continue": { - "label": "استمر" - } - }, - "get_instructions": { - "mobile": { - "connect": { - "label": "اتصل" - }, - "learn_more": { - "label": "تعلم المزيد" - } - }, - "extension": { - "refresh": { - "label": "تحديث" - }, - "learn_more": { - "label": "تعلم المزيد" - } - }, - "desktop": { - "connect": { - "label": "اتصل" - }, - "learn_more": { - "label": "تعلم المزيد" - } - } - }, - "chains": { - "title": "تبديل الشبكات", - "wrong_network": "تم اكتشاف شبكة غير صحيحة، قم بالتبديل أو القطع للمتابعة.", - "confirm": "التأكيد في المحفظة", - "switching_not_supported": "محفظتك لا تدعم التبديل بين الشبكات من %{appName}. جرب التبديل بين الشبكات من داخل المحفظة بدلاً من ذلك.", - "switching_not_supported_fallback": "محفظتك لا تدعم تبديل الشبكات من هذا التطبيق. حاول تبديل الشبكات من داخل المحفظة بدلاً من ذلك.", - "disconnect": "قطع الاتصال", - "connected": "متصل" - }, - "profile": { - "disconnect": { - "label": "قطع الاتصال" - }, - "copy_address": { - "label": "نسخ العنوان", - "copied": "تم النسخ!" - }, - "explorer": { - "label": "عرض المزيد على المستكشف" - }, - "transactions": { - "description": "%{appName} ستظهر المعاملات هنا...", - "description_fallback": "سوف تظهر معاملاتك هنا...", - "recent": { - "title": "المعاملات الأخيرة" - }, - "clear": { - "label": "مسح الكل" - } - } - }, - "wallet_connectors": { - "argent": { - "qr_code": { - "step1": { - "description": "ضع أرجنت على شاشتك الرئيسية للوصول السريع إلى محفظتك.", - "title": "افتح تطبيق Argent" - }, - "step2": { - "description": "أنشئ محفظة واسم مستخدم، أو استورد محفظة موجودة بالفعل.", - "title": "إنشاء أو استيراد محفظة" - }, - "step3": { - "description": "بعد الفحص، سيظهر لك موجه الاتصال لتوصيل المحفظة الخاصة بك.", - "title": "اضغط على زر فحص الكود الشريطي" - } - } - }, - "berasig": { - "extension": { - "step1": { - "title": "قم بتثبيت إضافة BeraSig", - "description": "نوصي بتثبيت BeraSig على شريط المهام الخاص بك للوصول الأسهل إلى محفظتك." - }, - "step2": { - "title": "إنشاء محفظة", - "description": "تأكد من عمل نسخة احتياطية لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أحد." - }, - "step3": { - "title": "قم بتحديث متصفحك", - "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الامتداد." - } - } - }, - "best": { - "qr_code": { - "step1": { - "title": "افتح تطبيق Best Wallet", - "description": "أضف محفظة Best إلى شاشتك الرئيسية للوصول الأسرع إلى محفظتك." - }, - "step2": { - "title": "إنشاء أو استيراد محفظة", - "description": "أنشئ محفظة جديدة أو استورد واحدة موجودة بالفعل." - }, - "step3": { - "title": "اضغط على أيقونة الرمز الاستجابة السريعة وامسحها", - "description": "اضغط على أيقونة QR على الشاشة الرئيسية، قراءة الرمز وتأكيد الرسالة الموجهة للاتصال." - } - } - }, - "bifrost": { - "qr_code": { - "step1": { - "description": "نوصي بوضع محفظة Bifrost على الشاشة الرئيسية للوصول الأسرع.", - "title": "افتح تطبيق محفظة Bifrost" - }, - "step2": { - "description": "أنشئ أو استورد محفظة باستخدام عبارة الاستعادة الخاصة بك.", - "title": "إنشاء أو استيراد محفظة" - }, - "step3": { - "description": "بعد الفحص، سيظهر موجه الاتصال لك لتوصيل محفظتك.", - "title": "اضغط على زر المسح" - } - } - }, - "bitget": { - "qr_code": { - "step1": { - "description": "نوصي بوضع محفظة Bitget على الشاشة الرئيسية للوصول الأسرع.", - "title": "افتح تطبيق محفظة Bitget" - }, - "step2": { - "description": "تأكد من عمل نسخة احتياطية لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أحد.", - "title": "إنشاء أو استيراد محفظة" - }, - "step3": { - "description": "بعد الفحص، ستظهر لك موجه اتصال لتوصيل محفظتك.", - "title": "اضغط على زر الفحص" - } - }, - "extension": { - "step1": { - "description": "نوصي بتثبيت محفظة Bitget على شريط المهام للوصول الأسرع إلى محفظتك.", - "title": "قم بتثبيت امتداد محفظة Bitget" - }, - "step2": { - "description": "تأكد من نسخ محفظتك احتياطيًا باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أي شخص.", - "title": "أنشئ محفظة أو استورد محفظة" - }, - "step3": { - "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الامتداد.", - "title": "قم بتحديث متصفحك" - } - } - }, - "bitski": { - "extension": { - "step1": { - "description": "نوصي بتثبيت Bitski على شريط المهام الخاص بك للوصول الأسرع إلى محفظتك.", - "title": "قم بتثبيت امتداد Bitski" - }, - "step2": { - "description": "تأكد من الاحتفاظ بنسخة احتياطية من محفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أي شخص.", - "title": "إنشاء أو استيراد محفظة" - }, - "step3": { - "description": "بعد إعداد المحفظة الخاصة بك، انقر أدناه لتحديث المتصفح وتحميل الإضافة.", - "title": "تحديث المتصفح الخاص بك" - } - } - }, - "bitverse": { - "qr_code": { - "step1": { - "title": "افتح تطبيق محفظة Bitverse", - "description": "أضف محفظة Bitverse إلى شاشتك الرئيسية للوصول الأسرع إلى محفظتك." - }, - "step2": { - "title": "إنشاء أو استيراد محفظة", - "description": "أنشئ محفظة جديدة أو استورد واحدة موجودة بالفعل." - }, - "step3": { - "title": "اضغط على أيقونة الرمز الاستجابة السريعة وامسحها", - "description": "اضغط على أيقونة QR على الشاشة الرئيسية، قراءة الرمز وتأكيد الرسالة الموجهة للاتصال." - } - } - }, - "bloom": { - "desktop": { - "step1": { - "title": "افتح تطبيق محفظة Bloom", - "description": "نوصي بوضع محفظة Bloom على الشاشة الرئيسية للوصول الأسرع." - }, - "step2": { - "description": "أنشئ أو استورد محفظة باستخدام عبارة الاستعادة الخاصة بك.", - "title": "إنشاء أو استيراد محفظة" - }, - "step3": { - "description": "بعد حصولك على محفظة، انقر على Connect للاتصال عبر Bloom. ستظهر رسالة مطالبة بالاتصال في التطبيق لتأكيد الاتصال.", - "title": "انقر على Connect" - } - } - }, - "bybit": { - "qr_code": { - "step1": { - "description": "نوصي بوضع Bybit على شاشتك الرئيسية للوصول الأسرع إلى محفظتك.", - "title": "افتح تطبيق Bybit" - }, - "step2": { - "description": "يمكنك بسهولة نسخ محفظتك الاحتياطي باستخدام ميزة النسخ الاحتياطي على هاتفك.", - "title": "إنشاء أو استيراد محفظة" - }, - "step3": { - "description": "بعد الفحص، سيظهر لك موجه الاتصال لتوصيل المحفظة الخاصة بك.", - "title": "اضغط على زر المسح" - } - }, - "extension": { - "step1": { - "description": "انقر في أعلى يمين المتصفح وثبت محفظة Bybit للوصول السهل.", - "title": "قم بتثبيت امتداد محفظة Bybit" - }, - "step2": { - "description": "أنشئ محفظة جديدة أو استورد واحدة موجودة بالفعل.", - "title": "أنشئ محفظة أو استورد محفظة" - }, - "step3": { - "description": "بعد إعداد محفظة Bybit، انقر أدناه لتحديث المتصفح وتحميل الامتداد.", - "title": "قم بتحديث متصفحك" - } - } - }, - "binance": { - "qr_code": { - "step1": { - "description": "نوصي بوضع Binance على الشاشة الرئيسية للوصول السريع إلى محفظتك.", - "title": "افتح تطبيق Binance" - }, - "step2": { - "description": "يمكنك بسهولة نسخ محفظتك الاحتياطي باستخدام ميزة النسخ الاحتياطي على هاتفك.", - "title": "إنشاء أو استيراد محفظة" - }, - "step3": { - "description": "بعد الفحص، سيظهر لك موجه الاتصال لتوصيل المحفظة الخاصة بك.", - "title": "اضغط على زر WalletConnect" - } - } - }, - "coin98": { - "qr_code": { - "step1": { - "description": "نوصي بوضع محفظة Coin98 على الشاشة الرئيسية لسرعة الوصول إلى محفظتك.", - "title": "افتح تطبيق محفظة Coin98" - }, - "step2": { - "description": "يمكنك بسهولة نسخ محفظتك الاحتياطي باستخدام ميزة النسخ الاحتياطي على هاتفك.", - "title": "إنشاء أو استيراد محفظة" - }, - "step3": { - "description": "بعد الفحص، ستظهر لك مطالبة بالاتصال لتوصيل محفظتك.", - "title": "اضغط على زر WalletConnect" - } - }, - "extension": { - "step1": { - "description": "انقر في الجزء العلوي الأيمن من المتصفح وثبت Coin98 Wallet لسهولة الوصول.", - "title": "قم بتثبيت امتداد Coin98 Wallet" - }, - "step2": { - "description": "أنشئ محفظة جديدة أو استورد واحدة موجودة بالفعل.", - "title": "أنشئ محفظة أو استورد محفظة" - }, - "step3": { - "description": "بمجرد إعداد Coin98 Wallet ، انقر أدناه لتحديث المتصفح وتحميل الامتداد.", - "title": "تحديث المتصفح الخاص بك" - } - } - }, - "coinbase": { - "qr_code": { - "step1": { - "description": "نوصي بوضع Coinbase Wallet على الشاشة الرئيسية لسهولة الوصول.", - "title": "افتح تطبيق Coinbase Wallet" - }, - "step2": { - "description": "يمكنك بسهولة النسخ الاحتياطي لمحفظتك باستخدام ميزة النسخ الاحتياطي السحابي.", - "title": "إنشاء أو استيراد محفظة" - }, - "step3": { - "description": "بعد الفحص، ستظهر لك مطالبة بالاتصال لتوصيل محفظتك.", - "title": "اضغط على زر الفحص" - } - }, - "extension": { - "step1": { - "description": "نوصي بتثبيت محفظة Coinbase على شريط المهام الخاص بك للوصول الأسرع إلى محفظتك.", - "title": "تثبيت امتداد محفظة Coinbase" - }, - "step2": { - "description": "تأكد من النسخ الاحتياطي لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أي شخص.", - "title": "إنشاء أو استيراد المحفظة" - }, - "step3": { - "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الإضافة.", - "title": "تحديث المتصفح الخاص بك" - } - } - }, - "compass": { - "extension": { - "step1": { - "description": "نوصي بتثبيت محفظة Compass على شريط المهام للوصول الأسرع إلى محفظتك.", - "title": "تثبيت امتداد محفظة Compass" - }, - "step2": { - "description": "تأكد من عمل نسخة احتياطية لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أحد.", - "title": "إنشاء أو استيراد محفظة" - }, - "step3": { - "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الامتداد.", - "title": "قم بتحديث متصفحك" - } - } - }, - "core": { - "qr_code": { - "step1": { - "description": "نوصي بوضع Core على الشاشة الرئيسية للوصول السريع إلى محفظتك.", - "title": "افتح تطبيق Core" - }, - "step2": { - "description": "يمكنك بسهولة النسخ الاحتياطي لمحفظتك باستخدام ميزة النسخ الاحتياطي على هاتفك.", - "title": "إنشاء أو استيراد المحفظة" - }, - "step3": { - "description": "بعد الفحص، سيظهر لك موجه الاتصال لتوصيل محفظتك.", - "title": "اضغط على زر WalletConnect" - } - }, - "extension": { - "step1": { - "description": "نوصي بتثبيت Core على شريط المهام الخاص بك للوصول الأسرع إلى محفظتك.", - "title": "قم بتثبيت امتداد Core" - }, - "step2": { - "description": "تأكد من عمل نسخة احتياطية لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أي شخص.", - "title": "إنشاء أو استيراد محفظة" - }, - "step3": { - "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الامتداد.", - "title": "تحديث متصفحك" - } - } - }, - "fox": { - "qr_code": { - "step1": { - "description": "نوصي بوضع FoxWallet على شاشتك الرئيسية للوصول الأسرع.", - "title": "افتح تطبيق FoxWallet" - }, - "step2": { - "description": "تأكد من الاحتفاظ بنسخة احتياطية من محفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أي شخص.", - "title": "إنشاء محفظة أو استيراد محفظة" - }, - "step3": { - "description": "بعد الفحص، ستظهر لك موجه الاتصال لتتمكن من اتصال محفظتك.", - "title": "اضغط على زر الفحص" - } - } - }, - "frontier": { - "qr_code": { - "step1": { - "description": "نوصي بوضع Frontier Wallet على شاشتك الرئيسية للوصول الأسرع.", - "title": "افتح تطبيق Frontier Wallet" - }, - "step2": { - "description": "تأكد من نسخ محفظتك احتياطيا باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أي شخص.", - "title": "إنشاء أو استيراد محفظة" - }, - "step3": { - "description": "بعد الفحص، ستظهر لك موجه الاتصال لربط محفظتك.", - "title": "اضغط على زر الفحص" - } - }, - "extension": { - "step1": { - "description": "نوصي بتثبيت محفظة Frontier على شريط المهام للوصول الأسرع إلى محفظتك.", - "title": "تثبيت امتداد محفظة Frontier" - }, - "step2": { - "description": "تأكد من نسخ محفظتك احتياطيا باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أي شخص.", - "title": "إنشاء أو استيراد محفظة" - }, - "step3": { - "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الإضافة.", - "title": "قم بتحديث المتصفح الخاص بك" - } - } - }, - "im_token": { - "qr_code": { - "step1": { - "title": "افتح تطبيق imToken", - "description": "ضع تطبيق imToken على الشاشة الرئيسية للوصول الأسرع إلى محفظتك." - }, - "step2": { - "title": "إنشاء أو استيراد محفظة", - "description": "قم بإنشاء محفظة جديدة أو استيراد واحدة موجودة." - }, - "step3": { - "title": "اضغط على أيقونة الماسح الضوئي في الزاوية العليا اليمنى", - "description": "اختر الاتصال الجديد، ثم امسح الرمز الشريطي وأكد الموجه للاتصال." - } - } - }, - "iopay": { - "qr_code": { - "step1": { - "description": "نوصي بوضع ioPay على الشاشة الرئيسية للوصول السريع إلى محفظتك.", - "title": "افتح تطبيق ioPay" - }, - "step2": { - "description": "يمكنك بسهولة نسخ محفظتك الاحتياطي باستخدام ميزة النسخ الاحتياطي على هاتفك.", - "title": "إنشاء أو استيراد محفظة" - }, - "step3": { - "description": "بعد الفحص، سيظهر لك موجه الاتصال لتوصيل المحفظة الخاصة بك.", - "title": "اضغط على زر WalletConnect" - } - } - }, - "kaikas": { - "extension": { - "step1": { - "description": "نوصي بتثبيت Kaikas على شريط المهام للوصول الأسرع إلى محفظتك.", - "title": "قم بتثبيت امتداد Kaikas" - }, - "step2": { - "description": "تأكد من عمل نسخة احتياطية لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أحد.", - "title": "إنشاء أو استيراد محفظة" - }, - "step3": { - "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الامتداد.", - "title": "قم بتحديث متصفحك" - } - }, - "qr_code": { - "step1": { - "title": "افتح تطبيق Kaikas", - "description": "ضع تطبيق Kaikas على شاشتك الرئيسية للوصول الأسرع إلى محفظتك." - }, - "step2": { - "title": "إنشاء أو استيراد محفظة", - "description": "أنشئ محفظة جديدة أو استورد واحدة موجودة بالفعل." - }, - "step3": { - "title": "اضغط على أيقونة الماسح الضوئي في الزاوية العليا اليمنى", - "description": "اختر الاتصال الجديد، ثم امسح الرمز الشريطي وأكد الموجه للاتصال." - } - } - }, - "kaia": { - "extension": { - "step1": { - "description": "نوصي بتثبيت Kaia على شريط المهام الخاص بك للوصول الأسرع إلى محفظتك.", - "title": "قم بتثبيت إضافة Kaia" - }, - "step2": { - "description": "تأكد من عمل نسخة احتياطية لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أحد.", - "title": "إنشاء أو استيراد محفظة" - }, - "step3": { - "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الامتداد.", - "title": "قم بتحديث متصفحك" - } - }, - "qr_code": { - "step1": { - "title": "افتح تطبيق Kaia", - "description": "ضع تطبيق Kaia على الشاشة الرئيسية للوصول الأسرع إلى محفظتك." - }, - "step2": { - "title": "إنشاء أو استيراد محفظة", - "description": "أنشئ محفظة جديدة أو استورد واحدة موجودة بالفعل." - }, - "step3": { - "title": "اضغط على أيقونة الماسح الضوئي في الزاوية العليا اليمنى", - "description": "اختر الاتصال الجديد، ثم امسح الرمز الشريطي وأكد الموجه للاتصال." - } - } - }, - "kraken": { - "qr_code": { - "step1": { - "title": "افتح تطبيق محفظة Kraken", - "description": "أضف محفظة Kraken إلى شاشتك الرئيسية للوصول الأسرع إلى محفظتك." - }, - "step2": { - "title": "إنشاء أو استيراد محفظة", - "description": "أنشئ محفظة جديدة أو استورد واحدة موجودة بالفعل." - }, - "step3": { - "title": "اضغط على أيقونة الرمز الاستجابة السريعة وامسحها", - "description": "اضغط على أيقونة QR على الشاشة الرئيسية، قراءة الرمز وتأكيد الرسالة الموجهة للاتصال." - } - } - }, - "kresus": { - "qr_code": { - "step1": { - "title": "افتح تطبيق محفظة Kresus", - "description": "أضف محفظة Kresus إلى الشاشة الرئيسية للوصول الأسرع إلى محفظتك." - }, - "step2": { - "title": "إنشاء أو استيراد محفظة", - "description": "أنشئ محفظة جديدة أو استورد واحدة موجودة بالفعل." - }, - "step3": { - "title": "اضغط على أيقونة الرمز الاستجابة السريعة وامسحها", - "description": "اضغط على أيقونة QR على الشاشة الرئيسية، قراءة الرمز وتأكيد الرسالة الموجهة للاتصال." - } - } - }, - "magicEden": { - "extension": { - "step1": { - "title": "قم بتثبيت إضافة Magic Eden", - "description": "نوصي بتثبيت Magic Eden على شريط المهام للوصول الأسهل إلى محفظتك." - }, - "step2": { - "title": "إنشاء أو استيراد محفظة", - "description": "تأكد من نسخ محفظتك احتياطيًا باستخدام طريقة آمنة. لا تشارك عبارة الاستعادة السرية الخاصة بك مع أي شخص." - }, - "step3": { - "title": "قم بتحديث متصفحك", - "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الامتداد." - } - } - }, - "metamask": { - "qr_code": { - "step1": { - "title": "افتح تطبيق MetaMask", - "description": "نوصي بوضع MetaMask على الشاشة الرئيسية لديك للوصول بشكل أسرع." - }, - "step2": { - "title": "إنشاء أو استيراد محفظة", - "description": "تأكد من نسخ الحفاظ على محفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أي شخص." - }, - "step3": { - "title": "اضغط على زر المسح", - "description": "بعد الفحص، ستظهر لك موجه اتصال لتوصيل محفظتك." - } - }, - "extension": { - "step1": { - "title": "قم بتثبيت امتداد MetaMask", - "description": "نوصي بتثبيت MetaMask في شريط المهام للوصول الأسرع إلى محفظتك." - }, - "step2": { - "title": "إنشاء أو استيراد محفظة", - "description": "تأكد من نسخ احتياطي لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أي شخص." - }, - "step3": { - "title": "تحديث متصفحك", - "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الامتداد." - } - } - }, - "nestwallet": { - "extension": { - "step1": { - "title": "قم بتثبيت امتداد NestWallet", - "description": "نوصي بتثبيت NestWallet على شريط المهام للوصول السريع إلى محفظتك." - }, - "step2": { - "title": "إنشاء أو استيراد محفظة", - "description": "تأكد من عمل نسخة احتياطية لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أحد." - }, - "step3": { - "title": "قم بتحديث متصفحك", - "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الامتداد." - } - } - }, - "okx": { - "qr_code": { - "step1": { - "title": "افتح تطبيق محفظة OKX", - "description": "نوصي بوضع محفظة OKX على الشاشة الرئيسية للوصول الأسرع." - }, - "step2": { - "title": "إنشاء أو استيراد محفظة", - "description": "تأكد من نسخ احتياطي لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أي شخص." - }, - "step3": { - "title": "اضغط على زر المسح", - "description": "بعد الفحص، ستظهر لك مطالبة بالاتصال لتوصيل محفظتك." - } - }, - "extension": { - "step1": { - "title": "قم بتثبيت امتداد محفظة OKX", - "description": "نوصي بتثبيت محفظة OKX على شريط المهام للوصول الأسرع إلى محفظتك." - }, - "step2": { - "title": "إنشاء أو استيراد محفظة", - "description": "تأكد من حفظ نسخة احتياطية من محفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أي شخص." - }, - "step3": { - "title": "قم بتحديث المتصفح الخاص بك", - "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الإضافة." - } - } - }, - "omni": { - "qr_code": { - "step1": { - "title": "افتح تطبيق Omni", - "description": "أضف Omni إلى شاشتك الرئيسية للوصول الأسرع إلى محفظتك." - }, - "step2": { - "title": "إنشاء أو استيراد محفظة", - "description": "إنشاء محفظة جديدة أو استيراد واحدة موجودة." - }, - "step3": { - "title": "اضغط على أيقونة الرمز الاستجابة السريعة وامسحها", - "description": "اضغط على الرمز QR على الشاشة الرئيسية الخاصة بك، امسح الرمز وأكد الموافقة للاتصال." - } - } - }, - "1inch": { - "qr_code": { - "step1": { - "description": "ضع محفظة 1inch على شاشتك الرئيسية للوصول الأسرع إلى محفظتك.", - "title": "افتح تطبيق محفظة 1inch" - }, - "step2": { - "description": "أنشئ محفظة واسم مستخدم، أو استورد محفظة موجودة بالفعل.", - "title": "إنشاء أو استيراد محفظة" - }, - "step3": { - "description": "بعد الفحص، سيظهر لك موجه الاتصال لتوصيل المحفظة الخاصة بك.", - "title": "اضغط على زر فحص الكود الشريطي" - } - } - }, - "token_pocket": { - "qr_code": { - "step1": { - "title": "افتح تطبيق TokenPocket", - "description": "نوصي بوضع TokenPocket على الشاشة الرئيسية للوصول السريع." - }, - "step2": { - "title": "إنشاء أو استيراد محفظة", - "description": "تأكد من نسخ احتياطي لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أي شخص." - }, - "step3": { - "title": "اضغط على زر المسح", - "description": "بعد الفحص، ستظهر لك رسالة موجهة للاتصال بمحفظتك." - } - }, - "extension": { - "step1": { - "title": "قم بتثبيت امتداد TokenPocket", - "description": "نوصي بتثبيت TokenPocket على شريط المهام الخاص بك للوصول الأسرع إلى محفظتك." - }, - "step2": { - "title": "قم بإنشاء محفظة أو استيراد محفظة", - "description": "تأكد من الاحتفاظ بنسخة احتياطية من محفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أي شخص." - }, - "step3": { - "title": "قم بتحديث المتصفح الخاص بك", - "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الإضافة." - } - } - }, - "trust": { - "qr_code": { - "step1": { - "title": "افتح تطبيق Trust Wallet", - "description": "ضع Trust Wallet على الشاشة الرئيسية للوصول السريع إلى محفظتك." - }, - "step2": { - "title": "أنشئ محفظة أو استورد محفظة", - "description": "أنشئ محفظة جديدة أو استورد واحدة موجودة." - }, - "step3": { - "title": "اضغط على WalletConnect في الإعدادات", - "description": "اختر الاتصال الجديد، ثم امسح الرمز الشريطي QR وأكد الموجه للاتصال." - } - }, - "extension": { - "step1": { - "title": "قم بتثبيت امتداد Trust Wallet", - "description": "انقر في الجزء العلوي الأيمن من المتصفح وثبت Trust Wallet للوصول بسهولة." - }, - "step2": { - "title": "أنشئ محفظة أو استورد محفظة", - "description": "أنشئ محفظة جديدة أو استورد واحدة موجودة." - }, - "step3": { - "title": "قم بتحديث متصفحك", - "description": "بمجرد إعداد Trust Wallet، انقر أدناه لتحديث المتصفح وتحميل الإضافة." - } - } - }, - "uniswap": { - "qr_code": { - "step1": { - "title": "افتح تطبيق Uniswap", - "description": "أضف محفظة Uniswap إلى شاشة الرئيسية للوصول الأسرع إلى محفظتك." - }, - "step2": { - "title": "إنشاء أو استيراد محفظة", - "description": "قم بإنشاء محفظة جديدة أو استيراد واحدة موجودة." - }, - "step3": { - "title": "اضغط على الأيقونة QR واقرأ الرمز", - "description": "اضغط على أيقونة QR على الشاشة الرئيسية، قراءة الرمز وتأكيد الرسالة الموجهة للاتصال." - } - } - }, - "zerion": { - "qr_code": { - "step1": { - "title": "افتح تطبيق Zerion", - "description": "نوصي بوضع Zerion على شاشتك الرئيسية للوصول الأسرع." - }, - "step2": { - "title": "إنشاء أو استيراد محفظة", - "description": "تأكد من حفظ نسخة احتياطية من محفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أي شخص." - }, - "step3": { - "title": "اضغط على زر المسح", - "description": "بعد المسح، سوف يظهر لك نافذة الاتصال لتوصيل محفظتك." - } - }, - "extension": { - "step1": { - "title": "تثبيت امتداد Zerion", - "description": "نوصي بتثبيت Zerion على شريط المهام الخاص بك للوصول الأسرع إلى محفظتك." - }, - "step2": { - "title": "إنشاء أو استيراد محفظة", - "description": "تأكد من الاحتفاظ بنسخة احتياطية من محفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أي شخص." - }, - "step3": { - "title": "قم بتحديث المتصفح الخاص بك", - "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الإضافة." - } - } - }, - "rainbow": { - "qr_code": { - "step1": { - "title": "افتح تطبيق Rainbow", - "description": "نوصي بوضع Rainbow على شاشة البداية للوصول الأسرع إلى محفظتك." - }, - "step2": { - "title": "إنشاء محفظة أو استيراد محفظة", - "description": "يمكنك عمل نسخة احتياطية بسهولة لمحفظتك باستخدام ميزة النسخ الاحتياطي على هاتفك." - }, - "step3": { - "title": "اضغط على الزر الماسح الضوئي", - "description": "بعد الفحص، سيظهر لك موجه اتصال لربط محفظتك." - } - } - }, - "enkrypt": { - "extension": { - "step1": { - "description": "نوصي بتثبيت محفظة Enkrypt على شريط المهام الخاص بك للوصول الأسرع إلى محفظتك.", - "title": "تثبيت امتداد محفظة Enkrypt" - }, - "step2": { - "description": "تأكد من عمل نسخة احتياطية لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أي شخص.", - "title": "أنشئ أو استورد محفظة" - }, - "step3": { - "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الإضافة.", - "title": "حدث المتصفح الخاص بك" - } - } - }, - "frame": { - "extension": { - "step1": { - "description": "نوصي بتعليق Frame على شريط المهام للوصول السريع إلى محفظتك.", - "title": "ثبت Frame والإضافة المصاحبة" - }, - "step2": { - "description": "تأكد من النسخ الاحتياطي لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أي شخص.", - "title": "أنشئ أو استورد محفظة" - }, - "step3": { - "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الإضافة.", - "title": "حدث المتصفح الخاص بك" - } - } - }, - "one_key": { - "extension": { - "step1": { - "title": "قم بتثبيت امتداد محفظة OneKey", - "description": "نوصي بتثبيت محفظة OneKey على شريط المهام للوصول السريع إلى محفظتك." - }, - "step2": { - "title": "إنشاء أو استيراد محفظة", - "description": "تأكد من نسخ احتياطي لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أي شخص." - }, - "step3": { - "title": "تحديث المتصفح الخاص بك", - "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الامتداد." - } - } - }, - "paraswap": { - "qr_code": { - "step1": { - "title": "افتح تطبيق ParaSwap", - "description": "أضف محفظة ParaSwap إلى شاشتك الرئيسية للوصول الأسرع إلى محفظتك." - }, - "step2": { - "title": "إنشاء أو استيراد محفظة", - "description": "أنشئ محفظة جديدة أو استورد واحدة موجودة بالفعل." - }, - "step3": { - "title": "اضغط على أيقونة الرمز الاستجابة السريعة وامسحها", - "description": "اضغط على أيقونة QR على الشاشة الرئيسية، قراءة الرمز وتأكيد الرسالة الموجهة للاتصال." - } - } - }, - "phantom": { - "extension": { - "step1": { - "title": "قم بتثبيت امتداد Phantom", - "description": "نوصي بتثبيت Phantom على شريط المهام للوصول الأسهل إلى محفظتك." - }, - "step2": { - "title": "إنشاء أو استيراد محفظة", - "description": "تأكد من نسخ محفظتك احتياطيًا باستخدام طريقة آمنة. لا تشارك عبارة الاستعادة السرية الخاصة بك مع أي شخص." - }, - "step3": { - "title": "قم بتحديث المتصفح", - "description": "بمجرد إعداد المحفظة، انقر أدناه لتحديث المتصفح وتحميل الإضافة." - } - } - }, - "rabby": { - "extension": { - "step1": { - "title": "ثبت امتداد Rabby", - "description": "نوصي بتثبيت Rabby على شريط المهام للوصول الأسرع إلى محفظتك." - }, - "step2": { - "title": "أنشئ محفظة أو استورد محفظة", - "description": "تأكد من نسخ محفظتك احتياطيًا باستخدام طريقة آمنة. لا تشارك العبارة السرية مع أي شخص." - }, - "step3": { - "title": "قم بتحديث المتصفح", - "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الإضافة." - } - } - }, - "ronin": { - "qr_code": { - "step1": { - "description": "نوصي بوضع محفظة Ronin على الشاشة الرئيسية للوصول الأسرع.", - "title": "افتح تطبيق محفظة Ronin" - }, - "step2": { - "description": "تأكد من عمل نسخة احتياطية لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أحد.", - "title": "إنشاء أو استيراد محفظة" - }, - "step3": { - "description": "بعد الفحص، سيظهر لك موجه الاتصال لتوصيل المحفظة الخاصة بك.", - "title": "اضغط على زر المسح" - } - }, - "extension": { - "step1": { - "description": "نوصي بتثبيت محفظة Ronin على شريط المهام للوصول الأسرع إلى محفظتك.", - "title": "ثبّت امتداد محفظة Ronin" - }, - "step2": { - "description": "تأكد من عمل نسخة احتياطية لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أحد.", - "title": "إنشاء أو استيراد محفظة" - }, - "step3": { - "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الامتداد.", - "title": "قم بتحديث متصفحك" - } - } - }, - "ramper": { - "extension": { - "step1": { - "title": "ثبّت امتداد Ramper", - "description": "نوصي بتثبيت Ramper على شريط المهام لسهولة الوصول إلى محفظتك." - }, - "step2": { - "title": "إنشاء محفظة", - "description": "تأكد من عمل نسخة احتياطية لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أحد." - }, - "step3": { - "title": "قم بتحديث متصفحك", - "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الامتداد." - } - } - }, - "safeheron": { - "extension": { - "step1": { - "title": "قم بتثبيت إضافة النواة", - "description": "نوصي بتثبيت Safeheron على شريط المهام الخاص بك للوصول السريع إلى محفظتك." - }, - "step2": { - "title": "إنشاء أو استيراد محفظة", - "description": "تأكد من نسخ محفظتك بطريقة آمنة. لا تشارك عبارتك السرية مع أي شخص." - }, - "step3": { - "title": "تحديث المتصفح الخاص بك", - "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الإضافة." - } - } - }, - "taho": { - "extension": { - "step1": { - "title": "تثبيت إضافة Taho", - "description": "نوصي بتثبيت Taho على شريط المهام الخاص بك للوصول الأسرع إلى محفظتك." - }, - "step2": { - "title": "إنشاء محفظة أو استيراد محفظة", - "description": "تأكد من النسخ الاحتياطي لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أي شخص." - }, - "step3": { - "title": "تحديث المتصفح الخاص بك", - "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الإضافة." - } - } - }, - "wigwam": { - "extension": { - "step1": { - "title": "قم بتثبيت امتداد Wigwam", - "description": "نوصي بتعليق Wigwam على شريط المهام للوصول السريع إلى محفظتك." - }, - "step2": { - "title": "إنشاء أو استيراد محفظة", - "description": "تأكد من عمل نسخة احتياطية لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أحد." - }, - "step3": { - "title": "قم بتحديث متصفحك", - "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الامتداد." - } - } - }, - "talisman": { - "extension": { - "step1": { - "title": "تثبيت إضافة Talisman", - "description": "نوصي بتثبيت Talisman على شريط المهام الخاص بك للوصول الأسرع إلى محفظتك." - }, - "step2": { - "title": "إنشاء محفظة Ethereum أو استيرادها", - "description": "تأكد من النسخ الاحتياطي لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارة الاستعادة الخاصة بك مع أي شخص." - }, - "step3": { - "title": "قم بتحديث المستعرض الخاص بك", - "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المستعرض وتحميل الإضافة." - } - } - }, - "xdefi": { - "extension": { - "step1": { - "title": "قم بتثبيت إضافة XDEFI Wallet", - "description": "نوصي بتثبيت XDEFI Wallet على شريط المهام للوصول الأسرع إلى محفظتك." - }, - "step2": { - "title": "أنشئ محفظة أو استورد محفظة", - "description": "تأكد من النسخ الاحتياطي لمحفظتك باستخدام طريقة آمنة. لا تشارك العبارة السرية الخاصة بك مع أي شخص." - }, - "step3": { - "title": "قم بتحديث المستعرض الخاص بك", - "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الإضافة." - } - } - }, - "zeal": { - "qr_code": { - "step1": { - "title": "افتح تطبيق Zeal", - "description": "أضف محفظة Zeal إلى الشاشة الرئيسية للوصول الأسرع إلى محفظتك." - }, - "step2": { - "title": "إنشاء أو استيراد محفظة", - "description": "أنشئ محفظة جديدة أو استورد واحدة موجودة بالفعل." - }, - "step3": { - "title": "اضغط على أيقونة الرمز الاستجابة السريعة وامسحها", - "description": "اضغط على أيقونة QR على الشاشة الرئيسية، قراءة الرمز وتأكيد الرسالة الموجهة للاتصال." - } - }, - "extension": { - "step1": { - "title": "قم بتثبيت امتداد Zeal", - "description": "نوصي بتثبيت Zeal في شريط المهام الخاص بك للوصول الأسرع إلى محفظتك." - }, - "step2": { - "title": "إنشاء أو استيراد محفظة", - "description": "تأكد من عمل نسخة احتياطية لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أحد." - }, - "step3": { - "title": "قم بتحديث متصفحك", - "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الامتداد." - } - } - }, - "safepal": { - "extension": { - "step1": { - "title": "قم بتثبيت صيغة SafePal Wallet", - "description": "انقر في أعلى يمين المتصفح وثبت صيغة SafePal Wallet لسهولة الوصول." - }, - "step2": { - "title": "أنشئ محفظة أو استورد محفظة", - "description": "أنشئ محفظة جديدة أو استورد واحدة موجودة بالفعل." - }, - "step3": { - "title": "قم بتحديث متصفحك", - "description": "بمجرد إعداد محفظة SafePal، انقر أدناه لتحديث المتصفح وتحميل الإضافة." - } - }, - "qr_code": { - "step1": { - "title": "افتح تطبيق محفظة SafePal", - "description": "ضع محفظة SafePal على شاشة الرئيسية لسهولة الوصول إلى محفظتك." - }, - "step2": { - "title": "إنشاء أو استيراد محفظة", - "description": "أنشئ محفظة جديدة أو استورد واحدة موجودة بالفعل." - }, - "step3": { - "title": "اضغط على WalletConnect في الإعدادات", - "description": "اختر الاتصال الجديد، ثم امسح الرمز الشريطي وأكد الموجه للاتصال." - } - } - }, - "desig": { - "extension": { - "step1": { - "title": "قم بتثبيت إضافة Desig", - "description": "نوصي بتثبيت Desig على شريط المهام الخاص بك للوصول الأسهل إلى محفظتك." - }, - "step2": { - "title": "إنشاء محفظة", - "description": "تأكد من عمل نسخة احتياطية لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أحد." - }, - "step3": { - "title": "قم بتحديث متصفحك", - "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الامتداد." - } - } - }, - "subwallet": { - "extension": { - "step1": { - "title": "قم بتثبيت إضافة SubWallet", - "description": "نوصي بتثبيت SubWallet على شريط المهام الخاص بك للوصول الأسرع إلى محفظتك." - }, - "step2": { - "title": "إنشاء أو استيراد محفظة", - "description": "تأكد من النسخ الاحتياطي لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارة الاستعادة الخاصة بك مع أي شخص." - }, - "step3": { - "title": "قم بتحديث متصفحك", - "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الامتداد." - } - }, - "qr_code": { - "step1": { - "title": "افتح تطبيق SubWallet", - "description": "نوصي بوضع SubWallet على شاشة الرئيسية الخاصة بك للوصول الأسرع." - }, - "step2": { - "title": "إنشاء أو استيراد محفظة", - "description": "تأكد من عمل نسخة احتياطية لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أحد." - }, - "step3": { - "title": "اضغط على زر المسح", - "description": "بعد الفحص، سيظهر لك موجه الاتصال لتوصيل المحفظة الخاصة بك." - } - } - }, - "clv": { - "extension": { - "step1": { - "title": "قم بتثبيت إضافة CLV Wallet", - "description": "نوصي بتثبيت CLV Wallet على شريط المهام الخاص بك للوصول الأسرع إلى محفظتك." - }, - "step2": { - "title": "إنشاء أو استيراد محفظة", - "description": "تأكد من عمل نسخة احتياطية لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أحد." - }, - "step3": { - "title": "قم بتحديث متصفحك", - "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الامتداد." - } - }, - "qr_code": { - "step1": { - "title": "افتح تطبيق محفظة CLV", - "description": "نوصي بوضع محفظة CLV على الشاشة الرئيسية للوصول الأسرع." - }, - "step2": { - "title": "إنشاء أو استيراد محفظة", - "description": "تأكد من عمل نسخة احتياطية لمحفظتك باستخدام طريقة آمنة. لا تشارك عبارتك السرية مع أحد." - }, - "step3": { - "title": "اضغط على زر المسح", - "description": "بعد الفحص، سيظهر لك موجه الاتصال لتوصيل المحفظة الخاصة بك." - } - } - }, - "okto": { - "qr_code": { - "step1": { - "title": "افتح تطبيق Okto", - "description": "أضف Okto إلى الشاشة الرئيسية للوصول السريع" - }, - "step2": { - "title": "أنشئ محفظة MPC", - "description": "أنشئ حسابًا وقم بإنشاء محفظة" - }, - "step3": { - "title": "اضغط على WalletConnect في الإعدادات", - "description": "اضغط على أيقونة فحص الشاشة في الجهة العليا اليمنى وأكد الإدخال للاتصال." - } - } - }, - "ledger": { - "desktop": { - "step1": { - "title": "افتح تطبيق Ledger Live", - "description": "نوصي بوضع Ledger Live على شاشة الرئيسية لديك لسرعة الوصول." - }, - "step2": { - "title": "قم بإعداد Ledger الخاص بك", - "description": "قم بإعداد Ledger جديد أو قم بالاتصال بواحد موجود ." - }, - "step3": { - "title": "اتصل", - "description": "بعد المسح، سوف يظهر لك نافذة الاتصال لتوصيل محفظتك." - } - }, - "qr_code": { - "step1": { - "title": "افتح تطبيق Ledger Live", - "description": "نوصي بوضع Ledger Live على شاشة الرئيسية لديك لسرعة الوصول." - }, - "step2": { - "title": "قم بإعداد Ledger الخاص بك", - "description": "يمكنك إما المزامنة مع تطبيق سطح المكتب أو توصيل Ledger الخاص بك." - }, - "step3": { - "title": "مسح الرمز", - "description": "اضغط على WalletConnect ثم انتقل إلى الفحص. بعد المسح، سوف يظهر لك نافذة الاتصال لتوصيل محفظتك." - } - } - }, - "valora": { - "qr_code": { - "step1": { - "title": "افتح تطبيق Valora", - "description": "نوصي بوضع Valora على شاشتك الرئيسية للوصول الأسرع." - }, - "step2": { - "title": "أنشئ محفظة أو استورد محفظة", - "description": "أنشئ محفظة جديدة أو استورد واحدة موجودة بالفعل." - }, - "step3": { - "title": "اضغط على زر المسح", - "description": "بعد الفحص، سيظهر لك موجه الاتصال لتوصيل المحفظة الخاصة بك." - } - } - }, - "gate": { - "qr_code": { - "step1": { - "title": "افتح تطبيق Gate", - "description": "نوصي بوضع Gate على شاشتك الرئيسية للوصول الأسرع." - }, - "step2": { - "title": "إنشاء أو استيراد محفظة", - "description": "أنشئ محفظة جديدة أو استورد واحدة موجودة بالفعل." - }, - "step3": { - "title": "اضغط على زر المسح", - "description": "بعد الفحص، سيظهر لك موجه الاتصال لتوصيل المحفظة الخاصة بك." - } - }, - "extension": { - "step1": { - "title": "تثبيت إضافة Gate", - "description": "نوصي بتثبيت Gate على شريط المهام للوصول الأسهل إلى محفظتك." - }, - "step2": { - "title": "إنشاء أو استيراد محفظة", - "description": "تأكد من نسخ محفظتك احتياطيًا باستخدام طريقة آمنة. لا تشارك عبارة الاستعادة السرية الخاصة بك مع أي شخص." - }, - "step3": { - "title": "قم بتحديث متصفحك", - "description": "بمجرد إعداد محفظتك، انقر أدناه لتحديث المتصفح وتحميل الامتداد." - } - } - }, - "xportal": { - "qr_code": { - "step1": { - "description": "ضع xPortal على شاشتك الرئيسية للوصول السريع إلى محفظتك.", - "title": "افتح تطبيق xPortal" - }, - "step2": { - "description": "أنشئ محفظة أو استورد واحدة موجودة بالفعل.", - "title": "إنشاء أو استيراد محفظة" - }, - "step3": { - "description": "بعد الفحص، سيظهر لك موجه الاتصال لتوصيل المحفظة الخاصة بك.", - "title": "اضغط على زر فحص الكود الشريطي" - } - } - }, - "mew": { - "qr_code": { - "step1": { - "description": "نوصي بوضع محفظة MEW على الشاشة الرئيسية للوصول الأسرع.", - "title": "افتح تطبيق محفظة MEW" - }, - "step2": { - "description": "يمكنك بسهولة النسخ الاحتياطي لمحفظتك باستخدام ميزة النسخ الاحتياطي السحابي.", - "title": "إنشاء أو استيراد محفظة" - }, - "step3": { - "description": "بعد الفحص، سيظهر لك موجه الاتصال لتوصيل المحفظة الخاصة بك.", - "title": "اضغط على زر المسح" - } - } - } - }, - "zilpay": { - "qr_code": { - "step1": { - "title": "افتح تطبيق ZilPay", - "description": "أضف ZilPay إلى شاشتك الرئيسية للوصول الأسرع إلى محفظتك." - }, - "step2": { - "title": "إنشاء أو استيراد محفظة", - "description": "أنشئ محفظة جديدة أو استورد واحدة موجودة بالفعل." - }, - "step3": { - "title": "اضغط على زر المسح", - "description": "بعد الفحص، سيظهر لك موجه الاتصال لتوصيل المحفظة الخاصة بك." - } - } - } -} -`;export{u as default}; diff --git a/client2/build/assets/arbitrum-WURIBY6W-CqVkHBr5.js b/client2/build/assets/arbitrum-WURIBY6W-CqVkHBr5.js deleted file mode 100644 index 93b4e058b..000000000 --- a/client2/build/assets/arbitrum-WURIBY6W-CqVkHBr5.js +++ /dev/null @@ -1 +0,0 @@ -var l="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2028%2028%22%3E%3Cg%20transform%3D%22translate(0%2C0)%20scale(0.7)%22%3E%3Cg%20clip-path%3D%22url(%23a)%22%3E%3Cpath%20fill%3D%22%2396BEDC%22%20d%3D%22M0%200h40v40H0z%22%2F%3E%3Cpath%20fill%3D%22url(%23b)%22%20fill-opacity%3D%22.3%22%20d%3D%22M0%200h40v40H0z%22%2F%3E%3Cpath%20fill%3D%22%232D374B%22%20fill-rule%3D%22evenodd%22%20d%3D%22M20%202.5C10.335%202.5%202.5%2010.335%202.5%2020c0%203.293.91%206.373%202.49%209.004L0%2031v9h10v-5.637A17.42%2017.42%200%200%200%2020%2037.5c9.665%200%2017.5-7.835%2017.5-17.5S29.665%202.5%2020%202.5Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cmask%20id%3D%22c%22%20width%3D%2238%22%20height%3D%2238%22%20x%3D%220%22%20y%3D%222%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aalpha%22%3E%3Cpath%20fill%3D%22%232D374B%22%20fill-rule%3D%22evenodd%22%20d%3D%22M20%202.5C10.335%202.5%202.5%2010.335%202.5%2020a17.42%2017.42%200%200%200%203.137%2010H0v10h10v-5.637A17.42%2017.42%200%200%200%2020%2037.5c9.665%200%2017.5-7.835%2017.5-17.5S29.665%202.5%2020%202.5Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3C%2Fmask%3E%3Cg%20mask%3D%22url(%23c)%22%3E%3Cpath%20fill%3D%22%2328A0F0%22%20d%3D%22m26.873%2037.192-6.75-10.615%203.782-6.416%208.672%2013.676-5.704%203.355ZM34.126%2032.79l3.471-5.786-9.238-14.423-3.299%205.596%209.066%2014.613Z%22%2F%3E%3Cpath%20fill%3D%22url(%23d)%22%20fill-opacity%3D%22.2%22%20d%3D%22M0%2020C0%208.954%208.954%200%2020%200s20%208.954%2020%2020-8.954%2020-20%2020H0V20Z%22%2F%3E%3C%2Fg%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22m.52%2040.315-4.387-2.524L-4.2%2036.6l15.267-23.715c1.042-1.702%203.314-2.25%205.422-2.22l2.475.065L.519%2040.315ZM27.38%2010.73l-6.523.024L-2.9%2050%202%2053.5l6.358-10.597%201.402-2.379L27.38%2010.73Z%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22b%22%20x1%3D%220%22%20x2%3D%2220%22%20y1%3D%220%22%20y2%3D%2240%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23fff%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23fff%22%20stop-opacity%3D%220%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22d%22%20x1%3D%220%22%20x2%3D%2220%22%20y1%3D%220%22%20y2%3D%2240%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23fff%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23fff%22%20stop-opacity%3D%220%22%2F%3E%3C%2FlinearGradient%3E%3CclipPath%20id%3D%22a%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M0%200h40v40H0z%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fg%3E%3C%2Fsvg%3E";export{l as default}; diff --git a/client2/build/assets/arrow-bottom-C27Ro7m1.js b/client2/build/assets/arrow-bottom-C27Ro7m1.js deleted file mode 100644 index 0d8d4b33f..000000000 --- a/client2/build/assets/arrow-bottom-C27Ro7m1.js +++ /dev/null @@ -1,8 +0,0 @@ -import{b as o}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const p=o` - -`;export{p as arrowBottomSvg}; diff --git a/client2/build/assets/arrow-bottom-circle-C6jjqlWN.js b/client2/build/assets/arrow-bottom-circle-C6jjqlWN.js deleted file mode 100644 index ddfaaa6b3..000000000 --- a/client2/build/assets/arrow-bottom-circle-C6jjqlWN.js +++ /dev/null @@ -1,11 +0,0 @@ -import{b as o}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const t=o` - `;export{t as arrowBottomCircleSvg}; diff --git a/client2/build/assets/arrow-left-ZbzRg8Y4.js b/client2/build/assets/arrow-left-ZbzRg8Y4.js deleted file mode 100644 index ac34a98f7..000000000 --- a/client2/build/assets/arrow-left-ZbzRg8Y4.js +++ /dev/null @@ -1,8 +0,0 @@ -import{b as o}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const p=o` - -`;export{p as arrowLeftSvg}; diff --git a/client2/build/assets/arrow-right-CeQ3g3Q7.js b/client2/build/assets/arrow-right-CeQ3g3Q7.js deleted file mode 100644 index 67d1e368a..000000000 --- a/client2/build/assets/arrow-right-CeQ3g3Q7.js +++ /dev/null @@ -1,8 +0,0 @@ -import{b as o}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const p=o` - -`;export{p as arrowRightSvg}; diff --git a/client2/build/assets/arrow-top-DnGoeXDc.js b/client2/build/assets/arrow-top-DnGoeXDc.js deleted file mode 100644 index 9e151ba84..000000000 --- a/client2/build/assets/arrow-top-DnGoeXDc.js +++ /dev/null @@ -1,8 +0,0 @@ -import{b as o}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const t=o` - -`;export{t as arrowTopSvg}; diff --git a/client2/build/assets/assets-Q6ZU7ZJ5-P8HioiAD.js b/client2/build/assets/assets-Q6ZU7ZJ5-P8HioiAD.js deleted file mode 100644 index ade80748e..000000000 --- a/client2/build/assets/assets-Q6ZU7ZJ5-P8HioiAD.js +++ /dev/null @@ -1 +0,0 @@ -var h="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2048%2048%22%3E%3Cpath%20fill%3D%22url(%23a)%22%20d%3D%22M1.09%205.46C0%207.6%200%2010.4%200%2016v16c0%205.6%200%208.4%201.09%2010.54a10%2010%200%200%200%204.37%204.37C7.6%2048%2010.4%2048%2016%2048h16c1.752%200%203.23%200%204.5-.033%200-1.362%200-2.044.066-2.616a10%2010%200%200%201%208.785-8.785c.572-.066%201.254-.066%202.616-.066C48%2035.23%2048%2033.752%2048%2032V16c0-5.6%200-8.4-1.09-10.54a10%2010%200%200%200-4.37-4.37C40.4%200%2037.6%200%2032%200H16C10.4%200%207.6%200%205.46%201.09a10%2010%200%200%200-4.37%204.37Z%22%2F%3E%3Cpath%20fill%3D%22url(%23b)%22%20d%3D%22M1.09%205.46C0%207.6%200%2010.4%200%2016v16c0%205.6%200%208.4%201.09%2010.54a10%2010%200%200%200%204.37%204.37C7.6%2048%2010.4%2048%2016%2048h16c1.752%200%203.23%200%204.5-.033%200-1.362%200-2.044.066-2.616a10%2010%200%200%201%208.785-8.785c.572-.066%201.254-.066%202.616-.066C48%2035.23%2048%2033.752%2048%2032V16c0-5.6%200-8.4-1.09-10.54a10%2010%200%200%200-4.37-4.37C40.4%200%2037.6%200%2032%200H16C10.4%200%207.6%200%205.46%201.09a10%2010%200%200%200-4.37%204.37Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.04%22%20fill-rule%3D%22evenodd%22%20d%3D%22M35.5%2035.5h11.486C47%2034.475%2047%2033.32%2047%2032V16c0-2.817%200-4.87-.133-6.487-.131-1.605-.387-2.694-.848-3.599a9%209%200%200%200-3.933-3.933c-.905-.461-1.994-.717-3.6-.848C36.87%201%2034.816%201%2032%201H16c-2.817%200-4.87%200-6.487.133-1.605.131-2.694.387-3.599.848a9%209%200%200%200-3.933%203.933c-.461.905-.717%201.994-.848%203.6C1%2011.13%201%2013.183%201%2016v16c0%202.817%200%204.87.133%206.486.131%201.606.387%202.695.848%203.6a9%209%200%200%200%203.933%203.933c.905.461%201.994.717%203.6.848C11.13%2047%2013.183%2047%2016%2047h16c1.32%200%202.475%200%203.5-.014V35.5Zm1%2012.467C35.23%2048%2033.752%2048%2032%2048H16c-5.6%200-8.4%200-10.54-1.09a10%2010%200%200%201-4.37-4.37C0%2040.4%200%2037.6%200%2032V16c0-5.6%200-8.4%201.09-10.54a10%2010%200%200%201%204.37-4.37C7.6%200%2010.4%200%2016%200h16c5.6%200%208.4%200%2010.54%201.09a10%2010%200%200%201%204.37%204.37C48%207.6%2048%2010.4%2048%2016v16c0%201.752%200%203.23-.033%204.5H36.5v11.467Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.8%22%20d%3D%22M3%2014.2c0-3.92%200-5.88.763-7.378a7%207%200%200%201%203.06-3.059C8.318%203%2010.28%203%2014.2%203h19.6c3.92%200%205.88%200%207.378.763a7%207%200%200%201%203.059%203.06C45%208.318%2045%2010.28%2045%2014.2v19.6c0%203.92%200%205.88-.763%207.378a7%207%200%200%201-3.06%203.059C39.682%2045%2037.72%2045%2033.8%2045H14.2c-3.92%200-5.88%200-7.378-.763a7%207%200%200%201-3.059-3.06C3%2039.682%203%2037.72%203%2033.8V14.2Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22evenodd%22%20d%3D%22M33.8%203.5H14.2c-1.968%200-3.415%200-4.557.094-1.136.093-1.927.275-2.594.614A6.5%206.5%200%200%200%204.21%207.05c-.34.667-.522%201.458-.615%202.594C3.5%2010.785%203.5%2012.232%203.5%2014.2v19.6c0%201.968%200%203.415.094%204.557.093%201.136.275%201.928.614%202.594a6.5%206.5%200%200%200%202.841%202.84c.667.34%201.458.522%202.594.615%201.142.094%202.589.094%204.557.094h19.6c1.968%200%203.415%200%204.557-.094%201.136-.093%201.928-.275%202.594-.614a6.499%206.499%200%200%200%202.84-2.841c.34-.666.522-1.458.615-2.594.094-1.142.094-2.589.094-4.557V14.2c0-1.968%200-3.415-.094-4.557-.093-1.136-.275-1.927-.614-2.594a6.5%206.5%200%200%200-2.841-2.84c-.666-.34-1.458-.522-2.594-.615C37.215%203.5%2035.768%203.5%2033.8%203.5ZM3.763%206.822C3%208.32%203%2010.28%203%2014.2v19.6c0%203.92%200%205.88.763%207.378a7%207%200%200%200%203.06%203.059C8.318%2045%2010.28%2045%2014.2%2045h19.6c3.92%200%205.88%200%207.378-.763a7%207%200%200%200%203.059-3.06C45%2039.682%2045%2037.72%2045%2033.8V14.2c0-3.92%200-5.88-.763-7.378a7%207%200%200%200-3.06-3.059C39.682%203%2037.72%203%2033.8%203H14.2c-3.92%200-5.88%200-7.378.763a7%207%200%200%200-3.059%203.06Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22%23DFD7D5%22%20d%3D%22M25%2013c0-2.8%200-4.2.545-5.27a5%205%200%200%201%202.185-2.185C28.8%205%2030.2%205%2033%205h2c2.8%200%204.2%200%205.27.545a5%205%200%200%201%202.185%202.185C43%208.8%2043%2010.2%2043%2013v2c0%202.8%200%204.2-.545%205.27a5%205%200%200%201-2.185%202.185C39.2%2023%2037.8%2023%2035%2023h-2c-2.8%200-4.2%200-5.27-.545a5%205%200%200%201-2.185-2.185C25%2019.2%2025%2017.8%2025%2015v-2Z%22%2F%3E%3Cpath%20fill%3D%22%23E1D7D5%22%20d%3D%22M38%205h-8a5%205%200%200%200-5%205v8a5%205%200%200%200%205%205h8a5%205%200%200%200%205-5v-8a5%205%200%200%200-5-5Z%22%2F%3E%3Cpath%20fill%3D%22%23D22209%22%20d%3D%22M37.938%2016.813h-7.876v.562h7.875v-.563Zm0%20.562h-7.876v.563h7.875v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D22209%22%20d%3D%22M37.938%2017.938h-7.876v.562h7.875v-.563Zm0%20.562h-7.876v.563h7.875V18.5Z%22%2F%3E%3Cpath%20fill%3D%22%23D22209%22%20d%3D%22M31.188%2019.063h-1.125v.562h1.125v-.563Zm6.75%200H31.75v.562h6.188v-.563Zm-6.75.562h-1.125v.563h1.125v-.563Zm6.75%200H31.75v.563h6.188v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D22209%22%20d%3D%22M31.188%2020.188h-1.125v.562h1.125v-.563Zm6.75%200H31.75v.562h6.188v-.563Zm-6.75.562h-1.125v.563h1.125v-.563Zm6.75%200H31.75v.563h6.188v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D22209%22%20d%3D%22M31.188%2021.313h-1.125v.562h1.125v-.563Zm6.75%200H31.75v.562h6.188v-.563Zm-6.75.562h-1.125v.563h1.125v-.563Zm6.75%200H31.75v.563h6.188v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D22209%22%20d%3D%22M31.188%2022.438h-1.125V23h1.125v-.563Zm6.75%200H31.75V23h6.188v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M32.875%2017.938h-.563v.562h.563v-.563Zm2.25%200H34v.562h1.125v-.563Zm1.125%200h-.563v.562h.563v-.563Zm-3.375.562h-.563v.563h.563V18.5Zm2.25%200H34v.563h1.125V18.5Zm1.125%200h-.563v.563h.563V18.5Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M33.438%2019.063h-1.126v.562h1.126v-.563Zm1.687%200H34v.562h1.125v-.563Zm1.688%200h-1.126v.562h1.126v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23C16710%22%20d%3D%22M33.438%208.375h-.563v.563h.563v-.563Zm1.687%200H34v.563h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D4A015%22%20d%3D%22M31.75%208.938h-1.688V9.5h1.688v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23C16710%22%20d%3D%22M35.688%208.938h-3.376V9.5h3.376v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D4A015%22%20d%3D%22M37.938%208.938H36.25V9.5h1.688v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23C16710%22%20d%3D%22M30.063%209.5h-1.125v.563h1.125V9.5Z%22%2F%3E%3Cpath%20fill%3D%22%23D4A015%22%20d%3D%22M31.75%209.5h-1.688v.563h1.688V9.5Z%22%2F%3E%3Cpath%20fill%3D%22%23C16710%22%20d%3D%22M35.125%209.5H31.75v.563h3.375V9.5Z%22%2F%3E%3Cpath%20fill%3D%22%23D4A015%22%20d%3D%22M37.938%209.5H36.25v.563h1.688V9.5Z%22%2F%3E%3Cpath%20fill%3D%22%23C16710%22%20d%3D%22M30.063%2010.063h-1.125v.562h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D4A015%22%20d%3D%22M34%2010.063h-3.938v.562H34v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23C16710%22%20d%3D%22M34.563%2010.063H34v.562h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D4A015%22%20d%3D%22M37.938%2010.063h-3.376v.562h3.376v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23C16710%22%20d%3D%22M30.063%2010.625h-1.688v.563h1.688v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D4A015%22%20d%3D%22M33.438%2010.625h-3.376v.563h3.375v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23FFE939%22%20d%3D%22M35.125%2010.625h-1.688v.563h1.688v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D4A015%22%20d%3D%22M37.938%2010.625h-2.813v.563h2.813v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23C16710%22%20d%3D%22M30.063%2011.188h-1.125v.562h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D4A015%22%20d%3D%22M34%2011.188h-3.938v.562H34v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23FFE939%22%20d%3D%22M34.563%2011.188H34v.562h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D4A015%22%20d%3D%22M37.938%2011.188h-3.376v.562h3.376v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23C16710%22%20d%3D%22M30.063%2011.75h-1.125v.563h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D4A015%22%20d%3D%22M34%2011.75h-3.938v.563H34v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23FFE939%22%20d%3D%22M34.563%2011.75H34v.563h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D4A015%22%20d%3D%22M37.938%2011.75h-3.376v.563h3.376v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23C16710%22%20d%3D%22M30.063%2012.313h-1.688v.562h1.688v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D4A015%22%20d%3D%22M34%2012.313h-3.938v.562H34v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23FFE939%22%20d%3D%22M34.563%2012.313H34v.562h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D4A015%22%20d%3D%22M37.938%2012.313h-3.376v.562h3.376v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23C16710%22%20d%3D%22M30.063%2012.875h-1.125v.563h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D4A015%22%20d%3D%22M34%2012.875h-3.938v.563H34v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23FFE939%22%20d%3D%22M34.563%2012.875H34v.563h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D4A015%22%20d%3D%22M37.938%2012.875h-3.376v.563h3.376v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23C16710%22%20d%3D%22M30.063%2013.438h-1.125V14h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D4A015%22%20d%3D%22M34%2013.438h-3.938V14H34v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23FFE939%22%20d%3D%22M34.563%2013.438H34V14h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D4A015%22%20d%3D%22M37.938%2013.438h-3.376V14h3.376v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23C16710%22%20d%3D%22M30.063%2014h-1.688v.563h1.688V14Z%22%2F%3E%3Cpath%20fill%3D%22%23D08B11%22%20d%3D%22M40.188%2014H30.062v.563h10.125V14Z%22%2F%3E%3Cpath%20fill%3D%22%23C16710%22%20d%3D%22M30.063%2014.563h-1.125v.562h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D08B11%22%20d%3D%22M37.938%2014.563h-7.876v.562h7.875v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M38.5%2014.563h-.563v.562h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D08B11%22%20d%3D%22M39.063%2014.563H38.5v.562h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M39.625%2014.563h-.563v.562h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D08B11%22%20d%3D%22M40.188%2014.563h-.563v.562h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23C16710%22%20d%3D%22M30.063%2015.125h-1.688v.563h1.688v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D08B11%22%20d%3D%22M31.188%2015.125h-1.125v.563h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23FFE939%22%20d%3D%22M31.75%2015.125h-.563v.563h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M32.313%2015.125h-.563v.563h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23FFE939%22%20d%3D%22M32.875%2015.125h-.563v.563h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M33.438%2015.125h-.563v.563h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23FFE939%22%20d%3D%22M34%2015.125h-.563v.563H34v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M34.563%2015.125H34v.563h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23FFE939%22%20d%3D%22M35.125%2015.125h-.563v.563h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D08B11%22%20d%3D%22M40.188%2015.125h-5.063v.563h5.063v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23C16710%22%20d%3D%22M30.063%2015.688h-2.25v.562h2.25v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D08B11%22%20d%3D%22M40.188%2015.688H30.062v.562h10.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23C16710%22%20d%3D%22M30.063%2016.25h-1.688v.563h1.688v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D08B11%22%20d%3D%22M40.188%2016.25H30.062v.563h10.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23C16710%22%20d%3D%22M28.938%2016.813h-.563v.562h.563v-.563Zm1.125%200H29.5v.562h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23D08B11%22%20d%3D%22M37.938%2016.813h-7.876v.562h7.875v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23B9185C%22%20d%3D%22M34%2011.188h-3.375v.562H34v-.563Zm3.938%200h-3.376v.562h3.376v-.563Zm-6.75.562h-.563v.563h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M32.313%2011.75h-1.126v.563h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M33.438%2011.75h-1.126v.563h1.126v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23B9185C%22%20d%3D%22M34%2011.75h-.563v.563H34v-.563Zm1.125%200h-.563v.563h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M36.25%2011.75h-1.125v.563h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M37.375%2011.75H36.25v.563h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23B9185C%22%20d%3D%22M37.938%2011.75h-.563v.563h.563v-.563Zm-6.75.563h-2.25v.562h2.25v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M32.313%2012.313h-1.126v.562h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M33.438%2012.313h-1.126v.562h1.126v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23B9185C%22%20d%3D%22M35.125%2012.313h-1.688v.562h1.688v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M36.25%2012.313h-1.125v.562h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M37.375%2012.313H36.25v.562h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23B9185C%22%20d%3D%22M37.938%2012.313h-.563v.562h.563v-.563Zm-8.438.562h-.563v.563h.563v-.563Zm1.688%200h-.563v.563h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M32.313%2012.875h-1.126v.563h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M33.438%2012.875h-1.126v.563h1.126v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23B9185C%22%20d%3D%22M34%2012.875h-.563v.563H34v-.563Zm1.125%200h-.563v.563h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M36.25%2012.875h-1.125v.563h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M37.375%2012.875H36.25v.563h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23B9185C%22%20d%3D%22M37.938%2012.875h-.563v.563h.563v-.563Zm-8.438.563h-.563V14h.563v-.563Zm1.688%200h-.563V14h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M32.313%2013.438h-1.126V14h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M33.438%2013.438h-1.126V14h1.126v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23B9185C%22%20d%3D%22M34%2013.438h-.563V14H34v-.563Zm1.125%200h-.563V14h.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M36.25%2013.438h-1.125V14h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M37.375%2013.438H36.25V14h1.125v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23B9185C%22%20d%3D%22M37.938%2013.438h-.563V14h.563v-.563ZM34%2014h-3.375v.563H34V14Zm3.938%200h-3.376v.563h3.376V14Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20fill-opacity%3D%22.3%22%20fill-rule%3D%22evenodd%22%20d%3D%22M35%205.5h-2c-1.408%200-2.435%200-3.243.066-.803.066-1.347.194-1.8.424a4.5%204.5%200%200%200-1.966%201.967c-.231.453-.359.997-.424%201.8-.067.808-.067%201.835-.067%203.243v2c0%201.408%200%202.435.067%203.243.065.803.193%201.347.424%201.8a4.5%204.5%200%200%200%201.966%201.966c.453.231.997.359%201.8.424.808.067%201.835.067%203.243.067h2c1.408%200%202.435%200%203.243-.067.803-.065%201.347-.193%201.8-.424a4.5%204.5%200%200%200%201.967-1.966c.23-.453.358-.997.424-1.8.066-.808.066-1.835.066-3.243v-2c0-1.408%200-2.435-.066-3.243-.066-.803-.194-1.347-.424-1.8a4.5%204.5%200%200%200-1.967-1.967c-.453-.23-.997-.358-1.8-.424C37.435%205.5%2036.408%205.5%2035%205.5Zm-9.455%202.23C25%208.8%2025%2010.2%2025%2013v2c0%202.8%200%204.2.545%205.27a5%205%200%200%200%202.185%202.185C28.8%2023%2030.2%2023%2033%2023h2c2.8%200%204.2%200%205.27-.545a5%205%200%200%200%202.185-2.185C43%2019.2%2043%2017.8%2043%2015v-2c0-2.8%200-4.2-.545-5.27a5%205%200%200%200-2.185-2.185C39.2%205%2037.8%205%2035%205h-2c-2.8%200-4.2%200-5.27.545a5%205%200%200%200-2.185%202.185Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22%23564CBF%22%20d%3D%22M5%2033c0-2.8%200-4.2.545-5.27a5%205%200%200%201%202.185-2.185C8.8%2025%2010.2%2025%2013%2025h2c2.8%200%204.2%200%205.27.545a5%205%200%200%201%202.185%202.185C23%2028.8%2023%2030.2%2023%2033v2c0%202.8%200%204.2-.545%205.27a5%205%200%200%201-2.185%202.185C19.2%2043%2017.8%2043%2015%2043h-2c-2.8%200-4.2%200-5.27-.545a5%205%200%200%201-2.185-2.185C5%2039.2%205%2037.8%205%2035v-2Z%22%2F%3E%3Cpath%20fill%3D%22%23FF66B3%22%20d%3D%22M11.188%2026.125h.562v2.813h.563v-2.813h.562V29.5h.563v-3.375H14V29.5h.563v-3.375h.562v2.813h.563v-2.813h.562v2.25h.563v-1.688h.562v2.25h-.563v.563h-.562v.563h-1.125v.562h-2.813v-.563h-1.124V29.5h-.563v-.563h-.563v-2.25h.563v1.688h.563v-2.25Z%22%2F%3E%3Cpath%20fill%3D%22%23B3FFCC%22%20d%3D%22M13.438%2030.625H14v.563h1.125v2.25h1.125v-.563h.563V34h-1.688v1.125h-.563v1.125h.563v5.625h-.563v-5.063H14v-.562h-1.688v-1.125h.563v.563H14v-1.126h.563V31.75h-1.126v-1.125Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.9%22%20d%3D%22M16.25%2026.125h.563v2.25h-.563v-2.25Zm-5.625.563h.563v1.687h-.563v-1.688Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.9%22%20d%3D%22M17.938%2026.688h-.563v2.25h-.563v.562h-.562v.563h.563V29.5h.562v-.563h.563v-2.25Zm-6.188-.563h.563v2.813h-.563v-2.813Zm3.938%200h-.563v2.813h.563v-2.813Zm-2.813%200h.563V29.5h-.563v-3.375Zm1.688%200H14V29.5h.563v-3.375Zm.562%203.938h.563v.562h-.563v-.563Zm-.562.562H14v.563h.563v-.563Zm.562.563h.563v2.25h-.563v-2.25Zm2.25%201.687h-.563V34h.563v-1.125ZM15.125%2034h.563v1.125h-.563V34Zm0%202.25v-1.125h-.563v1.125h.563Zm0%200v5.625h.563V36.25h-.563Zm-2.25-1.125h.563v.563h-.563v-.563Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20fill-opacity%3D%22.12%22%20fill-rule%3D%22evenodd%22%20d%3D%22M15%2025.5h-2c-1.408%200-2.435%200-3.243.067-.803.065-1.347.193-1.8.424a4.5%204.5%200%200%200-1.967%201.966c-.23.453-.358.997-.424%201.8C5.5%2030.565%205.5%2031.592%205.5%2033v2c0%201.408%200%202.435.066%203.243.066.803.194%201.347.424%201.8a4.5%204.5%200%200%200%201.967%201.967c.453.23.997.358%201.8.424.808.066%201.835.066%203.243.066h2c1.408%200%202.435%200%203.243-.066.803-.066%201.347-.194%201.8-.424a4.5%204.5%200%200%200%201.966-1.967c.231-.453.359-.997.424-1.8.067-.808.067-1.835.067-3.243v-2c0-1.408%200-2.435-.067-3.243-.065-.803-.193-1.347-.424-1.8a4.5%204.5%200%200%200-1.966-1.966c-.453-.231-.997-.359-1.8-.424-.808-.067-1.835-.067-3.243-.067Zm-9.455%202.23C5%2028.8%205%2030.2%205%2033v2c0%202.8%200%204.2.545%205.27a5%205%200%200%200%202.185%202.185C8.8%2043%2010.2%2043%2013%2043h2c2.8%200%204.2%200%205.27-.545a5%205%200%200%200%202.185-2.185C23%2039.2%2023%2037.8%2023%2035v-2c0-2.8%200-4.2-.545-5.27a5%205%200%200%200-2.185-2.185C19.2%2025%2017.8%2025%2015%2025h-2c-2.8%200-4.2%200-5.27.545a5%205%200%200%200-2.185%202.185Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22%23172D99%22%20d%3D%22M5%2013c0-2.8%200-4.2.545-5.27A5%205%200%200%201%207.73%205.545C8.8%205%2010.2%205%2013%205h2c2.8%200%204.2%200%205.27.545a5%205%200%200%201%202.185%202.185C23%208.8%2023%2010.2%2023%2013v2c0%202.8%200%204.2-.545%205.27a5%205%200%200%201-2.185%202.185C19.2%2023%2017.8%2023%2015%2023h-2c-2.8%200-4.2%200-5.27-.545a5%205%200%200%201-2.185-2.185C5%2019.2%205%2017.8%205%2015v-2Z%22%2F%3E%3Cpath%20fill%3D%22%2300A2D8%22%20fill-rule%3D%22evenodd%22%20d%3D%22M11.3%2013.1H8.6v.9h2.7v-.9Zm0%20.9h1.8v.9h.9v1.8h-.9v-.9h-.9v-.9h-.9V14Zm2.7%202.7h.9v2.7H14v-2.7Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22%2300DE6F%22%20fill-rule%3D%22evenodd%22%20d%3D%22M11.3%2012.2H8.6v.9h2.7v-.9Zm0%20.9h1.8v.9h-1.8v-.9Zm2.7%201.8h-.9V14h.9v.9Zm.9%201.8H14v-1.8h.9v1.8Zm0%200h.9v2.7h-.9v-2.7Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22%23FFEB00%22%20fill-rule%3D%22evenodd%22%20d%3D%22M11.3%2011.3H8.6v.9h2.7v-.9Zm0%20.9h1.8v.9h-1.8v-.9ZM14%2014h-.9v-.9h.9v.9Zm.9.9H14V14h.9v.9Zm.9%201.8h-.9v-1.8h.9v1.8Zm0%200h.9v2.7h-.9v-2.7Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22%23FA0%22%20fill-rule%3D%22evenodd%22%20d%3D%22M11.3%2010.4H8.6v.9h2.7v-.9Zm0%20.9H14v.9h.9v.9h.9v.9h.9v1.8h.9v3.6h-.9v-2.7h-.9v-1.8h-.9V14H14v-.9h-.9v-.9h-1.8v-.9Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22%23DD3D1C%22%20fill-rule%3D%22evenodd%22%20d%3D%22M12.2%209.5H8.6v.9h2.7v.9H14v.9h.9v.9h.9v.9h.9v1.8h.9v3.6h.9v-3.6h-.9V14h-.9v-.9h-.9v-.9h-.9v-.9H14v-.9h-1.8v-.9Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22%23C03078%22%20fill-rule%3D%22evenodd%22%20d%3D%22M12.2%208.6H8.6v.9h3.6v-.9Zm0%20.9H14v.9h-1.8v-.9Zm5.4%204.5h-.9v-.9h-.9v-.9h-.9v-.9H14v-.9h1.8v.9h.9v.9h.9V14Zm.9%201.8h-.9V14h.9v1.8Zm0%200h.9v3.6h-.9v-3.6Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20fill-opacity%3D%22.12%22%20fill-rule%3D%22evenodd%22%20d%3D%22M15%205.5h-2c-1.408%200-2.435%200-3.243.066-.803.066-1.347.194-1.8.424A4.5%204.5%200%200%200%205.99%207.957c-.23.453-.358.997-.424%201.8C5.5%2010.565%205.5%2011.592%205.5%2013v2c0%201.408%200%202.435.066%203.243.066.803.194%201.347.424%201.8a4.5%204.5%200%200%200%201.967%201.966c.453.231.997.359%201.8.424.808.067%201.835.067%203.243.067h2c1.408%200%202.435%200%203.243-.067.803-.065%201.347-.193%201.8-.424a4.5%204.5%200%200%200%201.966-1.966c.231-.453.359-.997.424-1.8.067-.808.067-1.835.067-3.243v-2c0-1.408%200-2.435-.067-3.243-.065-.803-.193-1.347-.424-1.8a4.5%204.5%200%200%200-1.966-1.967c-.453-.23-.997-.358-1.8-.424C17.435%205.5%2016.408%205.5%2015%205.5ZM5.545%207.73C5%208.8%205%2010.2%205%2013v2c0%202.8%200%204.2.545%205.27a5%205%200%200%200%202.185%202.185C8.8%2023%2010.2%2023%2013%2023h2c2.8%200%204.2%200%205.27-.545a5%205%200%200%200%202.185-2.185C23%2019.2%2023%2017.8%2023%2015v-2c0-2.8%200-4.2-.545-5.27a5%205%200%200%200-2.185-2.185C19.2%205%2017.8%205%2015%205h-2c-2.8%200-4.2%200-5.27.545A5%205%200%200%200%205.545%207.73Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22%2399B3FF%22%20d%3D%22M48%2036.5C48%2042.851%2042.851%2048%2036.5%2048S25%2042.851%2025%2036.5%2030.149%2025%2036.5%2025%2048%2030.149%2048%2036.5Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.12%22%20fill-rule%3D%22evenodd%22%20d%3D%22M36.5%2047.5c6.075%200%2011-4.925%2011-11s-4.925-11-11-11-11%204.925-11%2011%204.925%2011%2011%2011Zm0%20.5C42.851%2048%2048%2042.851%2048%2036.5S42.851%2025%2036.5%2025%2025%2030.149%2025%2036.5%2030.149%2048%2036.5%2048Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22%237F91EB%22%20d%3D%22M46%2036.5a9.5%209.5%200%201%201-19%200%209.5%209.5%200%200%201%2019%200Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.12%22%20fill-rule%3D%22evenodd%22%20d%3D%22M36.5%2045.5a9%209%200%201%200%200-18%209%209%200%200%200%200%2018Zm0%20.5a9.5%209.5%200%201%200%200-19%209.5%209.5%200%200%200%200%2019Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20fill-opacity%3D%22.2%22%20fill-rule%3D%22evenodd%22%20d%3D%22M31.912%2037.037a.5.5%200%200%201-.139-.665l4.298-7.13a.5.5%200%200%201%20.856%200l4.297%207.13a.5.5%200%200%201-.137.664.5.5%200%200%201%20.119.698l-4.3%206.055a.5.5%200%200%201-.815%200l-4.297-6.055a.5.5%200%200%201%20.118-.697Zm.29.408%204.297%202.538%204.3-2.538-4.3%206.055-4.297-6.055Zm0-.815%204.297-7.13%204.297%207.13-4.297%202.54-4.297-2.54Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.55%22%20d%3D%22M36.499%2029.5v9.67l4.297-2.54-4.297-7.13Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.3%22%20d%3D%22m36.499%2029.5-4.297%207.13%204.297%202.54V29.5Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.55%22%20d%3D%22M36.499%2039.983V43.5l4.3-6.055-4.3%202.538Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.3%22%20d%3D%22M36.499%2043.5v-3.517l-4.297-2.538%204.297%206.055Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22m36.499%2039.17%204.297-2.54-4.297-1.953v4.493Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.6%22%20d%3D%22m32.202%2036.63%204.297%202.54v-4.493l-4.297%201.953Z%22%2F%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22a%22%20x1%3D%2224%22%20x2%3D%2224%22%20y1%3D%220%22%20y2%3D%2248%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23174299%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23001E59%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22b%22%20x1%3D%2224%22%20x2%3D%2224%22%20y1%3D%220%22%20y2%3D%2248%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23D2D8E4%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23C2C9D6%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3C%2Fsvg%3E";export{h as default}; diff --git a/client2/build/assets/avalanche-KOMJD3XY-Dsn_JPR4.js b/client2/build/assets/avalanche-KOMJD3XY-Dsn_JPR4.js deleted file mode 100644 index 062a7a7dc..000000000 --- a/client2/build/assets/avalanche-KOMJD3XY-Dsn_JPR4.js +++ /dev/null @@ -1 +0,0 @@ -var l="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2228%22%20height%3D%2228%22%20fill%3D%22none%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M23%205H5v18h18V5Z%22%2F%3E%3Cpath%20fill%3D%22%23E84142%22%20fill-rule%3D%22evenodd%22%20d%3D%22M14%2028c-7.513.008-14-6.487-14-14C0%206.196%206.043-.008%2014%200c7.95.008%2014%206.196%2014%2014%200%207.505-6.495%2013.992-14%2014Zm-3.971-7.436H7.315c-.57%200-.851%200-1.023-.11a.69.69%200%200%201-.313-.54c-.01-.202.13-.45.412-.944l6.7-11.809c.285-.501.43-.752.612-.845.195-.1.429-.1.625%200%20.182.093.326.344.611.845l1.377%202.404.007.013c.308.538.464.81.533%201.097a2.04%202.04%200%200%201%200%20.954c-.07.289-.224.564-.536%201.11l-3.52%206.22-.009.017c-.31.542-.467.817-.684%201.024a2.048%202.048%200%200%201-.835.485c-.285.079-.604.079-1.243.079Zm6.852%200h3.888c.574%200%20.862%200%201.034-.113a.687.687%200%200%200%20.313-.543c.01-.196-.128-.434-.398-.9a8.198%208.198%200%200%201-.028-.048l-1.948-3.332-.022-.037c-.274-.463-.412-.697-.59-.787a.684.684%200%200%200-.621%200c-.179.093-.323.337-.608.828l-1.94%203.331-.007.012c-.284.49-.426.735-.416.936.014.22.127.423.313.543.168.11.456.11%201.03.11Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E%0A";export{l as default}; diff --git a/client2/build/assets/bank-BKj84iPA.js b/client2/build/assets/bank-BKj84iPA.js deleted file mode 100644 index 45b36466b..000000000 --- a/client2/build/assets/bank-BKj84iPA.js +++ /dev/null @@ -1,14 +0,0 @@ -import{b as o}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const H=o` - `;export{H as bankSvg}; diff --git a/client2/build/assets/base-OAXLRA4F-CoYTVIiL.js b/client2/build/assets/base-OAXLRA4F-CoYTVIiL.js deleted file mode 100644 index 4fa5d940f..000000000 --- a/client2/build/assets/base-OAXLRA4F-CoYTVIiL.js +++ /dev/null @@ -1 +0,0 @@ -var l="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2228%22%20height%3D%2228%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Cpath%20fill%3D%22%230052FF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M14%2028a14%2014%200%201%200%200-28%2014%2014%200%200%200%200%2028Z%22%2F%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M13.967%2023.86c5.445%200%209.86-4.415%209.86-9.86%200-5.445-4.415-9.86-9.86-9.86-5.166%200-9.403%203.974-9.825%209.03h14.63v1.642H4.142c.413%205.065%204.654%209.047%209.826%209.047Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E";export{l as default}; diff --git a/client2/build/assets/baseAccount-44UITRK7-CsjdbWCf.js b/client2/build/assets/baseAccount-44UITRK7-CsjdbWCf.js deleted file mode 100644 index f54265aed..000000000 --- a/client2/build/assets/baseAccount-44UITRK7-CsjdbWCf.js +++ /dev/null @@ -1 +0,0 @@ -var C="data:image/svg+xml,%3Csvg%20width%3D%2296%22%20height%3D%2296%22%20viewBox%3D%220%200%2096%2096%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Cpath%20d%3D%22M0%207.584C0%204.98628%200%203.68742%200.489468%202.68829C0.958114%201.73167%201.73167%200.958114%202.68829%200.489468C3.68742%200%204.98628%200%207.584%200H88.416C91.0137%200%2092.3126%200%2093.3117%200.489468C94.2683%200.958114%2095.0419%201.73167%2095.5105%202.68829C96%203.68742%2096%204.98628%2096%207.584V88.416C96%2091.0137%2096%2092.3126%2095.5105%2093.3117C95.0419%2094.2683%2094.2683%2095.0419%2093.3117%2095.5105C92.3126%2096%2091.0137%2096%2088.416%2096H7.584C4.98628%2096%203.68742%2096%202.68829%2095.5105C1.73167%2095.0419%200.958114%2094.2683%200.489468%2093.3117C0%2092.3126%200%2091.0137%200%2088.416V7.584Z%22%20fill%3D%22%230000FF%22%2F%3E%0A%3C%2Fsvg%3E%0A";export{C as default}; diff --git a/client2/build/assets/basic-CrTlCsjy.js b/client2/build/assets/basic-CrTlCsjy.js deleted file mode 100644 index 65c748ead..000000000 --- a/client2/build/assets/basic-CrTlCsjy.js +++ /dev/null @@ -1,2128 +0,0 @@ -import{k as N,n as G,l as q,m as O,x as c,y as M,D as z,O as ee,G as j,E as te,R as U,P as Me,q as K,Q as k,U as ft,I as Ci,W as pt,C as Zt,u as yn,T as en,B as Xe,M as oi,V as ri,b as Ne,L as xn,o as Ri}from"./core-Cywc921C.js";import{n as u,c as P,o as E,r as _,U as he,e as $i,f as _i,a as Ii}from"./index-DQ1U5YI4.js";import{m as Ei}from"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const Wi=N` - :host { - position: relative; - background-color: var(--wui-color-gray-glass-002); - display: flex; - justify-content: center; - align-items: center; - width: var(--local-size); - height: var(--local-size); - border-radius: inherit; - border-radius: var(--local-border-radius); - } - - :host > wui-flex { - overflow: hidden; - border-radius: inherit; - border-radius: var(--local-border-radius); - } - - :host::after { - content: ''; - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - border-radius: inherit; - border: 1px solid var(--wui-color-gray-glass-010); - pointer-events: none; - } - - :host([name='Extension'])::after { - border: 1px solid var(--wui-color-accent-glass-010); - } - - :host([data-wallet-icon='allWallets']) { - background-color: var(--wui-all-wallets-bg-100); - } - - :host([data-wallet-icon='allWallets'])::after { - border: 1px solid var(--wui-color-accent-glass-010); - } - - wui-icon[data-parent-size='inherit'] { - width: 75%; - height: 75%; - align-items: center; - } - - wui-icon[data-parent-size='sm'] { - width: 18px; - height: 18px; - } - - wui-icon[data-parent-size='md'] { - width: 24px; - height: 24px; - } - - wui-icon[data-parent-size='lg'] { - width: 42px; - height: 42px; - } - - wui-icon[data-parent-size='full'] { - width: 100%; - height: 100%; - } - - :host > wui-icon-box { - position: absolute; - overflow: hidden; - right: -1px; - bottom: -2px; - z-index: 1; - border: 2px solid var(--wui-color-bg-150, #1e1f1f); - padding: 1px; - } -`;var _e=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let fe=class extends O{constructor(){super(...arguments),this.size="md",this.name="",this.installed=!1,this.badgeSize="xs"}render(){let e="xxs";return this.size==="lg"?e="m":this.size==="md"?e="xs":e="xxs",this.style.cssText=` - --local-border-radius: var(--wui-border-radius-${e}); - --local-size: var(--wui-wallet-image-size-${this.size}); - `,this.walletIcon&&(this.dataset.walletIcon=this.walletIcon),c` - ${this.templateVisual()} - `}templateVisual(){return this.imageSrc?c``:this.walletIcon?c``:c``}};fe.styles=[G,q,Wi];_e([u()],fe.prototype,"size",void 0);_e([u()],fe.prototype,"name",void 0);_e([u()],fe.prototype,"imageSrc",void 0);_e([u()],fe.prototype,"walletIcon",void 0);_e([u({type:Boolean})],fe.prototype,"installed",void 0);_e([u()],fe.prototype,"badgeSize",void 0);fe=_e([P("wui-wallet-image")],fe);const Si=N` - :host { - position: relative; - border-radius: var(--wui-border-radius-xxs); - width: 40px; - height: 40px; - overflow: hidden; - background: var(--wui-color-gray-glass-002); - display: flex; - justify-content: center; - align-items: center; - flex-wrap: wrap; - gap: var(--wui-spacing-4xs); - padding: 3.75px !important; - } - - :host::after { - content: ''; - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - border-radius: inherit; - border: 1px solid var(--wui-color-gray-glass-010); - pointer-events: none; - } - - :host > wui-wallet-image { - width: 14px; - height: 14px; - border-radius: var(--wui-border-radius-5xs); - } - - :host > wui-flex { - padding: 2px; - position: fixed; - overflow: hidden; - left: 34px; - bottom: 8px; - background: var(--dark-background-150, #1e1f1f); - border-radius: 50%; - z-index: 2; - display: flex; - } -`;var ai=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};const It=4;let Ze=class extends O{constructor(){super(...arguments),this.walletImages=[]}render(){const e=this.walletImages.lengthc` - - `)} - ${e?[...Array(It-this.walletImages.length)].map(()=>c` `):null} - - - `}};Ze.styles=[q,Si];ai([u({type:Array})],Ze.prototype,"walletImages",void 0);Ze=ai([P("wui-all-wallets-image")],Ze);const Ti=N` - button { - column-gap: var(--wui-spacing-s); - padding: 7px var(--wui-spacing-l) 7px var(--wui-spacing-xs); - width: 100%; - background-color: var(--wui-color-gray-glass-002); - border-radius: var(--wui-border-radius-xs); - color: var(--wui-color-fg-100); - } - - button > wui-text:nth-child(2) { - display: flex; - flex: 1; - } - - button:disabled { - background-color: var(--wui-color-gray-glass-015); - color: var(--wui-color-gray-glass-015); - } - - button:disabled > wui-tag { - background-color: var(--wui-color-gray-glass-010); - color: var(--wui-color-fg-300); - } - - wui-icon { - color: var(--wui-color-fg-200) !important; - } -`;var Y=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let F=class extends O{constructor(){super(...arguments),this.walletImages=[],this.imageSrc="",this.name="",this.tabIdx=void 0,this.installed=!1,this.disabled=!1,this.showAllWallets=!1,this.loading=!1,this.loadingSpinnerColor="accent-100"}render(){return c` - - `}templateAllWallets(){return this.showAllWallets&&this.imageSrc?c` `:this.showAllWallets&&this.walletIcon?c` `:null}templateWalletImage(){return!this.showAllWallets&&this.imageSrc?c``:!this.showAllWallets&&!this.imageSrc?c``:null}templateStatus(){return this.loading?c``:this.tagLabel&&this.tagVariant?c`${this.tagLabel}`:this.icon?c``:null}};F.styles=[q,G,Ti];Y([u({type:Array})],F.prototype,"walletImages",void 0);Y([u()],F.prototype,"imageSrc",void 0);Y([u()],F.prototype,"name",void 0);Y([u()],F.prototype,"tagLabel",void 0);Y([u()],F.prototype,"tagVariant",void 0);Y([u()],F.prototype,"icon",void 0);Y([u()],F.prototype,"walletIcon",void 0);Y([u()],F.prototype,"tabIdx",void 0);Y([u({type:Boolean})],F.prototype,"installed",void 0);Y([u({type:Boolean})],F.prototype,"disabled",void 0);Y([u({type:Boolean})],F.prototype,"showAllWallets",void 0);Y([u({type:Boolean})],F.prototype,"loading",void 0);Y([u({type:String})],F.prototype,"loadingSpinnerColor",void 0);F=Y([P("wui-list-wallet")],F);var Ae=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let ye=class extends O{constructor(){super(),this.unsubscribe=[],this.tabIdx=void 0,this.connectors=M.state.connectors,this.count=z.state.count,this.filteredCount=z.state.filteredWallets.length,this.isFetchingRecommendedWallets=z.state.isFetchingRecommendedWallets,this.unsubscribe.push(M.subscribeKey("connectors",e=>this.connectors=e),z.subscribeKey("count",e=>this.count=e),z.subscribeKey("filteredWallets",e=>this.filteredCount=e.length),z.subscribeKey("isFetchingRecommendedWallets",e=>this.isFetchingRecommendedWallets=e))}disconnectedCallback(){this.unsubscribe.forEach(e=>e())}render(){const e=this.connectors.find(l=>l.id==="walletConnect"),{allWallets:n}=ee.state;if(!e||n==="HIDE"||n==="ONLY_MOBILE"&&!j.isMobile())return null;const i=z.state.featured.length,o=this.count+i,t=o<10?o:Math.floor(o/10)*10,a=this.filteredCount>0?this.filteredCount:t;let s=`${a}`;return this.filteredCount>0?s=`${this.filteredCount}`:a - `}onAllWallets(){te.sendEvent({type:"track",event:"CLICK_ALL_WALLETS"}),U.push("AllWallets")}};Ae([u()],ye.prototype,"tabIdx",void 0);Ae([_()],ye.prototype,"connectors",void 0);Ae([_()],ye.prototype,"count",void 0);Ae([_()],ye.prototype,"filteredCount",void 0);Ae([_()],ye.prototype,"isFetchingRecommendedWallets",void 0);ye=Ae([P("w3m-all-wallets-widget")],ye);var sn=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let et=class extends O{constructor(){super(),this.unsubscribe=[],this.tabIdx=void 0,this.connectors=M.state.connectors,this.unsubscribe.push(M.subscribeKey("connectors",e=>this.connectors=e))}disconnectedCallback(){this.unsubscribe.forEach(e=>e())}render(){const e=this.connectors.filter(n=>n.type==="ANNOUNCED");return e?.length?c` - - ${e.filter(Me.showConnector).map(n=>c` - this.onConnector(n)} - tagVariant="success" - tagLabel="installed" - data-testid=${`wallet-selector-${n.id}`} - .installed=${!0} - tabIdx=${E(this.tabIdx)} - > - - `)} - - `:(this.style.cssText="display: none",null)}onConnector(e){e.id==="walletConnect"?j.isMobile()?U.push("AllWallets"):U.push("ConnectingWalletConnect"):U.push("ConnectingExternal",{connector:e})}};sn([u()],et.prototype,"tabIdx",void 0);sn([_()],et.prototype,"connectors",void 0);et=sn([P("w3m-connect-announced-widget")],et);var gt=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let Ue=class extends O{constructor(){super(),this.unsubscribe=[],this.tabIdx=void 0,this.connectors=M.state.connectors,this.loading=!1,this.unsubscribe.push(M.subscribeKey("connectors",e=>this.connectors=e)),j.isTelegram()&&j.isIos()&&(this.loading=!k.state.wcUri,this.unsubscribe.push(k.subscribeKey("wcUri",e=>this.loading=!e)))}disconnectedCallback(){this.unsubscribe.forEach(e=>e())}render(){const{customWallets:e}=ee.state;if(!e?.length)return this.style.cssText="display: none",null;const n=this.filterOutDuplicateWallets(e);return c` - ${n.map(i=>c` - this.onConnectWallet(i)} - data-testid=${`wallet-selector-${i.id}`} - tabIdx=${E(this.tabIdx)} - ?loading=${this.loading} - > - - `)} - `}filterOutDuplicateWallets(e){const n=ft.getRecentWallets(),i=this.connectors.map(s=>s.info?.rdns).filter(Boolean),o=n.map(s=>s.rdns).filter(Boolean),t=i.concat(o);if(t.includes("io.metamask.mobile")&&j.isMobile()){const s=t.indexOf("io.metamask.mobile");t[s]="io.metamask"}return e.filter(s=>!t.includes(String(s?.rdns)))}onConnectWallet(e){this.loading||U.push("ConnectingWalletConnect",{wallet:e})}};gt([u()],Ue.prototype,"tabIdx",void 0);gt([_()],Ue.prototype,"connectors",void 0);gt([_()],Ue.prototype,"loading",void 0);Ue=gt([P("w3m-connect-custom-widget")],Ue);var ln=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let tt=class extends O{constructor(){super(),this.unsubscribe=[],this.tabIdx=void 0,this.connectors=M.state.connectors,this.unsubscribe.push(M.subscribeKey("connectors",e=>this.connectors=e))}disconnectedCallback(){this.unsubscribe.forEach(e=>e())}render(){const i=this.connectors.filter(o=>o.type==="EXTERNAL").filter(Me.showConnector).filter(o=>o.id!==Ci.CONNECTOR_ID.COINBASE_SDK);return i?.length?c` - - ${i.map(o=>c` - this.onConnector(o)} - tabIdx=${E(this.tabIdx)} - > - - `)} - - `:(this.style.cssText="display: none",null)}onConnector(e){U.push("ConnectingExternal",{connector:e})}};ln([u()],tt.prototype,"tabIdx",void 0);ln([_()],tt.prototype,"connectors",void 0);tt=ln([P("w3m-connect-external-widget")],tt);var cn=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let nt=class extends O{constructor(){super(...arguments),this.tabIdx=void 0,this.wallets=[]}render(){return this.wallets.length?c` - - ${this.wallets.map(e=>c` - this.onConnectWallet(e)} - tabIdx=${E(this.tabIdx)} - > - - `)} - - `:(this.style.cssText="display: none",null)}onConnectWallet(e){M.selectWalletConnector(e)}};cn([u()],nt.prototype,"tabIdx",void 0);cn([u()],nt.prototype,"wallets",void 0);nt=cn([P("w3m-connect-featured-widget")],nt);var un=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let it=class extends O{constructor(){super(...arguments),this.tabIdx=void 0,this.connectors=[]}render(){const e=this.connectors.filter(Me.showConnector);return e.length===0?(this.style.cssText="display: none",null):c` - - ${e.map(n=>c` - this.onConnector(n)} - tabIdx=${E(this.tabIdx)} - > - - `)} - - `}onConnector(e){M.setActiveConnector(e),U.push("ConnectingExternal",{connector:e})}};un([u()],it.prototype,"tabIdx",void 0);un([u()],it.prototype,"connectors",void 0);it=un([P("w3m-connect-injected-widget")],it);var dn=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let ot=class extends O{constructor(){super(),this.unsubscribe=[],this.tabIdx=void 0,this.connectors=M.state.connectors,this.unsubscribe.push(M.subscribeKey("connectors",e=>this.connectors=e))}disconnectedCallback(){this.unsubscribe.forEach(e=>e())}render(){const e=this.connectors.filter(n=>n.type==="MULTI_CHAIN"&&n.name!=="WalletConnect");return e?.length?c` - - ${e.map(n=>c` - this.onConnector(n)} - tabIdx=${E(this.tabIdx)} - > - - `)} - - `:(this.style.cssText="display: none",null)}onConnector(e){M.setActiveConnector(e),U.push("ConnectingMultiChain")}};dn([u()],ot.prototype,"tabIdx",void 0);dn([_()],ot.prototype,"connectors",void 0);ot=dn([P("w3m-connect-multi-chain-widget")],ot);var wt=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let qe=class extends O{constructor(){super(),this.unsubscribe=[],this.tabIdx=void 0,this.connectors=M.state.connectors,this.loading=!1,this.unsubscribe.push(M.subscribeKey("connectors",e=>this.connectors=e)),j.isTelegram()&&j.isIos()&&(this.loading=!k.state.wcUri,this.unsubscribe.push(k.subscribeKey("wcUri",e=>this.loading=!e)))}render(){const n=ft.getRecentWallets().filter(i=>!pt.isExcluded(i)).filter(i=>!this.hasWalletConnector(i)).filter(i=>this.isWalletCompatibleWithCurrentChain(i));return n.length?c` - - ${n.map(i=>c` - this.onConnectWallet(i)} - tagLabel="recent" - tagVariant="shade" - tabIdx=${E(this.tabIdx)} - ?loading=${this.loading} - > - - `)} - - `:(this.style.cssText="display: none",null)}onConnectWallet(e){this.loading||M.selectWalletConnector(e)}hasWalletConnector(e){return this.connectors.some(n=>n.id===e.id||n.name===e.name)}isWalletCompatibleWithCurrentChain(e){const n=Zt.state.activeChain;return n&&e.chains?e.chains.some(i=>{const o=i.split(":")[0];return n===o}):!0}};wt([u()],qe.prototype,"tabIdx",void 0);wt([_()],qe.prototype,"connectors",void 0);wt([_()],qe.prototype,"loading",void 0);qe=wt([P("w3m-connect-recent-widget")],qe);var mt=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let Fe=class extends O{constructor(){super(),this.unsubscribe=[],this.tabIdx=void 0,this.wallets=[],this.loading=!1,j.isTelegram()&&j.isIos()&&(this.loading=!k.state.wcUri,this.unsubscribe.push(k.subscribeKey("wcUri",e=>this.loading=!e)))}render(){const{connectors:e}=M.state,{customWallets:n,featuredWalletIds:i}=ee.state,o=ft.getRecentWallets(),t=e.find(w=>w.id==="walletConnect"),s=e.filter(w=>w.type==="INJECTED"||w.type==="ANNOUNCED"||w.type==="MULTI_CHAIN").filter(w=>w.name!=="Browser Wallet");if(!t)return null;if(i||n||!this.wallets.length)return this.style.cssText="display: none",null;const l=s.length+o.length,d=Math.max(0,2-l),h=pt.filterOutDuplicateWallets(this.wallets).slice(0,d);return h.length?c` - - ${h.map(w=>c` - this.onConnectWallet(w)} - tabIdx=${E(this.tabIdx)} - ?loading=${this.loading} - > - - `)} - - `:(this.style.cssText="display: none",null)}onConnectWallet(e){if(this.loading)return;const n=M.getConnector(e.id,e.rdns);n?U.push("ConnectingExternal",{connector:n}):U.push("ConnectingWalletConnect",{wallet:e})}};mt([u()],Fe.prototype,"tabIdx",void 0);mt([u()],Fe.prototype,"wallets",void 0);mt([_()],Fe.prototype,"loading",void 0);Fe=mt([P("w3m-connect-recommended-widget")],Fe);var bt=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let Ve=class extends O{constructor(){super(),this.unsubscribe=[],this.tabIdx=void 0,this.connectors=M.state.connectors,this.connectorImages=yn.state.connectorImages,this.unsubscribe.push(M.subscribeKey("connectors",e=>this.connectors=e),yn.subscribeKey("connectorImages",e=>this.connectorImages=e))}disconnectedCallback(){this.unsubscribe.forEach(e=>e())}render(){if(j.isMobile())return this.style.cssText="display: none",null;const e=this.connectors.find(i=>i.id==="walletConnect");if(!e)return this.style.cssText="display: none",null;const n=e.imageUrl||this.connectorImages[e?.imageId??""];return c` - this.onConnector(e)} - tagLabel="qr code" - tagVariant="main" - tabIdx=${E(this.tabIdx)} - data-testid="wallet-selector-walletconnect" - > - - `}onConnector(e){M.setActiveConnector(e),U.push("ConnectingWalletConnect")}};bt([u()],Ve.prototype,"tabIdx",void 0);bt([_()],Ve.prototype,"connectors",void 0);bt([_()],Ve.prototype,"connectorImages",void 0);Ve=bt([P("w3m-connect-walletconnect-widget")],Ve);const Bi=N` - :host { - margin-top: var(--wui-spacing-3xs); - } - wui-separator { - margin: var(--wui-spacing-m) calc(var(--wui-spacing-m) * -1) var(--wui-spacing-xs) - calc(var(--wui-spacing-m) * -1); - width: calc(100% + var(--wui-spacing-s) * 2); - } -`;var Ke=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let xe=class extends O{constructor(){super(),this.unsubscribe=[],this.tabIdx=void 0,this.connectors=M.state.connectors,this.recommended=z.state.recommended,this.featured=z.state.featured,this.unsubscribe.push(M.subscribeKey("connectors",e=>this.connectors=e),z.subscribeKey("recommended",e=>this.recommended=e),z.subscribeKey("featured",e=>this.featured=e))}disconnectedCallback(){this.unsubscribe.forEach(e=>e())}render(){return c` - ${this.connectorListTemplate()} - `}connectorListTemplate(){const{custom:e,recent:n,announced:i,injected:o,multiChain:t,recommended:a,featured:s,external:l}=Me.getConnectorsByType(this.connectors,this.recommended,this.featured);return Me.getConnectorTypeOrder({custom:e,recent:n,announced:i,injected:o,multiChain:t,recommended:a,featured:s,external:l}).map(h=>{switch(h){case"injected":return c` - ${t.length?c``:null} - ${i.length?c``:null} - ${o.length?c``:null} - `;case"walletConnect":return c``;case"recent":return c``;case"featured":return c``;case"custom":return c``;case"external":return c``;case"recommended":return c``;default:return console.warn(`Unknown connector type: ${h}`),null}})}};xe.styles=Bi;Ke([u()],xe.prototype,"tabIdx",void 0);Ke([_()],xe.prototype,"connectors",void 0);Ke([_()],xe.prototype,"recommended",void 0);Ke([_()],xe.prototype,"featured",void 0);xe=Ke([P("w3m-connector-list")],xe);const Pi=N` - :host { - display: inline-flex; - background-color: var(--wui-color-gray-glass-002); - border-radius: var(--wui-border-radius-3xl); - padding: var(--wui-spacing-3xs); - position: relative; - height: 36px; - min-height: 36px; - overflow: hidden; - } - - :host::before { - content: ''; - position: absolute; - pointer-events: none; - top: 4px; - left: 4px; - display: block; - width: var(--local-tab-width); - height: 28px; - border-radius: var(--wui-border-radius-3xl); - background-color: var(--wui-color-gray-glass-002); - box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-002); - transform: translateX(calc(var(--local-tab) * var(--local-tab-width))); - transition: transform var(--wui-ease-out-power-1) var(--wui-duration-md); - will-change: background-color, opacity; - } - - :host([data-type='flex'])::before { - left: 3px; - transform: translateX(calc((var(--local-tab) * 34px) + (var(--local-tab) * 4px))); - } - - :host([data-type='flex']) { - display: flex; - padding: 0px 0px 0px 12px; - gap: 4px; - } - - :host([data-type='flex']) > button > wui-text { - position: absolute; - left: 18px; - opacity: 0; - } - - button[data-active='true'] > wui-icon, - button[data-active='true'] > wui-text { - color: var(--wui-color-fg-100); - } - - button[data-active='false'] > wui-icon, - button[data-active='false'] > wui-text { - color: var(--wui-color-fg-200); - } - - button[data-active='true']:disabled, - button[data-active='false']:disabled { - background-color: transparent; - opacity: 0.5; - cursor: not-allowed; - } - - button[data-active='true']:disabled > wui-text { - color: var(--wui-color-fg-200); - } - - button[data-active='false']:disabled > wui-text { - color: var(--wui-color-fg-300); - } - - button > wui-icon, - button > wui-text { - pointer-events: none; - transition: color var(--wui-e ase-out-power-1) var(--wui-duration-md); - will-change: color; - } - - button { - width: var(--local-tab-width); - transition: background-color var(--wui-ease-out-power-1) var(--wui-duration-md); - will-change: background-color; - } - - :host([data-type='flex']) > button { - width: 34px; - position: relative; - display: flex; - justify-content: flex-start; - } - - button:hover:enabled, - button:active:enabled { - background-color: transparent !important; - } - - button:hover:enabled > wui-icon, - button:active:enabled > wui-icon { - transition: all var(--wui-ease-out-power-1) var(--wui-duration-lg); - color: var(--wui-color-fg-125); - } - - button:hover:enabled > wui-text, - button:active:enabled > wui-text { - transition: all var(--wui-ease-out-power-1) var(--wui-duration-lg); - color: var(--wui-color-fg-125); - } - - button { - border-radius: var(--wui-border-radius-3xl); - } -`;var ve=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let re=class extends O{constructor(){super(...arguments),this.tabs=[],this.onTabChange=()=>null,this.buttons=[],this.disabled=!1,this.localTabWidth="100px",this.activeTab=0,this.isDense=!1}render(){return this.isDense=this.tabs.length>3,this.style.cssText=` - --local-tab: ${this.activeTab}; - --local-tab-width: ${this.localTabWidth}; - `,this.dataset.type=this.isDense?"flex":"block",this.tabs.map((e,n)=>{const i=n===this.activeTab;return c` - - `})}firstUpdated(){this.shadowRoot&&this.isDense&&(this.buttons=[...this.shadowRoot.querySelectorAll("button")],setTimeout(()=>{this.animateTabs(0,!0)},0))}iconTemplate(e){return e.icon?c``:null}onTabClick(e){this.buttons&&this.animateTabs(e,!1),this.activeTab=e,this.onTabChange(e)}animateTabs(e,n){const i=this.buttons[this.activeTab],o=this.buttons[e],t=i?.querySelector("wui-text"),a=o?.querySelector("wui-text"),s=o?.getBoundingClientRect(),l=a?.getBoundingClientRect();i&&t&&!n&&e!==this.activeTab&&(t.animate([{opacity:0}],{duration:50,easing:"ease",fill:"forwards"}),i.animate([{width:"34px"}],{duration:500,easing:"ease",fill:"forwards"})),o&&s&&l&&a&&(e!==this.activeTab||n)&&(this.localTabWidth=`${Math.round(s.width+l.width)+6}px`,o.animate([{width:`${s.width+l.width}px`}],{duration:n?0:500,fill:"forwards",easing:"ease"}),a.animate([{opacity:1}],{duration:n?0:125,delay:n?0:200,fill:"forwards",easing:"ease"}))}};re.styles=[q,G,Pi];ve([u({type:Array})],re.prototype,"tabs",void 0);ve([u()],re.prototype,"onTabChange",void 0);ve([u({type:Array})],re.prototype,"buttons",void 0);ve([u({type:Boolean})],re.prototype,"disabled",void 0);ve([u()],re.prototype,"localTabWidth",void 0);ve([_()],re.prototype,"activeTab",void 0);ve([_()],re.prototype,"isDense",void 0);re=ve([P("wui-tabs")],re);var hn=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let rt=class extends O{constructor(){super(...arguments),this.platformTabs=[],this.unsubscribe=[],this.platforms=[],this.onSelectPlatfrom=void 0}disconnectCallback(){this.unsubscribe.forEach(e=>e())}render(){const e=this.generateTabs();return c` - - - - `}generateTabs(){const e=this.platforms.map(n=>n==="browser"?{label:"Browser",icon:"extension",platform:"browser"}:n==="mobile"?{label:"Mobile",icon:"mobile",platform:"mobile"}:n==="qrcode"?{label:"Mobile",icon:"mobile",platform:"qrcode"}:n==="web"?{label:"Webapp",icon:"browser",platform:"web"}:n==="desktop"?{label:"Desktop",icon:"desktop",platform:"desktop"}:{label:"Browser",icon:"extension",platform:"unsupported"});return this.platformTabs=e.map(({platform:n})=>n),e}onTabChange(e){const n=this.platformTabs[e];n&&this.onSelectPlatfrom?.(n)}};hn([u({type:Array})],rt.prototype,"platforms",void 0);hn([u()],rt.prototype,"onSelectPlatfrom",void 0);rt=hn([P("w3m-connecting-header")],rt);const Li=N` - :host { - width: var(--local-width); - position: relative; - } - - button { - border: none; - border-radius: var(--local-border-radius); - width: var(--local-width); - white-space: nowrap; - } - - /* -- Sizes --------------------------------------------------- */ - button[data-size='md'] { - padding: 8.2px var(--wui-spacing-l) 9px var(--wui-spacing-l); - height: 36px; - } - - button[data-size='md'][data-icon-left='true'][data-icon-right='false'] { - padding: 8.2px var(--wui-spacing-l) 9px var(--wui-spacing-s); - } - - button[data-size='md'][data-icon-right='true'][data-icon-left='false'] { - padding: 8.2px var(--wui-spacing-s) 9px var(--wui-spacing-l); - } - - button[data-size='lg'] { - padding: var(--wui-spacing-m) var(--wui-spacing-2l); - height: 48px; - } - - /* -- Variants --------------------------------------------------------- */ - button[data-variant='main'] { - background-color: var(--wui-color-accent-100); - color: var(--wui-color-inverse-100); - border: none; - box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-010); - } - - button[data-variant='inverse'] { - background-color: var(--wui-color-inverse-100); - color: var(--wui-color-inverse-000); - border: none; - box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-010); - } - - button[data-variant='accent'] { - background-color: var(--wui-color-accent-glass-010); - color: var(--wui-color-accent-100); - border: none; - box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-005); - } - - button[data-variant='accent-error'] { - background: var(--wui-color-error-glass-015); - color: var(--wui-color-error-100); - border: none; - box-shadow: inset 0 0 0 1px var(--wui-color-error-glass-010); - } - - button[data-variant='accent-success'] { - background: var(--wui-color-success-glass-015); - color: var(--wui-color-success-100); - border: none; - box-shadow: inset 0 0 0 1px var(--wui-color-success-glass-010); - } - - button[data-variant='neutral'] { - background: transparent; - color: var(--wui-color-fg-100); - border: none; - box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-005); - } - - /* -- Focus states --------------------------------------------------- */ - button[data-variant='main']:focus-visible:enabled { - background-color: var(--wui-color-accent-090); - box-shadow: - inset 0 0 0 1px var(--wui-color-accent-100), - 0 0 0 4px var(--wui-color-accent-glass-020); - } - button[data-variant='inverse']:focus-visible:enabled { - background-color: var(--wui-color-inverse-100); - box-shadow: - inset 0 0 0 1px var(--wui-color-gray-glass-010), - 0 0 0 4px var(--wui-color-accent-glass-020); - } - button[data-variant='accent']:focus-visible:enabled { - background-color: var(--wui-color-accent-glass-010); - box-shadow: - inset 0 0 0 1px var(--wui-color-accent-100), - 0 0 0 4px var(--wui-color-accent-glass-020); - } - button[data-variant='accent-error']:focus-visible:enabled { - background: var(--wui-color-error-glass-015); - box-shadow: - inset 0 0 0 1px var(--wui-color-error-100), - 0 0 0 4px var(--wui-color-error-glass-020); - } - button[data-variant='accent-success']:focus-visible:enabled { - background: var(--wui-color-success-glass-015); - box-shadow: - inset 0 0 0 1px var(--wui-color-success-100), - 0 0 0 4px var(--wui-color-success-glass-020); - } - button[data-variant='neutral']:focus-visible:enabled { - background: var(--wui-color-gray-glass-005); - box-shadow: - inset 0 0 0 1px var(--wui-color-gray-glass-010), - 0 0 0 4px var(--wui-color-gray-glass-002); - } - - /* -- Hover & Active states ----------------------------------------------------------- */ - @media (hover: hover) and (pointer: fine) { - button[data-variant='main']:hover:enabled { - background-color: var(--wui-color-accent-090); - } - - button[data-variant='main']:active:enabled { - background-color: var(--wui-color-accent-080); - } - - button[data-variant='accent']:hover:enabled { - background-color: var(--wui-color-accent-glass-015); - } - - button[data-variant='accent']:active:enabled { - background-color: var(--wui-color-accent-glass-020); - } - - button[data-variant='accent-error']:hover:enabled { - background: var(--wui-color-error-glass-020); - color: var(--wui-color-error-100); - } - - button[data-variant='accent-error']:active:enabled { - background: var(--wui-color-error-glass-030); - color: var(--wui-color-error-100); - } - - button[data-variant='accent-success']:hover:enabled { - background: var(--wui-color-success-glass-020); - color: var(--wui-color-success-100); - } - - button[data-variant='accent-success']:active:enabled { - background: var(--wui-color-success-glass-030); - color: var(--wui-color-success-100); - } - - button[data-variant='neutral']:hover:enabled { - background: var(--wui-color-gray-glass-002); - } - - button[data-variant='neutral']:active:enabled { - background: var(--wui-color-gray-glass-005); - } - - button[data-size='lg'][data-icon-left='true'][data-icon-right='false'] { - padding-left: var(--wui-spacing-m); - } - - button[data-size='lg'][data-icon-right='true'][data-icon-left='false'] { - padding-right: var(--wui-spacing-m); - } - } - - /* -- Disabled state --------------------------------------------------- */ - button:disabled { - background-color: var(--wui-color-gray-glass-002); - box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-002); - color: var(--wui-color-gray-glass-020); - cursor: not-allowed; - } - - button > wui-text { - transition: opacity var(--wui-ease-out-power-1) var(--wui-duration-md); - will-change: opacity; - opacity: var(--local-opacity-100); - } - - ::slotted(*) { - transition: opacity var(--wui-ease-out-power-1) var(--wui-duration-md); - will-change: opacity; - opacity: var(--local-opacity-100); - } - - wui-loading-spinner { - position: absolute; - left: 50%; - top: 50%; - transform: translate(-50%, -50%); - opacity: var(--local-opacity-000); - } -`;var ae=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};const Cn={main:"inverse-100",inverse:"inverse-000",accent:"accent-100","accent-error":"error-100","accent-success":"success-100",neutral:"fg-100",disabled:"gray-glass-020"},Oi={lg:"paragraph-600",md:"small-600"},Ai={lg:"md",md:"md"};let Q=class extends O{constructor(){super(...arguments),this.size="lg",this.disabled=!1,this.fullWidth=!1,this.loading=!1,this.variant="main",this.hasIconLeft=!1,this.hasIconRight=!1,this.borderRadius="m"}render(){this.style.cssText=` - --local-width: ${this.fullWidth?"100%":"auto"}; - --local-opacity-100: ${this.loading?0:1}; - --local-opacity-000: ${this.loading?1:0}; - --local-border-radius: var(--wui-border-radius-${this.borderRadius}); - `;const e=this.textVariant??Oi[this.size];return c` - - `}handleSlotLeftChange(){this.hasIconLeft=!0}handleSlotRightChange(){this.hasIconRight=!0}loadingTemplate(){if(this.loading){const e=Ai[this.size],n=this.disabled?Cn.disabled:Cn[this.variant];return c``}return c``}};Q.styles=[q,G,Li];ae([u()],Q.prototype,"size",void 0);ae([u({type:Boolean})],Q.prototype,"disabled",void 0);ae([u({type:Boolean})],Q.prototype,"fullWidth",void 0);ae([u({type:Boolean})],Q.prototype,"loading",void 0);ae([u()],Q.prototype,"variant",void 0);ae([u({type:Boolean})],Q.prototype,"hasIconLeft",void 0);ae([u({type:Boolean})],Q.prototype,"hasIconRight",void 0);ae([u()],Q.prototype,"borderRadius",void 0);ae([u()],Q.prototype,"textVariant",void 0);Q=ae([P("wui-button")],Q);const ji=N` - button { - padding: var(--wui-spacing-4xs) var(--wui-spacing-xxs); - border-radius: var(--wui-border-radius-3xs); - background-color: transparent; - color: var(--wui-color-accent-100); - } - - button:disabled { - background-color: transparent; - color: var(--wui-color-gray-glass-015); - } - - button:hover { - background-color: var(--wui-color-gray-glass-005); - } -`;var vt=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let Be=class extends O{constructor(){super(...arguments),this.tabIdx=void 0,this.disabled=!1,this.color="inherit"}render(){return c` - - `}};Be.styles=[q,G,ji];vt([u()],Be.prototype,"tabIdx",void 0);vt([u({type:Boolean})],Be.prototype,"disabled",void 0);vt([u()],Be.prototype,"color",void 0);Be=vt([P("wui-link")],Be);const ki=N` - :host { - display: block; - width: var(--wui-box-size-md); - height: var(--wui-box-size-md); - } - - svg { - width: var(--wui-box-size-md); - height: var(--wui-box-size-md); - } - - rect { - fill: none; - stroke: var(--wui-color-accent-100); - stroke-width: 4px; - stroke-linecap: round; - animation: dash 1s linear infinite; - } - - @keyframes dash { - to { - stroke-dashoffset: 0px; - } - } -`;var si=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let at=class extends O{constructor(){super(...arguments),this.radius=36}render(){return this.svgLoaderTemplate()}svgLoaderTemplate(){const e=this.radius>50?50:this.radius,i=36-e,o=116+i,t=245+i,a=360+i*1.75;return c` - - - - `}};at.styles=[q,ki];si([u({type:Number})],at.prototype,"radius",void 0);at=si([P("wui-loading-thumbnail")],at);const Di=N` - button { - border: none; - border-radius: var(--wui-border-radius-3xl); - } - - button[data-variant='main'] { - background-color: var(--wui-color-accent-100); - color: var(--wui-color-inverse-100); - box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-010); - } - - button[data-variant='accent'] { - background-color: var(--wui-color-accent-glass-010); - color: var(--wui-color-accent-100); - box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-005); - } - - button[data-variant='gray'] { - background-color: transparent; - color: var(--wui-color-fg-200); - box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-010); - } - - button[data-variant='shade'] { - background-color: transparent; - color: var(--wui-color-accent-100); - box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-010); - } - - button[data-size='sm'] { - height: 32px; - padding: 0 var(--wui-spacing-s); - } - - button[data-size='md'] { - height: 40px; - padding: 0 var(--wui-spacing-l); - } - - button[data-size='sm'] > wui-image { - width: 16px; - height: 16px; - } - - button[data-size='md'] > wui-image { - width: 24px; - height: 24px; - } - - button[data-size='sm'] > wui-icon { - width: 12px; - height: 12px; - } - - button[data-size='md'] > wui-icon { - width: 14px; - height: 14px; - } - - wui-image { - border-radius: var(--wui-border-radius-3xl); - overflow: hidden; - } - - button.disabled > wui-icon, - button.disabled > wui-image { - filter: grayscale(1); - } - - button[data-variant='main'] > wui-image { - box-shadow: inset 0 0 0 1px var(--wui-color-accent-090); - } - - button[data-variant='shade'] > wui-image, - button[data-variant='gray'] > wui-image { - box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-010); - } - - @media (hover: hover) and (pointer: fine) { - button[data-variant='main']:focus-visible { - background-color: var(--wui-color-accent-090); - } - - button[data-variant='main']:hover:enabled { - background-color: var(--wui-color-accent-090); - } - - button[data-variant='main']:active:enabled { - background-color: var(--wui-color-accent-080); - } - - button[data-variant='accent']:hover:enabled { - background-color: var(--wui-color-accent-glass-015); - } - - button[data-variant='accent']:active:enabled { - background-color: var(--wui-color-accent-glass-020); - } - - button[data-variant='shade']:focus-visible, - button[data-variant='gray']:focus-visible, - button[data-variant='shade']:hover, - button[data-variant='gray']:hover { - background-color: var(--wui-color-gray-glass-002); - } - - button[data-variant='gray']:active, - button[data-variant='shade']:active { - background-color: var(--wui-color-gray-glass-005); - } - } - - button.disabled { - color: var(--wui-color-gray-glass-020); - background-color: var(--wui-color-gray-glass-002); - box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-002); - pointer-events: none; - } -`;var Ie=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let pe=class extends O{constructor(){super(...arguments),this.variant="accent",this.imageSrc="",this.disabled=!1,this.icon="externalLink",this.size="md",this.text=""}render(){const e=this.size==="sm"?"small-600":"paragraph-600";return c` - - `}};pe.styles=[q,G,Di];Ie([u()],pe.prototype,"variant",void 0);Ie([u()],pe.prototype,"imageSrc",void 0);Ie([u({type:Boolean})],pe.prototype,"disabled",void 0);Ie([u()],pe.prototype,"icon",void 0);Ie([u()],pe.prototype,"size",void 0);Ie([u()],pe.prototype,"text",void 0);pe=Ie([P("wui-chip-button")],pe);const zi=N` - wui-flex { - width: 100%; - background-color: var(--wui-color-gray-glass-002); - border-radius: var(--wui-border-radius-xs); - } -`;var yt=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let Pe=class extends O{constructor(){super(...arguments),this.disabled=!1,this.label="",this.buttonLabel=""}render(){return c` - - ${this.label} - - - - `}};Pe.styles=[q,G,zi];yt([u({type:Boolean})],Pe.prototype,"disabled",void 0);yt([u()],Pe.prototype,"label",void 0);yt([u()],Pe.prototype,"buttonLabel",void 0);Pe=yt([P("wui-cta-button")],Pe);const Ni=N` - :host { - display: block; - padding: 0 var(--wui-spacing-xl) var(--wui-spacing-xl); - } -`;var li=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let st=class extends O{constructor(){super(...arguments),this.wallet=void 0}render(){if(!this.wallet)return this.style.display="none",null;const{name:e,app_store:n,play_store:i,chrome_store:o,homepage:t}=this.wallet,a=j.isMobile(),s=j.isIos(),l=j.isAndroid(),d=[n,i,t,o].filter(Boolean).length>1,h=he.getTruncateString({string:e,charsStart:12,charsEnd:0,truncate:"end"});return d&&!a?c` - U.push("Downloads",{wallet:this.wallet})} - > - `:!d&&t?c` - - `:n&&s?c` - - `:i&&l?c` - - `:(this.style.display="none",null)}onAppStore(){this.wallet?.app_store&&j.openHref(this.wallet.app_store,"_blank")}onPlayStore(){this.wallet?.play_store&&j.openHref(this.wallet.play_store,"_blank")}onHomePage(){this.wallet?.homepage&&j.openHref(this.wallet.homepage,"_blank")}};st.styles=[Ni];li([u({type:Object})],st.prototype,"wallet",void 0);st=li([P("w3m-mobile-download-links")],st);const Mi=N` - @keyframes shake { - 0% { - transform: translateX(0); - } - 25% { - transform: translateX(3px); - } - 50% { - transform: translateX(-3px); - } - 75% { - transform: translateX(3px); - } - 100% { - transform: translateX(0); - } - } - - wui-flex:first-child:not(:only-child) { - position: relative; - } - - wui-loading-thumbnail { - position: absolute; - } - - wui-icon-box { - position: absolute; - right: calc(var(--wui-spacing-3xs) * -1); - bottom: calc(var(--wui-spacing-3xs) * -1); - opacity: 0; - transform: scale(0.5); - transition-property: opacity, transform; - transition-duration: var(--wui-duration-lg); - transition-timing-function: var(--wui-ease-out-power-2); - will-change: opacity, transform; - } - - wui-text[align='center'] { - width: 100%; - padding: 0px var(--wui-spacing-l); - } - - [data-error='true'] wui-icon-box { - opacity: 1; - transform: scale(1); - } - - [data-error='true'] > wui-flex:first-child { - animation: shake 250ms cubic-bezier(0.36, 0.07, 0.19, 0.97) both; - } - - [data-retry='false'] wui-link { - display: none; - } - - [data-retry='true'] wui-link { - display: block; - opacity: 1; - } -`;var se=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};class V extends O{constructor(){super(),this.wallet=U.state.data?.wallet,this.connector=U.state.data?.connector,this.timeout=void 0,this.secondaryBtnIcon="refresh",this.onConnect=void 0,this.onRender=void 0,this.onAutoConnect=void 0,this.isWalletConnect=!0,this.unsubscribe=[],this.imageSrc=K.getWalletImage(this.wallet)??K.getConnectorImage(this.connector),this.name=this.wallet?.name??this.connector?.name??"Wallet",this.isRetrying=!1,this.uri=k.state.wcUri,this.error=k.state.wcError,this.ready=!1,this.showRetry=!1,this.secondaryBtnLabel="Try again",this.secondaryLabel="Accept connection request in the wallet",this.isLoading=!1,this.isMobile=!1,this.onRetry=void 0,this.unsubscribe.push(k.subscribeKey("wcUri",e=>{this.uri=e,this.isRetrying&&this.onRetry&&(this.isRetrying=!1,this.onConnect?.())}),k.subscribeKey("wcError",e=>this.error=e)),(j.isTelegram()||j.isSafari())&&j.isIos()&&k.state.wcUri&&this.onConnect?.()}firstUpdated(){this.onAutoConnect?.(),this.showRetry=!this.onAutoConnect}disconnectedCallback(){this.unsubscribe.forEach(e=>e()),k.setWcError(!1),clearTimeout(this.timeout)}render(){this.onRender?.(),this.onShowRetry();const e=this.error?"Connection can be declined if a previous request is still active":this.secondaryLabel;let n=`Continue in ${this.name}`;return this.error&&(n="Connection declined"),c` - - - - - ${this.error?null:this.loaderTemplate()} - - - - - - - ${n} - - ${e} - - - ${this.secondaryBtnLabel?c` - - - ${this.secondaryBtnLabel} - - `:null} - - - ${this.isWalletConnect?c` - - - - Copy link - - - `:null} - - - `}onShowRetry(){this.error&&!this.showRetry&&(this.showRetry=!0,this.shadowRoot?.querySelector("wui-button")?.animate([{opacity:0},{opacity:1}],{fill:"forwards",easing:"ease"}))}onTryAgain(){k.setWcError(!1),this.onRetry?(this.isRetrying=!0,this.onRetry?.()):this.onConnect?.()}loaderTemplate(){const e=en.state.themeVariables["--w3m-border-radius-master"],n=e?parseInt(e.replace("px",""),10):4;return c``}onCopyUri(){try{this.uri&&(j.copyToClopboard(this.uri),Xe.showSuccess("Link copied"))}catch{Xe.showError("Failed to copy")}}}V.styles=Mi;se([_()],V.prototype,"isRetrying",void 0);se([_()],V.prototype,"uri",void 0);se([_()],V.prototype,"error",void 0);se([_()],V.prototype,"ready",void 0);se([_()],V.prototype,"showRetry",void 0);se([_()],V.prototype,"secondaryBtnLabel",void 0);se([_()],V.prototype,"secondaryLabel",void 0);se([_()],V.prototype,"isLoading",void 0);se([u({type:Boolean})],V.prototype,"isMobile",void 0);se([u()],V.prototype,"onRetry",void 0);var Ui=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let Rn=class extends V{constructor(){if(super(),!this.wallet)throw new Error("w3m-connecting-wc-browser: No wallet provided");this.onConnect=this.onConnectProxy.bind(this),this.onAutoConnect=this.onConnectProxy.bind(this),te.sendEvent({type:"track",event:"SELECT_WALLET",properties:{name:this.wallet.name,platform:"browser"}})}async onConnectProxy(){try{this.error=!1;const{connectors:e}=M.state,n=e.find(i=>i.type==="ANNOUNCED"&&i.info?.rdns===this.wallet?.rdns||i.type==="INJECTED"||i.name===this.wallet?.name);if(n)await k.connectExternal(n,n.chain);else throw new Error("w3m-connecting-wc-browser: No connector found");oi.close(),te.sendEvent({type:"track",event:"CONNECT_SUCCESS",properties:{method:"browser",name:this.wallet?.name||"Unknown"}})}catch(e){te.sendEvent({type:"track",event:"CONNECT_ERROR",properties:{message:e?.message??"Unknown"}}),this.error=!0}}};Rn=Ui([P("w3m-connecting-wc-browser")],Rn);var qi=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let $n=class extends V{constructor(){if(super(),!this.wallet)throw new Error("w3m-connecting-wc-desktop: No wallet provided");this.onConnect=this.onConnectProxy.bind(this),this.onRender=this.onRenderProxy.bind(this),te.sendEvent({type:"track",event:"SELECT_WALLET",properties:{name:this.wallet.name,platform:"desktop"}})}onRenderProxy(){!this.ready&&this.uri&&(this.ready=!0,this.onConnect?.())}onConnectProxy(){if(this.wallet?.desktop_link&&this.uri)try{this.error=!1;const{desktop_link:e,name:n}=this.wallet,{redirect:i,href:o}=j.formatNativeUrl(e,this.uri);k.setWcLinking({name:n,href:o}),k.setRecentWallet(this.wallet),j.openHref(i,"_blank")}catch{this.error=!0}}};$n=qi([P("w3m-connecting-wc-desktop")],$n);var je=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let Ce=class extends V{constructor(){if(super(),this.btnLabelTimeout=void 0,this.redirectDeeplink=void 0,this.redirectUniversalLink=void 0,this.target=void 0,this.preferUniversalLinks=ee.state.experimental_preferUniversalLinks,this.isLoading=!0,this.onConnect=()=>{if(this.wallet?.mobile_link&&this.uri)try{this.error=!1;const{mobile_link:e,link_mode:n,name:i}=this.wallet,{redirect:o,redirectUniversalLink:t,href:a}=j.formatNativeUrl(e,this.uri,n);this.redirectDeeplink=o,this.redirectUniversalLink=t,this.target=j.isIframe()?"_top":"_self",k.setWcLinking({name:i,href:a}),k.setRecentWallet(this.wallet),this.preferUniversalLinks&&this.redirectUniversalLink?j.openHref(this.redirectUniversalLink,this.target):j.openHref(this.redirectDeeplink,this.target)}catch(e){te.sendEvent({type:"track",event:"CONNECT_PROXY_ERROR",properties:{message:e instanceof Error?e.message:"Error parsing the deeplink",uri:this.uri,mobile_link:this.wallet.mobile_link,name:this.wallet.name}}),this.error=!0}},!this.wallet)throw new Error("w3m-connecting-wc-mobile: No wallet provided");this.secondaryBtnLabel="Open",this.secondaryLabel=ri.CONNECT_LABELS.MOBILE,this.secondaryBtnIcon="externalLink",this.onHandleURI(),this.unsubscribe.push(k.subscribeKey("wcUri",()=>{this.onHandleURI()})),te.sendEvent({type:"track",event:"SELECT_WALLET",properties:{name:this.wallet.name,platform:"mobile"}})}disconnectedCallback(){super.disconnectedCallback(),clearTimeout(this.btnLabelTimeout)}onHandleURI(){this.isLoading=!this.uri,!this.ready&&this.uri&&(this.ready=!0,this.onConnect?.())}onTryAgain(){k.setWcError(!1),this.onConnect?.()}};je([_()],Ce.prototype,"redirectDeeplink",void 0);je([_()],Ce.prototype,"redirectUniversalLink",void 0);je([_()],Ce.prototype,"target",void 0);je([_()],Ce.prototype,"preferUniversalLinks",void 0);je([_()],Ce.prototype,"isLoading",void 0);Ce=je([P("w3m-connecting-wc-mobile")],Ce);var Te={},Et,_n;function Fi(){return _n||(_n=1,Et=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}),Et}var Wt={},me={},In;function Ee(){if(In)return me;In=1;let r;const e=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];return me.getSymbolSize=function(i){if(!i)throw new Error('"version" cannot be null or undefined');if(i<1||i>40)throw new Error('"version" should be in range from 1 to 40');return i*4+17},me.getSymbolTotalCodewords=function(i){return e[i]},me.getBCHDigit=function(n){let i=0;for(;n!==0;)i++,n>>>=1;return i},me.setToSJISFunction=function(i){if(typeof i!="function")throw new Error('"toSJISFunc" is not a valid function.');r=i},me.isKanjiModeEnabled=function(){return typeof r<"u"},me.toSJIS=function(i){return r(i)},me}var St={},En;function fn(){return En||(En=1,(function(r){r.L={bit:1},r.M={bit:0},r.Q={bit:3},r.H={bit:2};function e(n){if(typeof n!="string")throw new Error("Param is not a string");switch(n.toLowerCase()){case"l":case"low":return r.L;case"m":case"medium":return r.M;case"q":case"quartile":return r.Q;case"h":case"high":return r.H;default:throw new Error("Unknown EC Level: "+n)}}r.isValid=function(i){return i&&typeof i.bit<"u"&&i.bit>=0&&i.bit<4},r.from=function(i,o){if(r.isValid(i))return i;try{return e(i)}catch{return o}}})(St)),St}var Tt,Wn;function Vi(){if(Wn)return Tt;Wn=1;function r(){this.buffer=[],this.length=0}return r.prototype={get:function(e){const n=Math.floor(e/8);return(this.buffer[n]>>>7-e%8&1)===1},put:function(e,n){for(let i=0;i>>n-i-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(e){const n=Math.floor(this.length/8);this.buffer.length<=n&&this.buffer.push(0),e&&(this.buffer[n]|=128>>>this.length%8),this.length++}},Tt=r,Tt}var Bt,Sn;function Ki(){if(Sn)return Bt;Sn=1;function r(e){if(!e||e<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}return r.prototype.set=function(e,n,i,o){const t=e*this.size+n;this.data[t]=i,o&&(this.reservedBit[t]=!0)},r.prototype.get=function(e,n){return this.data[e*this.size+n]},r.prototype.xor=function(e,n,i){this.data[e*this.size+n]^=i},r.prototype.isReserved=function(e,n){return this.reservedBit[e*this.size+n]},Bt=r,Bt}var Pt={},Tn;function Hi(){return Tn||(Tn=1,(function(r){const e=Ee().getSymbolSize;r.getRowColCoords=function(i){if(i===1)return[];const o=Math.floor(i/7)+2,t=e(i),a=t===145?26:Math.ceil((t-13)/(2*o-2))*2,s=[t-7];for(let l=1;l=0&&o<=7},r.from=function(o){return r.isValid(o)?parseInt(o,10):void 0},r.getPenaltyN1=function(o){const t=o.size;let a=0,s=0,l=0,d=null,h=null;for(let w=0;w=5&&(a+=e.N1+(s-5)),d=p,s=1),p=o.get(x,w),p===h?l++:(l>=5&&(a+=e.N1+(l-5)),h=p,l=1)}s>=5&&(a+=e.N1+(s-5)),l>=5&&(a+=e.N1+(l-5))}return a},r.getPenaltyN2=function(o){const t=o.size;let a=0;for(let s=0;s=10&&(s===1488||s===93)&&a++,l=l<<1&2047|o.get(h,d),h>=10&&(l===1488||l===93)&&a++}return a*e.N3},r.getPenaltyN4=function(o){let t=0;const a=o.data.length;for(let l=0;l=0;){const a=t[0];for(let l=0;l0){const s=new Uint8Array(this.degree);return s.set(t,a),s}return t},jt=e,jt}var kt={},Dt={},zt={},kn;function ui(){return kn||(kn=1,zt.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}),zt}var oe={},Dn;function di(){if(Dn)return oe;Dn=1;const r="[0-9]+",e="[A-Z $%*+\\-./:]+";let n="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";n=n.replace(/u/g,"\\u");const i="(?:(?![A-Z0-9 $%*+\\-./:]|"+n+`)(?:.|[\r -]))+`;oe.KANJI=new RegExp(n,"g"),oe.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g"),oe.BYTE=new RegExp(i,"g"),oe.NUMERIC=new RegExp(r,"g"),oe.ALPHANUMERIC=new RegExp(e,"g");const o=new RegExp("^"+n+"$"),t=new RegExp("^"+r+"$"),a=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");return oe.testKanji=function(l){return o.test(l)},oe.testNumeric=function(l){return t.test(l)},oe.testAlphanumeric=function(l){return a.test(l)},oe}var zn;function We(){return zn||(zn=1,(function(r){const e=ui(),n=di();r.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},r.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},r.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},r.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},r.MIXED={bit:-1},r.getCharCountIndicator=function(t,a){if(!t.ccBits)throw new Error("Invalid mode: "+t);if(!e.isValid(a))throw new Error("Invalid version: "+a);return a>=1&&a<10?t.ccBits[0]:a<27?t.ccBits[1]:t.ccBits[2]},r.getBestModeForData=function(t){return n.testNumeric(t)?r.NUMERIC:n.testAlphanumeric(t)?r.ALPHANUMERIC:n.testKanji(t)?r.KANJI:r.BYTE},r.toString=function(t){if(t&&t.id)return t.id;throw new Error("Invalid mode")},r.isValid=function(t){return t&&t.bit&&t.ccBits};function i(o){if(typeof o!="string")throw new Error("Param is not a string");switch(o.toLowerCase()){case"numeric":return r.NUMERIC;case"alphanumeric":return r.ALPHANUMERIC;case"kanji":return r.KANJI;case"byte":return r.BYTE;default:throw new Error("Unknown mode: "+o)}}r.from=function(t,a){if(r.isValid(t))return t;try{return i(t)}catch{return a}}})(Dt)),Dt}var Nn;function Zi(){return Nn||(Nn=1,(function(r){const e=Ee(),n=ci(),i=fn(),o=We(),t=ui(),a=7973,s=e.getBCHDigit(a);function l(x,p,W){for(let v=1;v<=40;v++)if(p<=r.getCapacity(v,W,x))return v}function d(x,p){return o.getCharCountIndicator(x,p)+4}function h(x,p){let W=0;return x.forEach(function(v){const S=d(v.mode,p);W+=S+v.getBitsLength()}),W}function w(x,p){for(let W=1;W<=40;W++)if(h(x,W)<=r.getCapacity(W,p,o.MIXED))return W}r.from=function(p,W){return t.isValid(p)?parseInt(p,10):W},r.getCapacity=function(p,W,v){if(!t.isValid(p))throw new Error("Invalid QR Code version");typeof v>"u"&&(v=o.BYTE);const S=e.getSymbolTotalCodewords(p),m=n.getTotalCodewordsCount(p,W),g=(S-m)*8;if(v===o.MIXED)return g;const b=g-d(v,p);switch(v){case o.NUMERIC:return Math.floor(b/10*3);case o.ALPHANUMERIC:return Math.floor(b/11*2);case o.KANJI:return Math.floor(b/13);case o.BYTE:default:return Math.floor(b/8)}},r.getBestVersionForData=function(p,W){let v;const S=i.from(W,i.M);if(Array.isArray(p)){if(p.length>1)return w(p,S);if(p.length===0)return 1;v=p[0]}else v=p;return l(v.mode,v.getLength(),S)},r.getEncodedBits=function(p){if(!t.isValid(p)||p<7)throw new Error("Invalid QR Code version");let W=p<<12;for(;e.getBCHDigit(W)-s>=0;)W^=a<=0;)l^=e<0&&(t=this.data.substr(o),a=parseInt(t,10),i.put(a,s*3+1))},Ut=e,Ut}var qt,qn;function no(){if(qn)return qt;qn=1;const r=We(),e=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function n(i){this.mode=r.ALPHANUMERIC,this.data=i}return n.getBitsLength=function(o){return 11*Math.floor(o/2)+6*(o%2)},n.prototype.getLength=function(){return this.data.length},n.prototype.getBitsLength=function(){return n.getBitsLength(this.data.length)},n.prototype.write=function(o){let t;for(t=0;t+2<=this.data.length;t+=2){let a=e.indexOf(this.data[t])*45;a+=e.indexOf(this.data[t+1]),o.put(a,11)}this.data.length%2&&o.put(e.indexOf(this.data[t]),6)},qt=n,qt}var Ft,Fn;function io(){return Fn||(Fn=1,Ft=function(e){for(var n=[],i=e.length,o=0;o=55296&&t<=56319&&i>o+1){var a=e.charCodeAt(o+1);a>=56320&&a<=57343&&(t=(t-55296)*1024+a-56320+65536,o+=1)}if(t<128){n.push(t);continue}if(t<2048){n.push(t>>6|192),n.push(t&63|128);continue}if(t<55296||t>=57344&&t<65536){n.push(t>>12|224),n.push(t>>6&63|128),n.push(t&63|128);continue}if(t>=65536&&t<=1114111){n.push(t>>18|240),n.push(t>>12&63|128),n.push(t>>6&63|128),n.push(t&63|128);continue}n.push(239,191,189)}return new Uint8Array(n).buffer}),Ft}var Vt,Vn;function oo(){if(Vn)return Vt;Vn=1;const r=io(),e=We();function n(i){this.mode=e.BYTE,typeof i=="string"&&(i=r(i)),this.data=new Uint8Array(i)}return n.getBitsLength=function(o){return o*8},n.prototype.getLength=function(){return this.data.length},n.prototype.getBitsLength=function(){return n.getBitsLength(this.data.length)},n.prototype.write=function(i){for(let o=0,t=this.data.length;o=33088&&t<=40956)t-=33088;else if(t>=57408&&t<=60351)t-=49472;else throw new Error("Invalid SJIS character: "+this.data[o]+` -Make sure your charset is UTF-8`);t=(t>>>8&255)*192+(t&255),i.put(t,13)}},Kt=n,Kt}var Ht={exports:{}},Hn;function ao(){return Hn||(Hn=1,(function(r){var e={single_source_shortest_paths:function(n,i,o){var t={},a={};a[i]=0;var s=e.PriorityQueue.make();s.push(i,0);for(var l,d,h,w,x,p,W,v,S;!s.empty();){l=s.pop(),d=l.value,w=l.cost,x=n[d]||{};for(h in x)x.hasOwnProperty(h)&&(p=x[h],W=w+p,v=a[h],S=typeof a[h]>"u",(S||v>W)&&(a[h]=W,s.push(h,W),t[h]=d))}if(typeof o<"u"&&typeof a[o]>"u"){var m=["Could not find a path from ",i," to ",o,"."].join("");throw new Error(m)}return t},extract_shortest_path_from_predecessor_list:function(n,i){for(var o=[],t=i;t;)o.push(t),n[t],t=n[t];return o.reverse(),o},find_path:function(n,i,o){var t=e.single_source_shortest_paths(n,i,o);return e.extract_shortest_path_from_predecessor_list(t,o)},PriorityQueue:{make:function(n){var i=e.PriorityQueue,o={},t;n=n||{};for(t in i)i.hasOwnProperty(t)&&(o[t]=i[t]);return o.queue=[],o.sorter=n.sorter||i.default_sorter,o},default_sorter:function(n,i){return n.cost-i.cost},push:function(n,i){var o={value:n,cost:i};this.queue.push(o),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};r.exports=e})(Ht)),Ht.exports}var Gn;function so(){return Gn||(Gn=1,(function(r){const e=We(),n=to(),i=no(),o=oo(),t=ro(),a=di(),s=Ee(),l=ao();function d(m){return unescape(encodeURIComponent(m)).length}function h(m,g,b){const f=[];let D;for(;(D=m.exec(b))!==null;)f.push({data:D[0],index:D.index,mode:g,length:D[0].length});return f}function w(m){const g=h(a.NUMERIC,e.NUMERIC,m),b=h(a.ALPHANUMERIC,e.ALPHANUMERIC,m);let f,D;return s.isKanjiModeEnabled()?(f=h(a.BYTE,e.BYTE,m),D=h(a.KANJI,e.KANJI,m)):(f=h(a.BYTE_KANJI,e.BYTE,m),D=[]),g.concat(b,f,D).sort(function(T,I){return T.index-I.index}).map(function(T){return{data:T.data,mode:T.mode,length:T.length}})}function x(m,g){switch(g){case e.NUMERIC:return n.getBitsLength(m);case e.ALPHANUMERIC:return i.getBitsLength(m);case e.KANJI:return t.getBitsLength(m);case e.BYTE:return o.getBitsLength(m)}}function p(m){return m.reduce(function(g,b){const f=g.length-1>=0?g[g.length-1]:null;return f&&f.mode===b.mode?(g[g.length-1].data+=b.data,g):(g.push(b),g)},[])}function W(m){const g=[];for(let b=0;b=0&&$<=6&&(A===0||A===6)||A>=0&&A<=6&&($===0||$===6)||$>=2&&$<=4&&A>=2&&A<=4?C.set(R+$,B+A,!0,!0):C.set(R+$,B+A,!1,!0))}}function W(C){const T=C.size;for(let I=8;I>$&1)===1,C.set(L,R,B,!0),C.set(R,L,B,!0)}function m(C,T,I){const y=C.size,L=h.getEncodedBits(T,I);let R,B;for(R=0;R<15;R++)B=(L>>R&1)===1,R<6?C.set(R,8,B,!0):R<8?C.set(R+1,8,B,!0):C.set(y-15+R,8,B,!0),R<8?C.set(8,y-R-1,B,!0):R<9?C.set(8,15-R-1+1,B,!0):C.set(8,15-R-1,B,!0);C.set(y-8,8,1,!0)}function g(C,T){const I=C.size;let y=-1,L=I-1,R=7,B=0;for(let $=I-1;$>0;$-=2)for($===6&&$--;;){for(let A=0;A<2;A++)if(!C.isReserved(L,$-A)){let we=!1;B>>R&1)===1),C.set(L,$-A,we),R--,R===-1&&(B++,R=7)}if(L+=y,L<0||I<=L){L-=y,y=-y;break}}}function b(C,T,I){const y=new n;I.forEach(function(A){y.put(A.mode.bit,4),y.put(A.getLength(),w.getCharCountIndicator(A.mode,C)),A.write(y)});const L=r.getSymbolTotalCodewords(C),R=s.getTotalCodewordsCount(C,T),B=(L-R)*8;for(y.getLengthInBits()+4<=B&&y.put(0,4);y.getLengthInBits()%8!==0;)y.putBit(0);const $=(B-y.getLengthInBits())/8;for(let A=0;A<$;A++)y.put(A%2?17:236,8);return f(y,C,T)}function f(C,T,I){const y=r.getSymbolTotalCodewords(T),L=s.getTotalCodewordsCount(T,I),R=y-L,B=s.getBlocksCount(T,I),$=y%B,A=B-$,we=Math.floor(y/B),De=Math.floor(R/B),vi=De+1,mn=we-De,yi=new l(mn);let Ct=0;const Je=new Array(B),bn=new Array(B);let Rt=0;const xi=new Uint8Array(C.buffer);for(let Se=0;Se=7&&S(A,T),g(A,B),isNaN(y)&&(y=a.getBestMask(A,m.bind(null,A,I))),a.applyMask(y,A),m(A,I,y),{modules:A,version:T,errorCorrectionLevel:I,maskPattern:y,segments:L}}return Wt.create=function(T,I){if(typeof T>"u"||T==="")throw new Error("No input text");let y=e.M,L,R;return typeof I<"u"&&(y=e.from(I.errorCorrectionLevel,e.M),L=d.from(I.version),R=a.from(I.maskPattern),I.toSJISFunc&&r.setToSJISFunction(I.toSJISFunc)),D(T,L,y,R)},Wt}var Gt={},Yt={},Jn;function hi(){return Jn||(Jn=1,(function(r){function e(n){if(typeof n=="number"&&(n=n.toString()),typeof n!="string")throw new Error("Color should be defined as hex string");let i=n.slice().replace("#","").split("");if(i.length<3||i.length===5||i.length>8)throw new Error("Invalid hex color: "+n);(i.length===3||i.length===4)&&(i=Array.prototype.concat.apply([],i.map(function(t){return[t,t]}))),i.length===6&&i.push("F","F");const o=parseInt(i.join(""),16);return{r:o>>24&255,g:o>>16&255,b:o>>8&255,a:o&255,hex:"#"+i.slice(0,6).join("")}}r.getOptions=function(i){i||(i={}),i.color||(i.color={});const o=typeof i.margin>"u"||i.margin===null||i.margin<0?4:i.margin,t=i.width&&i.width>=21?i.width:void 0,a=i.scale||4;return{width:t,scale:t?4:a,margin:o,color:{dark:e(i.color.dark||"#000000ff"),light:e(i.color.light||"#ffffffff")},type:i.type,rendererOpts:i.rendererOpts||{}}},r.getScale=function(i,o){return o.width&&o.width>=i+o.margin*2?o.width/(i+o.margin*2):o.scale},r.getImageWidth=function(i,o){const t=r.getScale(i,o);return Math.floor((i+o.margin*2)*t)},r.qrToImageData=function(i,o,t){const a=o.modules.size,s=o.modules.data,l=r.getScale(a,t),d=Math.floor((a+t.margin*2)*l),h=t.margin*l,w=[t.color.light,t.color.dark];for(let x=0;x=h&&p>=h&&x"u"&&(!a||!a.getContext)&&(l=a,a=void 0),a||(d=i()),l=e.getOptions(l);const h=e.getImageWidth(t.modules.size,l),w=d.getContext("2d"),x=w.createImageData(h,h);return e.qrToImageData(x.data,t,l),n(w,d,h),w.putImageData(x,0,0),d},r.renderToDataURL=function(t,a,s){let l=s;typeof l>"u"&&(!a||!a.getContext)&&(l=a,a=void 0),l||(l={});const d=r.render(t,a,l),h=l.type||"image/png",w=l.rendererOpts||{};return d.toDataURL(h,w.quality)}})(Gt)),Gt}var Jt={},Xn;function uo(){if(Xn)return Jt;Xn=1;const r=hi();function e(o,t){const a=o.a/255,s=t+'="'+o.hex+'"';return a<1?s+" "+t+'-opacity="'+a.toFixed(2).slice(1)+'"':s}function n(o,t,a){let s=o+t;return typeof a<"u"&&(s+=" "+a),s}function i(o,t,a){let s="",l=0,d=!1,h=0;for(let w=0;w0&&x>0&&o[w-1]||(s+=d?n("M",x+a,.5+p+a):n("m",l,0),l=0,d=!1),x+1':"",p="',W='viewBox="0 0 '+w+" "+w+'"',S=''+x+p+` -`;return typeof s=="function"&&s(null,S),S},Jt}var Zn;function ho(){if(Zn)return Te;Zn=1;const r=Fi(),e=lo(),n=co(),i=uo();function o(t,a,s,l,d){const h=[].slice.call(arguments,1),w=h.length,x=typeof h[w-1]=="function";if(!x&&!r())throw new Error("Callback required as last argument");if(x){if(w<2)throw new Error("Too few arguments provided");w===2?(d=s,s=a,a=l=void 0):w===3&&(a.getContext&&typeof d>"u"?(d=l,l=void 0):(d=l,l=s,s=a,a=void 0))}else{if(w<1)throw new Error("Too few arguments provided");return w===1?(s=a,a=l=void 0):w===2&&!a.getContext&&(l=s,s=a,a=void 0),new Promise(function(p,W){try{const v=e.create(s,l);p(t(v,a,l))}catch(v){W(v)}})}try{const p=e.create(s,l);d(null,t(p,a,l))}catch(p){d(p)}}return Te.create=e.create,Te.toCanvas=o.bind(null,n.render),Te.toDataURL=o.bind(null,n.renderToDataURL),Te.toString=o.bind(null,function(t,a,s){return i.render(t,s)}),Te}var fo=ho();const po=Ei(fo),go=.1,ei=2.5,de=7;function Qt(r,e,n){return r===e?!1:(r-e<0?e-r:r-e)<=n+go}function wo(r,e){const n=Array.prototype.slice.call(po.create(r,{errorCorrectionLevel:e}).modules.data,0),i=Math.sqrt(n.length);return n.reduce((o,t,a)=>(a%i===0?o.push([t]):o[o.length-1].push(t))&&o,[])}const mo={generate({uri:r,size:e,logoSize:n,dotColor:i="#141414"}){const o="transparent",a=[],s=wo(r,"Q"),l=e/s.length,d=[{x:0,y:0},{x:1,y:0},{x:0,y:1}];d.forEach(({x:v,y:S})=>{const m=(s.length-de)*l*v,g=(s.length-de)*l*S,b=.45;for(let f=0;f - `)}});const h=Math.floor((n+25)/l),w=s.length/2-h/2,x=s.length/2+h/2-1,p=[];s.forEach((v,S)=>{v.forEach((m,g)=>{if(s[S][g]&&!(Ss.length-(de+1)&&gs.length-(de+1))&&!(S>w&&Sw&&g{W[v]?W[v]?.push(S):W[v]=[S]}),Object.entries(W).map(([v,S])=>{const m=S.filter(g=>S.every(b=>!Qt(g,b,l)));return[Number(v),m]}).forEach(([v,S])=>{S.forEach(m=>{a.push(Ne``)})}),Object.entries(W).filter(([v,S])=>S.length>1).map(([v,S])=>{const m=S.filter(g=>S.some(b=>Qt(g,b,l)));return[Number(v),m]}).map(([v,S])=>{S.sort((g,b)=>gf.some(D=>Qt(g,D,l)));b?b.push(g):m.push([g])}return[v,m.map(g=>[g[0],g[g.length-1]])]}).forEach(([v,S])=>{S.forEach(([m,g])=>{a.push(Ne` - - `)})}),a}},bo=N` - :host { - position: relative; - user-select: none; - display: block; - overflow: hidden; - aspect-ratio: 1 / 1; - width: var(--local-size); - } - - :host([data-theme='dark']) { - border-radius: clamp(0px, var(--wui-border-radius-l), 40px); - background-color: var(--wui-color-inverse-100); - padding: var(--wui-spacing-l); - } - - :host([data-theme='light']) { - box-shadow: 0 0 0 1px var(--wui-color-bg-125); - background-color: var(--wui-color-bg-125); - } - - :host([data-clear='true']) > wui-icon { - display: none; - } - - svg:first-child, - wui-image, - wui-icon { - position: absolute; - top: 50%; - left: 50%; - transform: translateY(-50%) translateX(-50%); - } - - wui-image { - width: 25%; - height: 25%; - border-radius: var(--wui-border-radius-xs); - } - - wui-icon { - width: 100%; - height: 100%; - color: var(--local-icon-color) !important; - transform: translateY(-50%) translateX(-50%) scale(0.25); - } -`;var ge=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};const vo="#3396ff";let ne=class extends O{constructor(){super(...arguments),this.uri="",this.size=0,this.theme="dark",this.imageSrc=void 0,this.alt=void 0,this.arenaClear=void 0,this.farcaster=void 0}render(){return this.dataset.theme=this.theme,this.dataset.clear=String(this.arenaClear),this.style.cssText=` - --local-size: ${this.size}px; - --local-icon-color: ${this.color??vo} - `,c`${this.templateVisual()} ${this.templateSvg()}`}templateSvg(){const e=this.theme==="light"?this.size:this.size-32;return Ne` - - ${mo.generate({uri:this.uri,size:e,logoSize:this.arenaClear?0:e/4,dotColor:this.color})} - - `}templateVisual(){return this.imageSrc?c``:this.farcaster?c``:c``}};ne.styles=[q,bo];ge([u()],ne.prototype,"uri",void 0);ge([u({type:Number})],ne.prototype,"size",void 0);ge([u()],ne.prototype,"theme",void 0);ge([u()],ne.prototype,"imageSrc",void 0);ge([u()],ne.prototype,"alt",void 0);ge([u()],ne.prototype,"color",void 0);ge([u({type:Boolean})],ne.prototype,"arenaClear",void 0);ge([u({type:Boolean})],ne.prototype,"farcaster",void 0);ne=ge([P("wui-qr-code")],ne);const yo=N` - :host { - display: block; - box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-005); - background: linear-gradient( - 120deg, - var(--wui-color-bg-200) 5%, - var(--wui-color-bg-200) 48%, - var(--wui-color-bg-300) 55%, - var(--wui-color-bg-300) 60%, - var(--wui-color-bg-300) calc(60% + 10px), - var(--wui-color-bg-200) calc(60% + 12px), - var(--wui-color-bg-200) 100% - ); - background-size: 250%; - animation: shimmer 3s linear infinite reverse; - } - - :host([variant='light']) { - background: linear-gradient( - 120deg, - var(--wui-color-bg-150) 5%, - var(--wui-color-bg-150) 48%, - var(--wui-color-bg-200) 55%, - var(--wui-color-bg-200) 60%, - var(--wui-color-bg-200) calc(60% + 10px), - var(--wui-color-bg-150) calc(60% + 12px), - var(--wui-color-bg-150) 100% - ); - background-size: 250%; - } - - @keyframes shimmer { - from { - background-position: -250% 0; - } - to { - background-position: 250% 0; - } - } -`;var He=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let Re=class extends O{constructor(){super(...arguments),this.width="",this.height="",this.borderRadius="m",this.variant="default"}render(){return this.style.cssText=` - width: ${this.width}; - height: ${this.height}; - border-radius: ${`clamp(0px,var(--wui-border-radius-${this.borderRadius}), 40px)`}; - `,c``}};Re.styles=[yo];He([u()],Re.prototype,"width",void 0);He([u()],Re.prototype,"height",void 0);He([u()],Re.prototype,"borderRadius",void 0);He([u()],Re.prototype,"variant",void 0);Re=He([P("wui-shimmer")],Re);const xo="https://reown.com",Co=N` - .reown-logo { - height: var(--wui-spacing-xxl); - } - - a { - text-decoration: none; - cursor: pointer; - } - - a:hover { - opacity: 0.9; - } -`;var Ro=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let tn=class extends O{render(){return c` - - - UX by - - - - `}};tn.styles=[q,G,Co];tn=Ro([P("wui-ux-by-reown")],tn);const $o=N` - @keyframes fadein { - from { - opacity: 0; - } - to { - opacity: 1; - } - } - - wui-shimmer { - width: 100%; - aspect-ratio: 1 / 1; - border-radius: clamp(0px, var(--wui-border-radius-l), 40px) !important; - } - - wui-qr-code { - opacity: 0; - animation-duration: 200ms; - animation-timing-function: ease; - animation-name: fadein; - animation-fill-mode: forwards; - } -`;var _o=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let nn=class extends V{constructor(){super(),this.forceUpdate=()=>{this.requestUpdate()},window.addEventListener("resize",this.forceUpdate),te.sendEvent({type:"track",event:"SELECT_WALLET",properties:{name:this.wallet?.name??"WalletConnect",platform:"qrcode"}})}disconnectedCallback(){super.disconnectedCallback(),this.unsubscribe?.forEach(e=>e()),window.removeEventListener("resize",this.forceUpdate)}render(){return this.onRenderProxy(),c` - - ${this.qrCodeTemplate()} - - - Scan this QR Code with your phone - - ${this.copyTemplate()} - - - `}onRenderProxy(){!this.ready&&this.uri&&(this.timeout=setTimeout(()=>{this.ready=!0},200))}qrCodeTemplate(){if(!this.uri||!this.ready)return null;const e=this.getBoundingClientRect().width-40,n=this.wallet?this.wallet.name:void 0;return k.setWcLinking(void 0),k.setRecentWallet(this.wallet),c` `}copyTemplate(){const e=!this.uri||!this.ready;return c` - - Copy link - `}};nn.styles=$o;nn=_o([P("w3m-connecting-wc-qrcode")],nn);var Io=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let ti=class extends O{constructor(){if(super(),this.wallet=U.state.data?.wallet,!this.wallet)throw new Error("w3m-connecting-wc-unsupported: No wallet provided");te.sendEvent({type:"track",event:"SELECT_WALLET",properties:{name:this.wallet.name,platform:"browser"}})}render(){return c` - - - - Not Detected - - - - `}};ti=Io([P("w3m-connecting-wc-unsupported")],ti);var fi=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let on=class extends V{constructor(){if(super(),this.isLoading=!0,!this.wallet)throw new Error("w3m-connecting-wc-web: No wallet provided");this.onConnect=this.onConnectProxy.bind(this),this.secondaryBtnLabel="Open",this.secondaryLabel=ri.CONNECT_LABELS.MOBILE,this.secondaryBtnIcon="externalLink",this.updateLoadingState(),this.unsubscribe.push(k.subscribeKey("wcUri",()=>{this.updateLoadingState()})),te.sendEvent({type:"track",event:"SELECT_WALLET",properties:{name:this.wallet.name,platform:"web"}})}updateLoadingState(){this.isLoading=!this.uri}onConnectProxy(){if(this.wallet?.webapp_link&&this.uri)try{this.error=!1;const{webapp_link:e,name:n}=this.wallet,{redirect:i,href:o}=j.formatUniversalUrl(e,this.uri);k.setWcLinking({name:n,href:o}),k.setRecentWallet(this.wallet),j.openHref(i,"_blank")}catch{this.error=!0}}};fi([_()],on.prototype,"isLoading",void 0);on=fi([P("w3m-connecting-wc-web")],on);var Ge=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let Le=class extends O{constructor(){super(),this.wallet=U.state.data?.wallet,this.unsubscribe=[],this.platform=void 0,this.platforms=[],this.isSiwxEnabled=!!ee.state.siwx,this.remoteFeatures=ee.state.remoteFeatures,this.determinePlatforms(),this.initializeConnection(),this.unsubscribe.push(ee.subscribeKey("remoteFeatures",e=>this.remoteFeatures=e))}disconnectedCallback(){this.unsubscribe.forEach(e=>e())}render(){return c` - ${this.headerTemplate()} -
${this.platformTemplate()}
- ${this.reownBrandingTemplate()} - `}reownBrandingTemplate(){return this.remoteFeatures?.reownBranding?c``:null}async initializeConnection(e=!1){if(!(this.platform==="browser"||ee.state.manualWCControl&&!e))try{const{wcPairingExpiry:n,status:i}=k.state;(e||ee.state.enableEmbedded||j.isPairingExpired(n)||i==="connecting")&&(await k.connectWalletConnect(),this.isSiwxEnabled||oi.close())}catch(n){te.sendEvent({type:"track",event:"CONNECT_ERROR",properties:{message:n?.message??"Unknown"}}),k.setWcError(!0),Xe.showError(n.message??"Connection error"),k.resetWcConnection(),U.goBack()}}determinePlatforms(){if(!this.wallet){this.platforms.push("qrcode"),this.platform="qrcode";return}if(this.platform)return;const{mobile_link:e,desktop_link:n,webapp_link:i,injected:o,rdns:t}=this.wallet,a=o?.map(({injected_id:W})=>W).filter(Boolean),s=[...t?[t]:a??[]],l=ee.state.isUniversalProvider?!1:s.length,d=e,h=i,w=k.checkInstalled(s),x=l&&w,p=n&&!j.isMobile();x&&!Zt.state.noAdapters&&this.platforms.push("browser"),d&&this.platforms.push(j.isMobile()?"mobile":"qrcode"),h&&this.platforms.push("web"),p&&this.platforms.push("desktop"),!x&&l&&!Zt.state.noAdapters&&this.platforms.push("unsupported"),this.platform=this.platforms[0]}platformTemplate(){switch(this.platform){case"browser":return c``;case"web":return c``;case"desktop":return c` - this.initializeConnection(!0)}> - - `;case"mobile":return c` - this.initializeConnection(!0)}> - - `;case"qrcode":return c``;default:return c``}}headerTemplate(){return this.platforms.length>1?c` - - - `:null}async onSelectPlatform(e){const n=this.shadowRoot?.querySelector("div");n&&(await n.animate([{opacity:1},{opacity:0}],{duration:200,fill:"forwards",easing:"ease"}).finished,this.platform=e,n.animate([{opacity:0},{opacity:1}],{duration:200,fill:"forwards",easing:"ease"}))}};Ge([_()],Le.prototype,"platform",void 0);Ge([_()],Le.prototype,"platforms",void 0);Ge([_()],Le.prototype,"isSiwxEnabled",void 0);Ge([_()],Le.prototype,"remoteFeatures",void 0);Le=Ge([P("w3m-connecting-wc-view")],Le);var pi=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let rn=class extends O{constructor(){super(...arguments),this.isMobile=j.isMobile()}render(){if(this.isMobile){const{featured:e,recommended:n}=z.state,{customWallets:i}=ee.state,o=ft.getRecentWallets(),t=e.length||n.length||i?.length||o.length;return c` - ${t?c``:null} - - `}return c` - - - `}};pi([_()],rn.prototype,"isMobile",void 0);rn=pi([P("w3m-connecting-wc-basic-view")],rn);/** - * @license - * Copyright 2020 Google LLC - * SPDX-License-Identifier: BSD-3-Clause - */const pn=()=>new Eo;class Eo{}const Xt=new WeakMap,gn=$i(class extends _i{render(r){return xn}update(r,[e]){const n=e!==this.G;return n&&this.G!==void 0&&this.rt(void 0),(n||this.lt!==this.ct)&&(this.G=e,this.ht=r.options?.host,this.rt(this.ct=r.element)),xn}rt(r){if(this.isConnected||(r=void 0),typeof this.G=="function"){const e=this.ht??globalThis;let n=Xt.get(e);n===void 0&&(n=new WeakMap,Xt.set(e,n)),n.get(this.G)!==void 0&&this.G.call(this.ht,void 0),n.set(this.G,r),r!==void 0&&this.G.call(this.ht,r)}else this.G.value=r}get lt(){return typeof this.G=="function"?Xt.get(this.ht??globalThis)?.get(this.G):this.G?.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}}),Wo=N` - :host { - display: flex; - align-items: center; - justify-content: center; - } - - label { - position: relative; - display: inline-block; - width: 32px; - height: 22px; - } - - input { - width: 0; - height: 0; - opacity: 0; - } - - span { - position: absolute; - cursor: pointer; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: var(--wui-color-blue-100); - border-width: 1px; - border-style: solid; - border-color: var(--wui-color-gray-glass-002); - border-radius: 999px; - transition: - background-color var(--wui-ease-inout-power-1) var(--wui-duration-md), - border-color var(--wui-ease-inout-power-1) var(--wui-duration-md); - will-change: background-color, border-color; - } - - span:before { - position: absolute; - content: ''; - height: 16px; - width: 16px; - left: 3px; - top: 2px; - background-color: var(--wui-color-inverse-100); - transition: transform var(--wui-ease-inout-power-1) var(--wui-duration-lg); - will-change: transform; - border-radius: 50%; - } - - input:checked + span { - border-color: var(--wui-color-gray-glass-005); - background-color: var(--wui-color-blue-100); - } - - input:not(:checked) + span { - background-color: var(--wui-color-gray-glass-010); - } - - input:checked + span:before { - transform: translateX(calc(100% - 7px)); - } -`;var gi=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let lt=class extends O{constructor(){super(...arguments),this.inputElementRef=pn(),this.checked=void 0}render(){return c` - - `}dispatchChangeEvent(){this.dispatchEvent(new CustomEvent("switchChange",{detail:this.inputElementRef.value?.checked,bubbles:!0,composed:!0}))}};lt.styles=[q,G,Ri,Wo];gi([u({type:Boolean})],lt.prototype,"checked",void 0);lt=gi([P("wui-switch")],lt);const So=N` - :host { - height: 100%; - } - - button { - display: flex; - align-items: center; - justify-content: center; - column-gap: var(--wui-spacing-1xs); - padding: var(--wui-spacing-xs) var(--wui-spacing-s); - background-color: var(--wui-color-gray-glass-002); - border-radius: var(--wui-border-radius-xs); - box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-002); - transition: background-color var(--wui-ease-out-power-1) var(--wui-duration-md); - will-change: background-color; - cursor: pointer; - } - - wui-switch { - pointer-events: none; - } -`;var wi=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let ct=class extends O{constructor(){super(...arguments),this.checked=void 0}render(){return c` - - `}};ct.styles=[q,G,So];wi([u({type:Boolean})],ct.prototype,"checked",void 0);ct=wi([P("wui-certified-switch")],ct);const To=N` - button { - background-color: var(--wui-color-fg-300); - border-radius: var(--wui-border-radius-4xs); - width: 16px; - height: 16px; - } - - button:disabled { - background-color: var(--wui-color-bg-300); - } - - wui-icon { - color: var(--wui-color-bg-200) !important; - } - - button:focus-visible { - background-color: var(--wui-color-fg-250); - border: 1px solid var(--wui-color-accent-100); - } - - @media (hover: hover) and (pointer: fine) { - button:hover:enabled { - background-color: var(--wui-color-fg-250); - } - - button:active:enabled { - background-color: var(--wui-color-fg-225); - } - } -`;var mi=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let ut=class extends O{constructor(){super(...arguments),this.icon="copy"}render(){return c` - - `}};ut.styles=[q,G,To];mi([u()],ut.prototype,"icon",void 0);ut=mi([P("wui-input-element")],ut);const Bo=N` - :host { - position: relative; - width: 100%; - display: inline-block; - color: var(--wui-color-fg-275); - } - - input { - width: 100%; - border-radius: var(--wui-border-radius-xs); - box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-002); - background: var(--wui-color-gray-glass-002); - font-size: var(--wui-font-size-paragraph); - letter-spacing: var(--wui-letter-spacing-paragraph); - color: var(--wui-color-fg-100); - transition: - background-color var(--wui-ease-inout-power-1) var(--wui-duration-md), - border-color var(--wui-ease-inout-power-1) var(--wui-duration-md), - box-shadow var(--wui-ease-inout-power-1) var(--wui-duration-md); - will-change: background-color, border-color, box-shadow; - caret-color: var(--wui-color-accent-100); - } - - input:disabled { - cursor: not-allowed; - border: 1px solid var(--wui-color-gray-glass-010); - } - - input:disabled::placeholder, - input:disabled + wui-icon { - color: var(--wui-color-fg-300); - } - - input::placeholder { - color: var(--wui-color-fg-275); - } - - input:focus:enabled { - background-color: var(--wui-color-gray-glass-005); - -webkit-box-shadow: - inset 0 0 0 1px var(--wui-color-accent-100), - 0px 0px 0px 4px var(--wui-box-shadow-blue); - -moz-box-shadow: - inset 0 0 0 1px var(--wui-color-accent-100), - 0px 0px 0px 4px var(--wui-box-shadow-blue); - box-shadow: - inset 0 0 0 1px var(--wui-color-accent-100), - 0px 0px 0px 4px var(--wui-box-shadow-blue); - } - - input:hover:enabled { - background-color: var(--wui-color-gray-glass-005); - } - - wui-icon { - position: absolute; - top: 50%; - transform: translateY(-50%); - pointer-events: none; - } - - .wui-size-sm { - padding: 9px var(--wui-spacing-m) 10px var(--wui-spacing-s); - } - - wui-icon + .wui-size-sm { - padding: 9px var(--wui-spacing-m) 10px 36px; - } - - wui-icon[data-input='sm'] { - left: var(--wui-spacing-s); - } - - .wui-size-md { - padding: 15px var(--wui-spacing-m) var(--wui-spacing-l) var(--wui-spacing-m); - } - - wui-icon + .wui-size-md, - wui-loading-spinner + .wui-size-md { - padding: 10.5px var(--wui-spacing-3xl) 10.5px var(--wui-spacing-3xl); - } - - wui-icon[data-input='md'] { - left: var(--wui-spacing-l); - } - - .wui-size-lg { - padding: var(--wui-spacing-s) var(--wui-spacing-s) var(--wui-spacing-s) var(--wui-spacing-l); - letter-spacing: var(--wui-letter-spacing-medium-title); - font-size: var(--wui-font-size-medium-title); - font-weight: var(--wui-font-weight-light); - line-height: 130%; - color: var(--wui-color-fg-100); - height: 64px; - } - - .wui-padding-right-xs { - padding-right: var(--wui-spacing-xs); - } - - .wui-padding-right-s { - padding-right: var(--wui-spacing-s); - } - - .wui-padding-right-m { - padding-right: var(--wui-spacing-m); - } - - .wui-padding-right-l { - padding-right: var(--wui-spacing-l); - } - - .wui-padding-right-xl { - padding-right: var(--wui-spacing-xl); - } - - .wui-padding-right-2xl { - padding-right: var(--wui-spacing-2xl); - } - - .wui-padding-right-3xl { - padding-right: var(--wui-spacing-3xl); - } - - .wui-padding-right-4xl { - padding-right: var(--wui-spacing-4xl); - } - - .wui-padding-right-5xl { - padding-right: var(--wui-spacing-5xl); - } - - wui-icon + .wui-size-lg, - wui-loading-spinner + .wui-size-lg { - padding-left: 50px; - } - - wui-icon[data-input='lg'] { - left: var(--wui-spacing-l); - } - - .wui-size-mdl { - padding: 17.25px var(--wui-spacing-m) 17.25px var(--wui-spacing-m); - } - wui-icon + .wui-size-mdl, - wui-loading-spinner + .wui-size-mdl { - padding: 17.25px var(--wui-spacing-3xl) 17.25px 40px; - } - wui-icon[data-input='mdl'] { - left: var(--wui-spacing-m); - } - - input:placeholder-shown ~ ::slotted(wui-input-element), - input:placeholder-shown ~ ::slotted(wui-icon) { - opacity: 0; - pointer-events: none; - } - - input::-webkit-outer-spin-button, - input::-webkit-inner-spin-button { - -webkit-appearance: none; - margin: 0; - } - - input[type='number'] { - -moz-appearance: textfield; - } - - ::slotted(wui-input-element), - ::slotted(wui-icon) { - position: absolute; - top: 50%; - transform: translateY(-50%); - } - - ::slotted(wui-input-element) { - right: var(--wui-spacing-m); - } - - ::slotted(wui-icon) { - right: 0px; - } -`;var le=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let X=class extends O{constructor(){super(...arguments),this.inputElementRef=pn(),this.size="md",this.disabled=!1,this.placeholder="",this.type="text",this.value=""}render(){const e=`wui-padding-right-${this.inputRightPadding}`,i={[`wui-size-${this.size}`]:!0,[e]:!!this.inputRightPadding};return c`${this.templateIcon()} - - `}templateIcon(){return this.icon?c``:null}dispatchInputChangeEvent(){this.dispatchEvent(new CustomEvent("inputChange",{detail:this.inputElementRef.value?.value,bubbles:!0,composed:!0}))}};X.styles=[q,G,Bo];le([u()],X.prototype,"size",void 0);le([u()],X.prototype,"icon",void 0);le([u({type:Boolean})],X.prototype,"disabled",void 0);le([u()],X.prototype,"placeholder",void 0);le([u()],X.prototype,"type",void 0);le([u()],X.prototype,"keyHint",void 0);le([u()],X.prototype,"value",void 0);le([u()],X.prototype,"inputRightPadding",void 0);le([u()],X.prototype,"tabIdx",void 0);X=le([P("wui-input-text")],X);const Po=N` - :host { - position: relative; - display: inline-block; - width: 100%; - } -`;var Lo=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let an=class extends O{constructor(){super(...arguments),this.inputComponentRef=pn()}render(){return c` - - - - `}clearValue(){const n=this.inputComponentRef.value?.inputElementRef.value;n&&(n.value="",n.focus(),n.dispatchEvent(new Event("input")))}};an.styles=[q,Po];an=Lo([P("wui-search-bar")],an);const Oo=Ne` - -`,Ao=N` - :host { - display: flex; - flex-direction: column; - align-items: center; - width: 104px; - row-gap: var(--wui-spacing-xs); - padding: var(--wui-spacing-xs) 10px; - background-color: var(--wui-color-gray-glass-002); - border-radius: clamp(0px, var(--wui-border-radius-xs), 20px); - position: relative; - } - - wui-shimmer[data-type='network'] { - border: none; - -webkit-clip-path: var(--wui-path-network); - clip-path: var(--wui-path-network); - } - - svg { - position: absolute; - width: 48px; - height: 54px; - z-index: 1; - } - - svg > path { - stroke: var(--wui-color-gray-glass-010); - stroke-width: 1px; - } - - @media (max-width: 350px) { - :host { - width: 100%; - } - } -`;var bi=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let dt=class extends O{constructor(){super(...arguments),this.type="wallet"}render(){return c` - ${this.shimmerTemplate()} - - `}shimmerTemplate(){return this.type==="network"?c` - ${Oo}`:c``}};dt.styles=[q,G,Ao];bi([u()],dt.prototype,"type",void 0);dt=bi([P("wui-card-select-loader")],dt);const jo=N` - :host { - display: grid; - width: inherit; - height: inherit; - } -`;var Z=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let H=class extends O{render(){return this.style.cssText=` - grid-template-rows: ${this.gridTemplateRows}; - grid-template-columns: ${this.gridTemplateColumns}; - justify-items: ${this.justifyItems}; - align-items: ${this.alignItems}; - justify-content: ${this.justifyContent}; - align-content: ${this.alignContent}; - column-gap: ${this.columnGap&&`var(--wui-spacing-${this.columnGap})`}; - row-gap: ${this.rowGap&&`var(--wui-spacing-${this.rowGap})`}; - gap: ${this.gap&&`var(--wui-spacing-${this.gap})`}; - padding-top: ${this.padding&&he.getSpacingStyles(this.padding,0)}; - padding-right: ${this.padding&&he.getSpacingStyles(this.padding,1)}; - padding-bottom: ${this.padding&&he.getSpacingStyles(this.padding,2)}; - padding-left: ${this.padding&&he.getSpacingStyles(this.padding,3)}; - margin-top: ${this.margin&&he.getSpacingStyles(this.margin,0)}; - margin-right: ${this.margin&&he.getSpacingStyles(this.margin,1)}; - margin-bottom: ${this.margin&&he.getSpacingStyles(this.margin,2)}; - margin-left: ${this.margin&&he.getSpacingStyles(this.margin,3)}; - `,c``}};H.styles=[q,jo];Z([u()],H.prototype,"gridTemplateRows",void 0);Z([u()],H.prototype,"gridTemplateColumns",void 0);Z([u()],H.prototype,"justifyItems",void 0);Z([u()],H.prototype,"alignItems",void 0);Z([u()],H.prototype,"justifyContent",void 0);Z([u()],H.prototype,"alignContent",void 0);Z([u()],H.prototype,"columnGap",void 0);Z([u()],H.prototype,"rowGap",void 0);Z([u()],H.prototype,"gap",void 0);Z([u()],H.prototype,"padding",void 0);Z([u()],H.prototype,"margin",void 0);H=Z([P("wui-grid")],H);const ko=N` - button { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - cursor: pointer; - width: 104px; - row-gap: var(--wui-spacing-xs); - padding: var(--wui-spacing-s) var(--wui-spacing-0); - background-color: var(--wui-color-gray-glass-002); - border-radius: clamp(0px, var(--wui-border-radius-xs), 20px); - transition: - color var(--wui-duration-lg) var(--wui-ease-out-power-1), - background-color var(--wui-duration-lg) var(--wui-ease-out-power-1), - border-radius var(--wui-duration-lg) var(--wui-ease-out-power-1); - will-change: background-color, color, border-radius; - outline: none; - border: none; - } - - button > wui-flex > wui-text { - color: var(--wui-color-fg-100); - max-width: 86px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - justify-content: center; - } - - button > wui-flex > wui-text.certified { - max-width: 66px; - } - - button:hover:enabled { - background-color: var(--wui-color-gray-glass-005); - } - - button:disabled > wui-flex > wui-text { - color: var(--wui-color-gray-glass-015); - } - - [data-selected='true'] { - background-color: var(--wui-color-accent-glass-020); - } - - @media (hover: hover) and (pointer: fine) { - [data-selected='true']:hover:enabled { - background-color: var(--wui-color-accent-glass-015); - } - } - - [data-selected='true']:active:enabled { - background-color: var(--wui-color-accent-glass-010); - } - - @media (max-width: 350px) { - button { - width: 100%; - } - } -`;var Ye=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let $e=class extends O{constructor(){super(),this.observer=new IntersectionObserver(()=>{}),this.visible=!1,this.imageSrc=void 0,this.imageLoading=!1,this.wallet=void 0,this.observer=new IntersectionObserver(e=>{e.forEach(n=>{n.isIntersecting?(this.visible=!0,this.fetchImageSrc()):this.visible=!1})},{threshold:.01})}firstUpdated(){this.observer.observe(this)}disconnectedCallback(){this.observer.disconnect()}render(){const e=this.wallet?.badge_type==="certified";return c` - - `}imageTemplate(){return!this.visible&&!this.imageSrc||this.imageLoading?this.shimmerTemplate():c` - - - `}shimmerTemplate(){return c``}async fetchImageSrc(){this.wallet&&(this.imageSrc=K.getWalletImage(this.wallet),!this.imageSrc&&(this.imageLoading=!0,this.imageSrc=await K.fetchWalletImage(this.wallet.image_id),this.imageLoading=!1))}};$e.styles=ko;Ye([_()],$e.prototype,"visible",void 0);Ye([_()],$e.prototype,"imageSrc",void 0);Ye([_()],$e.prototype,"imageLoading",void 0);Ye([u()],$e.prototype,"wallet",void 0);$e=Ye([P("w3m-all-wallets-list-item")],$e);const Do=N` - wui-grid { - max-height: clamp(360px, 400px, 80vh); - overflow: scroll; - scrollbar-width: none; - grid-auto-rows: min-content; - grid-template-columns: repeat(auto-fill, 104px); - } - - @media (max-width: 350px) { - wui-grid { - grid-template-columns: repeat(2, 1fr); - } - } - - wui-grid[data-scroll='false'] { - overflow: hidden; - } - - wui-grid::-webkit-scrollbar { - display: none; - } - - wui-loading-spinner { - padding-top: var(--wui-spacing-l); - padding-bottom: var(--wui-spacing-l); - justify-content: center; - grid-column: 1 / span 4; - } -`;var ke=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};const ni="local-paginator";let be=class extends O{constructor(){super(),this.unsubscribe=[],this.paginationObserver=void 0,this.loading=!z.state.wallets.length,this.wallets=z.state.wallets,this.recommended=z.state.recommended,this.featured=z.state.featured,this.filteredWallets=z.state.filteredWallets,this.unsubscribe.push(z.subscribeKey("wallets",e=>this.wallets=e),z.subscribeKey("recommended",e=>this.recommended=e),z.subscribeKey("featured",e=>this.featured=e),z.subscribeKey("filteredWallets",e=>this.filteredWallets=e))}firstUpdated(){this.initialFetch(),this.createPaginationObserver()}disconnectedCallback(){this.unsubscribe.forEach(e=>e()),this.paginationObserver?.disconnect()}render(){return c` - - ${this.loading?this.shimmerTemplate(16):this.walletsTemplate()} - ${this.paginationLoaderTemplate()} - - `}async initialFetch(){this.loading=!0;const e=this.shadowRoot?.querySelector("wui-grid");e&&(await z.fetchWalletsByPage({page:1}),await e.animate([{opacity:1},{opacity:0}],{duration:200,fill:"forwards",easing:"ease"}).finished,this.loading=!1,e.animate([{opacity:0},{opacity:1}],{duration:200,fill:"forwards",easing:"ease"}))}shimmerTemplate(e,n){return[...Array(e)].map(()=>c` - - `)}walletsTemplate(){const e=this.filteredWallets?.length>0?j.uniqueBy([...this.featured,...this.recommended,...this.filteredWallets],"id"):j.uniqueBy([...this.featured,...this.recommended,...this.wallets],"id");return pt.markWalletsAsInstalled(e).map(i=>c` - this.onConnectWallet(i)} - .wallet=${i} - > - `)}paginationLoaderTemplate(){const{wallets:e,recommended:n,featured:i,count:o}=z.state,t=window.innerWidth<352?3:4,a=e.length+n.length;let l=Math.ceil(a/t)*t-a+t;return l-=e.length?i.length%t:0,o===0&&i.length>0?null:o===0||[...i,...e,...n].length{if(n?.isIntersecting&&!this.loading){const{page:i,count:o,wallets:t}=z.state;t.length=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let Oe=class extends O{constructor(){super(...arguments),this.prevQuery="",this.prevBadge=void 0,this.loading=!0,this.query=""}render(){return this.onSearch(),this.loading?c``:this.walletsTemplate()}async onSearch(){(this.query.trim()!==this.prevQuery.trim()||this.badge!==this.prevBadge)&&(this.prevQuery=this.query,this.prevBadge=this.badge,this.loading=!0,await z.searchWallet({search:this.query,badge:this.badge}),this.loading=!1)}walletsTemplate(){const{search:e}=z.state,n=pt.markWalletsAsInstalled(e);return e.length?c` - - ${n.map(i=>c` - this.onConnectWallet(i)} - .wallet=${i} - data-testid="wallet-search-item-${i.id}" - > - `)} - - `:c` - - - - No Wallet found - - - `}onConnectWallet(e){M.selectWalletConnector(e)}};Oe.styles=zo;xt([_()],Oe.prototype,"loading",void 0);xt([u()],Oe.prototype,"query",void 0);xt([u()],Oe.prototype,"badge",void 0);Oe=xt([P("w3m-all-wallets-search")],Oe);var wn=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let ht=class extends O{constructor(){super(...arguments),this.search="",this.onDebouncedSearch=j.debounce(e=>{this.search=e})}render(){const e=this.search.length>=2;return c` - - - - ${this.qrButtonTemplate()} - - ${e||this.badge?c``:c``} - `}onInputChange(e){this.onDebouncedSearch(e.detail)}onClick(){if(this.badge==="certified"){this.badge=void 0;return}this.badge="certified",Xe.showSvg("Only WalletConnect certified",{icon:"walletConnectBrown",iconColor:"accent-100"})}qrButtonTemplate(){return j.isMobile()?c` - - `:null}onWalletConnectQr(){U.push("ConnectingWalletConnect")}};wn([_()],ht.prototype,"search",void 0);wn([_()],ht.prototype,"badge",void 0);ht=wn([P("w3m-all-wallets-view")],ht);const No=N` - button { - column-gap: var(--wui-spacing-s); - padding: 11px 18px 11px var(--wui-spacing-s); - width: 100%; - background-color: var(--wui-color-gray-glass-002); - border-radius: var(--wui-border-radius-xs); - color: var(--wui-color-fg-250); - transition: - color var(--wui-ease-out-power-1) var(--wui-duration-md), - background-color var(--wui-ease-out-power-1) var(--wui-duration-md); - will-change: color, background-color; - } - - button[data-iconvariant='square'], - button[data-iconvariant='square-blue'] { - padding: 6px 18px 6px 9px; - } - - button > wui-flex { - flex: 1; - } - - button > wui-image { - width: 32px; - height: 32px; - box-shadow: 0 0 0 2px var(--wui-color-gray-glass-005); - border-radius: var(--wui-border-radius-3xl); - } - - button > wui-icon { - width: 36px; - height: 36px; - transition: opacity var(--wui-ease-out-power-1) var(--wui-duration-md); - will-change: opacity; - } - - button > wui-icon-box[data-variant='blue'] { - box-shadow: 0 0 0 2px var(--wui-color-accent-glass-005); - } - - button > wui-icon-box[data-variant='overlay'] { - box-shadow: 0 0 0 2px var(--wui-color-gray-glass-005); - } - - button > wui-icon-box[data-variant='square-blue'] { - border-radius: var(--wui-border-radius-3xs); - position: relative; - border: none; - width: 36px; - height: 36px; - } - - button > wui-icon-box[data-variant='square-blue']::after { - content: ''; - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - border-radius: inherit; - border: 1px solid var(--wui-color-accent-glass-010); - pointer-events: none; - } - - button > wui-icon:last-child { - width: 14px; - height: 14px; - } - - button:disabled { - color: var(--wui-color-gray-glass-020); - } - - button[data-loading='true'] > wui-icon { - opacity: 0; - } - - wui-loading-spinner { - position: absolute; - right: 18px; - top: 50%; - transform: translateY(-50%); - } -`;var ie=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let J=class extends O{constructor(){super(...arguments),this.tabIdx=void 0,this.variant="icon",this.disabled=!1,this.imageSrc=void 0,this.alt=void 0,this.chevron=!1,this.loading=!1}render(){return c` - - `}visualTemplate(){if(this.variant==="image"&&this.imageSrc)return c``;if(this.iconVariant==="square"&&this.icon&&this.variant==="icon")return c``;if(this.variant==="icon"&&this.icon&&this.iconVariant){const e=["blue","square-blue"].includes(this.iconVariant)?"accent-100":"fg-200",n=this.iconVariant==="square-blue"?"mdl":"md",i=this.iconSize?this.iconSize:n;return c` - - `}return null}loadingTemplate(){return this.loading?c``:c``}chevronTemplate(){return this.chevron?c``:null}};J.styles=[q,G,No];ie([u()],J.prototype,"icon",void 0);ie([u()],J.prototype,"iconSize",void 0);ie([u()],J.prototype,"tabIdx",void 0);ie([u()],J.prototype,"variant",void 0);ie([u()],J.prototype,"iconVariant",void 0);ie([u({type:Boolean})],J.prototype,"disabled",void 0);ie([u()],J.prototype,"imageSrc",void 0);ie([u()],J.prototype,"alt",void 0);ie([u({type:Boolean})],J.prototype,"chevron",void 0);ie([u({type:Boolean})],J.prototype,"loading",void 0);J=ie([P("wui-list-item")],J);var Mo=function(r,e,n,i){var o=arguments.length,t=o<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,n):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,n,i);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(o<3?a(t):o>3?a(e,n,t):a(e,n))||t);return o>3&&t&&Object.defineProperty(e,n,t),t};let ii=class extends O{constructor(){super(...arguments),this.wallet=U.state.data?.wallet}render(){if(!this.wallet)throw new Error("w3m-downloads-view");return c` - - ${this.chromeTemplate()} ${this.iosTemplate()} ${this.androidTemplate()} - ${this.homepageTemplate()} - - `}chromeTemplate(){return this.wallet?.chrome_store?c` - Chrome Extension - `:null}iosTemplate(){return this.wallet?.app_store?c` - iOS App - `:null}androidTemplate(){return this.wallet?.play_store?c` - Android App - `:null}homepageTemplate(){return this.wallet?.homepage?c` - - Website - - `:null}onChromeStore(){this.wallet?.chrome_store&&j.openHref(this.wallet.chrome_store,"_blank")}onAppStore(){this.wallet?.app_store&&j.openHref(this.wallet.app_store,"_blank")}onPlayStore(){this.wallet?.play_store&&j.openHref(this.wallet.play_store,"_blank")}onHomePage(){this.wallet?.homepage&&j.openHref(this.wallet.homepage,"_blank")}};ii=Mo([P("w3m-downloads-view")],ii);export{ht as W3mAllWalletsView,rn as W3mConnectingWcBasicView,ii as W3mDownloadsView}; diff --git a/client2/build/assets/berachain-NJECWIVC-DumxnFvf.js b/client2/build/assets/berachain-NJECWIVC-DumxnFvf.js deleted file mode 100644 index 6509c76e7..000000000 --- a/client2/build/assets/berachain-NJECWIVC-DumxnFvf.js +++ /dev/null @@ -1 +0,0 @@ -var c="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2028%2028%22%3E%3Cg%20transform%3D%22translate(0%2C0)%20scale(0.7)%22%3E%3Cg%20clip-path%3D%22url(%23a)%22%3E%3Cpath%20fill%3D%22%23814625%22%20d%3D%22M0%200h40v40H0z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M19.254%2018.737a1.394%201.394%200%200%201-.049-.203%204.66%204.66%200%200%200-.071-.3c.312-.454%201.803-2.826.106-4.349-1.883-1.69-4.083.526-4.083.526l.007.01a5.44%205.44%200%200%200-3.104-.01c-.013-.013-2.206-2.21-4.084-.525-1.878%201.685.15%204.411.16%204.425-.02.064-.038.13-.05.196-.203%201.167-1.586%201.527-1.586%203.56%200%202.032%201.447%203.703%204.4%203.703h1.212c.006.008.505.689%201.53.688.95%200%201.579-.682%201.584-.688h1.156c2.954%200%204.4-1.632%204.4-3.704%200-1.892-1.199-2.334-1.528-3.329ZM33.368%2016.415s.22-1.958-1.45-2.38v-.785h-1.293v.766c-1.761.375-1.534%202.4-1.534%202.4v.335s-.227%202.024%201.535%202.4v1.68c-1.857.327-1.622%202.417-1.622%202.417v.336s-.227%202.024%201.534%202.399v.766h1.293v-.786c1.67-.42%201.45-2.38%201.45-2.38a.13.13%200%200%200%20.132-.127v-.08a.13.13%200%200%200-.132-.128s.218-1.942-1.429-2.374V19.15h-.019c1.762-.374%201.535-2.399%201.535-2.399a.13.13%200%200%200%20.132-.127v-.081a.13.13%200%200%200-.132-.128Zm-1.054%206.833h-.118a.13.13%200%200%200-.132.127v.081c0%20.07.059.128.132.128h.118c0%201.215-.419%201.42-.56%201.454-.023.005-.045-.011-.045-.034v-.388c0-.214-.142-.33-.284-.395a.694.694%200%200%200-.566%200c-.142.064-.283.181-.283.395v.388c0%20.022-.023.04-.045.034-.14-.034-.56-.237-.56-1.454v-.336c0-1.215.418-1.42.559-1.454.023-.006.046.011.046.034v.387c0%20.214.141.332.283.395.179.081.387.081.566%200%20.142-.063.284-.18.284-.395v-.387c0-.023.022-.04.045-.034.14.034.56.237.56%201.454Zm-.03-6.497h.117c0%201.217-.42%201.42-.56%201.454a.036.036%200%200%201-.045-.034v-.387c0-.214-.142-.332-.283-.395a.694.694%200%200%200-.567%200c-.142.063-.283.18-.283.395v.387c0%20.023-.023.04-.046.034-.14-.034-.56-.239-.56-1.454v-.336c0-1.217.42-1.42.56-1.454a.036.036%200%200%201%20.046.034v.388c0%20.214.141.331.283.395.18.08.388.08.567%200%20.141-.064.283-.181.283-.395v-.388c0-.023.022-.04.046-.034.14.035.56.24.56%201.454h-.119a.13.13%200%200%200-.132.128v.08c0%20.071.06.128.132.128ZM26.898%2019.874s.228-2.035-1.55-2.402v-1.829c1.73-.39%201.506-2.393%201.506-2.393h-.967c0%201.218-.42%201.42-.56%201.454a.036.036%200%200%201-.045-.034v-.387c0-.214-.142-.332-.283-.395a.694.694%200%200%200-.567%200c-.142.063-.283.18-.283.395v.387c0%20.023-.023.04-.046.034-.14-.034-.56-.239-.56-1.454h-.966s-.233%202.078%201.605%202.413v1.806c-1.791.36-1.562%202.405-1.562%202.405v.336s-.229%202.045%201.562%202.405v1.722c-1.838.335-1.605%202.413-1.605%202.413h.966c0-1.217.42-1.42.56-1.454a.036.036%200%200%201%20.046.034v.387c0%20.214.141.332.283.396.18.08.388.08.567%200%20.141-.064.283-.182.283-.396v-.387c0-.023.022-.04.046-.034.14.035.56.239.56%201.454h.966s.225-2.002-1.506-2.393v-1.745c1.778-.366%201.55-2.402%201.55-2.402a.13.13%200%200%200%20.132-.127V20a.13.13%200%200%200-.132-.127Zm-1.085.336h.118c0%201.217-.42%201.42-.56%201.454a.036.036%200%200%201-.045-.034v-.387c0-.214-.142-.332-.284-.395a.695.695%200%200%200-.566%200c-.142.063-.284.18-.284.395v.387c0%20.023-.022.04-.045.034-.141-.035-.56-.239-.56-1.454v-.336c0-1.217.42-1.42.56-1.454a.036.036%200%200%201%20.045.034v.388c0%20.214.142.331.284.395.179.08.387.08.566%200%20.142-.064.284-.181.284-.395v-.388c0-.023.022-.04.045-.034.141.035.56.24.56%201.454h-.118a.13.13%200%200%200-.132.128v.08c0%20.071.059.128.132.128Z%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3CclipPath%20id%3D%22a%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M0%200h40v40H0z%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fg%3E%3C%2Fsvg%3E";export{c as default}; diff --git a/client2/build/assets/blast-V555OVXZ-BbhJh1tj.js b/client2/build/assets/blast-V555OVXZ-BbhJh1tj.js deleted file mode 100644 index 616f8f46a..000000000 --- a/client2/build/assets/blast-V555OVXZ-BbhJh1tj.js +++ /dev/null @@ -1 +0,0 @@ -var l="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2028%2028%22%3E%3Cg%20transform%3D%22translate(0%2C0)%20scale(0.7)%22%3E%3Cg%20clip-path%3D%22url(%23a)%22%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M0%200h40v40H0z%22%2F%3E%3Cpath%20fill%3D%22url(%23b)%22%20fill-opacity%3D%22.1%22%20d%3D%22M0%200h40v40H0z%22%2F%3E%3Cpath%20fill%3D%22%23FCFC03%22%20d%3D%22m10.787%2011.409-3.168%202.64c-.24.192-.096.623.24.623h20.255c.24%200%20.383.24.335.48l-1.007%202.928a.361.361%200%200%201-.336.24h-7.872a.36.36%200%200%200-.336.24l-.816%202.112c-.096.24.096.48.336.48h7.632c.24%200%20.384.24.336.48l-1.2%203.696a.361.361%200%200%201-.336.24H13.475c-.24%200-.384-.24-.336-.432l2.256-8.064c.048-.144-.048-.336-.144-.384l-2.4-1.392c-.192-.096-.432%200-.528.192L8.579%2028.255c-.096.24.096.432.336.432H24.13c.048%200%20.096%200%20.144-.048l3.791-1.823a.375.375%200%200%200%20.192-.192l1.488-4.368c.048-.096%200-.288-.096-.336l-1.776-1.776c-.143-.144-.096-.48.096-.576l2.736-1.296c.096-.048.144-.096.144-.192l1.632-4.367c.048-.144%200-.336-.096-.384l-2.256-1.92c-.096-.048-.096-.096-.24-.096H11.027c-.048%200-.144.048-.24.096Z%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22b%22%20x1%3D%220%22%20x2%3D%2220%22%20y1%3D%220%22%20y2%3D%2240%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23fff%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23fff%22%20stop-opacity%3D%220%22%2F%3E%3C%2FlinearGradient%3E%3CclipPath%20id%3D%22a%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M0%200h40v40H0z%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fg%3E%3C%2Fsvg%3E";export{l as default}; diff --git a/client2/build/assets/browser-C3E_QPUp.js b/client2/build/assets/browser-C3E_QPUp.js deleted file mode 100644 index d2e834b51..000000000 --- a/client2/build/assets/browser-C3E_QPUp.js +++ /dev/null @@ -1,14 +0,0 @@ -import{b as l}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const i=l` - - -`;export{i as browserSvg}; diff --git a/client2/build/assets/bsc-N647EYR2-B2nLKXWV.js b/client2/build/assets/bsc-N647EYR2-B2nLKXWV.js deleted file mode 100644 index daf18da79..000000000 --- a/client2/build/assets/bsc-N647EYR2-B2nLKXWV.js +++ /dev/null @@ -1 +0,0 @@ -var l="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2228%22%20height%3D%2228%22%20fill%3D%22none%22%3E%3Cg%20clip-path%3D%22url(%23a)%22%3E%3Cpath%20fill%3D%22%23F0B90B%22%20fill-rule%3D%22evenodd%22%20d%3D%22M14%200c7.733%200%2014%206.267%2014%2014s-6.267%2014-14%2014S0%2021.733%200%2014%206.267%200%2014%200Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22m7.694%2014%20.01%203.702%203.146%201.85v2.168l-4.986-2.924v-5.878L7.694%2014Zm0-3.702v2.157l-1.832-1.083V9.214l1.832-1.083%201.841%201.083-1.84%201.084Zm4.47-1.084%201.832-1.083%201.84%201.083-1.84%201.084-1.832-1.084Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M9.018%2016.935v-2.168l1.832%201.084v2.157l-1.832-1.073Zm3.146%203.394%201.832%201.084%201.84-1.084v2.157l-1.84%201.084-1.832-1.084V20.33Zm6.3-11.115%201.832-1.083%201.84%201.083v2.158l-1.84%201.083v-2.157l-1.832-1.084Zm1.832%208.488.01-3.702%201.831-1.084v5.879l-4.986%202.924v-2.167l3.145-1.85Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22m18.982%2016.935-1.832%201.073v-2.157l1.832-1.084v2.168Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22m18.982%2011.065.01%202.168-3.155%201.85v3.712l-1.831%201.073-1.832-1.073v-3.711l-3.155-1.851v-2.168l1.84-1.083%203.135%201.86%203.155-1.86%201.84%201.083h-.007Zm-9.964-3.7%204.977-2.935%204.987%202.935-1.832%201.083-3.154-1.86-3.146%201.86-1.832-1.083Z%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3CclipPath%20id%3D%22a%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M0%200h28v28H0z%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fsvg%3E";export{l as default}; diff --git a/client2/build/assets/card-17Pc75kD.js b/client2/build/assets/card-17Pc75kD.js deleted file mode 100644 index 8e1a0078e..000000000 --- a/client2/build/assets/card-17Pc75kD.js +++ /dev/null @@ -1,14 +0,0 @@ -import{b as C}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const l=C` - `;export{l as cardSvg}; diff --git a/client2/build/assets/ccip-DMCnQaO5.js b/client2/build/assets/ccip-DMCnQaO5.js deleted file mode 100644 index 398ec8b30..000000000 --- a/client2/build/assets/ccip-DMCnQaO5.js +++ /dev/null @@ -1 +0,0 @@ -import{B as p,g as m,s as w,d as k,i as b,l as L,a as O,c as R,b as E,e as x,H as y,f as M}from"./index-B6P9GsMd.js";class S extends p{constructor({callbackSelector:s,cause:e,data:o,extraData:n,sender:c,urls:t}){super(e.shortMessage||"An error occurred while fetching for an offchain result.",{cause:e,metaMessages:[...e.metaMessages||[],e.metaMessages?.length?"":[],"Offchain Gateway Call:",t&&[" Gateway URL(s):",...t.map(i=>` ${m(i)}`)],` Sender: ${c}`,` Data: ${o}`,` Callback selector: ${s}`,` Extra data: ${n}`].flat(),name:"OffchainLookupError"})}}class $ extends p{constructor({result:s,url:e}){super("Offchain gateway response is malformed. Response data must be a hex value.",{metaMessages:[`Gateway URL: ${m(e)}`,`Response: ${w(s)}`],name:"OffchainLookupResponseMalformedError"})}}class q extends p{constructor({sender:s,to:e}){super("Reverted sender address does not match target contract address (`to`).",{metaMessages:[`Contract address: ${e}`,`OffchainLookup sender address: ${s}`],name:"OffchainLookupSenderMismatchError"})}}const A="0x556f1830",T={name:"OffchainLookup",type:"error",inputs:[{name:"sender",type:"address"},{name:"urls",type:"string[]"},{name:"callData",type:"bytes"},{name:"callbackFunction",type:"bytes4"},{name:"extraData",type:"bytes"}]};async function D(d,{blockNumber:s,blockTag:e,data:o,to:n}){const{args:c}=k({data:o,abi:[T]}),[t,i,l,a,r]=c,{ccipRead:f}=d,h=f&&typeof f?.request=="function"?f.request:C;try{if(!b(n,t))throw new q({sender:t,to:n});const u=i.includes(L)?await O({data:l,ccipRequest:h}):await h({data:l,sender:t,urls:i}),{data:g}=await R(d,{blockNumber:s,blockTag:e,data:E([a,x([{type:"bytes"},{type:"bytes"}],[u,r])]),to:n});return g}catch(u){throw new S({callbackSelector:a,cause:u,data:o,extraData:r,sender:t,urls:i})}}async function C({data:d,sender:s,urls:e}){let o=new Error("An unknown error occurred.");for(let n=0;n - -`;export{p as checkmarkBoldSvg}; diff --git a/client2/build/assets/checkmark-zIL4JLR5.js b/client2/build/assets/checkmark-zIL4JLR5.js deleted file mode 100644 index bd01b49c5..000000000 --- a/client2/build/assets/checkmark-zIL4JLR5.js +++ /dev/null @@ -1,11 +0,0 @@ -import{b as o}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const p=o` - - -`;export{p as checkmarkSvg}; diff --git a/client2/build/assets/chevron-bottom-DsdJRop0.js b/client2/build/assets/chevron-bottom-DsdJRop0.js deleted file mode 100644 index d156e0316..000000000 --- a/client2/build/assets/chevron-bottom-DsdJRop0.js +++ /dev/null @@ -1,8 +0,0 @@ -import{b as o}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const p=o` - -`;export{p as chevronBottomSvg}; diff --git a/client2/build/assets/chevron-left-B9axDogv.js b/client2/build/assets/chevron-left-B9axDogv.js deleted file mode 100644 index 179f719ad..000000000 --- a/client2/build/assets/chevron-left-B9axDogv.js +++ /dev/null @@ -1,8 +0,0 @@ -import{b as o}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const p=o` - -`;export{p as chevronLeftSvg}; diff --git a/client2/build/assets/chevron-right-DCk2rSjR.js b/client2/build/assets/chevron-right-DCk2rSjR.js deleted file mode 100644 index 61735cba1..000000000 --- a/client2/build/assets/chevron-right-DCk2rSjR.js +++ /dev/null @@ -1,8 +0,0 @@ -import{b as o}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const p=o` - -`;export{p as chevronRightSvg}; diff --git a/client2/build/assets/chevron-top-B2S94Loa.js b/client2/build/assets/chevron-top-B2S94Loa.js deleted file mode 100644 index 2696d2829..000000000 --- a/client2/build/assets/chevron-top-B2S94Loa.js +++ /dev/null @@ -1,8 +0,0 @@ -import{b as o}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const t=o` - -`;export{t as chevronTopSvg}; diff --git a/client2/build/assets/chrome-store-DnMm7ANC.js b/client2/build/assets/chrome-store-DnMm7ANC.js deleted file mode 100644 index 321b845f1..000000000 --- a/client2/build/assets/chrome-store-DnMm7ANC.js +++ /dev/null @@ -1,61 +0,0 @@ -import{b as t}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const l=t` - - - - - - - - - - - - - - - - - - - - - -`;export{l as chromeStoreSvg}; diff --git a/client2/build/assets/clock-BwKq8GZ-.js b/client2/build/assets/clock-BwKq8GZ-.js deleted file mode 100644 index d05df421d..000000000 --- a/client2/build/assets/clock-BwKq8GZ-.js +++ /dev/null @@ -1,8 +0,0 @@ -import{b as o}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const t=o` - -`;export{t as clockSvg}; diff --git a/client2/build/assets/close-D9JMA13w.js b/client2/build/assets/close-D9JMA13w.js deleted file mode 100644 index 0766c9491..000000000 --- a/client2/build/assets/close-D9JMA13w.js +++ /dev/null @@ -1,8 +0,0 @@ -import{b as o}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const p=o` - -`;export{p as closeSvg}; diff --git a/client2/build/assets/coinPlaceholder-BUuvtb2B.js b/client2/build/assets/coinPlaceholder-BUuvtb2B.js deleted file mode 100644 index a3c4db2e5..000000000 --- a/client2/build/assets/coinPlaceholder-BUuvtb2B.js +++ /dev/null @@ -1,8 +0,0 @@ -import{b as o}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const m=o` - -`;export{m as coinPlaceholderSvg}; diff --git a/client2/build/assets/compass-BYvo6aTj.js b/client2/build/assets/compass-BYvo6aTj.js deleted file mode 100644 index fe3094729..000000000 --- a/client2/build/assets/compass-BYvo6aTj.js +++ /dev/null @@ -1,8 +0,0 @@ -import{b as o}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const t=o` - -`;export{t as compassSvg}; diff --git a/client2/build/assets/connect-UA7M4XW6-IY3X6Bmr.js b/client2/build/assets/connect-UA7M4XW6-IY3X6Bmr.js deleted file mode 100644 index be25b960c..000000000 --- a/client2/build/assets/connect-UA7M4XW6-IY3X6Bmr.js +++ /dev/null @@ -1 +0,0 @@ -var l="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2248%22%20height%3D%2248%22%20fill%3D%22none%22%3E%3Cg%20clip-path%3D%22url(%23a)%22%3E%3Cpath%20fill%3D%22url(%23b)%22%20d%3D%22M0%2016c0-5.6%200-8.4%201.09-10.54a10%2010%200%200%201%204.37-4.37C7.6%200%2010.4%200%2016%200h16c5.6%200%208.4%200%2010.54%201.09a10%2010%200%200%201%204.37%204.37C48%207.6%2048%2010.4%2048%2016v16c0%205.6%200%208.4-1.09%2010.54a10.001%2010.001%200%200%201-4.37%204.37C40.4%2048%2037.6%2048%2032%2048H16c-5.6%200-8.4%200-10.54-1.09a10%2010%200%200%201-4.37-4.37C0%2040.4%200%2037.6%200%2032V16Z%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.08%22%20fill-rule%3D%22evenodd%22%20d%3D%22M1.133%209.513C1%2011.131%201%2013.183%201%2016v16c0%202.817%200%204.87.133%206.486.131%201.606.387%202.695.848%203.6a9%209%200%200%200%203.933%203.933c.905.461%201.994.717%203.6.848C11.13%2047%2013.183%2047%2016%2047h16c2.817%200%204.87%200%206.486-.133%201.606-.131%202.695-.387%203.6-.848a9%209%200%200%200%203.933-3.933c.461-.905.717-1.994.848-3.6C47%2036.87%2047%2034.816%2047%2032V16c0-2.817%200-4.87-.133-6.487-.131-1.605-.387-2.694-.848-3.599a9%209%200%200%200-3.933-3.933c-.905-.461-1.994-.717-3.6-.848C36.87%201%2034.816%201%2032%201H16c-2.817%200-4.87%200-6.487.133-1.605.131-2.694.387-3.599.848a9%209%200%200%200-3.933%203.933c-.461.905-.717%201.994-.848%203.6ZM1.09%205.46C0%207.6%200%2010.4%200%2016v16c0%205.6%200%208.4%201.09%2010.54a10%2010%200%200%200%204.37%204.37C7.6%2048%2010.4%2048%2016%2048h16c5.6%200%208.4%200%2010.54-1.09a10.001%2010.001%200%200%200%204.37-4.37C48%2040.4%2048%2037.6%2048%2032V16c0-5.6%200-8.4-1.09-10.54a10%2010%200%200%200-4.37-4.37C40.4%200%2037.6%200%2032%200H16C10.4%200%207.6%200%205.46%201.09a10%2010%200%200%200-4.37%204.37Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cg%20clip-path%3D%22url(%23c)%22%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.12%22%20d%3D%22M24.716%2035.795c.531%200%20.968-.234%201.452-.687l9.989-9.38c.537-.512.679-.939.679-1.33%200-.4-.129-.823-.68-1.34l-9.988-9.318c-.527-.497-.903-.74-1.435-.74-.762%200-1.271.592-1.271%201.32v5.075h-.44C14.403%2019.395%2010%2024.689%2010%2034.373c0%20.903.52%201.422%201.119%201.422.482%200%20.944-.15%201.31-.857%202.031-4.108%205.295-5.486%2010.594-5.486h.439v5.062c0%20.73.509%201.281%201.254%201.281Z%22%2F%3E%3C%2Fg%3E%3Cg%20clip-path%3D%22url(%23d)%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M24.716%2034.795c.531%200%20.968-.234%201.452-.687l9.989-9.38c.537-.512.679-.939.679-1.33%200-.4-.129-.823-.68-1.34l-9.988-9.318c-.527-.497-.903-.74-1.435-.74-.762%200-1.271.592-1.271%201.32v5.075h-.44C14.403%2018.395%2010%2023.689%2010%2033.373c0%20.903.52%201.422%201.119%201.422.482%200%20.944-.15%201.31-.857%202.031-4.108%205.295-5.486%2010.594-5.486h.439v5.062c0%20.73.509%201.281%201.254%201.281Z%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cdefs%3E%3CclipPath%20id%3D%22a%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M0%200h48v48H0z%22%2F%3E%3C%2FclipPath%3E%3CclipPath%20id%3D%22c%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M10%2013h26.836v22.808H10z%22%2F%3E%3C%2FclipPath%3E%3CclipPath%20id%3D%22d%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M10%2012h26.836v22.808H10z%22%2F%3E%3C%2FclipPath%3E%3ClinearGradient%20id%3D%22b%22%20x1%3D%2224%22%20x2%3D%2224%22%20y1%3D%220%22%20y2%3D%2248%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%2359627A%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%234A5266%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3C%2Fsvg%3E";export{l as default}; diff --git a/client2/build/assets/copy-C_ykxm7Q.js b/client2/build/assets/copy-C_ykxm7Q.js deleted file mode 100644 index 3d0c94bb8..000000000 --- a/client2/build/assets/copy-C_ykxm7Q.js +++ /dev/null @@ -1,15 +0,0 @@ -import{b as C}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const e=C` - `;export{e as copySvg}; diff --git a/client2/build/assets/core-Cywc921C.js b/client2/build/assets/core-Cywc921C.js deleted file mode 100644 index 39945e3aa..000000000 --- a/client2/build/assets/core-Cywc921C.js +++ /dev/null @@ -1,908 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/secp256k1-BygF97rU.js","assets/index-B6P9GsMd.js","assets/index-rEdlDrAN.css","assets/index.es-MB-v37Rm.js","assets/events-DQ172AOg.js","assets/index-nibyPLVP.js","assets/basic-CrTlCsjy.js","assets/index-DQ1U5YI4.js","assets/w3m-modal-DsvQ9IuK.js"])))=>i.map(i=>d[i]); -import{o as qh,T as Fh,U as zh,E as Wh,w as Hh,p as Vh,_ as Eo,q as Vi,t as Pa}from"./index-B6P9GsMd.js";import{h as Ki,s as bn,i as na,I as zr,j as Kh,k as kt,l as dt,m as D,n as ls,C as Gh,o as Jh,p as pi,q as Co,u as Zs,v as $i,A as Kl,E as rt,x as Yh,y as Et,z as qs,B as Wr,O as oa,D as Ot,F as Xh,G as aa,J as ca,K as kn,N as la,P as ka,Q as Zh,L as Qh,M as _r,R as Gl,S as rs,T as Ht,U as us,V as Bt}from"./index.es-MB-v37Rm.js";import{c as ed,a as td,k as sd,d as rd,s as id,g as Oa}from"./index-nibyPLVP.js";function Ta(t,e={}){const{key:s="fallback",name:r="Fallback",rank:i=!1,shouldThrow:n=nd,retryCount:o,retryDelay:a}=e;return(({chain:c,pollingInterval:l=4e3,timeout:u,...h})=>{let d=t,p=()=>{};const w=qh({key:s,name:r,async request({method:m,params:f}){let y;const b=async(v=0)=>{const C=d[v]({...h,chain:c,retryCount:0,timeout:u});try{const S=await C.request({method:m,params:f});return p({method:m,params:f,response:S,transport:C,status:"success"}),S}catch(S){if(p({error:S,method:m,params:f,transport:C,status:"error"}),n(S)||v===d.length-1||(y??=d.slice(v+1).some(A=>{const{include:_,exclude:U}=A({chain:c}).config.methods||{};return _?_.includes(m):U?!U.includes(m):!0}),!y))throw S;return b(v+1)}};return b()},retryCount:o,retryDelay:a,type:"fallback"},{onResponse:m=>p=m,transports:d.map(m=>m({chain:c,retryCount:0}))});if(i){const m=typeof i=="object"?i:{};od({chain:c,interval:m.interval??l,onTransports:f=>d=f,ping:m.ping,sampleCount:m.sampleCount,timeout:m.timeout,transports:d,weights:m.weights})}return w})}function nd(t){return!!("code"in t&&typeof t.code=="number"&&(t.code===Fh.code||t.code===zh.code||Wh.nodeMessage.test(t.message)||t.code===5e3))}function od({chain:t,interval:e=4e3,onTransports:s,ping:r,sampleCount:i=10,timeout:n=1e3,transports:o,weights:a={}}){const{stability:c=.7,latency:l=.3}=a,u=[],h=async()=>{const d=await Promise.all(o.map(async m=>{const f=m({chain:t,retryCount:0,timeout:n}),y=Date.now();let b,v;try{await(r?r({transport:f}):f.request({method:"net_listening"})),v=1}catch{v=0}finally{b=Date.now()}return{latency:b-y,success:v}}));u.push(d),u.length>i&&u.shift();const p=Math.max(...u.map(m=>Math.max(...m.map(({latency:f})=>f)))),w=o.map((m,f)=>{const y=u.map(A=>A[f].latency),v=1-y.reduce((A,_)=>A+_,0)/y.length/p,C=u.map(A=>A[f].success),S=C.reduce((A,_)=>A+_,0)/C.length;return S===0?[0,f]:[l*v+c*S,f]}).sort((m,f)=>f[0]-m[0]);s(w.map(([,m])=>o[m])),await Hh(e),h()};h()}var xa={};const W={WC_NAME_SUFFIX:".reown.id",WC_NAME_SUFFIX_LEGACY:".wcn.id",BLOCKCHAIN_API_RPC_URL:"https://rpc.walletconnect.org",PULSE_API_URL:"https://pulse.walletconnect.org",W3M_API_URL:"https://api.web3modal.org",CONNECTOR_ID:{WALLET_CONNECT:"walletConnect",INJECTED:"injected",WALLET_STANDARD:"announced",COINBASE:"coinbaseWallet",COINBASE_SDK:"coinbaseWalletSDK",SAFE:"safe",LEDGER:"ledger",OKX:"okx",EIP6963:"eip6963",AUTH:"ID_AUTH"},CONNECTOR_NAMES:{AUTH:"Auth"},AUTH_CONNECTOR_SUPPORTED_CHAINS:["eip155","solana"],LIMITS:{PENDING_TRANSACTIONS:99},CHAIN:{EVM:"eip155",SOLANA:"solana",POLKADOT:"polkadot",BITCOIN:"bip122"},CHAIN_NAME_MAP:{eip155:"EVM Networks",solana:"Solana",polkadot:"Polkadot",bip122:"Bitcoin",cosmos:"Cosmos"},ADAPTER_TYPES:{BITCOIN:"bitcoin",SOLANA:"solana",WAGMI:"wagmi",ETHERS:"ethers",ETHERS5:"ethers5"},USDT_CONTRACT_ADDRESSES:["0xdac17f958d2ee523a2206206994597c13d831ec7","0xc2132d05d31c914a87c6611c10748aeb04b58e8f","0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7","0x919C1c267BC06a7039e03fcc2eF738525769109c","0x48065fbBE25f71C9282ddf5e1cD6D6A887483D5e","0x55d398326f99059fF775485246999027B3197955","0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9"],HTTP_STATUS_CODES:{SERVICE_UNAVAILABLE:503,FORBIDDEN:403},UNSUPPORTED_NETWORK_NAME:"Unknown Network",SECURE_SITE_SDK_ORIGIN:(typeof process<"u"&&typeof xa<"u"?xa.NEXT_PUBLIC_SECURE_SITE_ORIGIN:void 0)||"https://secure.walletconnect.org"},Jl={caipNetworkIdToNumber(t){return t?Number(t.split(":")[1]):void 0},parseEvmChainId(t){return typeof t=="string"?this.caipNetworkIdToNumber(t):t},getNetworksByNamespace(t,e){return t?.filter(s=>s.chainNamespace===e)||[]},getFirstNetworkByNamespace(t,e){return this.getNetworksByNamespace(t,e)[0]},getNetworkNameByCaipNetworkId(t,e){if(!e)return;const s=t.find(i=>i.caipNetworkId===e);if(s)return s.name;const[r]=e.split(":");return W.CHAIN_NAME_MAP?.[r]||void 0}};var ad=20,cd=1,Hs=1e6,$a=1e6,ld=-7,ud=21,hd=!1,Ri="[big.js] ",Qs=Ri+"Invalid ",On=Qs+"decimal places",dd=Qs+"rounding mode",Yl=Ri+"Division by zero",ge={},Gt=void 0,pd=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;function Xl(){function t(e){var s=this;if(!(s instanceof t))return e===Gt?Xl():new t(e);if(e instanceof t)s.s=e.s,s.e=e.e,s.c=e.c.slice();else{if(typeof e!="string"){if(t.strict===!0&&typeof e!="bigint")throw TypeError(Qs+"value");e=e===0&&1/e<0?"-0":String(e)}fd(s,e)}s.constructor=t}return t.prototype=ge,t.DP=ad,t.RM=cd,t.NE=ld,t.PE=ud,t.strict=hd,t.roundDown=0,t.roundHalfUp=1,t.roundHalfEven=2,t.roundUp=3,t}function fd(t,e){var s,r,i;if(!pd.test(e))throw Error(Qs+"number");for(t.s=e.charAt(0)=="-"?(e=e.slice(1),-1):1,(s=e.indexOf("."))>-1&&(e=e.replace(".","")),(r=e.search(/e/i))>0?(s<0&&(s=r),s+=+e.slice(r+1),e=e.substring(0,r)):s<0&&(s=e.length),i=e.length,r=0;r0&&e.charAt(--i)=="0";);for(t.e=s-r-1,t.c=[],s=0;r<=i;)t.c[s++]=+e.charAt(r++)}return t}function er(t,e,s,r){var i=t.c;if(s===Gt&&(s=t.constructor.RM),s!==0&&s!==1&&s!==2&&s!==3)throw Error(dd);if(e<1)r=s===3&&(r||!!i[0])||e===0&&(s===1&&i[0]>=5||s===2&&(i[0]>5||i[0]===5&&(r||i[1]!==Gt))),i.length=1,r?(t.e=t.e-e+1,i[0]=1):i[0]=t.e=0;else if(e=5||s===2&&(i[e]>5||i[e]===5&&(r||i[e+1]!==Gt||i[e-1]&1))||s===3&&(r||!!i[0]),i.length=e,r){for(;++i[--e]>9;)if(i[e]=0,e===0){++t.e,i.unshift(1);break}}for(e=i.length;!i[--e];)i.pop()}return t}function tr(t,e,s){var r=t.e,i=t.c.join(""),n=i.length;if(e)i=i.charAt(0)+(n>1?"."+i.slice(1):"")+(r<0?"e":"e+")+r;else if(r<0){for(;++r;)i="0"+i;i="0."+i}else if(r>0)if(++r>n)for(r-=n;r--;)i+="0";else r1&&(i=i.charAt(0)+"."+i.slice(1));return t.s<0&&s?"-"+i:i}ge.abs=function(){var t=new this.constructor(this);return t.s=1,t};ge.cmp=function(t){var e,s=this,r=s.c,i=(t=new s.constructor(t)).c,n=s.s,o=t.s,a=s.e,c=t.e;if(!r[0]||!i[0])return r[0]?n:i[0]?-o:0;if(n!=o)return n;if(e=n<0,a!=c)return a>c^e?1:-1;for(o=(a=r.length)<(c=i.length)?a:c,n=-1;++ni[n]^e?1:-1;return a==c?0:a>c^e?1:-1};ge.div=function(t){var e=this,s=e.constructor,r=e.c,i=(t=new s(t)).c,n=e.s==t.s?1:-1,o=s.DP;if(o!==~~o||o<0||o>Hs)throw Error(On);if(!i[0])throw Error(Yl);if(!r[0])return t.s=n,t.c=[t.e=0],t;var a,c,l,u,h,d=i.slice(),p=a=i.length,w=r.length,m=r.slice(0,a),f=m.length,y=t,b=y.c=[],v=0,C=o+(y.e=e.e-t.e)+1;for(y.s=n,n=C<0?0:C,d.unshift(0);f++f?1:-1;else for(h=-1,u=0;++hm[h]?1:-1;break}if(u<0){for(c=f==a?i:d;f;){if(m[--f]C&&er(y,C,s.RM,m[0]!==Gt),y};ge.eq=function(t){return this.cmp(t)===0};ge.gt=function(t){return this.cmp(t)>0};ge.gte=function(t){return this.cmp(t)>-1};ge.lt=function(t){return this.cmp(t)<0};ge.lte=function(t){return this.cmp(t)<1};ge.minus=ge.sub=function(t){var e,s,r,i,n=this,o=n.constructor,a=n.s,c=(t=new o(t)).s;if(a!=c)return t.s=-c,n.plus(t);var l=n.c.slice(),u=n.e,h=t.c,d=t.e;if(!l[0]||!h[0])return h[0]?t.s=-c:l[0]?t=new o(n):t.s=1,t;if(a=u-d){for((i=a<0)?(a=-a,r=l):(d=u,r=h),r.reverse(),c=a;c--;)r.push(0);r.reverse()}else for(s=((i=l.length0)for(;c--;)l[e++]=0;for(c=e;s>a;){if(l[--s]0?(c=o,r=l):(e=-e,r=a),r.reverse();e--;)r.push(0);r.reverse()}for(a.length-l.length<0&&(r=l,l=a,a=r),e=l.length,s=0;e;a[e]%=10)s=(a[--e]=a[e]+l[e]+s)/10|0;for(s&&(a.unshift(s),++c),e=a.length;a[--e]===0;)a.pop();return t.c=a,t.e=c,t};ge.pow=function(t){var e=this,s=new e.constructor("1"),r=s,i=t<0;if(t!==~~t||t<-$a||t>$a)throw Error(Qs+"exponent");for(i&&(t=-t);t&1&&(r=r.times(e)),t>>=1,!!t;)e=e.times(e);return i?s.div(r):r};ge.prec=function(t,e){if(t!==~~t||t<1||t>Hs)throw Error(Qs+"precision");return er(new this.constructor(this),t,e)};ge.round=function(t,e){if(t===Gt)t=0;else if(t!==~~t||t<-Hs||t>Hs)throw Error(On);return er(new this.constructor(this),t+this.e+1,e)};ge.sqrt=function(){var t,e,s,r=this,i=r.constructor,n=r.s,o=r.e,a=new i("0.5");if(!r.c[0])return new i(r);if(n<0)throw Error(Ri+"No square root");n=Math.sqrt(+tr(r,!0,!0)),n===0||n===1/0?(e=r.c.join(""),e.length+o&1||(e+="0"),n=Math.sqrt(e),o=((o+1)/2|0)-(o<0||o&1),t=new i((n==1/0?"5e":(n=n.toExponential()).slice(0,n.indexOf("e")+1))+o)):t=new i(n+""),o=t.e+(i.DP+=4);do s=t,t=a.times(s.plus(r.div(s)));while(s.c.slice(0,o).join("")!==t.c.slice(0,o).join(""));return er(t,(i.DP-=4)+t.e+1,i.RM)};ge.times=ge.mul=function(t){var e,s=this,r=s.constructor,i=s.c,n=(t=new r(t)).c,o=i.length,a=n.length,c=s.e,l=t.e;if(t.s=s.s==t.s?1:-1,!i[0]||!n[0])return t.c=[t.e=0],t;for(t.e=c+l,oc;)a=e[l]+n[c]*i[l-c-1]+a,e[l--]=a%10,a=a/10|0;e[l]=a}for(a?++t.e:e.shift(),c=e.length;!e[--c];)e.pop();return t.c=e,t};ge.toExponential=function(t,e){var s=this,r=s.c[0];if(t!==Gt){if(t!==~~t||t<0||t>Hs)throw Error(On);for(s=er(new s.constructor(s),++t,e);s.c.lengthHs)throw Error(On);for(s=er(new s.constructor(s),t+s.e+1,e),t=t+s.e+1;s.c.length=e.PE,!!t.c[0])};ge.toNumber=function(){var t=+tr(this,!0,!0);if(this.constructor.strict===!0&&!this.eq(t.toString()))throw Error(Ri+"Imprecise conversion");return t};ge.toPrecision=function(t,e){var s=this,r=s.constructor,i=s.c[0];if(t!==Gt){if(t!==~~t||t<1||t>Hs)throw Error(Qs+"precision");for(s=er(new r(s),t,e);s.c.length=r.PE,!!i)};ge.valueOf=function(){var t=this,e=t.constructor;if(e.strict===!0)throw Error(Ri+"valueOf disallowed");return tr(t,t.e<=e.NE||t.e>=e.PE,!0)};var Xr=Xl();const gd={bigNumber(t){return t?new Xr(t):new Xr(0)},multiply(t,e){if(t===void 0||e===void 0)return new Xr(0);const s=new Xr(t),r=new Xr(e);return s.times(r)},formatNumberToLocalString(t,e=2){return t===void 0?"0.00":typeof t=="number"?t.toLocaleString("en-US",{maximumFractionDigits:e,minimumFractionDigits:e}):parseFloat(t).toLocaleString("en-US",{maximumFractionDigits:e,minimumFractionDigits:e})},parseLocalStringToNumber(t){return t===void 0?0:parseFloat(t.replace(/,/gu,""))}},md=[{type:"function",name:"transfer",stateMutability:"nonpayable",inputs:[{name:"_to",type:"address"},{name:"_value",type:"uint256"}],outputs:[{name:"",type:"bool"}]},{type:"function",name:"transferFrom",stateMutability:"nonpayable",inputs:[{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_value",type:"uint256"}],outputs:[{name:"",type:"bool"}]}],wd=[{type:"function",name:"approve",stateMutability:"nonpayable",inputs:[{name:"spender",type:"address"},{name:"amount",type:"uint256"}],outputs:[{type:"bool"}]}],yd=[{type:"function",name:"transfer",stateMutability:"nonpayable",inputs:[{name:"recipient",type:"address"},{name:"amount",type:"uint256"}],outputs:[]},{type:"function",name:"transferFrom",stateMutability:"nonpayable",inputs:[{name:"sender",type:"address"},{name:"recipient",type:"address"},{name:"amount",type:"uint256"}],outputs:[{name:"",type:"bool"}]}],bd={getERC20Abi:t=>W.USDT_CONTRACT_ADDRESSES.includes(t)?yd:md,getSwapAbi:()=>wd},hs={validateCaipAddress(t){if(t.split(":")?.length!==3)throw new Error("Invalid CAIP Address");return t},parseCaipAddress(t){const e=t.split(":");if(e.length!==3)throw new Error(`Invalid CAIP-10 address: ${t}`);const[s,r,i]=e;if(!s||!r||!i)throw new Error(`Invalid CAIP-10 address: ${t}`);return{chainNamespace:s,chainId:r,address:i}},parseCaipNetworkId(t){const e=t.split(":");if(e.length!==2)throw new Error(`Invalid CAIP-2 network id: ${t}`);const[s,r]=e;if(!s||!r)throw new Error(`Invalid CAIP-2 network id: ${t}`);return{chainNamespace:s,chainId:r}}},ee={WALLET_ID:"@appkit/wallet_id",WALLET_NAME:"@appkit/wallet_name",SOLANA_WALLET:"@appkit/solana_wallet",SOLANA_CAIP_CHAIN:"@appkit/solana_caip_chain",ACTIVE_CAIP_NETWORK_ID:"@appkit/active_caip_network_id",CONNECTED_SOCIAL:"@appkit/connected_social",CONNECTED_SOCIAL_USERNAME:"@appkit-wallet/SOCIAL_USERNAME",RECENT_WALLETS:"@appkit/recent_wallets",DEEPLINK_CHOICE:"WALLETCONNECT_DEEPLINK_CHOICE",ACTIVE_NAMESPACE:"@appkit/active_namespace",CONNECTED_NAMESPACES:"@appkit/connected_namespaces",CONNECTION_STATUS:"@appkit/connection_status",SIWX_AUTH_TOKEN:"@appkit/siwx-auth-token",SIWX_NONCE_TOKEN:"@appkit/siwx-nonce-token",TELEGRAM_SOCIAL_PROVIDER:"@appkit/social_provider",NATIVE_BALANCE_CACHE:"@appkit/native_balance_cache",PORTFOLIO_CACHE:"@appkit/portfolio_cache",ENS_CACHE:"@appkit/ens_cache",IDENTITY_CACHE:"@appkit/identity_cache",PREFERRED_ACCOUNT_TYPES:"@appkit/preferred_account_types",CONNECTIONS:"@appkit/connections"};function Fn(t){if(!t)throw new Error("Namespace is required for CONNECTED_CONNECTOR_ID");return`@appkit/${t}:connected_connector_id`}const Z={setItem(t,e){ai()&&e!==void 0&&localStorage.setItem(t,e)},getItem(t){if(ai())return localStorage.getItem(t)||void 0},removeItem(t){ai()&&localStorage.removeItem(t)},clear(){ai()&&localStorage.clear()}};function ai(){return typeof window<"u"&&typeof localStorage<"u"}function Es(t,e){return e==="light"?{"--w3m-accent":t?.["--w3m-accent"]||"hsla(231, 100%, 70%, 1)","--w3m-background":"#fff"}:{"--w3m-accent":t?.["--w3m-accent"]||"hsla(230, 100%, 67%, 1)","--w3m-background":"#121313"}}const vd=Symbol(),Ra=Object.getPrototypeOf,Io=new WeakMap,Ed=t=>t&&(Io.has(t)?Io.get(t):Ra(t)===Object.prototype||Ra(t)===Array.prototype),Cd=t=>Ed(t)&&t[vd]||null,Ua=(t,e=!0)=>{Io.set(t,e)},vn={},zn=t=>typeof t=="object"&&t!==null,ws=new WeakMap,ci=new WeakSet,Id=(t=Object.is,e=(l,u)=>new Proxy(l,u),s=l=>zn(l)&&!ci.has(l)&&(Array.isArray(l)||!(Symbol.iterator in l))&&!(l instanceof WeakMap)&&!(l instanceof WeakSet)&&!(l instanceof Error)&&!(l instanceof Number)&&!(l instanceof Date)&&!(l instanceof String)&&!(l instanceof RegExp)&&!(l instanceof ArrayBuffer),r=l=>{switch(l.status){case"fulfilled":return l.value;case"rejected":throw l.reason;default:throw l}},i=new WeakMap,n=(l,u,h=r)=>{const d=i.get(l);if(d?.[0]===u)return d[1];const p=Array.isArray(l)?[]:Object.create(Object.getPrototypeOf(l));return Ua(p,!0),i.set(l,[u,p]),Reflect.ownKeys(l).forEach(w=>{if(Object.getOwnPropertyDescriptor(p,w))return;const m=Reflect.get(l,w),{enumerable:f}=Reflect.getOwnPropertyDescriptor(l,w),y={value:m,enumerable:f,configurable:!0};if(ci.has(m))Ua(m,!1);else if(m instanceof Promise)delete y.value,y.get=()=>h(m);else if(ws.has(m)){const[b,v]=ws.get(m);y.value=n(b,v(),h)}Object.defineProperty(p,w,y)}),Object.preventExtensions(p)},o=new WeakMap,a=[1,1],c=l=>{if(!zn(l))throw new Error("object required");const u=o.get(l);if(u)return u;let h=a[0];const d=new Set,p=(E,$=++a[0])=>{h!==$&&(h=$,d.forEach(I=>I(E,$)))};let w=a[1];const m=(E=++a[1])=>(w!==E&&!d.size&&(w=E,y.forEach(([$])=>{const I=$[1](E);I>h&&(h=I)})),h),f=E=>($,I)=>{const L=[...$];L[1]=[E,...L[1]],p(L,I)},y=new Map,b=(E,$)=>{if((vn?"production":void 0)!=="production"&&y.has(E))throw new Error("prop listener already exists");if(d.size){const I=$[3](f(E));y.set(E,[$,I])}else y.set(E,[$])},v=E=>{var $;const I=y.get(E);I&&(y.delete(E),($=I[1])==null||$.call(I))},C=E=>(d.add(E),d.size===1&&y.forEach(([I,L],H)=>{if((vn?"production":void 0)!=="production"&&L)throw new Error("remove already exists");const N=I[3](f(H));y.set(H,[I,N])}),()=>{d.delete(E),d.size===0&&y.forEach(([I,L],H)=>{L&&(L(),y.set(H,[I]))})}),S=Array.isArray(l)?[]:Object.create(Object.getPrototypeOf(l)),_=e(S,{deleteProperty(E,$){const I=Reflect.get(E,$);v($);const L=Reflect.deleteProperty(E,$);return L&&p(["delete",[$],I]),L},set(E,$,I,L){const H=Reflect.has(E,$),N=Reflect.get(E,$,L);if(H&&(t(N,I)||o.has(I)&&t(N,o.get(I))))return!0;v($),zn(I)&&(I=Cd(I)||I);let T=I;if(I instanceof Promise)I.then(k=>{I.status="fulfilled",I.value=k,p(["resolve",[$],k])}).catch(k=>{I.status="rejected",I.reason=k,p(["reject",[$],k])});else{!ws.has(I)&&s(I)&&(T=c(I));const k=!ci.has(T)&&ws.get(T);k&&b($,k)}return Reflect.set(E,$,T,L),p(["set",[$],I,N]),!0}});o.set(l,_);const U=[S,m,n,C];return ws.set(_,U),Reflect.ownKeys(l).forEach(E=>{const $=Object.getOwnPropertyDescriptor(l,E);"value"in $&&(_[E]=l[E],delete $.value,delete $.writable),Object.defineProperty(S,E,$)}),_})=>[c,ws,ci,t,e,s,r,i,n,o,a],[Nd]=Id();function _e(t={}){return Nd(t)}function Qe(t,e,s){const r=ws.get(t);(vn?"production":void 0)!=="production"&&!r&&console.warn("Please use proxy object");let i;const n=[],o=r[3];let a=!1;const l=o(u=>{n.push(u),i||(i=Promise.resolve().then(()=>{i=void 0,a&&e(n.splice(0))}))});return a=!0,()=>{a=!1,l()}}function Ii(t,e){const s=ws.get(t);(vn?"production":void 0)!=="production"&&!s&&console.warn("Please use proxy object");const[r,i,n]=s;return n(r,i(),e)}function Vs(t){return ci.add(t),t}function et(t,e,s,r){let i=t[e];return Qe(t,()=>{const n=t[e];Object.is(i,n)||s(i=n)})}function Ad(t){const e=_e({data:Array.from([]),has(s){return this.data.some(r=>r[0]===s)},set(s,r){const i=this.data.find(n=>n[0]===s);return i?i[1]=r:this.data.push([s,r]),this},get(s){var r;return(r=this.data.find(i=>i[0]===s))==null?void 0:r[1]},delete(s){const r=this.data.findIndex(i=>i[0]===s);return r===-1?!1:(this.data.splice(r,1),!0)},clear(){this.data.splice(0)},get size(){return this.data.length},toJSON(){return new Map(this.data)},forEach(s){this.data.forEach(r=>{s(r[1],r[0],this)})},keys(){return this.data.map(s=>s[0]).values()},values(){return this.data.map(s=>s[1]).values()},entries(){return new Map(this.data).entries()},get[Symbol.toStringTag](){return"Map"},[Symbol.iterator](){return this.entries()}});return Object.defineProperties(e,{data:{enumerable:!1},size:{enumerable:!1},toJSON:{enumerable:!1}}),Object.seal(e),e}const Zl=[{label:"Coinbase",name:"coinbase",feeRange:"1-2%",url:"",supportedChains:["eip155"]},{label:"Meld.io",name:"meld",feeRange:"1-2%",url:"https://meldcrypto.com",supportedChains:["eip155","solana"]}],_d="WXETMuFUQmqqybHuRkSgxv:25B8LJHSfpG6LVjR2ytU5Cwh7Z4Sch2ocoU",ve={FOUR_MINUTES_MS:24e4,TEN_SEC_MS:1e4,ONE_SEC_MS:1e3,BALANCE_SUPPORTED_CHAINS:["eip155","solana"],NAMES_SUPPORTED_CHAIN_NAMESPACES:["eip155"],NATIVE_TOKEN_ADDRESS:{eip155:"0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",solana:"So11111111111111111111111111111111111111111",polkadot:"0x",bip122:"0x",cosmos:"0x"},CONVERT_SLIPPAGE_TOLERANCE:1,CONNECT_LABELS:{MOBILE:"Open and continue in the wallet app"},SEND_SUPPORTED_NAMESPACES:["eip155","solana"],DEFAULT_REMOTE_FEATURES:{swaps:["1inch"],onramp:["coinbase","meld"],email:!0,socials:["google","x","discord","farcaster","github","apple","facebook"],activity:!0,reownBranding:!0},DEFAULT_REMOTE_FEATURES_DISABLED:{email:!1,socials:!1,swaps:!1,onramp:!1,activity:!1,reownBranding:!1},DEFAULT_FEATURES:{receive:!0,send:!0,emailShowWallets:!0,connectorTypeOrder:["walletConnect","recent","injected","featured","custom","external","recommended"],analytics:!0,allWallets:!0,legalCheckbox:!1,smartSessions:!1,collapseWallets:!1,walletFeaturesOrder:["onramp","swaps","receive","send"],connectMethodsOrder:void 0,pay:!1},DEFAULT_ACCOUNT_TYPES:{bip122:"payment",eip155:"smartAccount",polkadot:"eoa",solana:"eoa"},ADAPTER_TYPES:{UNIVERSAL:"universal"}},F={cacheExpiry:{portfolio:3e4,nativeBalance:3e4,ens:3e5,identity:3e5},isCacheExpired(t,e){return Date.now()-t>e},getActiveNetworkProps(){const t=F.getActiveNamespace(),e=F.getActiveCaipNetworkId(),s=e?e.split(":")[1]:void 0,r=s?isNaN(Number(s))?s:Number(s):void 0;return{namespace:t,caipNetworkId:e,chainId:r}},setWalletConnectDeepLink({name:t,href:e}){try{Z.setItem(ee.DEEPLINK_CHOICE,JSON.stringify({href:e,name:t}))}catch{console.info("Unable to set WalletConnect deep link")}},getWalletConnectDeepLink(){try{const t=Z.getItem(ee.DEEPLINK_CHOICE);if(t)return JSON.parse(t)}catch{console.info("Unable to get WalletConnect deep link")}},deleteWalletConnectDeepLink(){try{Z.removeItem(ee.DEEPLINK_CHOICE)}catch{console.info("Unable to delete WalletConnect deep link")}},setActiveNamespace(t){try{Z.setItem(ee.ACTIVE_NAMESPACE,t)}catch{console.info("Unable to set active namespace")}},setActiveCaipNetworkId(t){try{Z.setItem(ee.ACTIVE_CAIP_NETWORK_ID,t),F.setActiveNamespace(t.split(":")[0])}catch{console.info("Unable to set active caip network id")}},getActiveCaipNetworkId(){try{return Z.getItem(ee.ACTIVE_CAIP_NETWORK_ID)}catch{console.info("Unable to get active caip network id");return}},deleteActiveCaipNetworkId(){try{Z.removeItem(ee.ACTIVE_CAIP_NETWORK_ID)}catch{console.info("Unable to delete active caip network id")}},deleteConnectedConnectorId(t){try{const e=Fn(t);Z.removeItem(e)}catch{console.info("Unable to delete connected connector id")}},setAppKitRecent(t){try{const e=F.getRecentWallets();e.find(r=>r.id===t.id)||(e.unshift(t),e.length>2&&e.pop(),Z.setItem(ee.RECENT_WALLETS,JSON.stringify(e)))}catch{console.info("Unable to set AppKit recent")}},getRecentWallets(){try{const t=Z.getItem(ee.RECENT_WALLETS);return t?JSON.parse(t):[]}catch{console.info("Unable to get AppKit recent")}return[]},setConnectedConnectorId(t,e){try{const s=Fn(t);Z.setItem(s,e)}catch{console.info("Unable to set Connected Connector Id")}},getActiveNamespace(){try{return Z.getItem(ee.ACTIVE_NAMESPACE)}catch{console.info("Unable to get active namespace")}},getConnectedConnectorId(t){if(t)try{const e=Fn(t);return Z.getItem(e)}catch{console.info("Unable to get connected connector id in namespace ",t)}},setConnectedSocialProvider(t){try{Z.setItem(ee.CONNECTED_SOCIAL,t)}catch{console.info("Unable to set connected social provider")}},getConnectedSocialProvider(){try{return Z.getItem(ee.CONNECTED_SOCIAL)}catch{console.info("Unable to get connected social provider")}},deleteConnectedSocialProvider(){try{Z.removeItem(ee.CONNECTED_SOCIAL)}catch{console.info("Unable to delete connected social provider")}},getConnectedSocialUsername(){try{return Z.getItem(ee.CONNECTED_SOCIAL_USERNAME)}catch{console.info("Unable to get connected social username")}},getStoredActiveCaipNetworkId(){return Z.getItem(ee.ACTIVE_CAIP_NETWORK_ID)?.split(":")?.[1]},setConnectionStatus(t){try{Z.setItem(ee.CONNECTION_STATUS,t)}catch{console.info("Unable to set connection status")}},getConnectionStatus(){try{return Z.getItem(ee.CONNECTION_STATUS)}catch{return}},getConnectedNamespaces(){try{const t=Z.getItem(ee.CONNECTED_NAMESPACES);return t?.length?t.split(","):[]}catch{return[]}},setConnectedNamespaces(t){try{const e=Array.from(new Set(t));Z.setItem(ee.CONNECTED_NAMESPACES,e.join(","))}catch{console.info("Unable to set namespaces in storage")}},addConnectedNamespace(t){try{const e=F.getConnectedNamespaces();e.includes(t)||(e.push(t),F.setConnectedNamespaces(e))}catch{console.info("Unable to add connected namespace")}},removeConnectedNamespace(t){try{const e=F.getConnectedNamespaces(),s=e.indexOf(t);s>-1&&(e.splice(s,1),F.setConnectedNamespaces(e))}catch{console.info("Unable to remove connected namespace")}},getTelegramSocialProvider(){try{return Z.getItem(ee.TELEGRAM_SOCIAL_PROVIDER)}catch{return console.info("Unable to get telegram social provider"),null}},setTelegramSocialProvider(t){try{Z.setItem(ee.TELEGRAM_SOCIAL_PROVIDER,t)}catch{console.info("Unable to set telegram social provider")}},removeTelegramSocialProvider(){try{Z.removeItem(ee.TELEGRAM_SOCIAL_PROVIDER)}catch{console.info("Unable to remove telegram social provider")}},getBalanceCache(){let t={};try{const e=Z.getItem(ee.PORTFOLIO_CACHE);t=e?JSON.parse(e):{}}catch{console.info("Unable to get balance cache")}return t},removeAddressFromBalanceCache(t){try{const e=F.getBalanceCache();Z.setItem(ee.PORTFOLIO_CACHE,JSON.stringify({...e,[t]:void 0}))}catch{console.info("Unable to remove address from balance cache",t)}},getBalanceCacheForCaipAddress(t){try{const s=F.getBalanceCache()[t];if(s&&!this.isCacheExpired(s.timestamp,this.cacheExpiry.portfolio))return s.balance;F.removeAddressFromBalanceCache(t)}catch{console.info("Unable to get balance cache for address",t)}},updateBalanceCache(t){try{const e=F.getBalanceCache();e[t.caipAddress]=t,Z.setItem(ee.PORTFOLIO_CACHE,JSON.stringify(e))}catch{console.info("Unable to update balance cache",t)}},getNativeBalanceCache(){let t={};try{const e=Z.getItem(ee.NATIVE_BALANCE_CACHE);t=e?JSON.parse(e):{}}catch{console.info("Unable to get balance cache")}return t},removeAddressFromNativeBalanceCache(t){try{const e=F.getBalanceCache();Z.setItem(ee.NATIVE_BALANCE_CACHE,JSON.stringify({...e,[t]:void 0}))}catch{console.info("Unable to remove address from balance cache",t)}},getNativeBalanceCacheForCaipAddress(t){try{const s=F.getNativeBalanceCache()[t];if(s&&!this.isCacheExpired(s.timestamp,this.cacheExpiry.nativeBalance))return s;console.info("Discarding cache for address",t),F.removeAddressFromBalanceCache(t)}catch{console.info("Unable to get balance cache for address",t)}},updateNativeBalanceCache(t){try{const e=F.getNativeBalanceCache();e[t.caipAddress]=t,Z.setItem(ee.NATIVE_BALANCE_CACHE,JSON.stringify(e))}catch{console.info("Unable to update balance cache",t)}},getEnsCache(){let t={};try{const e=Z.getItem(ee.ENS_CACHE);t=e?JSON.parse(e):{}}catch{console.info("Unable to get ens name cache")}return t},getEnsFromCacheForAddress(t){try{const s=F.getEnsCache()[t];if(s&&!this.isCacheExpired(s.timestamp,this.cacheExpiry.ens))return s.ens;F.removeEnsFromCache(t)}catch{console.info("Unable to get ens name from cache",t)}},updateEnsCache(t){try{const e=F.getEnsCache();e[t.address]=t,Z.setItem(ee.ENS_CACHE,JSON.stringify(e))}catch{console.info("Unable to update ens name cache",t)}},removeEnsFromCache(t){try{const e=F.getEnsCache();Z.setItem(ee.ENS_CACHE,JSON.stringify({...e,[t]:void 0}))}catch{console.info("Unable to remove ens name from cache",t)}},getIdentityCache(){let t={};try{const e=Z.getItem(ee.IDENTITY_CACHE);t=e?JSON.parse(e):{}}catch{console.info("Unable to get identity cache")}return t},getIdentityFromCacheForAddress(t){try{const s=F.getIdentityCache()[t];if(s&&!this.isCacheExpired(s.timestamp,this.cacheExpiry.identity))return s.identity;F.removeIdentityFromCache(t)}catch{console.info("Unable to get identity from cache",t)}},updateIdentityCache(t){try{const e=F.getIdentityCache();e[t.address]={identity:t.identity,timestamp:t.timestamp},Z.setItem(ee.IDENTITY_CACHE,JSON.stringify(e))}catch{console.info("Unable to update identity cache",t)}},removeIdentityFromCache(t){try{const e=F.getIdentityCache();Z.setItem(ee.IDENTITY_CACHE,JSON.stringify({...e,[t]:void 0}))}catch{console.info("Unable to remove identity from cache",t)}},clearAddressCache(){try{Z.removeItem(ee.PORTFOLIO_CACHE),Z.removeItem(ee.NATIVE_BALANCE_CACHE),Z.removeItem(ee.ENS_CACHE),Z.removeItem(ee.IDENTITY_CACHE)}catch{console.info("Unable to clear address cache")}},setPreferredAccountTypes(t){try{Z.setItem(ee.PREFERRED_ACCOUNT_TYPES,JSON.stringify(t))}catch{console.info("Unable to set preferred account types",t)}},getPreferredAccountTypes(){try{const t=Z.getItem(ee.PREFERRED_ACCOUNT_TYPES);return t?JSON.parse(t):{}}catch{console.info("Unable to get preferred account types")}return{}},setConnections(t,e){try{const s={...F.getConnections(),[e]:t};Z.setItem(ee.CONNECTIONS,JSON.stringify(s))}catch(s){console.error("Unable to sync connections to storage",s)}},getConnections(){try{const t=Z.getItem(ee.CONNECTIONS);return t?JSON.parse(t):{}}catch(t){return console.error("Unable to get connections from storage",t),{}}}},X={isMobile(){return this.isClient()?!!(typeof window?.matchMedia=="function"&&window?.matchMedia("(pointer:coarse)")?.matches||/Android|webOS|iPhone|iPad|iPod|BlackBerry|Opera Mini/u.test(navigator.userAgent)):!1},checkCaipNetwork(t,e=""){return t?.caipNetworkId.toLocaleLowerCase().includes(e.toLowerCase())},isAndroid(){if(!this.isMobile())return!1;const t=window?.navigator.userAgent.toLowerCase();return X.isMobile()&&t.includes("android")},isIos(){if(!this.isMobile())return!1;const t=window?.navigator.userAgent.toLowerCase();return t.includes("iphone")||t.includes("ipad")},isSafari(){return this.isClient()?(window?.navigator.userAgent.toLowerCase()).includes("safari"):!1},isClient(){return typeof window<"u"},isPairingExpired(t){return t?t-Date.now()<=ve.TEN_SEC_MS:!0},isAllowedRetry(t,e=ve.ONE_SEC_MS){return Date.now()-t>=e},copyToClopboard(t){navigator.clipboard.writeText(t)},isIframe(){try{return window?.self!==window?.top}catch{return!1}},isSafeApp(){if(X.isClient()&&window.self!==window.top)try{const t=window?.location?.ancestorOrigins?.[0],e="https://app.safe.global";if(t){const s=new URL(t),r=new URL(e);return s.hostname===r.hostname}}catch{return!1}return!1},getPairingExpiry(){return Date.now()+ve.FOUR_MINUTES_MS},getNetworkId(t){return t?.split(":")[1]},getPlainAddress(t){return t?.split(":")[2]},async wait(t){return new Promise(e=>{setTimeout(e,t)})},debounce(t,e=500){let s;return(...r)=>{function i(){t(...r)}s&&clearTimeout(s),s=setTimeout(i,e)}},isHttpUrl(t){return t.startsWith("http://")||t.startsWith("https://")},formatNativeUrl(t,e,s=null){if(X.isHttpUrl(t))return this.formatUniversalUrl(t,e);let r=t,i=s;r.includes("://")||(r=t.replaceAll("/","").replaceAll(":",""),r=`${r}://`),r.endsWith("/")||(r=`${r}/`),i&&!i?.endsWith("/")&&(i=`${i}/`),this.isTelegram()&&this.isAndroid()&&(e=encodeURIComponent(e));const n=encodeURIComponent(e);return{redirect:`${r}wc?uri=${n}`,redirectUniversalLink:i?`${i}wc?uri=${n}`:void 0,href:r}},formatUniversalUrl(t,e){if(!X.isHttpUrl(t))return this.formatNativeUrl(t,e);let s=t;s.endsWith("/")||(s=`${s}/`);const r=encodeURIComponent(e);return{redirect:`${s}wc?uri=${r}`,href:s}},getOpenTargetForPlatform(t){return t==="popupWindow"?t:this.isTelegram()?F.getTelegramSocialProvider()?"_top":"_blank":t},openHref(t,e,s){window?.open(t,this.getOpenTargetForPlatform(e),s||"noreferrer noopener")},returnOpenHref(t,e,s){return window?.open(t,this.getOpenTargetForPlatform(e),s||"noreferrer noopener")},isTelegram(){return typeof window<"u"&&(!!window.TelegramWebviewProxy||!!window.Telegram||!!window.TelegramWebviewProxyProto)},isPWA(){if(typeof window>"u")return!1;const t=window.matchMedia?.("(display-mode: standalone)")?.matches,e=window?.navigator?.standalone;return!!(t||e)},async preloadImage(t){const e=new Promise((s,r)=>{const i=new Image;i.onload=s,i.onerror=r,i.crossOrigin="anonymous",i.src=t});return Promise.race([e,X.wait(2e3)])},formatBalance(t,e){let s="0.000";if(typeof t=="string"){const r=Number(t);if(r){const i=Math.floor(r*1e3)/1e3;i&&(s=i.toString())}}return`${s}${e?` ${e}`:""}`},formatBalance2(t,e){let s;if(t==="0")s="0";else if(typeof t=="string"){const r=Number(t);r&&(s=r.toString().match(/^-?\d+(?:\.\d{0,3})?/u)?.[0])}return{value:s??"0",rest:s==="0"?"000":"",symbol:e}},getApiUrl(){return W.W3M_API_URL},getBlockchainApiUrl(){return W.BLOCKCHAIN_API_RPC_URL},getAnalyticsUrl(){return W.PULSE_API_URL},getUUID(){return crypto?.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/gu,t=>{const e=Math.random()*16|0;return(t==="x"?e:e&3|8).toString(16)})},parseError(t){return typeof t=="string"?t:typeof t?.issues?.[0]?.message=="string"?t.issues[0].message:t instanceof Error?t.message:"Unknown error"},sortRequestedNetworks(t,e=[]){const s={};return e&&t&&(t.forEach((r,i)=>{s[r]=i}),e.sort((r,i)=>{const n=s[r.id],o=s[i.id];return n!==void 0&&o!==void 0?n-o:n!==void 0?-1:o!==void 0?1:0})),e},calculateBalance(t){let e=0;for(const s of t)e+=s.value??0;return e},formatTokenBalance(t){const e=t.toFixed(2),[s,r]=e.split(".");return{dollars:s,pennies:r}},isAddress(t,e="eip155"){switch(e){case"eip155":if(/^(?:0x)?[0-9a-f]{40}$/iu.test(t)){if(/^(?:0x)?[0-9a-f]{40}$/iu.test(t)||/^(?:0x)?[0-9A-F]{40}$/iu.test(t))return!0}else return!1;return!1;case"solana":return/[1-9A-HJ-NP-Za-km-z]{32,44}$/iu.test(t);default:return!1}},uniqueBy(t,e){const s=new Set;return t.filter(r=>{const i=r[e];return s.has(i)?!1:(s.add(i),!0)})},generateSdkVersion(t,e,s){const i=t.length===0?ve.ADAPTER_TYPES.UNIVERSAL:t.map(n=>n.adapterType).join(",");return`${e}-${i}-${s}`},createAccount(t,e,s,r,i){return{namespace:t,address:e,type:s,publicKey:r,path:i}},isCaipAddress(t){if(typeof t!="string")return!1;const e=t.split(":"),s=e[0];return e.filter(Boolean).length===3&&s in W.CHAIN_NAME_MAP},isMac(){const t=window?.navigator.userAgent.toLowerCase();return t.includes("macintosh")&&!t.includes("safari")},formatTelegramSocialLoginUrl(t){const e=`--${encodeURIComponent(window?.location.href)}`,s="state=";if(new URL(t).host==="auth.magic.link"){const i="provider_authorization_url=",n=t.substring(t.indexOf(i)+i.length),o=this.injectIntoUrl(decodeURIComponent(n),s,e);return t.replace(n,encodeURIComponent(o))}return this.injectIntoUrl(t,s,e)},injectIntoUrl(t,e,s){const r=t.indexOf(e);if(r===-1)throw new Error(`${e} parameter not found in the URL: ${t}`);const i=t.indexOf("&",r),n=e.length,o=i!==-1?i:t.length,a=t.substring(0,r+n),c=t.substring(r+n,o),l=t.substring(i),u=c+s;return a+u+l}};async function Zr(...t){const e=await fetch(...t);if(!e.ok)throw new Error(`HTTP status code: ${e.status}`,{cause:e});return e}class Ui{constructor({baseUrl:e,clientId:s}){this.baseUrl=e,this.clientId=s}async get({headers:e,signal:s,cache:r,...i}){const n=this.createUrl(i);return(await Zr(n,{method:"GET",headers:e,signal:s,cache:r})).json()}async getBlob({headers:e,signal:s,...r}){const i=this.createUrl(r);return(await Zr(i,{method:"GET",headers:e,signal:s})).blob()}async post({body:e,headers:s,signal:r,...i}){const n=this.createUrl(i);return(await Zr(n,{method:"POST",headers:s,body:e?JSON.stringify(e):void 0,signal:r})).json()}async put({body:e,headers:s,signal:r,...i}){const n=this.createUrl(i);return(await Zr(n,{method:"PUT",headers:s,body:e?JSON.stringify(e):void 0,signal:r})).json()}async delete({body:e,headers:s,signal:r,...i}){const n=this.createUrl(i);return(await Zr(n,{method:"DELETE",headers:s,body:e?JSON.stringify(e):void 0,signal:r})).json()}createUrl({path:e,params:s}){const r=new URL(e,this.baseUrl);return s&&Object.entries(s).forEach(([i,n])=>{n&&r.searchParams.append(i,n)}),this.clientId&&r.searchParams.append("clientId",this.clientId),r}}const Sd={getFeatureValue(t,e){const s=e?.[t];return s===void 0?ve.DEFAULT_FEATURES[t]:s},filterSocialsByPlatform(t){if(!t||!t.length)return t;if(X.isTelegram()){if(X.isIos())return t.filter(e=>e!=="google");if(X.isMac())return t.filter(e=>e!=="x");if(X.isAndroid())return t.filter(e=>!["facebook","x"].includes(e))}return t}},K=_e({features:ve.DEFAULT_FEATURES,projectId:"",sdkType:"appkit",sdkVersion:"html-wagmi-undefined",defaultAccountTypes:ve.DEFAULT_ACCOUNT_TYPES,enableNetworkSwitch:!0,experimental_preferUniversalLinks:!1,remoteFeatures:{}}),O={state:K,subscribeKey(t,e){return et(K,t,e)},setOptions(t){Object.assign(K,t)},setRemoteFeatures(t){if(!t)return;const e={...K.remoteFeatures,...t};K.remoteFeatures=e,K.remoteFeatures?.socials&&(K.remoteFeatures.socials=Sd.filterSocialsByPlatform(K.remoteFeatures.socials))},setFeatures(t){if(!t)return;K.features||(K.features=ve.DEFAULT_FEATURES);const e={...K.features,...t};K.features=e},setProjectId(t){K.projectId=t},setCustomRpcUrls(t){K.customRpcUrls=t},setAllWallets(t){K.allWallets=t},setIncludeWalletIds(t){K.includeWalletIds=t},setExcludeWalletIds(t){K.excludeWalletIds=t},setFeaturedWalletIds(t){K.featuredWalletIds=t},setTokens(t){K.tokens=t},setTermsConditionsUrl(t){K.termsConditionsUrl=t},setPrivacyPolicyUrl(t){K.privacyPolicyUrl=t},setCustomWallets(t){K.customWallets=t},setIsSiweEnabled(t){K.isSiweEnabled=t},setIsUniversalProvider(t){K.isUniversalProvider=t},setSdkVersion(t){K.sdkVersion=t},setMetadata(t){K.metadata=t},setDisableAppend(t){K.disableAppend=t},setEIP6963Enabled(t){K.enableEIP6963=t},setDebug(t){K.debug=t},setEnableWalletConnect(t){K.enableWalletConnect=t},setEnableWalletGuide(t){K.enableWalletGuide=t},setEnableAuthLogger(t){K.enableAuthLogger=t},setEnableWallets(t){K.enableWallets=t},setPreferUniversalLinks(t){K.experimental_preferUniversalLinks=t},setHasMultipleAddresses(t){K.hasMultipleAddresses=t},setSIWX(t){K.siwx=t},setConnectMethodsOrder(t){K.features={...K.features,connectMethodsOrder:t}},setWalletFeaturesOrder(t){K.features={...K.features,walletFeaturesOrder:t}},setSocialsOrder(t){K.remoteFeatures={...K.remoteFeatures,socials:t}},setCollapseWallets(t){K.features={...K.features,collapseWallets:t}},setEnableEmbedded(t){K.enableEmbedded=t},setAllowUnsupportedChain(t){K.allowUnsupportedChain=t},setManualWCControl(t){K.manualWCControl=t},setEnableNetworkSwitch(t){K.enableNetworkSwitch=t},setDefaultAccountTypes(t={}){Object.entries(t).forEach(([e,s])=>{s&&(K.defaultAccountTypes[e]=s)})},setUniversalProviderConfigOverride(t){K.universalProviderConfigOverride=t},getUniversalProviderConfigOverride(){return K.universalProviderConfigOverride},getSnapshot(){return Ii(K)}},Pd=Object.freeze({enabled:!0,events:[]}),kd=new Ui({baseUrl:X.getAnalyticsUrl(),clientId:null}),Od=5,Td=60*1e3,ds=_e({...Pd}),xd={state:ds,subscribeKey(t,e){return et(ds,t,e)},async sendError(t,e){if(!ds.enabled)return;const s=Date.now();if(ds.events.filter(n=>{const o=new Date(n.properties.timestamp||"").getTime();return s-o=Od)return;const i={type:"error",event:e,properties:{errorType:t.name,errorMessage:t.message,stackTrace:t.stack,timestamp:new Date().toISOString()}};ds.events.push(i);try{if(typeof window>"u")return;const{projectId:n,sdkType:o,sdkVersion:a}=O.state;await kd.post({path:"/e",params:{projectId:n,st:o,sv:a||"html-wagmi-4.2.2"},body:{eventId:X.getUUID(),url:window.location.href,domain:window.location.hostname,timestamp:new Date().toISOString(),props:{type:"error",event:e,errorType:t.name,errorMessage:t.message,stackTrace:t.stack}}})}catch{}},enable(){ds.enabled=!0},disable(){ds.enabled=!1},clearEvents(){ds.events=[]}};class $r extends Error{constructor(e,s,r){super(e),this.name="AppKitError",this.category=s,this.originalError=r,Object.setPrototypeOf(this,$r.prototype);let i=!1;if(r instanceof Error&&typeof r.stack=="string"&&r.stack){const n=r.stack,o=n.indexOf(` -`);if(o>-1){const a=n.substring(o+1);this.stack=`${this.name}: ${this.message} -${a}`,i=!0}}i||(Error.captureStackTrace?Error.captureStackTrace(this,$r):this.stack||(this.stack=`${this.name}: ${this.message}`))}}function Da(t,e){const s=t instanceof $r?t:new $r(t instanceof Error?t.message:String(t),e,t);throw xd.sendError(s,s.category),s}function Ct(t,e="INTERNAL_SDK_ERROR"){const s={};return Object.keys(t).forEach(r=>{const i=t[r];if(typeof i=="function"){let n=i;i.constructor.name==="AsyncFunction"?n=async(...o)=>{try{return await i(...o)}catch(a){return Da(a,e)}}:n=(...o)=>{try{return i(...o)}catch(a){return Da(a,e)}},s[r]=n}else s[r]=i}),s}const Vt={PHANTOM:{id:"a797aa35c0fadbfc1a53e7f675162ed5226968b44a19ee3d24385c64d1d3c393",url:"https://phantom.app"},SOLFLARE:{id:"1ca0bdd4747578705b1939af023d120677c64fe6ca76add81fda36e350605e79",url:"https://solflare.com"},COINBASE:{id:"fd20dc426fb37566d803205b19bbc1d4096b248ac04548e3cfb6b3a38bd033aa",url:"https://go.cb-w.com"}},$d={handleMobileDeeplinkRedirect(t,e){const s=window.location.href,r=encodeURIComponent(s);if(t===Vt.PHANTOM.id&&!("phantom"in window)){const i=s.startsWith("https")?"https":"http",n=s.split("/")[2],o=encodeURIComponent(`${i}://${n}`);window.location.href=`${Vt.PHANTOM.url}/ul/browse/${r}?ref=${o}`}t===Vt.SOLFLARE.id&&!("solflare"in window)&&(window.location.href=`${Vt.SOLFLARE.url}/ul/v1/browse/${r}?ref=${r}`),e===W.CHAIN.SOLANA&&t===Vt.COINBASE.id&&!("coinbaseSolana"in window)&&(window.location.href=`${Vt.COINBASE.url}/dapp?cb_url=${r}`)}},pt=_e({walletImages:{},networkImages:{},chainImages:{},connectorImages:{},tokenImages:{},currencyImages:{}}),Rd={state:pt,subscribeNetworkImages(t){return Qe(pt.networkImages,()=>t(pt.networkImages))},subscribeKey(t,e){return et(pt,t,e)},subscribe(t){return Qe(pt,()=>t(pt))},setWalletImage(t,e){pt.walletImages[t]=e},setNetworkImage(t,e){pt.networkImages[t]=e},setChainImage(t,e){pt.chainImages[t]=e},setConnectorImage(t,e){pt.connectorImages={...pt.connectorImages,[t]:e}},setTokenImage(t,e){pt.tokenImages[t]=e},setCurrencyImage(t,e){pt.currencyImages[t]=e}},Dt=Ct(Rd),Ud={eip155:"ba0ba0cd-17c6-4806-ad93-f9d174f17900",solana:"a1b58899-f671-4276-6a5e-56ca5bd59700",polkadot:"",bip122:"0b4838db-0161-4ffe-022d-532bf03dba00",cosmos:""},Wn=_e({networkImagePromises:{}}),Ql={async fetchWalletImage(t){if(t)return await V._fetchWalletImage(t),this.getWalletImageById(t)},async fetchNetworkImage(t){if(!t)return;const e=this.getNetworkImageById(t);return e||(Wn.networkImagePromises[t]||(Wn.networkImagePromises[t]=V._fetchNetworkImage(t)),await Wn.networkImagePromises[t],this.getNetworkImageById(t))},getWalletImageById(t){if(t)return Dt.state.walletImages[t]},getWalletImage(t){if(t?.image_url)return t?.image_url;if(t?.image_id)return Dt.state.walletImages[t.image_id]},getNetworkImage(t){if(t?.assets?.imageUrl)return t?.assets?.imageUrl;if(t?.assets?.imageId)return Dt.state.networkImages[t.assets.imageId]},getNetworkImageById(t){if(t)return Dt.state.networkImages[t]},getConnectorImage(t){if(t?.imageUrl)return t.imageUrl;if(t?.imageId)return Dt.state.connectorImages[t.imageId]},getChainImage(t){return Dt.state.networkImages[Ud[t]]}},ps=_e({message:"",variant:"info",open:!1}),Dd={state:ps,subscribeKey(t,e){return et(ps,t,e)},open(t,e){const{debug:s}=O.state,{shortMessage:r,longMessage:i}=t;s&&(ps.message=r,ps.variant=e,ps.open=!0),i&&console.error(typeof i=="function"?i():i)},close(){ps.open=!1,ps.message="",ps.variant="info"}},Ls=Ct(Dd),Ld=X.getAnalyticsUrl(),Md=new Ui({baseUrl:Ld,clientId:null}),Bd=["MODAL_CREATED"],Qt=_e({timestamp:Date.now(),reportedErrors:{},data:{type:"track",event:"MODAL_CREATED"}}),Pe={state:Qt,subscribe(t){return Qe(Qt,()=>t(Qt))},getSdkProperties(){const{projectId:t,sdkType:e,sdkVersion:s}=O.state;return{projectId:t,st:e,sv:s||"html-wagmi-4.2.2"}},async _sendAnalyticsEvent(t){try{const e=z.state.address;if(Bd.includes(t.data.event)||typeof window>"u")return;await Md.post({path:"/e",params:Pe.getSdkProperties(),body:{eventId:X.getUUID(),url:window.location.href,domain:window.location.hostname,timestamp:t.timestamp,props:{...t.data,address:e}}}),Qt.reportedErrors.FORBIDDEN=!1}catch(e){e instanceof Error&&e.cause instanceof Response&&e.cause.status===W.HTTP_STATUS_CODES.FORBIDDEN&&!Qt.reportedErrors.FORBIDDEN&&(Ls.open({shortMessage:"Invalid App Configuration",longMessage:`Origin ${ai()?window.origin:"uknown"} not found on Allowlist - update configuration on cloud.reown.com`},"error"),Qt.reportedErrors.FORBIDDEN=!0)}},sendEvent(t){Qt.timestamp=Date.now(),Qt.data=t,O.state.features?.analytics&&Pe._sendAnalyticsEvent(Qt)}},jd=X.getApiUrl(),it=new Ui({baseUrl:jd,clientId:null}),qd=40,La=4,Fd=20,te=_e({promises:{},page:1,count:0,featured:[],allFeatured:[],recommended:[],allRecommended:[],wallets:[],filteredWallets:[],search:[],isAnalyticsEnabled:!1,excludedWallets:[],isFetchingRecommendedWallets:!1}),V={state:te,subscribeKey(t,e){return et(te,t,e)},_getSdkProperties(){const{projectId:t,sdkType:e,sdkVersion:s}=O.state;return{projectId:t,st:e||"appkit",sv:s||"html-wagmi-4.2.2"}},_filterOutExtensions(t){return O.state.isUniversalProvider?t.filter(e=>!!(e.mobile_link||e.desktop_link||e.webapp_link)):t},async _fetchWalletImage(t){const e=`${it.baseUrl}/getWalletImage/${t}`,s=await it.getBlob({path:e,params:V._getSdkProperties()});Dt.setWalletImage(t,URL.createObjectURL(s))},async _fetchNetworkImage(t){const e=`${it.baseUrl}/public/getAssetImage/${t}`,s=await it.getBlob({path:e,params:V._getSdkProperties()});Dt.setNetworkImage(t,URL.createObjectURL(s))},async _fetchConnectorImage(t){const e=`${it.baseUrl}/public/getAssetImage/${t}`,s=await it.getBlob({path:e,params:V._getSdkProperties()});Dt.setConnectorImage(t,URL.createObjectURL(s))},async _fetchCurrencyImage(t){const e=`${it.baseUrl}/public/getCurrencyImage/${t}`,s=await it.getBlob({path:e,params:V._getSdkProperties()});Dt.setCurrencyImage(t,URL.createObjectURL(s))},async _fetchTokenImage(t){const e=`${it.baseUrl}/public/getTokenImage/${t}`,s=await it.getBlob({path:e,params:V._getSdkProperties()});Dt.setTokenImage(t,URL.createObjectURL(s))},_filterWalletsByPlatform(t){return X.isMobile()?t?.filter(s=>s.mobile_link||s.id===Vt.COINBASE.id?!0:g.state.activeChain==="solana"&&(s.id===Vt.SOLFLARE.id||s.id===Vt.PHANTOM.id)):t},async fetchProjectConfig(){return(await it.get({path:"/appkit/v1/config",params:V._getSdkProperties()})).features},async fetchAllowedOrigins(){try{const{allowedOrigins:t}=await it.get({path:"/projects/v1/origins",params:V._getSdkProperties()});return t}catch{return[]}},async fetchNetworkImages(){const e=g.getAllRequestedCaipNetworks()?.map(({assets:s})=>s?.imageId).filter(Boolean).filter(s=>!Ql.getNetworkImageById(s));e&&await Promise.allSettled(e.map(s=>V._fetchNetworkImage(s)))},async fetchConnectorImages(){const{connectors:t}=j.state,e=t.map(({imageId:s})=>s).filter(Boolean);await Promise.allSettled(e.map(s=>V._fetchConnectorImage(s)))},async fetchCurrencyImages(t=[]){await Promise.allSettled(t.map(e=>V._fetchCurrencyImage(e)))},async fetchTokenImages(t=[]){await Promise.allSettled(t.map(e=>V._fetchTokenImage(e)))},async fetchWallets(t){const e=t.exclude??[];V._getSdkProperties().sv.startsWith("html-core-")&&e.push(...Object.values(Vt).map(n=>n.id));const r=await it.get({path:"/getWallets",params:{...V._getSdkProperties(),...t,page:String(t.page),entries:String(t.entries),include:t.include?.join(","),exclude:e.join(",")}});return{data:V._filterWalletsByPlatform(r?.data)||[],count:r?.count}},async fetchFeaturedWallets(){const{featuredWalletIds:t}=O.state;if(t?.length){const e={...V._getSdkProperties(),page:1,entries:t?.length??La,include:t},{data:s}=await V.fetchWallets(e),r=[...s].sort((n,o)=>t.indexOf(n.id)-t.indexOf(o.id)),i=r.map(n=>n.image_id).filter(Boolean);await Promise.allSettled(i.map(n=>V._fetchWalletImage(n))),te.featured=r,te.allFeatured=r}},async fetchRecommendedWallets(){try{te.isFetchingRecommendedWallets=!0;const{includeWalletIds:t,excludeWalletIds:e,featuredWalletIds:s}=O.state,r=[...e??[],...s??[]].filter(Boolean),i=g.getRequestedCaipNetworkIds().join(","),n={page:1,entries:La,include:t,exclude:r,chains:i},{data:o,count:a}=await V.fetchWallets(n),c=F.getRecentWallets(),l=o.map(h=>h.image_id).filter(Boolean),u=c.map(h=>h.image_id).filter(Boolean);await Promise.allSettled([...l,...u].map(h=>V._fetchWalletImage(h))),te.recommended=o,te.allRecommended=o,te.count=a??0}catch{}finally{te.isFetchingRecommendedWallets=!1}},async fetchWalletsByPage({page:t}){const{includeWalletIds:e,excludeWalletIds:s,featuredWalletIds:r}=O.state,i=g.getRequestedCaipNetworkIds().join(","),n=[...te.recommended.map(({id:u})=>u),...s??[],...r??[]].filter(Boolean),o={page:t,entries:qd,include:e,exclude:n,chains:i},{data:a,count:c}=await V.fetchWallets(o),l=a.slice(0,Fd).map(u=>u.image_id).filter(Boolean);await Promise.allSettled(l.map(u=>V._fetchWalletImage(u))),te.wallets=X.uniqueBy([...te.wallets,...V._filterOutExtensions(a)],"id").filter(u=>u.chains?.some(h=>i.includes(h))),te.count=c>te.count?c:te.count,te.page=t},async initializeExcludedWallets({ids:t}){const e={page:1,entries:t.length,include:t},{data:s}=await V.fetchWallets(e);s&&s.forEach(r=>{te.excludedWallets.push({rdns:r.rdns,name:r.name})})},async searchWallet({search:t,badge:e}){const{includeWalletIds:s,excludeWalletIds:r}=O.state,i=g.getRequestedCaipNetworkIds().join(",");te.search=[];const n={page:1,entries:100,search:t?.trim(),badge_type:e,include:s,exclude:r,chains:i},{data:o}=await V.fetchWallets(n);Pe.sendEvent({type:"track",event:"SEARCH_WALLET",properties:{badge:e??"",search:t??""}});const a=o.map(c=>c.image_id).filter(Boolean);await Promise.allSettled([...a.map(c=>V._fetchWalletImage(c)),X.wait(300)]),te.search=V._filterOutExtensions(o)},initPromise(t,e){const s=te.promises[t];return s||(te.promises[t]=e())},prefetch({fetchConnectorImages:t=!0,fetchFeaturedWallets:e=!0,fetchRecommendedWallets:s=!0,fetchNetworkImages:r=!0}={}){const i=[t&&V.initPromise("connectorImages",V.fetchConnectorImages),e&&V.initPromise("featuredWallets",V.fetchFeaturedWallets),s&&V.initPromise("recommendedWallets",V.fetchRecommendedWallets),r&&V.initPromise("networkImages",V.fetchNetworkImages)].filter(Boolean);return Promise.allSettled(i)},prefetchAnalyticsConfig(){O.state.features?.analytics&&V.fetchAnalyticsConfig()},async fetchAnalyticsConfig(){try{const{isAnalyticsEnabled:t}=await it.get({path:"/getAnalyticsConfig",params:V._getSdkProperties()});O.setFeatures({analytics:t})}catch{O.setFeatures({analytics:!1})}},filterByNamespaces(t){if(!t?.length){te.featured=te.allFeatured,te.recommended=te.allRecommended;return}const e=g.getRequestedCaipNetworkIds().join(",");te.featured=te.allFeatured.filter(s=>s.chains?.some(r=>e.includes(r))),te.recommended=te.allRecommended.filter(s=>s.chains?.some(r=>e.includes(r))),te.filteredWallets=te.wallets.filter(s=>s.chains?.some(r=>e.includes(r)))},clearFilterByNamespaces(){te.filteredWallets=[]},setFilterByNamespace(t){if(!t){te.featured=te.allFeatured,te.recommended=te.allRecommended;return}const e=g.getRequestedCaipNetworkIds().join(",");te.featured=te.allFeatured.filter(s=>s.chains?.some(r=>e.includes(r))),te.recommended=te.allRecommended.filter(s=>s.chains?.some(r=>e.includes(r))),te.filteredWallets=te.wallets.filter(s=>s.chains?.some(r=>e.includes(r)))}},me=_e({view:"Connect",history:["Connect"],transactionStack:[]}),zd={state:me,subscribeKey(t,e){return et(me,t,e)},pushTransactionStack(t){me.transactionStack.push(t)},popTransactionStack(t){const e=me.transactionStack.pop();if(!e)return;const{onSuccess:s,onError:r,onCancel:i}=e;switch(t){case"success":s?.();break;case"error":r?.(),re.goBack();break;case"cancel":i?.(),re.goBack();break}},push(t,e){t!==me.view&&(me.view=t,me.history.push(t),me.data=e)},reset(t,e){me.view=t,me.history=[t],me.data=e},replace(t,e){me.history.at(-1)===t||(me.view=t,me.history[me.history.length-1]=t,me.data=e)},goBack(){const t=g.state.activeCaipAddress,e=re.state.view==="ConnectingFarcaster",s=!t&&e;if(me.history.length>1){me.history.pop();const[r]=me.history.slice(-1);r&&(t&&r==="Connect"?me.view="Account":me.view=r)}else We.close();me.data?.wallet&&(me.data.wallet=void 0),setTimeout(()=>{if(s){z.setFarcasterUrl(void 0,g.state.activeChain);const r=j.getAuthConnector();r?.provider?.reload();const i=Ii(O.state);r?.provider?.syncDappData?.({metadata:i.metadata,sdkVersion:i.sdkVersion,projectId:i.projectId,sdkType:i.sdkType})}},100)},goBackToIndex(t){if(me.history.length>1){me.history=me.history.slice(0,t+1);const[e]=me.history.slice(-1);e&&(me.view=e)}},goBackOrCloseModal(){re.state.history.length>1?re.goBack():We.close()}},re=Ct(zd),es=_e({themeMode:"dark",themeVariables:{},w3mThemeVariables:void 0}),No={state:es,subscribe(t){return Qe(es,()=>t(es))},setThemeMode(t){es.themeMode=t;try{const e=j.getAuthConnector();if(e){const s=No.getSnapshot().themeVariables;e.provider.syncTheme({themeMode:t,themeVariables:s,w3mThemeVariables:Es(s,t)})}}catch{console.info("Unable to sync theme to auth connector")}},setThemeVariables(t){es.themeVariables={...es.themeVariables,...t};try{const e=j.getAuthConnector();if(e){const s=No.getSnapshot().themeVariables;e.provider.syncTheme({themeVariables:s,w3mThemeVariables:Es(es.themeVariables,es.themeMode)})}}catch{console.info("Unable to sync theme to auth connector")}},getSnapshot(){return Ii(es)}},mt=Ct(No),eu={eip155:void 0,solana:void 0,polkadot:void 0,bip122:void 0,cosmos:void 0},ae=_e({allConnectors:[],connectors:[],activeConnector:void 0,filterByNamespace:void 0,activeConnectorIds:{...eu},filterByNamespaceMap:{eip155:!0,solana:!0,polkadot:!0,bip122:!0,cosmos:!0}}),Wd={state:ae,subscribe(t){return Qe(ae,()=>{t(ae)})},subscribeKey(t,e){return et(ae,t,e)},initialize(t){t.forEach(e=>{const s=F.getConnectedConnectorId(e);s&&j.setConnectorId(s,e)})},setActiveConnector(t){t&&(ae.activeConnector=Vs(t))},setConnectors(t){t.filter(i=>!ae.allConnectors.some(n=>n.id===i.id&&j.getConnectorName(n.name)===j.getConnectorName(i.name)&&n.chain===i.chain)).forEach(i=>{i.type!=="MULTI_CHAIN"&&ae.allConnectors.push(Vs(i))});const s=j.getEnabledNamespaces(),r=j.getEnabledConnectors(s);ae.connectors=j.mergeMultiChainConnectors(r)},filterByNamespaces(t){Object.keys(ae.filterByNamespaceMap).forEach(e=>{ae.filterByNamespaceMap[e]=!1}),t.forEach(e=>{ae.filterByNamespaceMap[e]=!0}),j.updateConnectorsForEnabledNamespaces()},filterByNamespace(t,e){ae.filterByNamespaceMap[t]=e,j.updateConnectorsForEnabledNamespaces()},updateConnectorsForEnabledNamespaces(){const t=j.getEnabledNamespaces(),e=j.getEnabledConnectors(t),s=j.areAllNamespacesEnabled();ae.connectors=j.mergeMultiChainConnectors(e),s?V.clearFilterByNamespaces():V.filterByNamespaces(t)},getEnabledNamespaces(){return Object.entries(ae.filterByNamespaceMap).filter(([t,e])=>e).map(([t])=>t)},getEnabledConnectors(t){return ae.allConnectors.filter(e=>t.includes(e.chain))},areAllNamespacesEnabled(){return Object.values(ae.filterByNamespaceMap).every(t=>t)},mergeMultiChainConnectors(t){const e=j.generateConnectorMapByName(t),s=[];return e.forEach(r=>{const i=r[0],n=i?.id===W.CONNECTOR_ID.AUTH;r.length>1&&i?s.push({name:i.name,imageUrl:i.imageUrl,imageId:i.imageId,connectors:[...r],type:n?"AUTH":"MULTI_CHAIN",chain:"eip155",id:i?.id||""}):i&&s.push(i)}),s},generateConnectorMapByName(t){const e=new Map;return t.forEach(s=>{const{name:r}=s,i=j.getConnectorName(r);if(!i)return;const n=e.get(i)||[];n.find(a=>a.chain===s.chain)||n.push(s),e.set(i,n)}),e},getConnectorName(t){return t&&({"Trust Wallet":"Trust"}[t]||t)},getUniqueConnectorsByName(t){const e=[];return t.forEach(s=>{e.find(r=>r.chain===s.chain)||e.push(s)}),e},addConnector(t){if(t.id===W.CONNECTOR_ID.AUTH){const e=t,s=Ii(O.state),r=mt.getSnapshot().themeMode,i=mt.getSnapshot().themeVariables;e?.provider?.syncDappData?.({metadata:s.metadata,sdkVersion:s.sdkVersion,projectId:s.projectId,sdkType:s.sdkType}),e?.provider?.syncTheme({themeMode:r,themeVariables:i,w3mThemeVariables:Es(i,r)}),j.setConnectors([t])}else j.setConnectors([t])},getAuthConnector(t){const e=t||g.state.activeChain,s=ae.connectors.find(r=>r.id===W.CONNECTOR_ID.AUTH);if(s)return s?.connectors?.length?s.connectors.find(i=>i.chain===e):s},getAnnouncedConnectorRdns(){return ae.connectors.filter(t=>t.type==="ANNOUNCED").map(t=>t.info?.rdns)},getConnectorById(t){return ae.allConnectors.find(e=>e.id===t)},getConnector(t,e){return ae.allConnectors.filter(r=>r.chain===g.state.activeChain).find(r=>r.explorerId===t||r.info?.rdns===e)},syncIfAuthConnector(t){if(t.id!=="ID_AUTH")return;const e=t,s=Ii(O.state),r=mt.getSnapshot().themeMode,i=mt.getSnapshot().themeVariables;e?.provider?.syncDappData?.({metadata:s.metadata,sdkVersion:s.sdkVersion,sdkType:s.sdkType,projectId:s.projectId}),e.provider.syncTheme({themeMode:r,themeVariables:i,w3mThemeVariables:Es(i,r)})},getConnectorsByNamespace(t){const e=ae.allConnectors.filter(s=>s.chain===t);return j.mergeMultiChainConnectors(e)},selectWalletConnector(t){const e=j.getConnector(t.id,t.rdns),s=g.state.activeChain;$d.handleMobileDeeplinkRedirect(e?.explorerId||t.id,s),e?re.push("ConnectingExternal",{connector:e}):re.push("ConnectingWalletConnect",{wallet:t})},getConnectors(t){return t?j.getConnectorsByNamespace(t):j.mergeMultiChainConnectors(ae.allConnectors)},setFilterByNamespace(t){ae.filterByNamespace=t,ae.connectors=j.getConnectors(t),V.setFilterByNamespace(t)},setConnectorId(t,e){t&&(ae.activeConnectorIds={...ae.activeConnectorIds,[e]:t},F.setConnectedConnectorId(e,t))},removeConnectorId(t){ae.activeConnectorIds={...ae.activeConnectorIds,[t]:void 0},F.deleteConnectedConnectorId(t)},getConnectorId(t){if(t)return ae.activeConnectorIds[t]},isConnected(t){return t?!!ae.activeConnectorIds[t]:Object.values(ae.activeConnectorIds).some(e=>!!e)},resetConnectorIds(){ae.activeConnectorIds={...eu}}},j=Ct(Wd),fi={ACCOUNT_TYPES:{SMART_ACCOUNT:"smartAccount"}},Us=Object.freeze({message:"",variant:"success",svg:void 0,open:!1,autoClose:!0}),Ue=_e({...Us}),Hd={state:Ue,subscribeKey(t,e){return et(Ue,t,e)},showLoading(t,e={}){this._showMessage({message:t,variant:"loading",...e})},showSuccess(t){this._showMessage({message:t,variant:"success"})},showSvg(t,e){this._showMessage({message:t,svg:e})},showError(t){const e=X.parseError(t);this._showMessage({message:e,variant:"error"})},hide(){Ue.message=Us.message,Ue.variant=Us.variant,Ue.svg=Us.svg,Ue.open=Us.open,Ue.autoClose=Us.autoClose},_showMessage({message:t,svg:e,variant:s="success",autoClose:r=Us.autoClose}){Ue.open?(Ue.open=!1,setTimeout(()=>{Ue.message=t,Ue.variant=s,Ue.svg=e,Ue.open=!0,Ue.autoClose=r},150)):(Ue.message=t,Ue.variant=s,Ue.svg=e,Ue.open=!0,Ue.autoClose=r)}},Lt=Hd,Ce=_e({transactions:[],coinbaseTransactions:{},transactionsByYear:{},lastNetworkInView:void 0,loading:!1,empty:!1,next:void 0}),Vd={state:Ce,subscribe(t){return Qe(Ce,()=>t(Ce))},setLastNetworkInView(t){Ce.lastNetworkInView=t},async fetchTransactions(t,e){if(!t)throw new Error("Transactions can't be fetched without an accountAddress");Ce.loading=!0;try{const s=await J.fetchTransactions({account:t,cursor:Ce.next,onramp:e,cache:e==="coinbase"?"no-cache":void 0,chainId:g.state.activeCaipNetwork?.caipNetworkId}),r=li.filterSpamTransactions(s.data),i=li.filterByConnectedChain(r),n=[...Ce.transactions,...i];Ce.loading=!1,e==="coinbase"?Ce.coinbaseTransactions=li.groupTransactionsByYearAndMonth(Ce.coinbaseTransactions,s.data):(Ce.transactions=n,Ce.transactionsByYear=li.groupTransactionsByYearAndMonth(Ce.transactionsByYear,i)),Ce.empty=n.length===0,Ce.next=s.next?s.next:void 0}catch{const r=g.state.activeChain;Pe.sendEvent({type:"track",event:"ERROR_FETCH_TRANSACTIONS",properties:{address:t,projectId:O.state.projectId,cursor:Ce.next,isSmartAccount:z.state.preferredAccountTypes?.[r]===fi.ACCOUNT_TYPES.SMART_ACCOUNT}}),Lt.showError("Failed to fetch transactions"),Ce.loading=!1,Ce.empty=!0,Ce.next=void 0}},groupTransactionsByYearAndMonth(t={},e=[]){const s=t;return e.forEach(r=>{const i=new Date(r.metadata.minedAt).getFullYear(),n=new Date(r.metadata.minedAt).getMonth(),o=s[i]??{},c=(o[n]??[]).filter(l=>l.id!==r.id);s[i]={...o,[n]:[...c,r].sort((l,u)=>new Date(u.metadata.minedAt).getTime()-new Date(l.metadata.minedAt).getTime())}}),s},filterSpamTransactions(t){return t.filter(e=>!e.transfers.every(r=>r.nft_info?.flags.is_spam===!0))},filterByConnectedChain(t){const e=g.state.activeCaipNetwork?.caipNetworkId;return t.filter(r=>r.metadata.chain===e)},clearCursor(){Ce.next=void 0},resetTransactions(){Ce.transactions=[],Ce.transactionsByYear={},Ce.lastNetworkInView=void 0,Ce.loading=!1,Ce.empty=!1,Ce.next=void 0}},li=Ct(Vd,"API_ERROR"),Ne=_e({connections:new Map,wcError:!1,buffering:!1,status:"disconnected"});let Ts;const Kd={state:Ne,subscribeKey(t,e){return et(Ne,t,e)},_getClient(){return Ne._client},setClient(t){Ne._client=Vs(t)},async connectWalletConnect(){if(X.isTelegram()||X.isSafari()&&X.isIos()){if(Ts){await Ts,Ts=void 0;return}if(!X.isPairingExpired(Ne?.wcPairingExpiry)){const t=Ne.wcUri;Ne.wcUri=t;return}Ts=Y._getClient()?.connectWalletConnect?.().catch(()=>{}),Y.state.status="connecting",await Ts,Ts=void 0,Ne.wcPairingExpiry=void 0,Y.state.status="connected"}else await Y._getClient()?.connectWalletConnect?.()},async connectExternal(t,e,s=!0){await Y._getClient()?.connectExternal?.(t),s&&g.setActiveNamespace(e)},async reconnectExternal(t){await Y._getClient()?.reconnectExternal?.(t);const e=t.chain||g.state.activeChain;e&&j.setConnectorId(t.id,e)},async setPreferredAccountType(t,e){We.setLoading(!0,g.state.activeChain);const s=j.getAuthConnector();s&&(z.setPreferredAccountType(t,e),await s.provider.setPreferredAccount(t),F.setPreferredAccountTypes(z.state.preferredAccountTypes??{[e]:t}),await Y.reconnectExternal(s),We.setLoading(!1,g.state.activeChain),Pe.sendEvent({type:"track",event:"SET_PREFERRED_ACCOUNT_TYPE",properties:{accountType:t,network:g.state.activeCaipNetwork?.caipNetworkId||""}}))},async signMessage(t){return Y._getClient()?.signMessage(t)},parseUnits(t,e){return Y._getClient()?.parseUnits(t,e)},formatUnits(t,e){return Y._getClient()?.formatUnits(t,e)},async sendTransaction(t){return Y._getClient()?.sendTransaction(t)},async getCapabilities(t){return Y._getClient()?.getCapabilities(t)},async grantPermissions(t){return Y._getClient()?.grantPermissions(t)},async walletGetAssets(t){return Y._getClient()?.walletGetAssets(t)??{}},async estimateGas(t){return Y._getClient()?.estimateGas(t)},async writeContract(t){return Y._getClient()?.writeContract(t)},async getEnsAddress(t){return Y._getClient()?.getEnsAddress(t)},async getEnsAvatar(t){return Y._getClient()?.getEnsAvatar(t)},checkInstalled(t){return Y._getClient()?.checkInstalled?.(t)||!1},resetWcConnection(){Ne.wcUri=void 0,Ne.wcPairingExpiry=void 0,Ne.wcLinking=void 0,Ne.recentWallet=void 0,Ne.status="disconnected",li.resetTransactions(),F.deleteWalletConnectDeepLink()},resetUri(){Ne.wcUri=void 0,Ne.wcPairingExpiry=void 0,Ts=void 0},finalizeWcConnection(){const{wcLinking:t,recentWallet:e}=Y.state;t&&F.setWalletConnectDeepLink(t),e&&F.setAppKitRecent(e),Pe.sendEvent({type:"track",event:"CONNECT_SUCCESS",properties:{method:t?"mobile":"qrcode",name:re.state.data?.wallet?.name||"Unknown"}})},setWcBasic(t){Ne.wcBasic=t},setUri(t){Ne.wcUri=t,Ne.wcPairingExpiry=X.getPairingExpiry()},setWcLinking(t){Ne.wcLinking=t},setWcError(t){Ne.wcError=t,Ne.buffering=!1},setRecentWallet(t){Ne.recentWallet=t},setBuffering(t){Ne.buffering=t},setStatus(t){Ne.status=t},async disconnect(t){try{await Y._getClient()?.disconnect(t)}catch(e){throw new $r("Failed to disconnect","INTERNAL_SDK_ERROR",e)}},setConnections(t,e){Ne.connections.set(e,t)},switchAccount({connection:t,address:e,namespace:s}){if(j.state.activeConnectorIds[s]===t.connectorId){const n=g.state.activeCaipNetwork;if(n){const o=`${s}:${n.id}:${e}`;z.setCaipAddress(o,s)}else console.warn(`No current network found for namespace "${s}"`)}else{const n=j.getConnector(t.connectorId);n?Y.connectExternal(n,s):console.warn(`No connector found for namespace "${s}"`)}}},Y=Ct(Kd),nr=_e({loading:!1,open:!1,selectedNetworkId:void 0,activeChain:void 0,initialized:!1}),Is={state:nr,subscribe(t){return Qe(nr,()=>t(nr))},subscribeOpen(t){return et(nr,"open",t)},set(t){Object.assign(nr,{...nr,...t})}},Hn={createBalance(t,e){const s={name:t.metadata.name||"",symbol:t.metadata.symbol||"",decimals:t.metadata.decimals||0,value:t.metadata.value||0,price:t.metadata.price||0,iconUrl:t.metadata.iconUrl||""};return{name:s.name,symbol:s.symbol,chainId:e,address:t.address==="native"?void 0:this.convertAddressToCAIP10Address(t.address,e),value:s.value,price:s.price,quantity:{decimals:s.decimals.toString(),numeric:this.convertHexToBalance({hex:t.balance,decimals:s.decimals})},iconUrl:s.iconUrl}},convertHexToBalance({hex:t,decimals:e}){return Vh(BigInt(t),e)},convertAddressToCAIP10Address(t,e){return`${e}:${t}`},createCAIP2ChainId(t,e){return`${e}:${parseInt(t,16)}`},getChainIdHexFromCAIP2ChainId(t){const e=t.split(":");if(e.length<2||!e[1])return"0x0";const s=e[1],r=parseInt(s,10);return isNaN(r)?"0x0":`0x${r.toString(16)}`},isWalletGetAssetsResponse(t){return typeof t!="object"||t===null?!1:Object.values(t).every(e=>Array.isArray(e)&&e.every(s=>this.isValidAsset(s)))},isValidAsset(t){return typeof t=="object"&&t!==null&&typeof t.address=="string"&&typeof t.balance=="string"&&(t.type==="ERC20"||t.type==="NATIVE")&&typeof t.metadata=="object"&&t.metadata!==null&&typeof t.metadata.name=="string"&&typeof t.metadata.symbol=="string"&&typeof t.metadata.decimals=="number"&&typeof t.metadata.price=="number"&&typeof t.metadata.iconUrl=="string"}},Ma={async getMyTokensWithBalance(t){const e=z.state.address,s=g.state.activeCaipNetwork;if(!e||!s)return[];if(s.chainNamespace==="eip155"){const i=await this.getEIP155Balances(e,s);if(i)return this.filterLowQualityTokens(i)}const r=await J.getBalance(e,s.caipNetworkId,t);return this.filterLowQualityTokens(r.balances)},async getEIP155Balances(t,e){try{const s=Hn.getChainIdHexFromCAIP2ChainId(e.caipNetworkId);if(!(await Y.getCapabilities(t))?.[s]?.assetDiscovery?.supported)return null;const i=await Y.walletGetAssets({account:t,chainFilter:[s]});return Hn.isWalletGetAssetsResponse(i)?(i[s]||[]).map(o=>Hn.createBalance(o,e.caipNetworkId)):null}catch{return null}},filterLowQualityTokens(t){return t.filter(e=>e.quantity.decimals!=="0")},mapBalancesToSwapTokens(t){return t?.map(e=>({...e,address:e?.address?e.address:g.getActiveNetworkTokenAddress(),decimals:parseInt(e.quantity.decimals,10),logoUri:e.iconUrl,eip2612:!1}))||[]}},fe=_e({tokenBalances:[],loading:!1}),Gd={state:fe,subscribe(t){return Qe(fe,()=>t(fe))},subscribeKey(t,e){return et(fe,t,e)},setToken(t){t&&(fe.token=Vs(t))},setTokenAmount(t){fe.sendTokenAmount=t},setReceiverAddress(t){fe.receiverAddress=t},setReceiverProfileImageUrl(t){fe.receiverProfileImageUrl=t},setReceiverProfileName(t){fe.receiverProfileName=t},setNetworkBalanceInUsd(t){fe.networkBalanceInUSD=t},setLoading(t){fe.loading=t},async sendToken(){try{switch(he.setLoading(!0),g.state.activeCaipNetwork?.chainNamespace){case"eip155":await he.sendEvmToken();return;case"solana":await he.sendSolanaToken();return;default:throw new Error("Unsupported chain")}}finally{he.setLoading(!1)}},async sendEvmToken(){const t=g.state.activeChain,e=z.state.preferredAccountTypes?.[t];if(!he.state.sendTokenAmount||!he.state.receiverAddress)throw new Error("An amount and receiver address are required");if(!he.state.token)throw new Error("A token is required");he.state.token?.address?(Pe.sendEvent({type:"track",event:"SEND_INITIATED",properties:{isSmartAccount:e===fi.ACCOUNT_TYPES.SMART_ACCOUNT,token:he.state.token.address,amount:he.state.sendTokenAmount,network:g.state.activeCaipNetwork?.caipNetworkId||""}}),await he.sendERC20Token({receiverAddress:he.state.receiverAddress,tokenAddress:he.state.token.address,sendTokenAmount:he.state.sendTokenAmount,decimals:he.state.token.quantity.decimals})):(Pe.sendEvent({type:"track",event:"SEND_INITIATED",properties:{isSmartAccount:e===fi.ACCOUNT_TYPES.SMART_ACCOUNT,token:he.state.token.symbol||"",amount:he.state.sendTokenAmount,network:g.state.activeCaipNetwork?.caipNetworkId||""}}),await he.sendNativeToken({receiverAddress:he.state.receiverAddress,sendTokenAmount:he.state.sendTokenAmount,decimals:he.state.token.quantity.decimals}))},async fetchTokenBalance(t){fe.loading=!0;const e=g.state.activeCaipNetwork?.caipNetworkId,s=g.state.activeCaipNetwork?.chainNamespace,r=g.state.activeCaipAddress,i=r?X.getPlainAddress(r):void 0;if(fe.lastRetry&&!X.isAllowedRetry(fe.lastRetry,30*ve.ONE_SEC_MS))return fe.loading=!1,[];try{if(i&&e&&s){const n=await Ma.getMyTokensWithBalance();return fe.tokenBalances=n,fe.lastRetry=void 0,n}}catch(n){fe.lastRetry=Date.now(),t?.(n),Lt.showError("Token Balance Unavailable")}finally{fe.loading=!1}return[]},fetchNetworkBalance(){if(fe.tokenBalances.length===0)return;const t=Ma.mapBalancesToSwapTokens(fe.tokenBalances);if(!t)return;const e=t.find(s=>s.address===g.getActiveNetworkTokenAddress());e&&(fe.networkBalanceInUSD=e?gd.multiply(e.quantity.numeric,e.price).toString():"0")},async sendNativeToken(t){re.pushTransactionStack({});const e=t.receiverAddress,s=z.state.address,r=Y.parseUnits(t.sendTokenAmount.toString(),Number(t.decimals));await Y.sendTransaction({chainNamespace:"eip155",to:e,address:s,data:"0x",value:r??BigInt(0)}),Pe.sendEvent({type:"track",event:"SEND_SUCCESS",properties:{isSmartAccount:z.state.preferredAccountTypes?.eip155===fi.ACCOUNT_TYPES.SMART_ACCOUNT,token:he.state.token?.symbol||"",amount:t.sendTokenAmount,network:g.state.activeCaipNetwork?.caipNetworkId||""}}),Y._getClient()?.updateBalance("eip155"),he.resetSend()},async sendERC20Token(t){re.pushTransactionStack({onSuccess(){re.replace("Account")}});const e=Y.parseUnits(t.sendTokenAmount.toString(),Number(t.decimals));if(z.state.address&&t.sendTokenAmount&&t.receiverAddress&&t.tokenAddress){const s=X.getPlainAddress(t.tokenAddress);await Y.writeContract({fromAddress:z.state.address,tokenAddress:s,args:[t.receiverAddress,e??BigInt(0)],method:"transfer",abi:bd.getERC20Abi(s),chainNamespace:"eip155"}),he.resetSend()}},async sendSolanaToken(){if(!he.state.sendTokenAmount||!he.state.receiverAddress)throw new Error("An amount and receiver address are required");re.pushTransactionStack({onSuccess(){re.replace("Account")}}),await Y.sendTransaction({chainNamespace:"solana",to:he.state.receiverAddress,value:he.state.sendTokenAmount}),Y._getClient()?.updateBalance("solana"),he.resetSend()},resetSend(){fe.token=void 0,fe.sendTokenAmount=void 0,fe.receiverAddress=void 0,fe.receiverProfileImageUrl=void 0,fe.receiverProfileName=void 0,fe.loading=!1,fe.tokenBalances=[]}},he=Ct(Gd),Vn={currentTab:0,tokenBalance:[],smartAccountDeployed:!1,addressLabels:new Map,allAccounts:[],user:void 0},Gi={caipNetwork:void 0,supportsAllNetworks:!0,smartAccountEnabledNetworks:[]},M=_e({chains:Ad(),activeCaipAddress:void 0,activeChain:void 0,activeCaipNetwork:void 0,noAdapters:!1,universalAdapter:{networkControllerClient:void 0,connectionControllerClient:void 0},isSwitchingNamespace:!1}),Jd={state:M,subscribe(t){return Qe(M,()=>{t(M)})},subscribeKey(t,e){return et(M,t,e)},subscribeChainProp(t,e,s){let r;return Qe(M.chains,()=>{const i=s||M.activeChain;if(i){const n=M.chains.get(i)?.[t];r!==n&&(r=n,e(n))}})},initialize(t,e,s){const{chainId:r,namespace:i}=F.getActiveNetworkProps(),n=e?.find(u=>u.id.toString()===r?.toString()),a=t.find(u=>u?.namespace===i)||t?.[0],c=t.map(u=>u.namespace).filter(u=>u!==void 0),l=O.state.enableEmbedded?new Set([...c]):new Set([...e?.map(u=>u.chainNamespace)??[]]);(t?.length===0||!a)&&(M.noAdapters=!0),M.noAdapters||(M.activeChain=a?.namespace,M.activeCaipNetwork=n,g.setChainNetworkData(a?.namespace,{caipNetwork:n}),M.activeChain&&Is.set({activeChain:a?.namespace})),l.forEach(u=>{const h=e?.filter(d=>d.chainNamespace===u);g.state.chains.set(u,{namespace:u,networkState:_e({...Gi,caipNetwork:h?.[0]}),accountState:_e(Vn),caipNetworks:h??[],...s}),g.setRequestedCaipNetworks(h??[],u)})},removeAdapter(t){if(M.activeChain===t){const e=Array.from(M.chains.entries()).find(([s])=>s!==t);if(e){const s=e[1]?.caipNetworks?.[0];s&&g.setActiveCaipNetwork(s)}}M.chains.delete(t)},addAdapter(t,{networkControllerClient:e,connectionControllerClient:s},r){M.chains.set(t.namespace,{namespace:t.namespace,networkState:{...Gi,caipNetwork:r[0]},accountState:Vn,caipNetworks:r,connectionControllerClient:s,networkControllerClient:e}),g.setRequestedCaipNetworks(r?.filter(i=>i.chainNamespace===t.namespace)??[],t.namespace)},addNetwork(t){const e=M.chains.get(t.chainNamespace);if(e){const s=[...e.caipNetworks||[]];e.caipNetworks?.find(r=>r.id===t.id)||s.push(t),M.chains.set(t.chainNamespace,{...e,caipNetworks:s}),g.setRequestedCaipNetworks(s,t.chainNamespace),j.filterByNamespace(t.chainNamespace,!0)}},removeNetwork(t,e){const s=M.chains.get(t);if(s){const r=M.activeCaipNetwork?.id===e,i=[...s.caipNetworks?.filter(n=>n.id!==e)||[]];r&&s?.caipNetworks?.[0]&&g.setActiveCaipNetwork(s.caipNetworks[0]),M.chains.set(t,{...s,caipNetworks:i}),g.setRequestedCaipNetworks(i||[],t),i.length===0&&j.filterByNamespace(t,!1)}},setAdapterNetworkState(t,e){const s=M.chains.get(t);s&&(s.networkState={...s.networkState||Gi,...e},M.chains.set(t,s))},setChainAccountData(t,e,s=!0){if(!t)throw new Error("Chain is required to update chain account data");const r=M.chains.get(t);if(r){const i={...r.accountState||Vn,...e};M.chains.set(t,{...r,accountState:i}),(M.chains.size===1||M.activeChain===t)&&(e.caipAddress&&(M.activeCaipAddress=e.caipAddress),z.replaceState(i))}},setChainNetworkData(t,e){if(!t)return;const s=M.chains.get(t);if(s){const r={...s.networkState||Gi,...e};M.chains.set(t,{...s,networkState:r})}},setAccountProp(t,e,s,r=!0){g.setChainAccountData(s,{[t]:e},r),t==="status"&&e==="disconnected"&&s&&j.removeConnectorId(s)},setActiveNamespace(t){M.activeChain=t;const e=t?M.chains.get(t):void 0,s=e?.networkState?.caipNetwork;s?.id&&t&&(M.activeCaipAddress=e?.accountState?.caipAddress,M.activeCaipNetwork=s,g.setChainNetworkData(t,{caipNetwork:s}),F.setActiveCaipNetworkId(s?.caipNetworkId),Is.set({activeChain:t,selectedNetworkId:s?.caipNetworkId}))},setActiveCaipNetwork(t){if(!t)return;M.activeChain!==t.chainNamespace&&g.setIsSwitchingNamespace(!0);const e=M.chains.get(t.chainNamespace);M.activeChain=t.chainNamespace,M.activeCaipNetwork=t,g.setChainNetworkData(t.chainNamespace,{caipNetwork:t}),e?.accountState?.address?M.activeCaipAddress=`${t.chainNamespace}:${t.id}:${e?.accountState?.address}`:M.activeCaipAddress=void 0,g.setAccountProp("caipAddress",M.activeCaipAddress,t.chainNamespace),e&&z.replaceState(e.accountState),he.resetSend(),Is.set({activeChain:M.activeChain,selectedNetworkId:M.activeCaipNetwork?.caipNetworkId}),F.setActiveCaipNetworkId(t.caipNetworkId),!g.checkIfSupportedNetwork(t.chainNamespace)&&O.state.enableNetworkSwitch&&!O.state.allowUnsupportedChain&&!Y.state.wcBasic&&g.showUnsupportedChainUI()},addCaipNetwork(t){if(!t)return;const e=M.chains.get(t.chainNamespace);e&&e?.caipNetworks?.push(t)},async switchActiveNamespace(t){if(!t)return;const e=t!==g.state.activeChain,s=g.getNetworkData(t)?.caipNetwork,r=g.getCaipNetworkByNamespace(t,s?.id);e&&r&&await g.switchActiveNetwork(r)},async switchActiveNetwork(t){const s=!g.state.chains.get(g.state.activeChain)?.caipNetworks?.some(i=>i.id===M.activeCaipNetwork?.id),r=g.getNetworkControllerClient(t.chainNamespace);if(r){try{await r.switchCaipNetwork(t),s&&We.close()}catch{re.goBack()}Pe.sendEvent({type:"track",event:"SWITCH_NETWORK",properties:{network:t.caipNetworkId}})}},getNetworkControllerClient(t){const e=t||M.activeChain,s=M.chains.get(e);if(!s)throw new Error("Chain adapter not found");if(!s.networkControllerClient)throw new Error("NetworkController client not set");return s.networkControllerClient},getConnectionControllerClient(t){const e=t||M.activeChain;if(!e)throw new Error("Chain is required to get connection controller client");const s=M.chains.get(e);if(!s?.connectionControllerClient)throw new Error("ConnectionController client not set");return s.connectionControllerClient},getAccountProp(t,e){let s=M.activeChain;if(e&&(s=e),!s)return;const r=M.chains.get(s)?.accountState;if(r)return r[t]},getNetworkProp(t,e){const s=M.chains.get(e)?.networkState;if(s)return s[t]},getRequestedCaipNetworks(t){const e=M.chains.get(t),{approvedCaipNetworkIds:s=[],requestedCaipNetworks:r=[]}=e?.networkState||{};return X.sortRequestedNetworks(s,r)},getAllRequestedCaipNetworks(){const t=[];return M.chains.forEach(e=>{const s=g.getRequestedCaipNetworks(e.namespace);t.push(...s)}),t},setRequestedCaipNetworks(t,e){g.setAdapterNetworkState(e,{requestedCaipNetworks:t});const r=g.getAllRequestedCaipNetworks().map(n=>n.chainNamespace),i=Array.from(new Set(r));j.filterByNamespaces(i)},getAllApprovedCaipNetworkIds(){const t=[];return M.chains.forEach(e=>{const s=g.getApprovedCaipNetworkIds(e.namespace);t.push(...s)}),t},getActiveCaipNetwork(){return M.activeCaipNetwork},getActiveCaipAddress(){return M.activeCaipAddress},getApprovedCaipNetworkIds(t){return M.chains.get(t)?.networkState?.approvedCaipNetworkIds||[]},async setApprovedCaipNetworksData(t){const s=await g.getNetworkControllerClient()?.getApprovedCaipNetworksData();g.setAdapterNetworkState(t,{approvedCaipNetworkIds:s?.approvedCaipNetworkIds,supportsAllNetworks:s?.supportsAllNetworks})},checkIfSupportedNetwork(t,e){const s=e||M.activeCaipNetwork,r=g.getRequestedCaipNetworks(t);return r.length?r?.some(i=>i.id===s?.id):!0},checkIfSupportedChainId(t){return M.activeChain?g.getRequestedCaipNetworks(M.activeChain)?.some(s=>s.id===t):!0},setSmartAccountEnabledNetworks(t,e){g.setAdapterNetworkState(e,{smartAccountEnabledNetworks:t})},checkIfSmartAccountEnabled(){const t=Jl.caipNetworkIdToNumber(M.activeCaipNetwork?.caipNetworkId),e=M.activeChain;return!e||!t?!1:!!g.getNetworkProp("smartAccountEnabledNetworks",e)?.includes(Number(t))},getActiveNetworkTokenAddress(){const t=M.activeCaipNetwork?.chainNamespace||"eip155",e=M.activeCaipNetwork?.id||1,s=ve.NATIVE_TOKEN_ADDRESS[t];return`${t}:${e}:${s}`},showUnsupportedChainUI(){We.open({view:"UnsupportedChain"})},checkIfNamesSupported(){const t=M.activeCaipNetwork;return!!(t?.chainNamespace&&ve.NAMES_SUPPORTED_CHAIN_NAMESPACES.includes(t.chainNamespace))},resetNetwork(t){g.setAdapterNetworkState(t,{approvedCaipNetworkIds:void 0,supportsAllNetworks:!0,smartAccountEnabledNetworks:[]})},resetAccount(t){const e=t;if(!e)throw new Error("Chain is required to set account prop");M.activeCaipAddress=void 0,g.setChainAccountData(e,{smartAccountDeployed:!1,currentTab:0,caipAddress:void 0,address:void 0,balance:void 0,balanceSymbol:void 0,profileName:void 0,profileImage:void 0,addressExplorerUrl:void 0,tokenBalance:[],connectedWalletInfo:void 0,preferredAccountTypes:void 0,socialProvider:void 0,socialWindow:void 0,farcasterUrl:void 0,allAccounts:[],user:void 0,status:"disconnected"}),j.removeConnectorId(e)},setIsSwitchingNamespace(t){M.isSwitchingNamespace=t},getFirstCaipNetworkSupportsAuthConnector(){const t=[];let e;if(M.chains.forEach(s=>{W.AUTH_CONNECTOR_SUPPORTED_CHAINS.find(r=>r===s.namespace)&&s.namespace&&t.push(s.namespace)}),t.length>0){const s=t[0];return e=s?M.chains.get(s)?.caipNetworks?.[0]:void 0,e}},getAccountData(t){return t?g.state.chains.get(t)?.accountState:z.state},getNetworkData(t){const e=t||M.activeChain;if(e)return g.state.chains.get(e)?.networkState},getCaipNetworkByNamespace(t,e){if(!t)return;const s=g.state.chains.get(t),r=s?.caipNetworks?.find(i=>i.id===e);return r||s?.networkState?.caipNetwork||s?.caipNetworks?.[0]},getRequestedCaipNetworkIds(){const t=j.state.filterByNamespace;return(t?[M.chains.get(t)]:Array.from(M.chains.values())).flatMap(s=>s?.caipNetworks||[]).map(s=>s.caipNetworkId)},getCaipNetworks(t){return t?g.getRequestedCaipNetworks(t):g.getAllRequestedCaipNetworks()}},g=Ct(Jd),Yd={purchaseCurrencies:[{id:"2b92315d-eab7-5bef-84fa-089a131333f5",name:"USD Coin",symbol:"USDC",networks:[{name:"ethereum-mainnet",display_name:"Ethereum",chain_id:"1",contract_address:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},{name:"polygon-mainnet",display_name:"Polygon",chain_id:"137",contract_address:"0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174"}]},{id:"2b92315d-eab7-5bef-84fa-089a131333f5",name:"Ether",symbol:"ETH",networks:[{name:"ethereum-mainnet",display_name:"Ethereum",chain_id:"1",contract_address:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},{name:"polygon-mainnet",display_name:"Polygon",chain_id:"137",contract_address:"0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174"}]}],paymentCurrencies:[{id:"USD",payment_method_limits:[{id:"card",min:"10.00",max:"7500.00"},{id:"ach_bank_account",min:"10.00",max:"25000.00"}]},{id:"EUR",payment_method_limits:[{id:"card",min:"10.00",max:"7500.00"},{id:"ach_bank_account",min:"10.00",max:"25000.00"}]}]},tu=X.getBlockchainApiUrl(),nt=_e({clientId:null,api:new Ui({baseUrl:tu,clientId:null}),supportedChains:{http:[],ws:[]}}),J={state:nt,async get(t){const{st:e,sv:s}=J.getSdkProperties(),r=O.state.projectId,i={...t.params||{},st:e,sv:s,projectId:r};return nt.api.get({...t,params:i})},getSdkProperties(){const{sdkType:t,sdkVersion:e}=O.state;return{st:t||"unknown",sv:e||"unknown"}},async isNetworkSupported(t){if(!t)return!1;try{nt.supportedChains.http.length||await J.getSupportedNetworks()}catch{return!1}return nt.supportedChains.http.includes(t)},async getSupportedNetworks(){try{const t=await J.get({path:"v1/supported-chains"});return nt.supportedChains=t,t}catch{return nt.supportedChains}},async fetchIdentity({address:t,caipNetworkId:e}){if(!await J.isNetworkSupported(e))return{avatar:"",name:""};const r=F.getIdentityFromCacheForAddress(t);if(r)return r;const i=await J.get({path:`/v1/identity/${t}`,params:{sender:g.state.activeCaipAddress?X.getPlainAddress(g.state.activeCaipAddress):void 0}});return F.updateIdentityCache({address:t,identity:i,timestamp:Date.now()}),i},async fetchTransactions({account:t,cursor:e,onramp:s,signal:r,cache:i,chainId:n}){return await J.isNetworkSupported(g.state.activeCaipNetwork?.caipNetworkId)?J.get({path:`/v1/account/${t}/history`,params:{cursor:e,onramp:s,chainId:n},signal:r,cache:i}):{data:[],next:void 0}},async fetchSwapQuote({amount:t,userAddress:e,from:s,to:r,gasPrice:i}){return await J.isNetworkSupported(g.state.activeCaipNetwork?.caipNetworkId)?J.get({path:"/v1/convert/quotes",headers:{"Content-Type":"application/json"},params:{amount:t,userAddress:e,from:s,to:r,gasPrice:i}}):{quotes:[]}},async fetchSwapTokens({chainId:t}){return await J.isNetworkSupported(g.state.activeCaipNetwork?.caipNetworkId)?J.get({path:"/v1/convert/tokens",params:{chainId:t}}):{tokens:[]}},async fetchTokenPrice({addresses:t}){return await J.isNetworkSupported(g.state.activeCaipNetwork?.caipNetworkId)?nt.api.post({path:"/v1/fungible/price",body:{currency:"usd",addresses:t,projectId:O.state.projectId},headers:{"Content-Type":"application/json"}}):{fungibles:[]}},async fetchSwapAllowance({tokenAddress:t,userAddress:e}){return await J.isNetworkSupported(g.state.activeCaipNetwork?.caipNetworkId)?J.get({path:"/v1/convert/allowance",params:{tokenAddress:t,userAddress:e},headers:{"Content-Type":"application/json"}}):{allowance:"0"}},async fetchGasPrice({chainId:t}){const{st:e,sv:s}=J.getSdkProperties();if(!await J.isNetworkSupported(g.state.activeCaipNetwork?.caipNetworkId))throw new Error("Network not supported for Gas Price");return J.get({path:"/v1/convert/gas-price",headers:{"Content-Type":"application/json"},params:{chainId:t,st:e,sv:s}})},async generateSwapCalldata({amount:t,from:e,to:s,userAddress:r,disableEstimate:i}){if(!await J.isNetworkSupported(g.state.activeCaipNetwork?.caipNetworkId))throw new Error("Network not supported for Swaps");return nt.api.post({path:"/v1/convert/build-transaction",headers:{"Content-Type":"application/json"},body:{amount:t,eip155:{slippage:ve.CONVERT_SLIPPAGE_TOLERANCE},projectId:O.state.projectId,from:e,to:s,userAddress:r,disableEstimate:i}})},async generateApproveCalldata({from:t,to:e,userAddress:s}){const{st:r,sv:i}=J.getSdkProperties();if(!await J.isNetworkSupported(g.state.activeCaipNetwork?.caipNetworkId))throw new Error("Network not supported for Swaps");return J.get({path:"/v1/convert/build-approve",headers:{"Content-Type":"application/json"},params:{userAddress:s,from:t,to:e,st:r,sv:i}})},async getBalance(t,e,s){const{st:r,sv:i}=J.getSdkProperties();if(!await J.isNetworkSupported(g.state.activeCaipNetwork?.caipNetworkId))return Lt.showError("Token Balance Unavailable"),{balances:[]};const o=`${e}:${t}`,a=F.getBalanceCacheForCaipAddress(o);if(a)return a;const c=await J.get({path:`/v1/account/${t}/balance`,params:{currency:"usd",chainId:e,forceUpdate:s,st:r,sv:i}});return F.updateBalanceCache({caipAddress:o,balance:c,timestamp:Date.now()}),c},async lookupEnsName(t){return await J.isNetworkSupported(g.state.activeCaipNetwork?.caipNetworkId)?J.get({path:`/v1/profile/account/${t}`,params:{apiVersion:"2"}}):{addresses:{},attributes:[]}},async reverseLookupEnsName({address:t}){return await J.isNetworkSupported(g.state.activeCaipNetwork?.caipNetworkId)?J.get({path:`/v1/profile/reverse/${t}`,params:{sender:z.state.address,apiVersion:"2"}}):[]},async getEnsNameSuggestions(t){return await J.isNetworkSupported(g.state.activeCaipNetwork?.caipNetworkId)?J.get({path:`/v1/profile/suggestions/${t}`,params:{zone:"reown.id"}}):{suggestions:[]}},async registerEnsName({coinType:t,address:e,message:s,signature:r}){return await J.isNetworkSupported(g.state.activeCaipNetwork?.caipNetworkId)?nt.api.post({path:"/v1/profile/account",body:{coin_type:t,address:e,message:s,signature:r},headers:{"Content-Type":"application/json"}}):{success:!1}},async generateOnRampURL({destinationWallets:t,partnerUserId:e,defaultNetwork:s,purchaseAmount:r,paymentAmount:i}){return await J.isNetworkSupported(g.state.activeCaipNetwork?.caipNetworkId)?(await nt.api.post({path:"/v1/generators/onrampurl",params:{projectId:O.state.projectId},body:{destinationWallets:t,defaultNetwork:s,partnerUserId:e,defaultExperience:"buy",presetCryptoAmount:r,presetFiatAmount:i}})).url:""},async getOnrampOptions(){if(!await J.isNetworkSupported(g.state.activeCaipNetwork?.caipNetworkId))return{paymentCurrencies:[],purchaseCurrencies:[]};try{return await J.get({path:"/v1/onramp/options"})}catch{return Yd}},async getOnrampQuote({purchaseCurrency:t,paymentCurrency:e,amount:s,network:r}){try{return await J.isNetworkSupported(g.state.activeCaipNetwork?.caipNetworkId)?await nt.api.post({path:"/v1/onramp/quote",params:{projectId:O.state.projectId},body:{purchaseCurrency:t,paymentCurrency:e,amount:s,network:r}}):null}catch{return{coinbaseFee:{amount:s,currency:e.id},networkFee:{amount:s,currency:e.id},paymentSubtotal:{amount:s,currency:e.id},paymentTotal:{amount:s,currency:e.id},purchaseAmount:{amount:s,currency:e.id},quoteId:"mocked-quote-id"}}},async getSmartSessions(t){return await J.isNetworkSupported(g.state.activeCaipNetwork?.caipNetworkId)?J.get({path:`/v1/sessions/${t}`}):[]},async revokeSmartSession(t,e,s){return await J.isNetworkSupported(g.state.activeCaipNetwork?.caipNetworkId)?nt.api.post({path:`/v1/sessions/${t}/revoke`,params:{projectId:O.state.projectId},body:{pci:e,signature:s}}):{success:!1}},setClientId(t){nt.clientId=t,nt.api=new Ui({baseUrl:tu,clientId:t})}},It=_e({currentTab:0,tokenBalance:[],smartAccountDeployed:!1,addressLabels:new Map,allAccounts:[]}),Xd={state:It,replaceState(t){t&&Object.assign(It,Vs(t))},subscribe(t){return g.subscribeChainProp("accountState",e=>{if(e)return t(e)})},subscribeKey(t,e,s){let r;return g.subscribeChainProp("accountState",i=>{if(i){const n=i[t];r!==n&&(r=n,e(n))}},s)},setStatus(t,e){g.setAccountProp("status",t,e)},getCaipAddress(t){return g.getAccountProp("caipAddress",t)},setCaipAddress(t,e){const s=t?X.getPlainAddress(t):void 0;e===g.state.activeChain&&(g.state.activeCaipAddress=t),g.setAccountProp("caipAddress",t,e),g.setAccountProp("address",s,e)},setBalance(t,e,s){g.setAccountProp("balance",t,s),g.setAccountProp("balanceSymbol",e,s)},setProfileName(t,e){g.setAccountProp("profileName",t,e)},setProfileImage(t,e){g.setAccountProp("profileImage",t,e)},setUser(t,e){g.setAccountProp("user",t,e)},setAddressExplorerUrl(t,e){g.setAccountProp("addressExplorerUrl",t,e)},setSmartAccountDeployed(t,e){g.setAccountProp("smartAccountDeployed",t,e)},setCurrentTab(t){g.setAccountProp("currentTab",t,g.state.activeChain)},setTokenBalance(t,e){t&&g.setAccountProp("tokenBalance",t,e)},setShouldUpdateToAddress(t,e){g.setAccountProp("shouldUpdateToAddress",t,e)},setAllAccounts(t,e){g.setAccountProp("allAccounts",t,e)},addAddressLabel(t,e,s){const r=g.getAccountProp("addressLabels",s)||new Map;r.set(t,e),g.setAccountProp("addressLabels",r,s)},removeAddressLabel(t,e){const s=g.getAccountProp("addressLabels",e)||new Map;s.delete(t),g.setAccountProp("addressLabels",s,e)},setConnectedWalletInfo(t,e){g.setAccountProp("connectedWalletInfo",t,e,!1)},setPreferredAccountType(t,e){g.setAccountProp("preferredAccountTypes",{...It.preferredAccountTypes,[e]:t},e)},setPreferredAccountTypes(t){It.preferredAccountTypes=t},setSocialProvider(t,e){t&&g.setAccountProp("socialProvider",t,e)},setSocialWindow(t,e){g.setAccountProp("socialWindow",t?Vs(t):void 0,e)},setFarcasterUrl(t,e){g.setAccountProp("farcasterUrl",t,e)},async fetchTokenBalance(t){It.balanceLoading=!0;const e=g.state.activeCaipNetwork?.caipNetworkId,s=g.state.activeCaipNetwork?.chainNamespace,r=g.state.activeCaipAddress,i=r?X.getPlainAddress(r):void 0;if(It.lastRetry&&!X.isAllowedRetry(It.lastRetry,30*ve.ONE_SEC_MS))return It.balanceLoading=!1,[];try{if(i&&e&&s){const o=(await J.getBalance(i,e)).balances.filter(a=>a.quantity.decimals!=="0");return z.setTokenBalance(o,s),It.lastRetry=void 0,It.balanceLoading=!1,o}}catch(n){It.lastRetry=Date.now(),t?.(n),Lt.showError("Token Balance Unavailable")}finally{It.balanceLoading=!1}return[]},resetAccount(t){g.resetAccount(t)}},z=Ct(Xd),Zd={onSwitchNetwork({network:t,ignoreSwitchConfirmation:e=!1}){const s=g.state.activeCaipNetwork,r=re.state.data;if(t.id===s?.id)return;const n=z.getCaipAddress(g.state.activeChain),o=t.chainNamespace!==g.state.activeChain,a=z.getCaipAddress(t.chainNamespace),l=j.getConnectorId(g.state.activeChain)===W.CONNECTOR_ID.AUTH,u=W.AUTH_CONNECTOR_SUPPORTED_CHAINS.find(h=>h===t.chainNamespace);e||l&&u?re.push("SwitchNetwork",{...r,network:t}):n&&o&&!a?re.push("SwitchActiveChain",{switchToChain:t.chainNamespace,navigateTo:"Connect",navigateWithReplace:!0,network:t}):re.push("SwitchNetwork",{...r,network:t})}},ot=_e({loading:!1,loadingNamespaceMap:new Map,open:!1,shake:!1,namespace:void 0}),Qd={state:ot,subscribe(t){return Qe(ot,()=>t(ot))},subscribeKey(t,e){return et(ot,t,e)},async open(t){const e=z.state.status==="connected",s=t?.namespace,r=g.state.activeChain,i=s&&s!==r,n=g.getAccountData(t?.namespace)?.caipAddress;if(Y.state.wcBasic?V.prefetch({fetchNetworkImages:!1,fetchConnectorImages:!1}):await V.prefetch({fetchConnectorImages:!e,fetchFeaturedWallets:!e,fetchRecommendedWallets:!e}),j.setFilterByNamespace(t?.namespace),We.setLoading(!0,s),s&&i){const o=g.getNetworkData(s)?.caipNetwork||g.getRequestedCaipNetworks(s)[0];o&&Zd.onSwitchNetwork({network:o,ignoreSwitchConfirmation:!0})}else{const o=g.state.noAdapters;O.state.manualWCControl||o&&!n?X.isMobile()?re.reset("AllWallets"):re.reset("ConnectingWalletConnectBasic"):t?.view?re.reset(t.view,t.data):n?re.reset("Account"):re.reset("Connect")}ot.open=!0,Is.set({open:!0}),Pe.sendEvent({type:"track",event:"MODAL_OPEN",properties:{connected:!!n}})},close(){const t=O.state.enableEmbedded,e=!!g.state.activeCaipAddress;ot.open&&Pe.sendEvent({type:"track",event:"MODAL_CLOSE",properties:{connected:e}}),ot.open=!1,re.reset("Connect"),We.clearLoading(),t?e?re.replace("Account"):re.push("Connect"):Is.set({open:!1}),Y.resetUri()},setLoading(t,e){e&&ot.loadingNamespaceMap.set(e,t),ot.loading=t,Is.set({loading:t})},clearLoading(){ot.loadingNamespaceMap.clear(),ot.loading=!1},shake(){ot.shake||(ot.shake=!0,setTimeout(()=>{ot.shake=!1},500))}},We=Ct(Qd),gi={id:"2b92315d-eab7-5bef-84fa-089a131333f5",name:"USD Coin",symbol:"USDC",networks:[{name:"ethereum-mainnet",display_name:"Ethereum",chain_id:"1",contract_address:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},{name:"polygon-mainnet",display_name:"Polygon",chain_id:"137",contract_address:"0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174"}]},Ao={id:"USD",payment_method_limits:[{id:"card",min:"10.00",max:"7500.00"},{id:"ach_bank_account",min:"10.00",max:"25000.00"}]},ep={providers:Zl,selectedProvider:null,error:null,purchaseCurrency:gi,paymentCurrency:Ao,purchaseCurrencies:[gi],paymentCurrencies:[],quotesLoading:!1},oe=_e(ep),tp={state:oe,subscribe(t){return Qe(oe,()=>t(oe))},subscribeKey(t,e){return et(oe,t,e)},setSelectedProvider(t){if(t&&t.name==="meld"){const e=g.state.activeChain===W.CHAIN.SOLANA?"SOL":"USDC",s=z.state.address??"",r=new URL(t.url);r.searchParams.append("publicKey",_d),r.searchParams.append("destinationCurrencyCode",e),r.searchParams.append("walletAddress",s),r.searchParams.append("externalCustomerId",O.state.projectId),oe.selectedProvider={...t,url:r.toString()}}else oe.selectedProvider=t},setOnrampProviders(t){if(Array.isArray(t)&&t.every(e=>typeof e=="string")){const e=t,s=Zl.filter(r=>e.includes(r.name));oe.providers=s}else oe.providers=[]},setPurchaseCurrency(t){oe.purchaseCurrency=t},setPaymentCurrency(t){oe.paymentCurrency=t},setPurchaseAmount(t){_o.state.purchaseAmount=t},setPaymentAmount(t){_o.state.paymentAmount=t},async getAvailableCurrencies(){const t=await J.getOnrampOptions();oe.purchaseCurrencies=t.purchaseCurrencies,oe.paymentCurrencies=t.paymentCurrencies,oe.paymentCurrency=t.paymentCurrencies[0]||Ao,oe.purchaseCurrency=t.purchaseCurrencies[0]||gi,await V.fetchCurrencyImages(t.paymentCurrencies.map(e=>e.id)),await V.fetchTokenImages(t.purchaseCurrencies.map(e=>e.symbol))},async getQuote(){oe.quotesLoading=!0;try{const t=await J.getOnrampQuote({purchaseCurrency:oe.purchaseCurrency,paymentCurrency:oe.paymentCurrency,amount:oe.paymentAmount?.toString()||"0",network:oe.purchaseCurrency?.symbol});return oe.quotesLoading=!1,oe.purchaseAmount=Number(t?.purchaseAmount.amount),t}catch(t){return oe.error=t.message,oe.quotesLoading=!1,null}finally{oe.quotesLoading=!1}},resetState(){oe.selectedProvider=null,oe.error=null,oe.purchaseCurrency=gi,oe.paymentCurrency=Ao,oe.purchaseCurrencies=[gi],oe.paymentCurrencies=[],oe.paymentAmount=void 0,oe.purchaseAmount=void 0,oe.quotesLoading=!1}},_o=Ct(tp),Ba=2147483648,sp={convertEVMChainIdToCoinType(t){if(t>=Ba)throw new Error("Invalid chainId");return(Ba|t)>>>0}},Nt=_e({suggestions:[],loading:!1}),rp={state:Nt,subscribe(t){return Qe(Nt,()=>t(Nt))},subscribeKey(t,e){return et(Nt,t,e)},async resolveName(t){try{return await J.lookupEnsName(t)}catch(e){const s=e;throw new Error(s?.reasons?.[0]?.description||"Error resolving name")}},async isNameRegistered(t){try{return await J.lookupEnsName(t),!0}catch{return!1}},async getSuggestions(t){try{Nt.loading=!0,Nt.suggestions=[];const e=await J.getEnsNameSuggestions(t);return Nt.suggestions=e.suggestions.map(s=>({...s,name:s.name}))||[],Nt.suggestions}catch(e){const s=mi.parseEnsApiError(e,"Error fetching name suggestions");throw new Error(s)}finally{Nt.loading=!1}},async getNamesForAddress(t){try{if(!g.state.activeCaipNetwork)return[];const s=F.getEnsFromCacheForAddress(t);if(s)return s;const r=await J.reverseLookupEnsName({address:t});return F.updateEnsCache({address:t,ens:r,timestamp:Date.now()}),r}catch(e){const s=mi.parseEnsApiError(e,"Error fetching names for address");throw new Error(s)}},async registerName(t){const e=g.state.activeCaipNetwork;if(!e)throw new Error("Network not found");const s=z.state.address,r=j.getAuthConnector();if(!s||!r)throw new Error("Address or auth connector not found");Nt.loading=!0;try{const i=JSON.stringify({name:t,attributes:{},timestamp:Math.floor(Date.now()/1e3)});re.pushTransactionStack({onCancel(){re.replace("RegisterAccountName")}});const n=await Y.signMessage(i);Nt.loading=!1;const o=e.id;if(!o)throw new Error("Network not found");const a=sp.convertEVMChainIdToCoinType(Number(o));await J.registerEnsName({coinType:a,address:s,signature:n,message:i}),z.setProfileName(t,e.chainNamespace),re.replace("RegisterAccountNameSuccess")}catch(i){const n=mi.parseEnsApiError(i,`Error registering name ${t}`);throw re.replace("RegisterAccountName"),new Error(n)}finally{Nt.loading=!1}},validateName(t){return/^[a-zA-Z0-9-]{4,}$/u.test(t)},parseEnsApiError(t,e){return t?.reasons?.[0]?.description||e}},mi=Ct(rp),wi={getSIWX(){return O.state.siwx},async initializeIfEnabled(){const t=O.state.siwx,e=g.getActiveCaipAddress();if(!(t&&e))return;const[s,r,i]=e.split(":");if(g.checkIfSupportedNetwork(s))try{if((await t.getSessions(`${s}:${r}`,i)).length)return;await We.open({view:"SIWXSignMessage"})}catch(n){console.error("SIWXUtil:initializeIfEnabled",n),Pe.sendEvent({type:"track",event:"SIWX_AUTH_ERROR",properties:this.getSIWXEventProperties()}),await Y._getClient()?.disconnect().catch(console.error),re.reset("Connect"),Lt.showError("A problem occurred while trying initialize authentication")}},async requestSignMessage(){const t=O.state.siwx,e=X.getPlainAddress(g.getActiveCaipAddress()),s=g.getActiveCaipNetwork(),r=Y._getClient();if(!t)throw new Error("SIWX is not enabled");if(!e)throw new Error("No ActiveCaipAddress found");if(!s)throw new Error("No ActiveCaipNetwork or client found");if(!r)throw new Error("No ConnectionController client found");try{const i=await t.createMessage({chainId:s.caipNetworkId,accountAddress:e}),n=i.toString();j.getConnectorId(s.chainNamespace)===W.CONNECTOR_ID.AUTH&&re.pushTransactionStack({});const a=await r.signMessage(n);await t.addSession({data:i,message:n,signature:a}),We.close(),Pe.sendEvent({type:"track",event:"SIWX_AUTH_SUCCESS",properties:this.getSIWXEventProperties()})}catch(i){const n=this.getSIWXEventProperties();(!We.state.open||re.state.view==="ApproveTransaction")&&await We.open({view:"SIWXSignMessage"}),n.isSmartAccount?Lt.showError("This application might not support Smart Accounts"):Lt.showError("Signature declined"),Pe.sendEvent({type:"track",event:"SIWX_AUTH_ERROR",properties:n}),console.error("SWIXUtil:requestSignMessage",i)}},async cancelSignMessage(){try{this.getSIWX()?.getRequired?.()?await Y.disconnect():We.close(),re.reset("Connect"),Pe.sendEvent({event:"CLICK_CANCEL_SIWX",type:"track",properties:this.getSIWXEventProperties()})}catch(t){console.error("SIWXUtil:cancelSignMessage",t)}},async getSessions(){const t=O.state.siwx,e=X.getPlainAddress(g.getActiveCaipAddress()),s=g.getActiveCaipNetwork();return t&&e&&s?t.getSessions(s.caipNetworkId,e):[]},async isSIWXCloseDisabled(){const t=this.getSIWX();if(t){const e=re.state.view==="ApproveTransaction",s=re.state.view==="SIWXSignMessage";if(e||s)return t.getRequired?.()&&(await this.getSessions()).length===0}return!1},async universalProviderAuthenticate({universalProvider:t,chains:e,methods:s}){const r=wi.getSIWX(),i=new Set(e.map(a=>a.split(":")[0]));if(!r||i.size!==1||!i.has("eip155"))return!1;const n=await r.createMessage({chainId:g.getActiveCaipNetwork()?.caipNetworkId||"",accountAddress:""}),o=await t.authenticate({nonce:n.nonce,domain:n.domain,uri:n.uri,exp:n.expirationTime,iat:n.issuedAt,nbf:n.notBefore,requestId:n.requestId,version:n.version,resources:n.resources,statement:n.statement,chainId:n.chainId,methods:s,chains:[n.chainId,...e.filter(a=>a!==n.chainId)]});if(Lt.showLoading("Authenticating...",{autoClose:!1}),z.setConnectedWalletInfo({...o.session.peer.metadata,name:o.session.peer.metadata.name,icon:o.session.peer.metadata.icons?.[0],type:"WALLET_CONNECT"},Array.from(i)[0]),o?.auths?.length){const a=o.auths.map(c=>{const l=t.client.formatAuthMessage({request:c.p,iss:c.p.iss});return{data:{...c.p,accountAddress:c.p.iss.split(":").slice(-1).join(""),chainId:c.p.iss.split(":").slice(2,4).join(":"),uri:c.p.aud,version:c.p.version||n.version,expirationTime:c.p.exp,issuedAt:c.p.iat,notBefore:c.p.nbf},message:l,signature:c.s.s,cacao:c}});try{await r.setSessions(a),Pe.sendEvent({type:"track",event:"SIWX_AUTH_SUCCESS",properties:wi.getSIWXEventProperties()})}catch(c){throw console.error("SIWX:universalProviderAuth - failed to set sessions",c),Pe.sendEvent({type:"track",event:"SIWX_AUTH_ERROR",properties:wi.getSIWXEventProperties()}),await t.disconnect().catch(console.error),c}finally{Lt.hide()}}return!0},getSIWXEventProperties(){const t=g.state.activeChain;return{network:g.state.activeCaipNetwork?.caipNetworkId||"",isSmartAccount:z.state.preferredAccountTypes?.[t]===fi.ACCOUNT_TYPES.SMART_ACCOUNT}},async clearSessions(){const t=this.getSIWX();t&&await t.setSessions([])}};function ip(t){return!t||typeof t.then!="function"?Promise.resolve(t):t}function je(t,...e){try{return ip(t(...e))}catch(s){return Promise.reject(s)}}function np(t){const e=typeof t;return t===null||e!=="object"&&e!=="function"}function op(t){const e=Object.getPrototypeOf(t);return!e||e.isPrototypeOf(Object)}function ln(t){if(np(t))return String(t);if(op(t)||Array.isArray(t))return JSON.stringify(t);if(typeof t.toJSON=="function")return ln(t.toJSON());throw new Error("[unstorage] Cannot stringify value!")}const So="base64:";function ap(t){return typeof t=="string"?t:So+up(t)}function cp(t){return typeof t!="string"||!t.startsWith(So)?t:lp(t.slice(So.length))}function lp(t){return globalThis.Buffer?Buffer.from(t,"base64"):Uint8Array.from(globalThis.atob(t),e=>e.codePointAt(0))}function up(t){return globalThis.Buffer?Buffer.from(t).toString("base64"):globalThis.btoa(String.fromCodePoint(...t))}function lt(t){return t&&t.split("?")[0]?.replace(/[/\\]/g,":").replace(/:+/g,":").replace(/^:|:$/g,"")||""}function hp(...t){return lt(t.join(":"))}function Ji(t){return t=lt(t),t?t+":":""}function dp(t,e){if(e===void 0)return!0;let s=0,r=t.indexOf(":");for(;r>-1;)s++,r=t.indexOf(":",r+1);return s<=e}function pp(t,e){return e?t.startsWith(e)&&t[t.length-1]!=="$":t[t.length-1]!=="$"}const fp="memory",gp=()=>{const t=new Map;return{name:fp,getInstance:()=>t,hasItem(e){return t.has(e)},getItem(e){return t.get(e)??null},getItemRaw(e){return t.get(e)??null},setItem(e,s){t.set(e,s)},setItemRaw(e,s){t.set(e,s)},removeItem(e){t.delete(e)},getKeys(){return[...t.keys()]},clear(){t.clear()},dispose(){t.clear()}}};function mp(t={}){const e={mounts:{"":t.driver||gp()},mountpoints:[""],watching:!1,watchListeners:[],unwatch:{}},s=l=>{for(const u of e.mountpoints)if(l.startsWith(u))return{base:u,relativeKey:l.slice(u.length),driver:e.mounts[u]};return{base:"",relativeKey:l,driver:e.mounts[""]}},r=(l,u)=>e.mountpoints.filter(h=>h.startsWith(l)||u&&l.startsWith(h)).map(h=>({relativeBase:l.length>h.length?l.slice(h.length):void 0,mountpoint:h,driver:e.mounts[h]})),i=(l,u)=>{if(e.watching){u=lt(u);for(const h of e.watchListeners)h(l,u)}},n=async()=>{if(!e.watching){e.watching=!0;for(const l in e.mounts)e.unwatch[l]=await ja(e.mounts[l],i,l)}},o=async()=>{if(e.watching){for(const l in e.unwatch)await e.unwatch[l]();e.unwatch={},e.watching=!1}},a=(l,u,h)=>{const d=new Map,p=w=>{let m=d.get(w.base);return m||(m={driver:w.driver,base:w.base,items:[]},d.set(w.base,m)),m};for(const w of l){const m=typeof w=="string",f=lt(m?w:w.key),y=m?void 0:w.value,b=m||!w.options?u:{...u,...w.options},v=s(f);p(v).items.push({key:f,value:y,relativeKey:v.relativeKey,options:b})}return Promise.all([...d.values()].map(w=>h(w))).then(w=>w.flat())},c={hasItem(l,u={}){l=lt(l);const{relativeKey:h,driver:d}=s(l);return je(d.hasItem,h,u)},getItem(l,u={}){l=lt(l);const{relativeKey:h,driver:d}=s(l);return je(d.getItem,h,u).then(p=>Ki(p))},getItems(l,u={}){return a(l,u,h=>h.driver.getItems?je(h.driver.getItems,h.items.map(d=>({key:d.relativeKey,options:d.options})),u).then(d=>d.map(p=>({key:hp(h.base,p.key),value:Ki(p.value)}))):Promise.all(h.items.map(d=>je(h.driver.getItem,d.relativeKey,d.options).then(p=>({key:d.key,value:Ki(p)})))))},getItemRaw(l,u={}){l=lt(l);const{relativeKey:h,driver:d}=s(l);return d.getItemRaw?je(d.getItemRaw,h,u):je(d.getItem,h,u).then(p=>cp(p))},async setItem(l,u,h={}){if(u===void 0)return c.removeItem(l);l=lt(l);const{relativeKey:d,driver:p}=s(l);p.setItem&&(await je(p.setItem,d,ln(u),h),p.watch||i("update",l))},async setItems(l,u){await a(l,u,async h=>{if(h.driver.setItems)return je(h.driver.setItems,h.items.map(d=>({key:d.relativeKey,value:ln(d.value),options:d.options})),u);h.driver.setItem&&await Promise.all(h.items.map(d=>je(h.driver.setItem,d.relativeKey,ln(d.value),d.options)))})},async setItemRaw(l,u,h={}){if(u===void 0)return c.removeItem(l,h);l=lt(l);const{relativeKey:d,driver:p}=s(l);if(p.setItemRaw)await je(p.setItemRaw,d,u,h);else if(p.setItem)await je(p.setItem,d,ap(u),h);else return;p.watch||i("update",l)},async removeItem(l,u={}){typeof u=="boolean"&&(u={removeMeta:u}),l=lt(l);const{relativeKey:h,driver:d}=s(l);d.removeItem&&(await je(d.removeItem,h,u),(u.removeMeta||u.removeMata)&&await je(d.removeItem,h+"$",u),d.watch||i("remove",l))},async getMeta(l,u={}){typeof u=="boolean"&&(u={nativeOnly:u}),l=lt(l);const{relativeKey:h,driver:d}=s(l),p=Object.create(null);if(d.getMeta&&Object.assign(p,await je(d.getMeta,h,u)),!u.nativeOnly){const w=await je(d.getItem,h+"$",u).then(m=>Ki(m));w&&typeof w=="object"&&(typeof w.atime=="string"&&(w.atime=new Date(w.atime)),typeof w.mtime=="string"&&(w.mtime=new Date(w.mtime)),Object.assign(p,w))}return p},setMeta(l,u,h={}){return this.setItem(l+"$",u,h)},removeMeta(l,u={}){return this.removeItem(l+"$",u)},async getKeys(l,u={}){l=Ji(l);const h=r(l,!0);let d=[];const p=[];let w=!0;for(const f of h){f.driver.flags?.maxDepth||(w=!1);const y=await je(f.driver.getKeys,f.relativeBase,u);for(const b of y){const v=f.mountpoint+lt(b);d.some(C=>v.startsWith(C))||p.push(v)}d=[f.mountpoint,...d.filter(b=>!b.startsWith(f.mountpoint))]}const m=u.maxDepth!==void 0&&!w;return p.filter(f=>(!m||dp(f,u.maxDepth))&&pp(f,l))},async clear(l,u={}){l=Ji(l),await Promise.all(r(l,!1).map(async h=>{if(h.driver.clear)return je(h.driver.clear,h.relativeBase,u);if(h.driver.removeItem){const d=await h.driver.getKeys(h.relativeBase||"",u);return Promise.all(d.map(p=>h.driver.removeItem(p,u)))}}))},async dispose(){await Promise.all(Object.values(e.mounts).map(l=>qa(l)))},async watch(l){return await n(),e.watchListeners.push(l),async()=>{e.watchListeners=e.watchListeners.filter(u=>u!==l),e.watchListeners.length===0&&await o()}},async unwatch(){e.watchListeners=[],await o()},mount(l,u){if(l=Ji(l),l&&e.mounts[l])throw new Error(`already mounted at ${l}`);return l&&(e.mountpoints.push(l),e.mountpoints.sort((h,d)=>d.length-h.length)),e.mounts[l]=u,e.watching&&Promise.resolve(ja(u,i,l)).then(h=>{e.unwatch[l]=h}).catch(console.error),c},async unmount(l,u=!0){l=Ji(l),!(!l||!e.mounts[l])&&(e.watching&&l in e.unwatch&&(e.unwatch[l]?.(),delete e.unwatch[l]),u&&await qa(e.mounts[l]),e.mountpoints=e.mountpoints.filter(h=>h!==l),delete e.mounts[l])},getMount(l=""){l=lt(l)+":";const u=s(l);return{driver:u.driver,base:u.base}},getMounts(l="",u={}){return l=lt(l),r(l,u.parents).map(d=>({driver:d.driver,base:d.mountpoint}))},keys:(l,u={})=>c.getKeys(l,u),get:(l,u={})=>c.getItem(l,u),set:(l,u,h={})=>c.setItem(l,u,h),has:(l,u={})=>c.hasItem(l,u),del:(l,u={})=>c.removeItem(l,u),remove:(l,u={})=>c.removeItem(l,u)};return c}function ja(t,e,s){return t.watch?t.watch((r,i)=>e(r,s+i)):()=>{}}async function qa(t){typeof t.dispose=="function"&&await je(t.dispose)}const wp="idb-keyval";var yp=(t={})=>{const e=t.base&&t.base.length>0?`${t.base}:`:"",s=i=>e+i;let r;return t.dbName&&t.storeName&&(r=ed(t.dbName,t.storeName)),{name:wp,options:t,async hasItem(i){return!(typeof await Oa(s(i),r)>"u")},async getItem(i){return await Oa(s(i),r)??null},setItem(i,n){return id(s(i),n,r)},removeItem(i){return rd(s(i),r)},getKeys(){return sd(r)},clear(){return td(r)}}};const bp="WALLET_CONNECT_V2_INDEXED_DB",vp="keyvaluestorage";let Ep=class{constructor(){this.indexedDb=mp({driver:yp({dbName:bp,storeName:vp})})}async getKeys(){return this.indexedDb.getKeys()}async getEntries(){return(await this.indexedDb.getItems(await this.indexedDb.getKeys())).map(e=>[e.key,e.value])}async getItem(e){const s=await this.indexedDb.getItem(e);if(s!==null)return s}async setItem(e,s){await this.indexedDb.setItem(e,na(s))}async removeItem(e){await this.indexedDb.removeItem(e)}};var Kn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},un={exports:{}};(function(){let t;function e(){}t=e,t.prototype.getItem=function(s){return this.hasOwnProperty(s)?String(this[s]):null},t.prototype.setItem=function(s,r){this[s]=String(r)},t.prototype.removeItem=function(s){delete this[s]},t.prototype.clear=function(){const s=this;Object.keys(s).forEach(function(r){s[r]=void 0,delete s[r]})},t.prototype.key=function(s){return s=s||0,Object.keys(this)[s]},t.prototype.__defineGetter__("length",function(){return Object.keys(this).length}),typeof Kn<"u"&&Kn.localStorage?un.exports=Kn.localStorage:typeof window<"u"&&window.localStorage?un.exports=window.localStorage:un.exports=new e})();function Cp(t){var e;return[t[0],bn((e=t[1])!=null?e:"")]}let Ip=class{constructor(){this.localStorage=un.exports}async getKeys(){return Object.keys(this.localStorage)}async getEntries(){return Object.entries(this.localStorage).map(Cp)}async getItem(e){const s=this.localStorage.getItem(e);if(s!==null)return bn(s)}async setItem(e,s){this.localStorage.setItem(e,na(s))}async removeItem(e){this.localStorage.removeItem(e)}};const Np="wc_storage_version",Fa=1,Ap=async(t,e,s)=>{const r=Np,i=await e.getItem(r);if(i&&i>=Fa){s(e);return}const n=await t.getKeys();if(!n.length){s(e);return}const o=[];for(;n.length;){const a=n.shift();if(!a)continue;const c=a.toLowerCase();if(c.includes("wc@")||c.includes("walletconnect")||c.includes("wc_")||c.includes("wallet_connect")){const l=await t.getItem(a);await e.setItem(a,l),o.push(a)}}await e.setItem(r,Fa),s(e),_p(t,o)},_p=async(t,e)=>{e.length&&e.forEach(async s=>{await t.removeItem(s)})};let Sp=class{constructor(){this.initialized=!1,this.setInitialized=s=>{this.storage=s,this.initialized=!0};const e=new Ip;this.storage=e;try{const s=new Ep;Ap(e,s,this.setInitialized)}catch{this.initialized=!0}}async getKeys(){return await this.initialize(),this.storage.getKeys()}async getEntries(){return await this.initialize(),this.storage.getEntries()}async getItem(e){return await this.initialize(),this.storage.getItem(e)}async setItem(e,s){return await this.initialize(),this.storage.setItem(e,s)}async removeItem(e){return await this.initialize(),this.storage.removeItem(e)}async initialize(){this.initialized||await new Promise(e=>{const s=setInterval(()=>{this.initialized&&(clearInterval(s),e())},20)})}};var Pp=Object.defineProperty,kp=(t,e,s)=>e in t?Pp(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,za=(t,e,s)=>kp(t,typeof e!="symbol"?e+"":e,s);let Op=class extends zr{constructor(e){super(),this.opts=e,za(this,"protocol","wc"),za(this,"version",2)}};var Tp=Object.defineProperty,xp=(t,e,s)=>e in t?Tp(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,$p=(t,e,s)=>xp(t,e+"",s);let Rp=class extends zr{constructor(e,s){super(),this.core=e,this.logger=s,$p(this,"records",new Map)}},Up=class{constructor(e,s){this.logger=e,this.core=s}},Dp=class extends zr{constructor(e,s){super(),this.relayer=e,this.logger=s}},Lp=class extends zr{constructor(e){super()}},Mp=class{constructor(e,s,r,i){this.core=e,this.logger=s,this.name=r}},Bp=class extends zr{constructor(e,s){super(),this.relayer=e,this.logger=s}},jp=class extends zr{constructor(e,s){super(),this.core=e,this.logger=s}},qp=class{constructor(e,s,r){this.core=e,this.logger=s,this.store=r}},Fp=class{constructor(e,s){this.projectId=e,this.logger=s}},zp=class{constructor(e,s,r){this.core=e,this.logger=s,this.telemetryEnabled=r}};var Wp=Object.defineProperty,Hp=(t,e,s)=>e in t?Wp(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,Wa=(t,e,s)=>Hp(t,typeof e!="symbol"?e+"":e,s);let Vp=class{constructor(e){this.opts=e,Wa(this,"protocol","wc"),Wa(this,"version",2)}},Kp=class{constructor(e){this.client=e}};function Ni(t,{strict:e=!0}={}){return!t||typeof t!="string"?!1:e?/^0x[0-9a-fA-F]*$/.test(t):t.startsWith("0x")}function Ha(t){return Ni(t,{strict:!1})?Math.ceil((t.length-2)/2):t.length}const su="2.23.2";let Gn={getDocsUrl:({docsBaseUrl:t,docsPath:e="",docsSlug:s})=>e?`${t??"https://viem.sh"}${e}${s?`#${s}`:""}`:void 0,version:`viem@${su}`};class Ks extends Error{constructor(e,s={}){const r=s.cause instanceof Ks?s.cause.details:s.cause?.message?s.cause.message:s.details,i=s.cause instanceof Ks&&s.cause.docsPath||s.docsPath,n=Gn.getDocsUrl?.({...s,docsPath:i}),o=[e||"An error occurred.","",...s.metaMessages?[...s.metaMessages,""]:[],...n?[`Docs: ${n}`]:[],...r?[`Details: ${r}`]:[],...Gn.version?[`Version: ${Gn.version}`]:[]].join(` -`);super(o,s.cause?{cause:s.cause}:void 0),Object.defineProperty(this,"details",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"docsPath",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"metaMessages",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"shortMessage",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"version",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"BaseError"}),this.details=r,this.docsPath=i,this.metaMessages=s.metaMessages,this.name=s.name??this.name,this.shortMessage=e,this.version=su}walk(e){return ru(this,e)}}function ru(t,e){return e?.(t)?t:t&&typeof t=="object"&&"cause"in t&&t.cause!==void 0?ru(t.cause,e):e?null:t}class iu extends Ks{constructor({size:e,targetSize:s,type:r}){super(`${r.charAt(0).toUpperCase()}${r.slice(1).toLowerCase()} size (${e}) exceeds padding size (${s}).`,{name:"SizeExceedsPaddingSizeError"})}}function Hr(t,{dir:e,size:s=32}={}){return typeof t=="string"?Gp(t,{dir:e,size:s}):Jp(t,{dir:e,size:s})}function Gp(t,{dir:e,size:s=32}={}){if(s===null)return t;const r=t.replace("0x","");if(r.length>s*2)throw new iu({size:Math.ceil(r.length/2),targetSize:s,type:"hex"});return`0x${r[e==="right"?"padEnd":"padStart"](s*2,"0")}`}function Jp(t,{dir:e,size:s=32}={}){if(s===null)return t;if(t.length>s)throw new iu({size:t.length,targetSize:s,type:"bytes"});const r=new Uint8Array(s);for(let i=0;ie)throw new Xp({givenSize:Ha(t),maxSize:e})}function Po(t,e={}){const{signed:s}=e;e.size&&Vr(t,{size:e.size});const r=BigInt(t);if(!s)return r;const i=(t.length-2)/2,n=(1n<e.toString(16).padStart(2,"0"));function ko(t,e={}){return typeof t=="number"||typeof t=="bigint"?ou(t,e):typeof t=="string"?sf(t,e):typeof t=="boolean"?ef(t,e):nu(t,e)}function ef(t,e={}){const s=`0x${Number(t)}`;return typeof e.size=="number"?(Vr(s,{size:e.size}),Hr(s,{size:e.size})):s}function nu(t,e={}){let s="";for(let i=0;in||i=ts.zero&&t<=ts.nine)return t-ts.zero;if(t>=ts.A&&t<=ts.F)return t-(ts.A-10);if(t>=ts.a&&t<=ts.f)return t-(ts.a-10)}function au(t,e={}){let s=t;e.size&&(Vr(s,{size:e.size}),s=Hr(s,{dir:"right",size:e.size}));let r=s.slice(2);r.length%2&&(r=`0${r}`);const i=r.length/2,n=new Uint8Array(i);for(let o=0,a=0;o0&&!e.includes(t.length))throw new Error("Uint8Array expected of length "+e+", got length="+t.length)}function l1(t){if(typeof t!="function"||typeof t.create!="function")throw new Error("Hash should be wrapped by utils.wrapConstructor");En(t.outputLen),En(t.blockLen)}function Ka(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function lf(t,e){Tn(t);const s=e.outputLen;if(t.length>Ga&Yi)}:{h:Number(t>>Ga&Yi)|0,l:Number(t&Yi)|0}}function hf(t,e=!1){let s=new Uint32Array(t.length),r=new Uint32Array(t.length);for(let i=0;it<>>32-s,pf=(t,e,s)=>e<>>32-s,ff=(t,e,s)=>e<>>64-s,gf=(t,e,s)=>t<>>64-s,or=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */function mf(t){return new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4))}function u1(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}function h1(t,e){return t<<32-e|t>>>e}const Ja=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function wf(t){return t<<24&4278190080|t<<8&16711680|t>>>8&65280|t>>>24&255}function Ya(t){for(let e=0;et().update(lu(r)).digest(),s=t();return e.outputLen=s.outputLen,e.blockLen=s.blockLen,e.create=()=>t(),e}function p1(t=32){if(or&&typeof or.getRandomValues=="function")return or.getRandomValues(new Uint8Array(t));if(or&&typeof or.randomBytes=="function")return or.randomBytes(t);throw new Error("crypto.getRandomValues must be defined")}const uu=[],hu=[],du=[],Ef=BigInt(0),Qr=BigInt(1),Cf=BigInt(2),If=BigInt(7),Nf=BigInt(256),Af=BigInt(113);for(let t=0,e=Qr,s=1,r=0;t<24;t++){[s,r]=[r,(2*s+3*r)%5],uu.push(2*(5*r+s)),hu.push((t+1)*(t+2)/2%64);let i=Ef;for(let n=0;n<7;n++)e=(e<>If)*Af)%Nf,e&Cf&&(i^=Qr<<(Qr<s>32?ff(t,e,s):df(t,e,s),Za=(t,e,s)=>s>32?gf(t,e,s):pf(t,e,s);function Pf(t,e=24){const s=new Uint32Array(10);for(let r=24-e;r<24;r++){for(let o=0;o<10;o++)s[o]=t[o]^t[o+10]^t[o+20]^t[o+30]^t[o+40];for(let o=0;o<10;o+=2){const a=(o+8)%10,c=(o+2)%10,l=s[c],u=s[c+1],h=Xa(l,u,1)^s[a],d=Za(l,u,1)^s[a+1];for(let p=0;p<50;p+=10)t[o+p]^=h,t[o+p+1]^=d}let i=t[2],n=t[3];for(let o=0;o<24;o++){const a=hu[o],c=Xa(i,n,a),l=Za(i,n,a),u=uu[o];i=t[u],n=t[u+1],t[u]=c,t[u+1]=l}for(let o=0;o<50;o+=10){for(let a=0;a<10;a++)s[a]=t[o+a];for(let a=0;a<10;a++)t[o+a]^=~s[(a+2)%10]&s[(a+4)%10]}t[0]^=_f[r],t[1]^=Sf[r]}s.fill(0)}class ua extends bf{constructor(e,s,r,i=!1,n=24){if(super(),this.blockLen=e,this.suffix=s,this.outputLen=r,this.enableXOF=i,this.rounds=n,this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,En(r),0>=this.blockLen||this.blockLen>=200)throw new Error("Sha3 supports only keccak-f1600 function");this.state=new Uint8Array(200),this.state32=mf(this.state)}keccak(){Ja||Ya(this.state32),Pf(this.state32,this.rounds),Ja||Ya(this.state32),this.posOut=0,this.pos=0}update(e){Ka(this);const{blockLen:s,state:r}=this;e=lu(e);const i=e.length;for(let n=0;n=r&&this.keccak();const o=Math.min(r-this.posOut,n-i);e.set(s.subarray(this.posOut,this.posOut+o),i),this.posOut+=o,i+=o}return e}xofInto(e){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(e)}xof(e){return En(e),this.xofInto(new Uint8Array(e))}digestInto(e){if(lf(e,this),this.finished)throw new Error("digest() was already called");return this.writeInto(e),this.destroy(),e}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,this.state.fill(0)}_cloneInto(e){const{blockLen:s,suffix:r,outputLen:i,rounds:n,enableXOF:o}=this;return e||(e=new ua(s,r,i,o,n)),e.state32.set(this.state32),e.pos=this.pos,e.posOut=this.posOut,e.finished=this.finished,e.rounds=n,e.suffix=r,e.outputLen=i,e.enableXOF=o,e.destroyed=this.destroyed,e}}const kf=(t,e,s)=>vf(()=>new ua(e,t,s)),Of=kf(1,136,256/8);function pu(t,e){const s=e||"hex",r=Of(Ni(t,{strict:!1})?nf(t):t);return s==="bytes"?r:ko(r)}class Tf extends Map{constructor(e){super(),Object.defineProperty(this,"maxSize",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.maxSize=e}get(e){const s=super.get(e);return super.has(e)&&s!==void 0&&(this.delete(e),super.set(e,s)),s}set(e,s){if(super.set(e,s),this.maxSize&&this.size>this.maxSize){const r=this.keys().next().value;r&&this.delete(r)}return this}}const Jn=new Tf(8192);function xf(t,e){if(Jn.has(`${t}.${e}`))return Jn.get(`${t}.${e}`);const s=t.substring(2).toLowerCase(),r=pu(cu(s),"bytes"),i=s.split("");for(let o=0;o<40;o+=2)r[o>>1]>>4>=8&&i[o]&&(i[o]=i[o].toUpperCase()),(r[o>>1]&15)>=8&&i[o+1]&&(i[o+1]=i[o+1].toUpperCase());const n=`0x${i.join("")}`;return Jn.set(`${t}.${e}`,n),n}function $f(t){const e=pu(`0x${t.substring(4)}`).substring(26);return xf(`0x${e}`)}async function Rf({hash:t,signature:e}){const s=Ni(t)?t:ko(t),{secp256k1:r}=await Eo(async()=>{const{secp256k1:o}=await import("./secp256k1-BygF97rU.js");return{secp256k1:o}},__vite__mapDeps([0,1,2,3,4,5]));return`0x${(()=>{if(typeof e=="object"&&"r"in e&&"s"in e){const{r:l,s:u,v:h,yParity:d}=e,p=Number(d??h),w=Qa(p);return new r.Signature(Po(l),Po(u)).addRecoveryBit(w)}const o=Ni(e)?e:ko(e),a=Zp(`0x${o.slice(130)}`),c=Qa(a);return r.Signature.fromCompact(o.substring(2,130)).addRecoveryBit(c)})().recoverPublicKey(s.substring(2)).toHex(!1)}`}function Qa(t){if(t===0||t===1)return t;if(t===27)return 0;if(t===28)return 1;throw new Error("Invalid yParityOrV value")}async function Uf({hash:t,signature:e}){return $f(await Rf({hash:t,signature:e}))}function Df(t){if(t.length>=255)throw new TypeError("Alphabet too long");const e=new Uint8Array(256);for(let l=0;l>>0,m=new Uint8Array(w);for(;d!==p;){let b=l[d],v=0;for(let C=w-1;(b!==0||v>>0,m[C]=b%s>>>0,b=b/s>>>0;if(b!==0)throw new Error("Non-zero carry");h=v,d++}let f=w-h;for(;f!==w&&m[f]===0;)f++;let y=r.repeat(u);for(;f>>0,w=new Uint8Array(p);for(;u255)return;let v=e[b];if(v===255)return;let C=0;for(let S=p-1;(v!==0||C>>0,w[S]=v%256>>>0,v=v/256>>>0;if(v!==0)throw new Error("Non-zero carry");d=C,u++}let m=p-d;for(;m!==p&&w[m]===0;)m++;const f=new Uint8Array(h+(p-m));let y=h;for(;m!==p;)f[y++]=w[m++];return f}function c(l){const u=a(l);if(u)return u;throw new Error("Non-base"+s+" character")}return{encode:o,decodeUnsafe:a,decode:c}}var Lf="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";const fu=Df(Lf);var Mf={};const Bf=":";function Or(t){const[e,s]=t.split(Bf);return{namespace:e,reference:s}}function gu(t,e){return t.includes(":")?[t]:e.chains||[]}var jf=Object.defineProperty,qf=Object.defineProperties,Ff=Object.getOwnPropertyDescriptors,ec=Object.getOwnPropertySymbols,zf=Object.prototype.hasOwnProperty,Wf=Object.prototype.propertyIsEnumerable,tc=(t,e,s)=>e in t?jf(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,sc=(t,e)=>{for(var s in e||(e={}))zf.call(e,s)&&tc(t,s,e[s]);if(ec)for(var s of ec(e))Wf.call(e,s)&&tc(t,s,e[s]);return t},Hf=(t,e)=>qf(t,Ff(e));const Vf="ReactNative",bt={reactNative:"react-native",node:"node",browser:"browser",unknown:"unknown"},Kf="js";function Cn(){return typeof process<"u"&&typeof process.versions<"u"&&typeof process.versions.node<"u"}function ks(){return!ls.getDocument()&&!!ls.getNavigator()&&navigator.product===Vf}function Gf(){return ks()&&typeof global<"u"&&typeof(global==null?void 0:global.Platform)<"u"&&(global==null?void 0:global.Platform.OS)==="android"}function Jf(){return ks()&&typeof global<"u"&&typeof(global==null?void 0:global.Platform)<"u"&&(global==null?void 0:global.Platform.OS)==="ios"}function Kr(){return!Cn()&&!!ls.getNavigator()&&!!ls.getDocument()}function Di(){return ks()?bt.reactNative:Cn()?bt.node:Kr()?bt.browser:bt.unknown}function rc(){var t;try{return ks()&&typeof global<"u"&&typeof(global==null?void 0:global.Application)<"u"?(t=global.Application)==null?void 0:t.applicationId:void 0}catch{return}}function Yf(t,e){const s=new URLSearchParams(t);for(const r of Object.keys(e).sort())if(e.hasOwnProperty(r)){const i=e[r];i!==void 0&&s.set(r,i)}return s.toString()}function Xf(t){var e,s;const r=mu();try{return t!=null&&t.url&&r.url&&new URL(t.url).host!==new URL(r.url).host&&(console.warn(`The configured WalletConnect 'metadata.url':${t.url} differs from the actual page url:${r.url}. This is probably unintended and can lead to issues.`),t.url=r.url),(e=t?.icons)!=null&&e.length&&t.icons.length>0&&(t.icons=t.icons.filter(i=>i!=="")),Hf(sc(sc({},r),t),{url:t?.url||r.url,name:t?.name||r.name,description:t?.description||r.description,icons:(s=t?.icons)!=null&&s.length&&t.icons.length>0?t.icons:r.icons})}catch(i){return console.warn("Error populating app metadata",i),t||r}}function mu(){return Kh.getWindowMetadata()||{name:"",description:"",url:"",icons:[""]}}function Zf(){if(Di()===bt.reactNative&&typeof global<"u"&&typeof(global==null?void 0:global.Platform)<"u"){const{OS:s,Version:r}=global.Platform;return[s,r].join("-")}const t=Jh();if(t===null)return"unknown";const e=t.os?t.os.replace(" ","").toLowerCase():"unknown";return t.type==="browser"?[e,t.name,t.version].join("-"):[e,t.version].join("-")}function Qf(){var t;const e=Di();return e===bt.browser?[e,((t=ls.getLocation())==null?void 0:t.host)||"unknown"].join(":"):e}function wu(t,e,s){const r=Zf(),i=Qf();return[[t,e].join("-"),[Kf,s].join("-"),r,i].join("/")}function eg({protocol:t,version:e,relayUrl:s,sdkVersion:r,auth:i,projectId:n,useOnCloseEvent:o,bundleId:a,packageName:c}){const l=s.split("?"),u=wu(t,e,r),h={auth:i,ua:u,projectId:n,useOnCloseEvent:o,packageName:c||void 0,bundleId:a||void 0},d=Yf(l[1]||"",h);return l[0]+"?"+d}function Fs(t,e){return t.filter(s=>e.includes(s)).length===t.length}function Oo(t){return Object.fromEntries(t.entries())}function To(t){return new Map(Object.entries(t))}function Ds(t=D.FIVE_MINUTES,e){const s=D.toMiliseconds(t||D.FIVE_MINUTES);let r,i,n,o;return{resolve:a=>{n&&r&&(clearTimeout(n),r(a),o=Promise.resolve(a))},reject:a=>{n&&i&&(clearTimeout(n),i(a))},done:()=>new Promise((a,c)=>{if(o)return a(o);n=setTimeout(()=>{const l=new Error(e);o=Promise.reject(l),c(l)},s),r=a,i=c})}}function Cs(t,e,s){return new Promise(async(r,i)=>{const n=setTimeout(()=>i(new Error(s)),e);try{const o=await t;r(o)}catch(o){i(o)}clearTimeout(n)})}function yu(t,e){if(typeof e=="string"&&e.startsWith(`${t}:`))return e;if(t.toLowerCase()==="topic"){if(typeof e!="string")throw new Error('Value must be "string" for expirer target type: topic');return`topic:${e}`}else if(t.toLowerCase()==="id"){if(typeof e!="number")throw new Error('Value must be "number" for expirer target type: id');return`id:${e}`}throw new Error(`Unknown expirer target type: ${t}`)}function tg(t){return yu("topic",t)}function sg(t){return yu("id",t)}function bu(t){const[e,s]=t.split(":"),r={id:void 0,topic:void 0};if(e==="topic"&&typeof s=="string")r.topic=s;else if(e==="id"&&Number.isInteger(Number(s)))r.id=Number(s);else throw new Error(`Invalid target, expected id:number or topic:string, got ${e}:${s}`);return r}function De(t,e){return D.fromMiliseconds(Date.now()+D.toMiliseconds(t))}function ys(t){return Date.now()>=D.toMiliseconds(t)}function pe(t,e){return`${t}${e?`:${e}`:""}`}function Jt(t=[],e=[]){return[...new Set([...t,...e])]}async function rg({id:t,topic:e,wcDeepLink:s}){var r;try{if(!s)return;const i=typeof s=="string"?JSON.parse(s):s,n=i?.href;if(typeof n!="string")return;const o=ig(n,t,e),a=Di();if(a===bt.browser){if(!((r=ls.getDocument())!=null&&r.hasFocus())){console.warn("Document does not have focus, skipping deeplink.");return}ng(o)}else a===bt.reactNative&&typeof(global==null?void 0:global.Linking)<"u"&&await global.Linking.openURL(o)}catch(i){console.error(i)}}function ig(t,e,s){const r=`requestId=${e}&sessionTopic=${s}`;t.endsWith("/")&&(t=t.slice(0,-1));let i=`${t}`;if(t.startsWith("https://t.me")){const n=t.includes("?")?"&startapp=":"?startapp=";i=`${i}${n}${lg(r,!0)}`}else i=`${i}/wc?${r}`;return i}function ng(t){let e="_self";cg()?e="_top":(ag()||t.startsWith("https://")||t.startsWith("http://"))&&(e="_blank"),window.open(t,e,"noreferrer noopener")}async function og(t,e){let s="";try{if(Kr()&&(s=localStorage.getItem(e),s))return s;s=await t.getItem(e)}catch(r){console.error(r)}return s}function ic(t,e){if(!t.includes(e))return null;const s=t.split(/([&,?,=])/),r=s.indexOf(e);return s[r+2]}function nc(){return typeof crypto<"u"&&crypto!=null&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/gu,t=>{const e=Math.random()*16|0;return(t==="x"?e:e&3|8).toString(16)})}function ha(){return typeof process<"u"&&Mf.IS_VITEST==="true"}function ag(){return typeof window<"u"&&(!!window.TelegramWebviewProxy||!!window.Telegram||!!window.TelegramWebviewProxyProto)}function cg(){try{return window.self!==window.top}catch{return!1}}function lg(t,e=!1){const s=Buffer.from(t).toString("base64");return e?s.replace(/[=]/g,""):s}function vu(t){return Buffer.from(t,"base64").toString("utf-8")}function ug(t){return new Promise(e=>setTimeout(e,t))}function Ai(t){if(!Number.isSafeInteger(t)||t<0)throw new Error("positive integer expected, got "+t)}function hg(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}function Li(t,...e){if(!hg(t))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(t.length))throw new Error("Uint8Array expected of length "+e+", got length="+t.length)}function da(t){if(typeof t!="function"||typeof t.create!="function")throw new Error("Hash should be wrapped by utils.wrapConstructor");Ai(t.outputLen),Ai(t.blockLen)}function Rr(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function Eu(t,e){Li(t);const s=e.outputLen;if(t.length>oc&Xi)}:{h:Number(t>>oc&Xi)|0,l:Number(t&Xi)|0}}function pg(t,e=!1){let s=new Uint32Array(t.length),r=new Uint32Array(t.length);for(let i=0;it<>>32-s,gg=(t,e,s)=>e<>>32-s,mg=(t,e,s)=>e<>>64-s,wg=(t,e,s)=>t<>>64-s,ar=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;function yg(t){return new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4))}function Yn(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}function qt(t,e){return t<<32-e|t>>>e}const ac=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function bg(t){return t<<24&4278190080|t<<8&16711680|t>>>8&65280|t>>>24&255}function cc(t){for(let e=0;et().update(Ur(r)).digest(),s=t();return e.outputLen=s.outputLen,e.blockLen=s.blockLen,e.create=()=>t(),e}function Gr(t=32){if(ar&&typeof ar.getRandomValues=="function")return ar.getRandomValues(new Uint8Array(t));if(ar&&typeof ar.randomBytes=="function")return ar.randomBytes(t);throw new Error("crypto.getRandomValues must be defined")}const Iu=[],Nu=[],Au=[],Cg=BigInt(0),ei=BigInt(1),Ig=BigInt(2),Ng=BigInt(7),Ag=BigInt(256),_g=BigInt(113);for(let t=0,e=ei,s=1,r=0;t<24;t++){[s,r]=[r,(2*s+3*r)%5],Iu.push(2*(5*r+s)),Nu.push((t+1)*(t+2)/2%64);let i=Cg;for(let n=0;n<7;n++)e=(e<>Ng)*_g)%Ag,e&Ig&&(i^=ei<<(ei<s>32?mg(t,e,s):fg(t,e,s),uc=(t,e,s)=>s>32?wg(t,e,s):gg(t,e,s);function kg(t,e=24){const s=new Uint32Array(10);for(let r=24-e;r<24;r++){for(let o=0;o<10;o++)s[o]=t[o]^t[o+10]^t[o+20]^t[o+30]^t[o+40];for(let o=0;o<10;o+=2){const a=(o+8)%10,c=(o+2)%10,l=s[c],u=s[c+1],h=lc(l,u,1)^s[a],d=uc(l,u,1)^s[a+1];for(let p=0;p<50;p+=10)t[o+p]^=h,t[o+p+1]^=d}let i=t[2],n=t[3];for(let o=0;o<24;o++){const a=Nu[o],c=lc(i,n,a),l=uc(i,n,a),u=Iu[o];i=t[u],n=t[u+1],t[u]=c,t[u+1]=l}for(let o=0;o<50;o+=10){for(let a=0;a<10;a++)s[a]=t[o+a];for(let a=0;a<10;a++)t[o+a]^=~s[(a+2)%10]&s[(a+4)%10]}t[0]^=Sg[r],t[1]^=Pg[r]}s.fill(0)}let Og=class _u extends pa{constructor(e,s,r,i=!1,n=24){if(super(),this.blockLen=e,this.suffix=s,this.outputLen=r,this.enableXOF=i,this.rounds=n,this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,Ai(r),0>=this.blockLen||this.blockLen>=200)throw new Error("Sha3 supports only keccak-f1600 function");this.state=new Uint8Array(200),this.state32=yg(this.state)}keccak(){ac||cc(this.state32),kg(this.state32,this.rounds),ac||cc(this.state32),this.posOut=0,this.pos=0}update(e){Rr(this);const{blockLen:s,state:r}=this;e=Ur(e);const i=e.length;for(let n=0;n=r&&this.keccak();const o=Math.min(r-this.posOut,n-i);e.set(s.subarray(this.posOut,this.posOut+o),i),this.posOut+=o,i+=o}return e}xofInto(e){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(e)}xof(e){return Ai(e),this.xofInto(new Uint8Array(e))}digestInto(e){if(Eu(e,this),this.finished)throw new Error("digest() was already called");return this.writeInto(e),this.destroy(),e}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,this.state.fill(0)}_cloneInto(e){const{blockLen:s,suffix:r,outputLen:i,rounds:n,enableXOF:o}=this;return e||(e=new _u(s,r,i,o,n)),e.state32.set(this.state32),e.pos=this.pos,e.posOut=this.posOut,e.finished=this.finished,e.rounds=n,e.suffix=r,e.outputLen=i,e.enableXOF=o,e.destroyed=this.destroyed,e}};const Tg=(t,e,s)=>Cu(()=>new Og(e,t,s)),xg=Tg(1,136,256/8),$g="https://rpc.walletconnect.org/v1";function Su(t){const e=`Ethereum Signed Message: -${t.length}`,s=new TextEncoder().encode(e+t);return"0x"+Buffer.from(xg(s)).toString("hex")}async function Rg(t,e,s,r,i,n){switch(s.t){case"eip191":return await Ug(t,e,s.s);case"eip1271":return await Dg(t,e,s.s,r,i,n);default:throw new Error(`verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${s.t}`)}}async function Ug(t,e,s){return(await Uf({hash:Su(e),signature:s})).toLowerCase()===t.toLowerCase()}async function Dg(t,e,s,r,i,n){const o=Or(r);if(!o.namespace||!o.reference)throw new Error(`isValidEip1271Signature failed: chainId must be in CAIP-2 format, received: ${r}`);try{const a="0x1626ba7e",c="0000000000000000000000000000000000000000000000000000000000000040",l="0000000000000000000000000000000000000000000000000000000000000041",u=s.substring(2),h=Su(e).substring(2),d=a+h+c+l+u,p=await fetch(`${n||$g}/?chainId=${r}&projectId=${i}`,{method:"POST",body:JSON.stringify({id:Lg(),jsonrpc:"2.0",method:"eth_call",params:[{to:t,data:d},"latest"]})}),{result:w}=await p.json();return w?w.slice(0,a.length).toLowerCase()===a.toLowerCase():!1}catch(a){return console.error("isValidEip1271Signature: ",a),!1}}function Lg(){return Date.now()+Math.floor(Math.random()*1e3)}function Mg(t){const e=atob(t),s=new Uint8Array(e.length);for(let o=0;oe in t?Bg(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,Wg=(t,e)=>{for(var s in e||(e={}))Fg.call(e,s)&&dc(t,s,e[s]);if(hc)for(var s of hc(e))zg.call(e,s)&&dc(t,s,e[s]);return t},Hg=(t,e)=>jg(t,qg(e));const Vg="did:pkh:",fa=t=>t?.split(":"),Kg=t=>{const e=t&&fa(t);if(e)return t.includes(Vg)?e[3]:e[1]},xo=t=>{const e=t&&fa(t);if(e)return e[2]+":"+e[3]},In=t=>{const e=t&&fa(t);if(e)return e.pop()};async function pc(t){const{cacao:e,projectId:s}=t,{s:r,p:i}=e,n=Pu(i,i.iss),o=In(i.iss);return await Rg(o,n,r,xo(i.iss),s)}const Pu=(t,e)=>{const s=`${t.domain} wants you to sign in with your Ethereum account:`,r=In(e);if(!t.aud&&!t.uri)throw new Error("Either `aud` or `uri` is required to construct the message");let i=t.statement||void 0;const n=`URI: ${t.aud||t.uri}`,o=`Version: ${t.version}`,a=`Chain ID: ${Kg(e)}`,c=`Nonce: ${t.nonce}`,l=`Issued At: ${t.iat}`,u=t.exp?`Expiration Time: ${t.exp}`:void 0,h=t.nbf?`Not Before: ${t.nbf}`:void 0,d=t.requestId?`Request ID: ${t.requestId}`:void 0,p=t.resources?`Resources:${t.resources.map(m=>` -- ${m}`).join("")}`:void 0,w=hn(t.resources);if(w){const m=_i(w);i=sm(i,m)}return[s,r,"",i,"",n,o,a,c,l,u,h,d,p].filter(m=>m!=null).join(` -`)};function Gg(t){return Buffer.from(JSON.stringify(t)).toString("base64")}function Jg(t){return JSON.parse(Buffer.from(t,"base64").toString("utf-8"))}function Gs(t){if(!t)throw new Error("No recap provided, value is undefined");if(!t.att)throw new Error("No `att` property found");const e=Object.keys(t.att);if(!(e!=null&&e.length))throw new Error("No resources found in `att` property");e.forEach(s=>{const r=t.att[s];if(Array.isArray(r))throw new Error(`Resource must be an object: ${s}`);if(typeof r!="object")throw new Error(`Resource must be an object: ${s}`);if(!Object.keys(r).length)throw new Error(`Resource object is empty: ${s}`);Object.keys(r).forEach(i=>{const n=r[i];if(!Array.isArray(n))throw new Error(`Ability limits ${i} must be an array of objects, found: ${n}`);if(!n.length)throw new Error(`Value of ${i} is empty array, must be an array with objects`);n.forEach(o=>{if(typeof o!="object")throw new Error(`Ability limits (${i}) must be an array of objects, found: ${o}`)})})})}function Yg(t,e,s,r={}){return s?.sort((i,n)=>i.localeCompare(n)),{att:{[t]:Xg(e,s,r)}}}function Xg(t,e,s={}){e=e?.sort((i,n)=>i.localeCompare(n));const r=e.map(i=>({[`${t}/${i}`]:[s]}));return Object.assign({},...r)}function ku(t){return Gs(t),`urn:recap:${Gg(t).replace(/=/g,"")}`}function _i(t){const e=Jg(t.replace("urn:recap:",""));return Gs(e),e}function Zg(t,e,s){const r=Yg(t,e,s);return ku(r)}function Qg(t){return t&&t.includes("urn:recap:")}function em(t,e){const s=_i(t),r=_i(e),i=tm(s,r);return ku(i)}function tm(t,e){Gs(t),Gs(e);const s=Object.keys(t.att).concat(Object.keys(e.att)).sort((i,n)=>i.localeCompare(n)),r={att:{}};return s.forEach(i=>{var n,o;Object.keys(((n=t.att)==null?void 0:n[i])||{}).concat(Object.keys(((o=e.att)==null?void 0:o[i])||{})).sort((a,c)=>a.localeCompare(c)).forEach(a=>{var c,l;r.att[i]=Hg(Wg({},r.att[i]),{[a]:((c=t.att[i])==null?void 0:c[a])||((l=e.att[i])==null?void 0:l[a])})})}),r}function sm(t="",e){Gs(e);const s="I further authorize the stated URI to perform the following actions on my behalf: ";if(t.includes(s))return t;const r=[];let i=0;Object.keys(e.att).forEach(a=>{const c=Object.keys(e.att[a]).map(h=>({ability:h.split("/")[0],action:h.split("/")[1]}));c.sort((h,d)=>h.action.localeCompare(d.action));const l={};c.forEach(h=>{l[h.ability]||(l[h.ability]=[]),l[h.ability].push(h.action)});const u=Object.keys(l).map(h=>(i++,`(${i}) '${h}': '${l[h].join("', '")}' for '${a}'.`));r.push(u.join(", ").replace(".,","."))});const n=r.join(" "),o=`${s}${n}`;return`${t?t+" ":""}${o}`}function fc(t){var e;const s=_i(t);Gs(s);const r=(e=s.att)==null?void 0:e.eip155;return r?Object.keys(r).map(i=>i.split("/")[1]):[]}function gc(t){const e=_i(t);Gs(e);const s=[];return Object.values(e.att).forEach(r=>{Object.values(r).forEach(i=>{var n;(n=i?.[0])!=null&&n.chains&&s.push(i[0].chains)})}),[...new Set(s.flat())]}function hn(t){if(!t)return;const e=t?.[t.length-1];return Qg(e)?e:void 0}function Xn(t){if(!Number.isSafeInteger(t)||t<0)throw new Error("positive integer expected, got "+t)}function Ou(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}function yt(t,...e){if(!Ou(t))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(t.length))throw new Error("Uint8Array expected of length "+e+", got length="+t.length)}function mc(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function rm(t,e){yt(t);const s=e.outputLen;if(t.lengthnew Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4)),im=t=>new DataView(t.buffer,t.byteOffset,t.byteLength),nm=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;if(!nm)throw new Error("Non little-endian hardware is not supported");function om(t){if(typeof t!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(t))}function $o(t){if(typeof t=="string")t=om(t);else if(Ou(t))t=Ro(t);else throw new Error("Uint8Array expected, got "+typeof t);return t}function am(t,e){if(e==null||typeof e!="object")throw new Error("options must be defined");return Object.assign(t,e)}function cm(t,e){if(t.length!==e.length)return!1;let s=0;for(let r=0;r{function s(r,...i){if(yt(r),t.nonceLength!==void 0){const l=i[0];if(!l)throw new Error("nonce / iv required");t.varSizeNonce?yt(l):yt(l,t.nonceLength)}const n=t.tagLength;n&&i[1]!==void 0&&yt(i[1]);const o=e(r,...i),a=(l,u)=>{if(u!==void 0){if(l!==2)throw new Error("cipher output not supported");yt(u)}};let c=!1;return{encrypt(l,u){if(c)throw new Error("cannot encrypt() twice with same key + nonce");return c=!0,yt(l),a(o.encrypt.length,u),o.encrypt(l,u)},decrypt(l,u){if(yt(l),n&&l.length>i&n),a=Number(s&n);t.setUint32(e+4,o,r),t.setUint32(e+0,a,r)}function um(t){return t.byteOffset%4===0}function Ro(t){return Uint8Array.from(t)}function Dr(...t){for(let e=0;eUint8Array.from(t.split("").map(e=>e.charCodeAt(0))),hm=Tu("expand 16-byte k"),dm=Tu("expand 32-byte k"),pm=Ns(hm),fm=Ns(dm);function ce(t,e){return t<>>32-e}function Uo(t){return t.byteOffset%4===0}const Zi=64,gm=16,xu=2**32-1,vc=new Uint32Array;function mm(t,e,s,r,i,n,o,a){const c=i.length,l=new Uint8Array(Zi),u=Ns(l),h=Uo(i)&&Uo(n),d=h?Ns(i):vc,p=h?Ns(n):vc;for(let w=0;w=xu)throw new Error("arx: counter overflow");const m=Math.min(Zi,c-w);if(h&&m===Zi){const f=w/4;if(w%4!==0)throw new Error("arx: invalid block position");for(let y=0,b;y{yt(a),yt(c),yt(l);const d=l.length;if(u===void 0&&(u=new Uint8Array(d)),yt(u),Xn(h),h<0||h>=xu)throw new Error("arx: counter overflow");if(u.lengtht[e++]&255|(t[e++]&255)<<8;class ym{constructor(e){this.blockLen=16,this.outputLen=16,this.buffer=new Uint8Array(16),this.r=new Uint16Array(10),this.h=new Uint16Array(10),this.pad=new Uint16Array(8),this.pos=0,this.finished=!1,e=$o(e),yt(e,32);const s=Ve(e,0),r=Ve(e,2),i=Ve(e,4),n=Ve(e,6),o=Ve(e,8),a=Ve(e,10),c=Ve(e,12),l=Ve(e,14);this.r[0]=s&8191,this.r[1]=(s>>>13|r<<3)&8191,this.r[2]=(r>>>10|i<<6)&7939,this.r[3]=(i>>>7|n<<9)&8191,this.r[4]=(n>>>4|o<<12)&255,this.r[5]=o>>>1&8190,this.r[6]=(o>>>14|a<<2)&8191,this.r[7]=(a>>>11|c<<5)&8065,this.r[8]=(c>>>8|l<<8)&8191,this.r[9]=l>>>5&127;for(let u=0;u<8;u++)this.pad[u]=Ve(e,16+2*u)}process(e,s,r=!1){const i=r?0:2048,{h:n,r:o}=this,a=o[0],c=o[1],l=o[2],u=o[3],h=o[4],d=o[5],p=o[6],w=o[7],m=o[8],f=o[9],y=Ve(e,s+0),b=Ve(e,s+2),v=Ve(e,s+4),C=Ve(e,s+6),S=Ve(e,s+8),A=Ve(e,s+10),_=Ve(e,s+12),U=Ve(e,s+14);let E=n[0]+(y&8191),$=n[1]+((y>>>13|b<<3)&8191),I=n[2]+((b>>>10|v<<6)&8191),L=n[3]+((v>>>7|C<<9)&8191),H=n[4]+((C>>>4|S<<12)&8191),N=n[5]+(S>>>1&8191),T=n[6]+((S>>>14|A<<2)&8191),k=n[7]+((A>>>11|_<<5)&8191),B=n[8]+((_>>>8|U<<8)&8191),q=n[9]+(U>>>5|i),x=0,G=x+E*a+$*(5*f)+I*(5*m)+L*(5*w)+H*(5*p);x=G>>>13,G&=8191,G+=N*(5*d)+T*(5*h)+k*(5*u)+B*(5*l)+q*(5*c),x+=G>>>13,G&=8191;let Q=x+E*c+$*a+I*(5*f)+L*(5*m)+H*(5*w);x=Q>>>13,Q&=8191,Q+=N*(5*p)+T*(5*d)+k*(5*h)+B*(5*u)+q*(5*l),x+=Q>>>13,Q&=8191;let se=x+E*l+$*c+I*a+L*(5*f)+H*(5*m);x=se>>>13,se&=8191,se+=N*(5*w)+T*(5*p)+k*(5*d)+B*(5*h)+q*(5*u),x+=se>>>13,se&=8191;let Ee=x+E*u+$*l+I*c+L*a+H*(5*f);x=Ee>>>13,Ee&=8191,Ee+=N*(5*m)+T*(5*w)+k*(5*p)+B*(5*d)+q*(5*h),x+=Ee>>>13,Ee&=8191;let de=x+E*h+$*u+I*l+L*c+H*a;x=de>>>13,de&=8191,de+=N*(5*f)+T*(5*m)+k*(5*w)+B*(5*p)+q*(5*d),x+=de>>>13,de&=8191;let Oe=x+E*d+$*h+I*u+L*l+H*c;x=Oe>>>13,Oe&=8191,Oe+=N*a+T*(5*f)+k*(5*m)+B*(5*w)+q*(5*p),x+=Oe>>>13,Oe&=8191;let Le=x+E*p+$*d+I*h+L*u+H*l;x=Le>>>13,Le&=8191,Le+=N*c+T*a+k*(5*f)+B*(5*m)+q*(5*w),x+=Le>>>13,Le&=8191;let Xe=x+E*w+$*p+I*d+L*h+H*u;x=Xe>>>13,Xe&=8191,Xe+=N*l+T*c+k*a+B*(5*f)+q*(5*m),x+=Xe>>>13,Xe&=8191;let $e=x+E*m+$*w+I*p+L*d+H*h;x=$e>>>13,$e&=8191,$e+=N*u+T*l+k*c+B*a+q*(5*f),x+=$e>>>13,$e&=8191;let Re=x+E*f+$*m+I*w+L*p+H*d;x=Re>>>13,Re&=8191,Re+=N*h+T*u+k*l+B*c+q*a,x+=Re>>>13,Re&=8191,x=(x<<2)+x|0,x=x+G|0,G=x&8191,x=x>>>13,Q+=x,n[0]=G,n[1]=Q,n[2]=se,n[3]=Ee,n[4]=de,n[5]=Oe,n[6]=Le,n[7]=Xe,n[8]=$e,n[9]=Re}finalize(){const{h:e,pad:s}=this,r=new Uint16Array(10);let i=e[1]>>>13;e[1]&=8191;for(let a=2;a<10;a++)e[a]+=i,i=e[a]>>>13,e[a]&=8191;e[0]+=i*5,i=e[0]>>>13,e[0]&=8191,e[1]+=i,i=e[1]>>>13,e[1]&=8191,e[2]+=i,r[0]=e[0]+5,i=r[0]>>>13,r[0]&=8191;for(let a=1;a<10;a++)r[a]=e[a]+i,i=r[a]>>>13,r[a]&=8191;r[9]-=8192;let n=(i^1)-1;for(let a=0;a<10;a++)r[a]&=n;n=~n;for(let a=0;a<10;a++)e[a]=e[a]&n|r[a];e[0]=(e[0]|e[1]<<13)&65535,e[1]=(e[1]>>>3|e[2]<<10)&65535,e[2]=(e[2]>>>6|e[3]<<7)&65535,e[3]=(e[3]>>>9|e[4]<<4)&65535,e[4]=(e[4]>>>12|e[5]<<1|e[6]<<14)&65535,e[5]=(e[6]>>>2|e[7]<<11)&65535,e[6]=(e[7]>>>5|e[8]<<8)&65535,e[7]=(e[8]>>>8|e[9]<<5)&65535;let o=e[0]+s[0];e[0]=o&65535;for(let a=1;a<8;a++)o=(e[a]+s[a]|0)+(o>>>16)|0,e[a]=o&65535;Dr(r)}update(e){mc(this);const{buffer:s,blockLen:r}=this;e=$o(e);const i=e.length;for(let n=0;n>>0,e[n++]=r[o]>>>8;return e}digest(){const{buffer:e,outputLen:s}=this;this.digestInto(e);const r=e.slice(0,s);return this.destroy(),r}}function bm(t){const e=(r,i)=>t(i).update($o(r)).digest(),s=t(new Uint8Array(32));return e.outputLen=s.outputLen,e.blockLen=s.blockLen,e.create=r=>t(r),e}const vm=bm(t=>new ym(t));function Em(t,e,s,r,i,n=20){let o=t[0],a=t[1],c=t[2],l=t[3],u=e[0],h=e[1],d=e[2],p=e[3],w=e[4],m=e[5],f=e[6],y=e[7],b=i,v=s[0],C=s[1],S=s[2],A=o,_=a,U=c,E=l,$=u,I=h,L=d,H=p,N=w,T=m,k=f,B=y,q=b,x=v,G=C,Q=S;for(let Ee=0;Ee{t.update(e);const s=e.length%16;s&&t.update(Im.subarray(s))},Nm=new Uint8Array(32);function Cc(t,e,s,r,i){const n=t(e,s,Nm),o=vm.create(n);i&&Ec(o,i),Ec(o,r);const a=new Uint8Array(16),c=im(a);bc(c,0,BigInt(i?i.length:0),!0),bc(c,8,BigInt(r.length),!0),o.update(a);const l=o.digest();return Dr(n,a),l}const Am=t=>(e,s,r)=>({encrypt(i,n){const o=i.length;n=yc(o+16,n,!1),n.set(i);const a=n.subarray(0,-16);t(e,s,a,a,1);const c=Cc(t,e,s,a,r);return n.set(c,o),Dr(c),n},decrypt(i,n){n=yc(i.length-16,n,!1);const o=i.subarray(0,-16),a=i.subarray(-16),c=Cc(t,e,s,o,r);if(!cm(a,c))throw new Error("invalid tag");return n.set(i.subarray(0,-16)),t(e,s,n,n,1),Dr(c),n}}),$u=lm({blockSize:64,nonceLength:12,tagLength:16},Am(Cm));let Ru=class extends pa{constructor(e,s){super(),this.finished=!1,this.destroyed=!1,da(e);const r=Ur(s);if(this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const i=this.blockLen,n=new Uint8Array(i);n.set(r.length>i?e.create().update(r).digest():r);for(let o=0;onew Ru(t,e).update(s).digest();xn.create=(t,e)=>new Ru(t,e);function _m(t,e,s){return da(t),s===void 0&&(s=new Uint8Array(t.outputLen)),xn(t,Ur(s),Ur(e))}const Zn=new Uint8Array([0]),Ic=new Uint8Array;function Sm(t,e,s,r=32){if(da(t),Ai(r),r>255*t.outputLen)throw new Error("Length should be <= 255*HashLen");const i=Math.ceil(r/t.outputLen);s===void 0&&(s=Ic);const n=new Uint8Array(i*t.outputLen),o=xn.create(t,e),a=o._cloneInto(),c=new Uint8Array(o.outputLen);for(let l=0;lSm(t,_m(t,e,s),r,i);function km(t,e,s,r){if(typeof t.setBigUint64=="function")return t.setBigUint64(e,s,r);const i=BigInt(32),n=BigInt(4294967295),o=Number(s>>i&n),a=Number(s&n),c=r?4:0,l=r?0:4;t.setUint32(e+c,o,r),t.setUint32(e+l,a,r)}function Om(t,e,s){return t&e^~t&s}function Tm(t,e,s){return t&e^t&s^e&s}let xm=class extends pa{constructor(e,s,r,i){super(),this.blockLen=e,this.outputLen=s,this.padOffset=r,this.isLE=i,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=Yn(this.buffer)}update(e){Rr(this);const{view:s,buffer:r,blockLen:i}=this;e=Ur(e);const n=e.length;for(let o=0;oi-o&&(this.process(r,0),o=0);for(let h=o;hu.length)throw new Error("_sha2: outputLen bigger than state");for(let h=0;h>>3,m=qt(p,17)^qt(p,19)^p>>>10;gs[h]=m+gs[h-7]+w+gs[h-16]|0}let{A:r,B:i,C:n,D:o,E:a,F:c,G:l,H:u}=this;for(let h=0;h<64;h++){const d=qt(a,6)^qt(a,11)^qt(a,25),p=u+d+Om(a,c,l)+$m[h]+gs[h]|0,w=(qt(r,2)^qt(r,13)^qt(r,22))+Tm(r,i,n)|0;u=l,l=c,c=a,a=o+p|0,o=n,n=i,i=r,r=p+w|0}r=r+this.A|0,i=i+this.B|0,n=n+this.C|0,o=o+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,u=u+this.H|0,this.set(r,i,n,o,a,c,l,u)}roundClean(){gs.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}}const Mi=Cu(()=>new Rm);/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const $n=BigInt(0),Rn=BigInt(1),Um=BigInt(2);function Js(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}function Bi(t){if(!Js(t))throw new Error("Uint8Array expected")}function Lr(t,e){if(typeof e!="boolean")throw new Error(t+" boolean expected, got "+e)}const Dm=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function Mr(t){Bi(t);let e="";for(let s=0;s=ss._0&&t<=ss._9)return t-ss._0;if(t>=ss.A&&t<=ss.F)return t-(ss.A-10);if(t>=ss.a&&t<=ss.f)return t-(ss.a-10)}function Br(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);const e=t.length,s=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);const r=new Uint8Array(s);for(let i=0,n=0;itypeof t=="bigint"&&$n<=t;function Dn(t,e,s){return Qn(t)&&Qn(e)&&Qn(s)&&e<=t&&t$n;t>>=Rn,e+=1);return e}function jm(t,e){return t>>BigInt(e)&Rn}function qm(t,e,s){return t|(s?Rn:$n)<(Um<new Uint8Array(t),Ac=t=>Uint8Array.from(t);function Du(t,e,s){if(typeof t!="number"||t<2)throw new Error("hashLen must be a number");if(typeof e!="number"||e<2)throw new Error("qByteLen must be a number");if(typeof s!="function")throw new Error("hmacFn must be a function");let r=eo(t),i=eo(t),n=0;const o=()=>{r.fill(1),i.fill(0),n=0},a=(...u)=>s(i,r,...u),c=(u=eo())=>{i=a(Ac([0]),u),r=a(),u.length!==0&&(i=a(Ac([1]),u),r=a())},l=()=>{if(n++>=1e3)throw new Error("drbg: tried 1000 values");let u=0;const h=[];for(;u{o(),c(u);let d;for(;!(d=h(l()));)c();return o(),d}}const Fm={bigint:t=>typeof t=="bigint",function:t=>typeof t=="function",boolean:t=>typeof t=="boolean",string:t=>typeof t=="string",stringOrUint8Array:t=>typeof t=="string"||Js(t),isSafeInteger:t=>Number.isSafeInteger(t),array:t=>Array.isArray(t),field:(t,e)=>e.Fp.isValid(t),hash:t=>typeof t=="function"&&Number.isSafeInteger(t.outputLen)};function Jr(t,e,s={}){const r=(i,n,o)=>{const a=Fm[n];if(typeof a!="function")throw new Error("invalid validator function");const c=t[i];if(!(o&&c===void 0)&&!a(c,t))throw new Error("param "+String(i)+" is invalid. Expected "+n+", got "+c)};for(const[i,n]of Object.entries(e))r(i,n,!1);for(const[i,n]of Object.entries(s))r(i,n,!0);return t}const zm=()=>{throw new Error("not implemented")};function Do(t){const e=new WeakMap;return(s,...r)=>{const i=e.get(s);if(i!==void 0)return i;const n=t(s,...r);return e.set(s,n),n}}var Wm=Object.freeze({__proto__:null,isBytes:Js,abytes:Bi,abool:Lr,bytesToHex:Mr,numberToHexUnpadded:Sr,hexToNumber:ga,hexToBytes:Br,bytesToNumberBE:Ws,bytesToNumberLE:Si,numberToBytesBE:jr,numberToBytesLE:Un,numberToVarBytesBE:Lm,ensureBytes:wt,concatBytes:Pi,equalBytes:Mm,utf8ToBytes:Bm,inRange:Dn,aInRange:as,bitLen:Uu,bitGet:jm,bitSet:qm,bitMask:ma,createHmacDrbg:Du,validateObject:Jr,notImplemented:zm,memoized:Do});const He=BigInt(0),ke=BigInt(1),Ms=BigInt(2),Hm=BigInt(3),Lo=BigInt(4),_c=BigInt(5),Sc=BigInt(8);function ht(t,e){const s=t%e;return s>=He?s:e+s}function Lu(t,e,s){if(eHe;)e&ke&&(r=r*t%s),t=t*t%s,e>>=ke;return r}function Ut(t,e,s){let r=t;for(;e-- >He;)r*=r,r%=s;return r}function Mo(t,e){if(t===He)throw new Error("invert: expected non-zero number");if(e<=He)throw new Error("invert: expected positive modulus, got "+e);let s=ht(t,e),r=e,i=He,n=ke;for(;s!==He;){const o=r/s,a=r%s,c=i-n*o;r=s,s=a,i=n,n=c}if(r!==ke)throw new Error("invert: does not exist");return ht(i,e)}function Vm(t){const e=(t-ke)/Ms;let s,r,i;for(s=t-ke,r=0;s%Ms===He;s/=Ms,r++);for(i=Ms;i1e3)throw new Error("Cannot find square root: likely non-prime P");if(r===1){const o=(t+ke)/Lo;return function(a,c){const l=a.pow(c,o);if(!a.eql(a.sqr(l),c))throw new Error("Cannot find square root");return l}}const n=(s+ke)/Ms;return function(o,a){if(o.pow(a,e)===o.neg(o.ONE))throw new Error("Cannot find square root");let c=r,l=o.pow(o.mul(o.ONE,i),s),u=o.pow(a,n),h=o.pow(a,s);for(;!o.eql(h,o.ONE);){if(o.eql(h,o.ZERO))return o.ZERO;let d=1;for(let w=o.sqr(h);d(r[i]="function",r),e);return Jr(t,s)}function Ym(t,e,s){if(sHe;)s&ke&&(r=t.mul(r,i)),i=t.sqr(i),s>>=ke;return r}function Xm(t,e){const s=new Array(e.length),r=e.reduce((n,o,a)=>t.is0(o)?n:(s[a]=n,t.mul(n,o)),t.ONE),i=t.inv(r);return e.reduceRight((n,o,a)=>t.is0(o)?n:(s[a]=t.mul(n,s[a]),t.mul(n,o)),i),s}function Mu(t,e){const s=e!==void 0?e:t.toString(2).length,r=Math.ceil(s/8);return{nBitLength:s,nByteLength:r}}function Bu(t,e,s=!1,r={}){if(t<=He)throw new Error("invalid field: expected ORDER > 0, got "+t);const{nBitLength:i,nByteLength:n}=Mu(t,e);if(n>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");let o;const a=Object.freeze({ORDER:t,isLE:s,BITS:i,BYTES:n,MASK:ma(i),ZERO:He,ONE:ke,create:c=>ht(c,t),isValid:c=>{if(typeof c!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof c);return He<=c&&cc===He,isOdd:c=>(c&ke)===ke,neg:c=>ht(-c,t),eql:(c,l)=>c===l,sqr:c=>ht(c*c,t),add:(c,l)=>ht(c+l,t),sub:(c,l)=>ht(c-l,t),mul:(c,l)=>ht(c*l,t),pow:(c,l)=>Ym(a,c,l),div:(c,l)=>ht(c*Mo(l,t),t),sqrN:c=>c*c,addN:(c,l)=>c+l,subN:(c,l)=>c-l,mulN:(c,l)=>c*l,inv:c=>Mo(c,t),sqrt:r.sqrt||(c=>(o||(o=Km(t)),o(a,c))),invertBatch:c=>Xm(a,c),cmov:(c,l,u)=>u?l:c,toBytes:c=>s?Un(c,n):jr(c,n),fromBytes:c=>{if(c.length!==n)throw new Error("Field.fromBytes: expected "+n+" bytes, got "+c.length);return s?Si(c):Ws(c)}});return Object.freeze(a)}function ju(t){if(typeof t!="bigint")throw new Error("field order must be bigint");const e=t.toString(2).length;return Math.ceil(e/8)}function qu(t){const e=ju(t);return e+Math.ceil(e/2)}function Zm(t,e,s=!1){const r=t.length,i=ju(e),n=qu(e);if(r<16||r1024)throw new Error("expected "+n+"-1024 bytes of input, got "+r);const o=s?Si(t):Ws(t),a=ht(o,e-ke)+ke;return s?Un(a,i):jr(a,i)}const Pc=BigInt(0),Qi=BigInt(1);function to(t,e){const s=e.negate();return t?s:e}function Fu(t,e){if(!Number.isSafeInteger(t)||t<=0||t>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+t)}function so(t,e){Fu(t,e);const s=Math.ceil(e/t)+1,r=2**(t-1);return{windows:s,windowSize:r}}function Qm(t,e){if(!Array.isArray(t))throw new Error("array expected");t.forEach((s,r)=>{if(!(s instanceof e))throw new Error("invalid point at index "+r)})}function ew(t,e){if(!Array.isArray(t))throw new Error("array of scalars expected");t.forEach((s,r)=>{if(!e.isValid(s))throw new Error("invalid scalar at index "+r)})}const ro=new WeakMap,zu=new WeakMap;function io(t){return zu.get(t)||1}function tw(t,e){return{constTimeNegate:to,hasPrecomputes(s){return io(s)!==1},unsafeLadder(s,r,i=t.ZERO){let n=s;for(;r>Pc;)r&Qi&&(i=i.add(n)),n=n.double(),r>>=Qi;return i},precomputeWindow(s,r){const{windows:i,windowSize:n}=so(r,e),o=[];let a=s,c=a;for(let l=0;l>=h,w>o&&(w-=u,i+=Qi);const m=p,f=p+Math.abs(w)-1,y=d%2!==0,b=w<0;w===0?c=c.add(to(y,r[m])):a=a.add(to(b,r[f]))}return{p:a,f:c}},wNAFUnsafe(s,r,i,n=t.ZERO){const{windows:o,windowSize:a}=so(s,e),c=BigInt(2**s-1),l=2**s,u=BigInt(s);for(let h=0;h>=u,p>a&&(p-=l,i+=Qi),p===0)continue;let w=r[d+Math.abs(p)-1];p<0&&(w=w.negate()),n=n.add(w)}return n},getPrecomputes(s,r,i){let n=ro.get(r);return n||(n=this.precomputeWindow(r,s),s!==1&&ro.set(r,i(n))),n},wNAFCached(s,r,i){const n=io(s);return this.wNAF(n,this.getPrecomputes(n,s,i),r)},wNAFCachedUnsafe(s,r,i,n){const o=io(s);return o===1?this.unsafeLadder(s,r,n):this.wNAFUnsafe(o,this.getPrecomputes(o,s,i),r,n)},setWindowSize(s,r){Fu(r,e),zu.set(s,r),ro.delete(s)}}}function sw(t,e,s,r){if(Qm(s,t),ew(r,e),s.length!==r.length)throw new Error("arrays of points and scalars must have equal length");const i=t.ZERO,n=Uu(BigInt(s.length)),o=n>12?n-3:n>4?n-2:n?2:1,a=(1<=0;h-=o){c.fill(i);for(let p=0;p>BigInt(h)&BigInt(a));c[m]=c[m].add(s[p])}let d=i;for(let p=c.length-1,w=i;p>0;p--)w=w.add(c[p]),d=d.add(w);if(u=u.add(d),h!==0)for(let p=0;pht(b,s),i=e.montgomeryBits,n=Math.ceil(i/8),o=e.nByteLength,a=e.adjustScalarBytes||(b=>b),c=e.powPminus2||(b=>Lu(b,s-BigInt(2),s));function l(b,v,C){const S=r(b*(v-C));return v=r(v-S),C=r(C+S),[v,C]}const u=(e.a-BigInt(2))/BigInt(4);function h(b,v){as("u",b,cr,s),as("scalar",v,cr,s);const C=v,S=b;let A=no,_=cr,U=b,E=no,$=cr,I;for(let H=BigInt(i-1);H>=cr;H--){const N=C>>H&no;$^=N,I=l($,A,U),A=I[0],U=I[1],I=l($,_,E),_=I[0],E=I[1],$=N;const T=A+_,k=r(T*T),B=A-_,q=r(B*B),x=k-q,G=U+E,Q=U-E,se=r(Q*T),Ee=r(G*B),de=se+Ee,Oe=se-Ee;U=r(de*de),E=r(S*r(Oe*Oe)),A=r(k*q),_=r(x*(k+r(u*x)))}I=l($,A,U),A=I[0],U=I[1],I=l($,_,E),_=I[0],E=I[1];const L=c(_);return r(A*L)}function d(b){return Un(r(b),n)}function p(b){const v=wt("u coordinate",b,n);return o===32&&(v[31]&=127),Si(v)}function w(b){const v=wt("scalar",b),C=v.length;if(C!==n&&C!==o){let S=""+n+" or "+o;throw new Error("invalid scalar, expected "+S+" bytes, got "+C)}return Si(a(v))}function m(b,v){const C=p(v),S=w(b),A=h(C,S);if(A===cr)throw new Error("invalid private or public key received");return d(A)}const f=d(e.Gu);function y(b){return m(b,f)}return{scalarMult:m,scalarMultBase:y,getSharedSecret:(b,v)=>m(b,v),getPublicKey:b=>y(b),utils:{randomPrivateKey:()=>e.randomBytes(e.nByteLength)},GuBytes:f}}const Bo=BigInt("57896044618658097711785492504343953926634992332820282019728792003956564819949");BigInt(0);const nw=BigInt(1),kc=BigInt(2),ow=BigInt(3),aw=BigInt(5);BigInt(8);function cw(t){const e=BigInt(10),s=BigInt(20),r=BigInt(40),i=BigInt(80),n=Bo,o=t*t%n*t%n,a=Ut(o,kc,n)*o%n,c=Ut(a,nw,n)*t%n,l=Ut(c,aw,n)*c%n,u=Ut(l,e,n)*l%n,h=Ut(u,s,n)*u%n,d=Ut(h,r,n)*h%n,p=Ut(d,i,n)*d%n,w=Ut(p,i,n)*d%n,m=Ut(w,e,n)*l%n;return{pow_p_5_8:Ut(m,kc,n)*t%n,b2:o}}function lw(t){return t[0]&=248,t[31]&=127,t[31]|=64,t}const jo=iw({P:Bo,a:BigInt(486662),montgomeryBits:255,nByteLength:32,Gu:BigInt(9),powPminus2:t=>{const e=Bo,{pow_p_5_8:s,b2:r}=cw(t);return ht(Ut(s,ow,e)*r,e)},adjustScalarBytes:lw,randomBytes:Gr});function Oc(t){t.lowS!==void 0&&Lr("lowS",t.lowS),t.prehash!==void 0&&Lr("prehash",t.prehash)}function uw(t){const e=Wu(t);Jr(e,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});const{endo:s,Fp:r,a:i}=e;if(s){if(!r.eql(i,r.ZERO))throw new Error("invalid endomorphism, can only be defined for Koblitz curves that have a=0");if(typeof s!="object"||typeof s.beta!="bigint"||typeof s.splitScalar!="function")throw new Error("invalid endomorphism, expected beta: bigint and splitScalar: function")}return Object.freeze({...e})}const{bytesToNumberBE:hw,hexToBytes:dw}=Wm;class pw extends Error{constructor(e=""){super(e)}}const ns={Err:pw,_tlv:{encode:(t,e)=>{const{Err:s}=ns;if(t<0||t>256)throw new s("tlv.encode: wrong tag");if(e.length&1)throw new s("tlv.encode: unpadded data");const r=e.length/2,i=Sr(r);if(i.length/2&128)throw new s("tlv.encode: long form length too big");const n=r>127?Sr(i.length/2|128):"";return Sr(t)+n+i+e},decode(t,e){const{Err:s}=ns;let r=0;if(t<0||t>256)throw new s("tlv.encode: wrong tag");if(e.length<2||e[r++]!==t)throw new s("tlv.decode: wrong tlv");const i=e[r++],n=!!(i&128);let o=0;if(!n)o=i;else{const c=i&127;if(!c)throw new s("tlv.decode(long): indefinite length not supported");if(c>4)throw new s("tlv.decode(long): byte length is too big");const l=e.subarray(r,r+c);if(l.length!==c)throw new s("tlv.decode: length bytes not complete");if(l[0]===0)throw new s("tlv.decode(long): zero leftmost byte");for(const u of l)o=o<<8|u;if(r+=c,o<128)throw new s("tlv.decode(long): not minimal encoding")}const a=e.subarray(r,r+o);if(a.length!==o)throw new s("tlv.decode: wrong value length");return{v:a,l:e.subarray(r+o)}}},_int:{encode(t){const{Err:e}=ns;if(t{const b=f.toAffine();return Pi(Uint8Array.from([4]),s.toBytes(b.x),s.toBytes(b.y))}),n=e.fromBytes||(m=>{const f=m.subarray(1),y=s.fromBytes(f.subarray(0,s.BYTES)),b=s.fromBytes(f.subarray(s.BYTES,2*s.BYTES));return{x:y,y:b}});function o(m){const{a:f,b:y}=e,b=s.sqr(m),v=s.mul(b,m);return s.add(s.add(v,s.mul(m,f)),y)}if(!s.eql(s.sqr(e.Gy),o(e.Gx)))throw new Error("bad generator point: equation left != right");function a(m){return Dn(m,qe,e.n)}function c(m){const{allowedPrivateKeyLengths:f,nByteLength:y,wrapPrivateKey:b,n:v}=e;if(f&&typeof m!="bigint"){if(Js(m)&&(m=Mr(m)),typeof m!="string"||!f.includes(m.length))throw new Error("invalid private key");m=m.padStart(y*2,"0")}let C;try{C=typeof m=="bigint"?m:Ws(wt("private key",m,y))}catch{throw new Error("invalid private key, expected hex or "+y+" bytes, got "+typeof m)}return b&&(C=ht(C,v)),as("private key",C,qe,v),C}function l(m){if(!(m instanceof d))throw new Error("ProjectivePoint expected")}const u=Do((m,f)=>{const{px:y,py:b,pz:v}=m;if(s.eql(v,s.ONE))return{x:y,y:b};const C=m.is0();f==null&&(f=C?s.ONE:s.inv(v));const S=s.mul(y,f),A=s.mul(b,f),_=s.mul(v,f);if(C)return{x:s.ZERO,y:s.ZERO};if(!s.eql(_,s.ONE))throw new Error("invZ was invalid");return{x:S,y:A}}),h=Do(m=>{if(m.is0()){if(e.allowInfinityPoint&&!s.is0(m.py))return;throw new Error("bad point: ZERO")}const{x:f,y}=m.toAffine();if(!s.isValid(f)||!s.isValid(y))throw new Error("bad point: x or y not FE");const b=s.sqr(y),v=o(f);if(!s.eql(b,v))throw new Error("bad point: equation left != right");if(!m.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});class d{constructor(f,y,b){if(this.px=f,this.py=y,this.pz=b,f==null||!s.isValid(f))throw new Error("x required");if(y==null||!s.isValid(y))throw new Error("y required");if(b==null||!s.isValid(b))throw new Error("z required");Object.freeze(this)}static fromAffine(f){const{x:y,y:b}=f||{};if(!f||!s.isValid(y)||!s.isValid(b))throw new Error("invalid affine point");if(f instanceof d)throw new Error("projective point not allowed");const v=C=>s.eql(C,s.ZERO);return v(y)&&v(b)?d.ZERO:new d(y,b,s.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(f){const y=s.invertBatch(f.map(b=>b.pz));return f.map((b,v)=>b.toAffine(y[v])).map(d.fromAffine)}static fromHex(f){const y=d.fromAffine(n(wt("pointHex",f)));return y.assertValidity(),y}static fromPrivateKey(f){return d.BASE.multiply(c(f))}static msm(f,y){return sw(d,r,f,y)}_setWindowSize(f){w.setWindowSize(this,f)}assertValidity(){h(this)}hasEvenY(){const{y:f}=this.toAffine();if(s.isOdd)return!s.isOdd(f);throw new Error("Field doesn't support isOdd")}equals(f){l(f);const{px:y,py:b,pz:v}=this,{px:C,py:S,pz:A}=f,_=s.eql(s.mul(y,A),s.mul(C,v)),U=s.eql(s.mul(b,A),s.mul(S,v));return _&&U}negate(){return new d(this.px,s.neg(this.py),this.pz)}double(){const{a:f,b:y}=e,b=s.mul(y,Tc),{px:v,py:C,pz:S}=this;let A=s.ZERO,_=s.ZERO,U=s.ZERO,E=s.mul(v,v),$=s.mul(C,C),I=s.mul(S,S),L=s.mul(v,C);return L=s.add(L,L),U=s.mul(v,S),U=s.add(U,U),A=s.mul(f,U),_=s.mul(b,I),_=s.add(A,_),A=s.sub($,_),_=s.add($,_),_=s.mul(A,_),A=s.mul(L,A),U=s.mul(b,U),I=s.mul(f,I),L=s.sub(E,I),L=s.mul(f,L),L=s.add(L,U),U=s.add(E,E),E=s.add(U,E),E=s.add(E,I),E=s.mul(E,L),_=s.add(_,E),I=s.mul(C,S),I=s.add(I,I),E=s.mul(I,L),A=s.sub(A,E),U=s.mul(I,$),U=s.add(U,U),U=s.add(U,U),new d(A,_,U)}add(f){l(f);const{px:y,py:b,pz:v}=this,{px:C,py:S,pz:A}=f;let _=s.ZERO,U=s.ZERO,E=s.ZERO;const $=e.a,I=s.mul(e.b,Tc);let L=s.mul(y,C),H=s.mul(b,S),N=s.mul(v,A),T=s.add(y,b),k=s.add(C,S);T=s.mul(T,k),k=s.add(L,H),T=s.sub(T,k),k=s.add(y,v);let B=s.add(C,A);return k=s.mul(k,B),B=s.add(L,N),k=s.sub(k,B),B=s.add(b,v),_=s.add(S,A),B=s.mul(B,_),_=s.add(H,N),B=s.sub(B,_),E=s.mul($,k),_=s.mul(I,N),E=s.add(_,E),_=s.sub(H,E),E=s.add(H,E),U=s.mul(_,E),H=s.add(L,L),H=s.add(H,L),N=s.mul($,N),k=s.mul(I,k),H=s.add(H,N),N=s.sub(L,N),N=s.mul($,N),k=s.add(k,N),L=s.mul(H,k),U=s.add(U,L),L=s.mul(B,k),_=s.mul(T,_),_=s.sub(_,L),L=s.mul(T,H),E=s.mul(B,E),E=s.add(E,L),new d(_,U,E)}subtract(f){return this.add(f.negate())}is0(){return this.equals(d.ZERO)}wNAF(f){return w.wNAFCached(this,f,d.normalizeZ)}multiplyUnsafe(f){const{endo:y,n:b}=e;as("scalar",f,os,b);const v=d.ZERO;if(f===os)return v;if(this.is0()||f===qe)return this;if(!y||w.hasPrecomputes(this))return w.wNAFCachedUnsafe(this,f,d.normalizeZ);let{k1neg:C,k1:S,k2neg:A,k2:_}=y.splitScalar(f),U=v,E=v,$=this;for(;S>os||_>os;)S&qe&&(U=U.add($)),_&qe&&(E=E.add($)),$=$.double(),S>>=qe,_>>=qe;return C&&(U=U.negate()),A&&(E=E.negate()),E=new d(s.mul(E.px,y.beta),E.py,E.pz),U.add(E)}multiply(f){const{endo:y,n:b}=e;as("scalar",f,qe,b);let v,C;if(y){const{k1neg:S,k1:A,k2neg:_,k2:U}=y.splitScalar(f);let{p:E,f:$}=this.wNAF(A),{p:I,f:L}=this.wNAF(U);E=w.constTimeNegate(S,E),I=w.constTimeNegate(_,I),I=new d(s.mul(I.px,y.beta),I.py,I.pz),v=E.add(I),C=$.add(L)}else{const{p:S,f:A}=this.wNAF(f);v=S,C=A}return d.normalizeZ([v,C])[0]}multiplyAndAddUnsafe(f,y,b){const v=d.BASE,C=(A,_)=>_===os||_===qe||!A.equals(v)?A.multiplyUnsafe(_):A.multiply(_),S=C(this,y).add(C(f,b));return S.is0()?void 0:S}toAffine(f){return u(this,f)}isTorsionFree(){const{h:f,isTorsionFree:y}=e;if(f===qe)return!0;if(y)return y(d,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){const{h:f,clearCofactor:y}=e;return f===qe?this:y?y(d,this):this.multiplyUnsafe(e.h)}toRawBytes(f=!0){return Lr("isCompressed",f),this.assertValidity(),i(d,this,f)}toHex(f=!0){return Lr("isCompressed",f),Mr(this.toRawBytes(f))}}d.BASE=new d(e.Gx,e.Gy,s.ONE),d.ZERO=new d(s.ZERO,s.ONE,s.ZERO);const p=e.nBitLength,w=tw(d,e.endo?Math.ceil(p/2):p);return{CURVE:e,ProjectivePoint:d,normPrivateKeyToScalar:c,weierstrassEquation:o,isWithinCurveOrder:a}}function gw(t){const e=Wu(t);return Jr(e,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...e})}function mw(t){const e=gw(t),{Fp:s,n:r}=e,i=s.BYTES+1,n=2*s.BYTES+1;function o(N){return ht(N,r)}function a(N){return Mo(N,r)}const{ProjectivePoint:c,normPrivateKeyToScalar:l,weierstrassEquation:u,isWithinCurveOrder:h}=fw({...e,toBytes(N,T,k){const B=T.toAffine(),q=s.toBytes(B.x),x=Pi;return Lr("isCompressed",k),k?x(Uint8Array.from([T.hasEvenY()?2:3]),q):x(Uint8Array.from([4]),q,s.toBytes(B.y))},fromBytes(N){const T=N.length,k=N[0],B=N.subarray(1);if(T===i&&(k===2||k===3)){const q=Ws(B);if(!Dn(q,qe,s.ORDER))throw new Error("Point is not on curve");const x=u(q);let G;try{G=s.sqrt(x)}catch(se){const Ee=se instanceof Error?": "+se.message:"";throw new Error("Point is not on curve"+Ee)}const Q=(G&qe)===qe;return(k&1)===1!==Q&&(G=s.neg(G)),{x:q,y:G}}else if(T===n&&k===4){const q=s.fromBytes(B.subarray(0,s.BYTES)),x=s.fromBytes(B.subarray(s.BYTES,2*s.BYTES));return{x:q,y:x}}else{const q=i,x=n;throw new Error("invalid Point, expected length of "+q+", or uncompressed "+x+", got "+T)}}}),d=N=>Mr(jr(N,e.nByteLength));function p(N){const T=r>>qe;return N>T}function w(N){return p(N)?o(-N):N}const m=(N,T,k)=>Ws(N.slice(T,k));class f{constructor(T,k,B){this.r=T,this.s=k,this.recovery=B,this.assertValidity()}static fromCompact(T){const k=e.nByteLength;return T=wt("compactSignature",T,k*2),new f(m(T,0,k),m(T,k,2*k))}static fromDER(T){const{r:k,s:B}=ns.toSig(wt("DER",T));return new f(k,B)}assertValidity(){as("r",this.r,qe,r),as("s",this.s,qe,r)}addRecoveryBit(T){return new f(this.r,this.s,T)}recoverPublicKey(T){const{r:k,s:B,recovery:q}=this,x=A(wt("msgHash",T));if(q==null||![0,1,2,3].includes(q))throw new Error("recovery id invalid");const G=q===2||q===3?k+e.n:k;if(G>=s.ORDER)throw new Error("recovery id 2 or 3 invalid");const Q=(q&1)===0?"02":"03",se=c.fromHex(Q+d(G)),Ee=a(G),de=o(-x*Ee),Oe=o(B*Ee),Le=c.BASE.multiplyAndAddUnsafe(se,de,Oe);if(!Le)throw new Error("point at infinify");return Le.assertValidity(),Le}hasHighS(){return p(this.s)}normalizeS(){return this.hasHighS()?new f(this.r,o(-this.s),this.recovery):this}toDERRawBytes(){return Br(this.toDERHex())}toDERHex(){return ns.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return Br(this.toCompactHex())}toCompactHex(){return d(this.r)+d(this.s)}}const y={isValidPrivateKey(N){try{return l(N),!0}catch{return!1}},normPrivateKeyToScalar:l,randomPrivateKey:()=>{const N=qu(e.n);return Zm(e.randomBytes(N),e.n)},precompute(N=8,T=c.BASE){return T._setWindowSize(N),T.multiply(BigInt(3)),T}};function b(N,T=!0){return c.fromPrivateKey(N).toRawBytes(T)}function v(N){const T=Js(N),k=typeof N=="string",B=(T||k)&&N.length;return T?B===i||B===n:k?B===2*i||B===2*n:N instanceof c}function C(N,T,k=!0){if(v(N))throw new Error("first arg must be private key");if(!v(T))throw new Error("second arg must be public key");return c.fromHex(T).multiply(l(N)).toRawBytes(k)}const S=e.bits2int||function(N){if(N.length>8192)throw new Error("input is too large");const T=Ws(N),k=N.length*8-e.nBitLength;return k>0?T>>BigInt(k):T},A=e.bits2int_modN||function(N){return o(S(N))},_=ma(e.nBitLength);function U(N){return as("num < 2^"+e.nBitLength,N,os,_),jr(N,e.nByteLength)}function E(N,T,k=$){if(["recovered","canonical"].some($e=>$e in k))throw new Error("sign() legacy options not supported");const{hash:B,randomBytes:q}=e;let{lowS:x,prehash:G,extraEntropy:Q}=k;x==null&&(x=!0),N=wt("msgHash",N),Oc(k),G&&(N=wt("prehashed msgHash",B(N)));const se=A(N),Ee=l(T),de=[U(Ee),U(se)];if(Q!=null&&Q!==!1){const $e=Q===!0?q(s.BYTES):Q;de.push(wt("extraEntropy",$e))}const Oe=Pi(...de),Le=se;function Xe($e){const Re=S($e);if(!h(Re))return;const Os=a(Re),Xt=c.BASE.multiply(Re).toAffine(),jt=o(Xt.x);if(jt===os)return;const Zt=o(Os*o(Le+jt*Ee));if(Zt===os)return;let ir=(Xt.x===jt?0:2)|Number(Xt.y&qe),Hi=Zt;return x&&p(Zt)&&(Hi=w(Zt),ir^=1),new f(jt,Hi,ir)}return{seed:Oe,k2sig:Xe}}const $={lowS:e.lowS,prehash:!1},I={lowS:e.lowS,prehash:!1};function L(N,T,k=$){const{seed:B,k2sig:q}=E(N,T,k),x=e;return Du(x.hash.outputLen,x.nByteLength,x.hmac)(B,q)}c.BASE._setWindowSize(8);function H(N,T,k,B=I){const q=N;T=wt("msgHash",T),k=wt("publicKey",k);const{lowS:x,prehash:G,format:Q}=B;if(Oc(B),"strict"in B)throw new Error("options.strict was renamed to lowS");if(Q!==void 0&&Q!=="compact"&&Q!=="der")throw new Error("format must be compact or der");const se=typeof q=="string"||Js(q),Ee=!se&&!Q&&typeof q=="object"&&q!==null&&typeof q.r=="bigint"&&typeof q.s=="bigint";if(!se&&!Ee)throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance");let de,Oe;try{if(Ee&&(de=new f(q.r,q.s)),se){try{Q!=="compact"&&(de=f.fromDER(q))}catch(Zt){if(!(Zt instanceof ns.Err))throw Zt}!de&&Q!=="der"&&(de=f.fromCompact(q))}Oe=c.fromHex(k)}catch{return!1}if(!de||x&&de.hasHighS())return!1;G&&(T=e.hash(T));const{r:Le,s:Xe}=de,$e=A(T),Re=a(Xe),Os=o($e*Re),Xt=o(Le*Re),jt=c.BASE.multiplyAndAddUnsafe(Oe,Os,Xt)?.toAffine();return jt?o(jt.x)===Le:!1}return{CURVE:e,getPublicKey:b,getSharedSecret:C,sign:L,verify:H,ProjectivePoint:c,Signature:f,utils:y}}function ww(t){return{hash:t,hmac:(e,...s)=>xn(t,e,Eg(...s)),randomBytes:Gr}}function yw(t,e){const s=r=>mw({...t,...ww(r)});return{...s(e),create:s}}const Hu=Bu(BigInt("0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff")),bw=Hu.create(BigInt("-3")),vw=BigInt("0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b"),Ew=yw({a:bw,b:vw,Fp:Hu,n:BigInt("0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551"),Gx:BigInt("0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296"),Gy:BigInt("0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5"),h:BigInt(1),lowS:!1},Mi),Vu="base10",st="base16",Mt="base64pad",bs="base64url",ji="utf8",Ku=0,cs=1,qi=2,Cw=0,xc=1,yi=12,wa=32;function Iw(){const t=jo.utils.randomPrivateKey(),e=jo.getPublicKey(t);return{privateKey:dt(t,st),publicKey:dt(e,st)}}function qo(){const t=Gr(wa);return dt(t,st)}function Nw(t,e){const s=jo.getSharedSecret(kt(t,st),kt(e,st)),r=Pm(Mi,s,void 0,void 0,wa);return dt(r,st)}function dn(t){const e=Mi(kt(t,st));return dt(e,st)}function Kt(t){const e=Mi(kt(t,ji));return dt(e,st)}function Gu(t){return kt(`${t}`,Vu)}function Ys(t){return Number(dt(t,Vu))}function Ju(t){return t.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function Yu(t){const e=t.replace(/-/g,"+").replace(/_/g,"/"),s=(4-e.length%4)%4;return e+"=".repeat(s)}function Aw(t){const e=Gu(typeof t.type<"u"?t.type:Ku);if(Ys(e)===cs&&typeof t.senderPublicKey>"u")throw new Error("Missing sender public key for type 1 envelope");const s=typeof t.senderPublicKey<"u"?kt(t.senderPublicKey,st):void 0,r=typeof t.iv<"u"?kt(t.iv,st):Gr(yi),i=kt(t.symKey,st),n=$u(i,r).encrypt(kt(t.message,ji)),o=Xu({type:e,sealed:n,iv:r,senderPublicKey:s});return t.encoding===bs?Ju(o):o}function _w(t){const e=kt(t.symKey,st),{sealed:s,iv:r}=ki({encoded:t.encoded,encoding:t.encoding}),i=$u(e,r).decrypt(s);if(i===null)throw new Error("Failed to decrypt");return dt(i,ji)}function Sw(t,e){const s=Gu(qi),r=Gr(yi),i=kt(t,ji),n=Xu({type:s,sealed:i,iv:r});return e===bs?Ju(n):n}function Pw(t,e){const{sealed:s}=ki({encoded:t,encoding:e});return dt(s,ji)}function Xu(t){if(Ys(t.type)===qi)return dt(pi([t.type,t.sealed]),Mt);if(Ys(t.type)===cs){if(typeof t.senderPublicKey>"u")throw new Error("Missing sender public key for type 1 envelope");return dt(pi([t.type,t.senderPublicKey,t.iv,t.sealed]),Mt)}return dt(pi([t.type,t.iv,t.sealed]),Mt)}function ki(t){const e=(t.encoding||Mt)===bs?Yu(t.encoded):t.encoded,s=kt(e,Mt),r=s.slice(Cw,xc),i=xc;if(Ys(r)===cs){const c=i+wa,l=c+yi,u=s.slice(i,c),h=s.slice(c,l),d=s.slice(l);return{type:r,sealed:d,iv:h,senderPublicKey:u}}if(Ys(r)===qi){const c=s.slice(i),l=Gr(yi);return{type:r,sealed:c,iv:l}}const n=i+yi,o=s.slice(i,n),a=s.slice(n);return{type:r,sealed:a,iv:o}}function kw(t,e){const s=ki({encoded:t,encoding:e?.encoding});return Zu({type:Ys(s.type),senderPublicKey:typeof s.senderPublicKey<"u"?dt(s.senderPublicKey,st):void 0,receiverPublicKey:e?.receiverPublicKey})}function Zu(t){const e=t?.type||Ku;if(e===cs){if(typeof t?.senderPublicKey>"u")throw new Error("missing sender public key");if(typeof t?.receiverPublicKey>"u")throw new Error("missing receiver public key")}return{type:e,senderPublicKey:t?.senderPublicKey,receiverPublicKey:t?.receiverPublicKey}}function $c(t){return t.type===cs&&typeof t.senderPublicKey=="string"&&typeof t.receiverPublicKey=="string"}function Rc(t){return t.type===qi}function Ow(t){const e=Buffer.from(t.x,"base64"),s=Buffer.from(t.y,"base64");return pi([new Uint8Array([4]),e,s])}function Tw(t,e){const[s,r,i]=t.split("."),n=Buffer.from(Yu(i),"base64");if(n.length!==64)throw new Error("Invalid signature length");const o=n.slice(0,32),a=n.slice(32,64),c=`${s}.${r}`,l=Mi(c),u=Ow(e);if(!Ew.verify(pi([o,a]),l,u))throw new Error("Invalid signature");return Co(t).payload}const xw="irn";function Nn(t){return t?.relay||{protocol:xw}}function ui(t){const e=Gh[t];if(typeof e>"u")throw new Error(`Relay Protocol not supported: ${t}`);return e}function $w(t,e="-"){const s={},r="relay"+e;return Object.keys(t).forEach(i=>{if(i.startsWith(r)){const n=i.replace(r,""),o=t[i];s[n]=o}}),s}function Uc(t){if(!t.includes("wc:")){const l=vu(t);l!=null&&l.includes("wc:")&&(t=l)}t=t.includes("wc://")?t.replace("wc://",""):t,t=t.includes("wc:")?t.replace("wc:",""):t;const e=t.indexOf(":"),s=t.indexOf("?")!==-1?t.indexOf("?"):void 0,r=t.substring(0,e),i=t.substring(e+1,s).split("@"),n=typeof s<"u"?t.substring(s):"",o=new URLSearchParams(n),a={};o.forEach((l,u)=>{a[u]=l});const c=typeof a.methods=="string"?a.methods.split(","):void 0;return{protocol:r,topic:Rw(i[0]),version:parseInt(i[1],10),symKey:a.symKey,relay:$w(a),methods:c,expiryTimestamp:a.expiryTimestamp?parseInt(a.expiryTimestamp,10):void 0}}function Rw(t){return t.startsWith("//")?t.substring(2):t}function Uw(t,e="-"){const s="relay",r={};return Object.keys(t).forEach(i=>{const n=i,o=s+e+n;t[n]&&(r[o]=t[n])}),r}function Dc(t){const e=new URLSearchParams,s=Uw(t.relay);Object.keys(s).sort().forEach(i=>{e.set(i,s[i])}),e.set("symKey",t.symKey),t.expiryTimestamp&&e.set("expiryTimestamp",t.expiryTimestamp.toString()),t.methods&&e.set("methods",t.methods.join(","));const r=e.toString();return`${t.protocol}:${t.topic}@${t.version}?${r}`}function en(t,e,s){return`${t}?wc_ev=${s}&topic=${e}`}var Dw=Object.defineProperty,Lw=Object.defineProperties,Mw=Object.getOwnPropertyDescriptors,Lc=Object.getOwnPropertySymbols,Bw=Object.prototype.hasOwnProperty,jw=Object.prototype.propertyIsEnumerable,Mc=(t,e,s)=>e in t?Dw(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,qw=(t,e)=>{for(var s in e||(e={}))Bw.call(e,s)&&Mc(t,s,e[s]);if(Lc)for(var s of Lc(e))jw.call(e,s)&&Mc(t,s,e[s]);return t},Fw=(t,e)=>Lw(t,Mw(e));function Yr(t){const e=[];return t.forEach(s=>{const[r,i]=s.split(":");e.push(`${r}:${i}`)}),e}function zw(t){const e=[];return Object.values(t).forEach(s=>{e.push(...Yr(s.accounts))}),e}function Ww(t,e){const s=[];return Object.values(t).forEach(r=>{Yr(r.accounts).includes(e)&&s.push(...r.methods)}),s}function Hw(t,e){const s=[];return Object.values(t).forEach(r=>{Yr(r.accounts).includes(e)&&s.push(...r.events)}),s}function Ln(t){return t.includes(":")}function Pr(t){return Ln(t)?t.split(":")[0]:t}function Bc(t){var e,s,r;const i={};if(!_s(t))return i;for(const[n,o]of Object.entries(t)){const a=Ln(n)?[n]:o.chains,c=o.methods||[],l=o.events||[],u=Pr(n);i[u]=Fw(qw({},i[u]),{chains:Jt(a,(e=i[u])==null?void 0:e.chains),methods:Jt(c,(s=i[u])==null?void 0:s.methods),events:Jt(l,(r=i[u])==null?void 0:r.events)})}return i}function Vw(t){const e={};return t?.forEach(s=>{var r;const[i,n]=s.split(":");e[i]||(e[i]={accounts:[],chains:[],events:[],methods:[]}),e[i].accounts.push(s),(r=e[i].chains)==null||r.push(`${i}:${n}`)}),e}function jc(t,e){e=e.map(r=>r.replace("did:pkh:",""));const s=Vw(e);for(const[r,i]of Object.entries(s))i.methods?i.methods=Jt(i.methods,t):i.methods=t,i.events=["chainChanged","accountsChanged"];return s}function Kw(t,e){var s,r,i,n,o,a;const c=Bc(t),l=Bc(e),u={},h=Object.keys(c).concat(Object.keys(l));for(const d of h)u[d]={chains:Jt((s=c[d])==null?void 0:s.chains,(r=l[d])==null?void 0:r.chains),methods:Jt((i=c[d])==null?void 0:i.methods,(n=l[d])==null?void 0:n.methods),events:Jt((o=c[d])==null?void 0:o.events,(a=l[d])==null?void 0:a.events)};return u}const Gw={INVALID_METHOD:{message:"Invalid method.",code:1001},INVALID_EVENT:{message:"Invalid event.",code:1002},INVALID_UPDATE_REQUEST:{message:"Invalid update request.",code:1003},INVALID_EXTEND_REQUEST:{message:"Invalid extend request.",code:1004},INVALID_SESSION_SETTLE_REQUEST:{message:"Invalid session settle request.",code:1005},UNAUTHORIZED_METHOD:{message:"Unauthorized method.",code:3001},UNAUTHORIZED_EVENT:{message:"Unauthorized event.",code:3002},UNAUTHORIZED_UPDATE_REQUEST:{message:"Unauthorized update request.",code:3003},UNAUTHORIZED_EXTEND_REQUEST:{message:"Unauthorized extend request.",code:3004},USER_REJECTED:{message:"User rejected.",code:5e3},USER_REJECTED_CHAINS:{message:"User rejected chains.",code:5001},USER_REJECTED_METHODS:{message:"User rejected methods.",code:5002},USER_REJECTED_EVENTS:{message:"User rejected events.",code:5003},UNSUPPORTED_CHAINS:{message:"Unsupported chains.",code:5100},UNSUPPORTED_METHODS:{message:"Unsupported methods.",code:5101},UNSUPPORTED_EVENTS:{message:"Unsupported events.",code:5102},UNSUPPORTED_ACCOUNTS:{message:"Unsupported accounts.",code:5103},UNSUPPORTED_NAMESPACE_KEY:{message:"Unsupported namespace key.",code:5104},USER_DISCONNECTED:{message:"User disconnected.",code:6e3},SESSION_SETTLEMENT_FAILED:{message:"Session settlement failed.",code:7e3},WC_METHOD_UNSUPPORTED:{message:"Unsupported wc_ method.",code:10001}},Jw={NOT_INITIALIZED:{message:"Not initialized.",code:1},NO_MATCHING_KEY:{message:"No matching key.",code:2},RESTORE_WILL_OVERRIDE:{message:"Restore will override.",code:3},RESUBSCRIBED:{message:"Resubscribed.",code:4},MISSING_OR_INVALID:{message:"Missing or invalid.",code:5},EXPIRED:{message:"Expired.",code:6},UNKNOWN_TYPE:{message:"Unknown type.",code:7},MISMATCHED_TOPIC:{message:"Mismatched topic.",code:8},NON_CONFORMING_NAMESPACES:{message:"Non conforming namespaces.",code:9}};function R(t,e){const{message:s,code:r}=Jw[t];return{message:e?`${s} ${e}`:s,code:r}}function we(t,e){const{message:s,code:r}=Gw[t];return{message:e?`${s} ${e}`:s,code:r}}function As(t,e){return!!Array.isArray(t)}function _s(t){return Object.getPrototypeOf(t)===Object.prototype&&Object.keys(t).length}function Je(t){return typeof t>"u"}function xe(t,e){return e&&Je(t)?!0:typeof t=="string"&&!!t.trim().length}function ya(t,e){return e&&Je(t)?!0:typeof t=="number"&&!isNaN(t)}function Yw(t,e){const{requiredNamespaces:s}=e,r=Object.keys(t.namespaces),i=Object.keys(s);let n=!0;return Fs(i,r)?(r.forEach(o=>{const{accounts:a,methods:c,events:l}=t.namespaces[o],u=Yr(a),h=s[o];(!Fs(gu(o,h),u)||!Fs(h.methods,c)||!Fs(h.events,l))&&(n=!1)}),n):!1}function An(t){return xe(t,!1)&&t.includes(":")?t.split(":").length===2:!1}function Xw(t){if(xe(t,!1)&&t.includes(":")){const e=t.split(":");if(e.length===3){const s=e[0]+":"+e[1];return!!e[2]&&An(s)}}return!1}function Zw(t){function e(s){try{return typeof new URL(s)<"u"}catch{return!1}}try{if(xe(t,!1)){if(e(t))return!0;const s=vu(t);return e(s)}}catch{}return!1}function Qw(t){var e;return(e=t?.proposer)==null?void 0:e.publicKey}function ey(t){return t?.topic}function ty(t,e){let s=null;return xe(t?.publicKey,!1)||(s=R("MISSING_OR_INVALID",`${e} controller public key should be a string`)),s}function qc(t){let e=!0;return As(t)?t.length&&(e=t.every(s=>xe(s,!1))):e=!1,e}function sy(t,e,s){let r=null;return As(e)&&e.length?e.forEach(i=>{r||An(i)||(r=we("UNSUPPORTED_CHAINS",`${s}, chain ${i} should be a string and conform to "namespace:chainId" format`))}):An(t)||(r=we("UNSUPPORTED_CHAINS",`${s}, chains must be defined as "namespace:chainId" e.g. "eip155:1": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: ["eip155:1", "eip155:5"] }`)),r}function ry(t,e,s){let r=null;return Object.entries(t).forEach(([i,n])=>{if(r)return;const o=sy(i,gu(i,n),`${e} ${s}`);o&&(r=o)}),r}function iy(t,e){let s=null;return As(t)?t.forEach(r=>{s||Xw(r)||(s=we("UNSUPPORTED_ACCOUNTS",`${e}, account ${r} should be a string and conform to "namespace:chainId:address" format`))}):s=we("UNSUPPORTED_ACCOUNTS",`${e}, accounts should be an array of strings conforming to "namespace:chainId:address" format`),s}function ny(t,e){let s=null;return Object.values(t).forEach(r=>{if(s)return;const i=iy(r?.accounts,`${e} namespace`);i&&(s=i)}),s}function oy(t,e){let s=null;return qc(t?.methods)?qc(t?.events)||(s=we("UNSUPPORTED_EVENTS",`${e}, events should be an array of strings or empty array for no events`)):s=we("UNSUPPORTED_METHODS",`${e}, methods should be an array of strings or empty array for no methods`),s}function Qu(t,e){let s=null;return Object.values(t).forEach(r=>{if(s)return;const i=oy(r,`${e}, namespace`);i&&(s=i)}),s}function ay(t,e,s){let r=null;if(t&&_s(t)){const i=Qu(t,e);i&&(r=i);const n=ry(t,e,s);n&&(r=n)}else r=R("MISSING_OR_INVALID",`${e}, ${s} should be an object with data`);return r}function oo(t,e){let s=null;if(t&&_s(t)){const r=Qu(t,e);r&&(s=r);const i=ny(t,e);i&&(s=i)}else s=R("MISSING_OR_INVALID",`${e}, namespaces should be an object with data`);return s}function eh(t){return xe(t.protocol,!0)}function cy(t,e){let s=!1;return t?t&&As(t)&&t.length&&t.forEach(r=>{s=eh(r)}):s=!0,s}function ly(t){return typeof t=="number"}function ut(t){return typeof t<"u"&&typeof t!==null}function uy(t){return!(!t||typeof t!="object"||!t.code||!ya(t.code,!1)||!t.message||!xe(t.message,!1))}function hy(t){return!(Je(t)||!xe(t.method,!1))}function dy(t){return!(Je(t)||Je(t.result)&&Je(t.error)||!ya(t.id,!1)||!xe(t.jsonrpc,!1))}function py(t){return!(Je(t)||!xe(t.name,!1))}function Fc(t,e){return!(!An(e)||!zw(t).includes(e))}function fy(t,e,s){return xe(s,!1)?Ww(t,e).includes(s):!1}function gy(t,e,s){return xe(s,!1)?Hw(t,e).includes(s):!1}function zc(t,e,s){let r=null;const i=my(t),n=wy(e),o=Object.keys(i),a=Object.keys(n),c=Wc(Object.keys(t)),l=Wc(Object.keys(e)),u=c.filter(h=>!l.includes(h));return u.length&&(r=R("NON_CONFORMING_NAMESPACES",`${s} namespaces keys don't satisfy requiredNamespaces. - Required: ${u.toString()} - Received: ${Object.keys(e).toString()}`)),Fs(o,a)||(r=R("NON_CONFORMING_NAMESPACES",`${s} namespaces chains don't satisfy required namespaces. - Required: ${o.toString()} - Approved: ${a.toString()}`)),Object.keys(e).forEach(h=>{if(!h.includes(":")||r)return;const d=Yr(e[h].accounts);d.includes(h)||(r=R("NON_CONFORMING_NAMESPACES",`${s} namespaces accounts don't satisfy namespace accounts for ${h} - Required: ${h} - Approved: ${d.toString()}`))}),o.forEach(h=>{r||(Fs(i[h].methods,n[h].methods)?Fs(i[h].events,n[h].events)||(r=R("NON_CONFORMING_NAMESPACES",`${s} namespaces events don't satisfy namespace events for ${h}`)):r=R("NON_CONFORMING_NAMESPACES",`${s} namespaces methods don't satisfy namespace methods for ${h}`))}),r}function my(t){const e={};return Object.keys(t).forEach(s=>{var r;s.includes(":")?e[s]=t[s]:(r=t[s].chains)==null||r.forEach(i=>{e[i]={methods:t[s].methods,events:t[s].events}})}),e}function Wc(t){return[...new Set(t.map(e=>e.includes(":")?e.split(":")[0]:e))]}function wy(t){const e={};return Object.keys(t).forEach(s=>{s.includes(":")?e[s]=t[s]:Yr(t[s].accounts)?.forEach(i=>{e[i]={accounts:t[s].accounts.filter(n=>n.includes(`${i}:`)),methods:t[s].methods,events:t[s].events}})}),e}function yy(t,e){return ya(t,!1)&&t<=e.max&&t>=e.min}function Hc(){const t=Di();return new Promise(e=>{switch(t){case bt.browser:e(by());break;case bt.reactNative:e(vy());break;case bt.node:e(Ey());break;default:e(!0)}})}function by(){return Kr()&&navigator?.onLine}async function vy(){return ks()&&typeof global<"u"&&global!=null&&global.NetInfo?(await(global==null?void 0:global.NetInfo.fetch()))?.isConnected:!0}function Ey(){return!0}function Cy(t){switch(Di()){case bt.browser:Iy(t);break;case bt.reactNative:Ny(t);break}}function Iy(t){!ks()&&Kr()&&(window.addEventListener("online",()=>t(!0)),window.addEventListener("offline",()=>t(!1)))}function Ny(t){ks()&&typeof global<"u"&&global!=null&&global.NetInfo&&global?.NetInfo.addEventListener(e=>t(e?.isConnected))}function Ay(){var t;return Kr()&&ls.getDocument()?((t=ls.getDocument())==null?void 0:t.visibilityState)==="visible":!0}const ao={};class ti{static get(e){return ao[e]}static set(e,s){ao[e]=s}static delete(e){delete ao[e]}}var _y={};const th="wc",sh=2,Fo="core",Yt=`${th}@2:${Fo}:`,Sy={logger:"error"},Py={database:":memory:"},ky="crypto",Vc="client_ed25519_seed",Oy=D.ONE_DAY,Ty="keychain",xy="0.3",$y="messages",Ry="0.3",Kc=D.SIX_HOURS,Uy="publisher",rh="irn",Dy="error",ih="wss://relay.walletconnect.org",Ly="relayer",Fe={message:"relayer_message",message_ack:"relayer_message_ack",connect:"relayer_connect",disconnect:"relayer_disconnect",error:"relayer_error",connection_stalled:"relayer_connection_stalled",transport_closed:"relayer_transport_closed",publish:"relayer_publish"},My="_subscription",At={payload:"payload",connect:"connect",disconnect:"disconnect",error:"error"},By=.1,zo="2.21.0",Ae={link_mode:"link_mode",relay:"relay"},pn={inbound:"inbound",outbound:"outbound"},jy="0.3",qy="WALLETCONNECT_CLIENT_ID",Gc="WALLETCONNECT_LINK_MODE_APPS",gt={created:"subscription_created",deleted:"subscription_deleted",expired:"subscription_expired",disabled:"subscription_disabled",sync:"subscription_sync",resubscribed:"subscription_resubscribed"},Fy="subscription",zy="0.3",Wy="pairing",Hy="0.3",si={wc_pairingDelete:{req:{ttl:D.ONE_DAY,prompt:!1,tag:1e3},res:{ttl:D.ONE_DAY,prompt:!1,tag:1001}},wc_pairingPing:{req:{ttl:D.THIRTY_SECONDS,prompt:!1,tag:1002},res:{ttl:D.THIRTY_SECONDS,prompt:!1,tag:1003}},unregistered_method:{req:{ttl:D.ONE_DAY,prompt:!1,tag:0},res:{ttl:D.ONE_DAY,prompt:!1,tag:0}}},Bs={create:"pairing_create",expire:"pairing_expire",delete:"pairing_delete",ping:"pairing_ping"},xt={created:"history_created",updated:"history_updated",deleted:"history_deleted",sync:"history_sync"},Vy="history",Ky="0.3",Gy="expirer",Pt={created:"expirer_created",deleted:"expirer_deleted",expired:"expirer_expired",sync:"expirer_sync"},Jy="0.3",Yy="verify-api",Xy="https://verify.walletconnect.com",nh="https://verify.walletconnect.org",bi=nh,Zy=`${bi}/v3`,Qy=[Xy,nh],eb="echo",tb="https://echo.walletconnect.com",Wt={pairing_started:"pairing_started",pairing_uri_validation_success:"pairing_uri_validation_success",pairing_uri_not_expired:"pairing_uri_not_expired",store_new_pairing:"store_new_pairing",subscribing_pairing_topic:"subscribing_pairing_topic",subscribe_pairing_topic_success:"subscribe_pairing_topic_success",existing_pairing:"existing_pairing",pairing_not_expired:"pairing_not_expired",emit_inactive_pairing:"emit_inactive_pairing",emit_session_proposal:"emit_session_proposal",subscribing_to_pairing_topic:"subscribing_to_pairing_topic"},is={no_wss_connection:"no_wss_connection",no_internet_connection:"no_internet_connection",malformed_pairing_uri:"malformed_pairing_uri",active_pairing_already_exists:"active_pairing_already_exists",subscribe_pairing_topic_failure:"subscribe_pairing_topic_failure",pairing_expired:"pairing_expired",proposal_expired:"proposal_expired",proposal_listener_not_found:"proposal_listener_not_found"},$t={session_approve_started:"session_approve_started",proposal_not_expired:"proposal_not_expired",session_namespaces_validation_success:"session_namespaces_validation_success",create_session_topic:"create_session_topic",subscribing_session_topic:"subscribing_session_topic",subscribe_session_topic_success:"subscribe_session_topic_success",publishing_session_approve:"publishing_session_approve",session_approve_publish_success:"session_approve_publish_success",store_session:"store_session",publishing_session_settle:"publishing_session_settle",session_settle_publish_success:"session_settle_publish_success"},xs={no_internet_connection:"no_internet_connection",no_wss_connection:"no_wss_connection",proposal_expired:"proposal_expired",subscribe_session_topic_failure:"subscribe_session_topic_failure",session_approve_publish_failure:"session_approve_publish_failure",session_settle_publish_failure:"session_settle_publish_failure",session_approve_namespace_validation_failure:"session_approve_namespace_validation_failure",proposal_not_found:"proposal_not_found"},$s={authenticated_session_approve_started:"authenticated_session_approve_started",create_authenticated_session_topic:"create_authenticated_session_topic",cacaos_verified:"cacaos_verified",store_authenticated_session:"store_authenticated_session",subscribing_authenticated_session_topic:"subscribing_authenticated_session_topic",subscribe_authenticated_session_topic_success:"subscribe_authenticated_session_topic_success",publishing_authenticated_session_approve:"publishing_authenticated_session_approve"},ri={no_internet_connection:"no_internet_connection",invalid_cacao:"invalid_cacao",subscribe_authenticated_session_topic_failure:"subscribe_authenticated_session_topic_failure",authenticated_session_approve_publish_failure:"authenticated_session_approve_publish_failure",authenticated_session_pending_request_not_found:"authenticated_session_pending_request_not_found"},sb=.1,rb="event-client",ib=86400,nb="https://pulse.walletconnect.org/batch";function ob(t,e){if(t.length>=255)throw new TypeError("Alphabet too long");for(var s=new Uint8Array(256),r=0;r>>0,C=new Uint8Array(v);y!==b;){for(var S=w[y],A=0,_=v-1;(S!==0||A>>0,C[_]=S%a>>>0,S=S/a>>>0;if(S!==0)throw new Error("Non-zero carry");f=A,y++}for(var U=v-f;U!==v&&C[U]===0;)U++;for(var E=c.repeat(m);U>>0,v=new Uint8Array(b);w[m];){var C=s[w.charCodeAt(m)];if(C===255)return;for(var S=0,A=b-1;(C!==0||S>>0,v[A]=C%256>>>0,C=C/256>>>0;if(C!==0)throw new Error("Non-zero carry");y=S,m++}if(w[m]!==" "){for(var _=b-y;_!==b&&v[_]===0;)_++;for(var U=new Uint8Array(f+(b-_)),E=f;_!==b;)U[E++]=v[_++];return U}}}function p(w){var m=d(w);if(m)return m;throw new Error(`Non-${e} character`)}return{encode:h,decodeUnsafe:d,decode:p}}var ab=ob,cb=ab;const oh=t=>{if(t instanceof Uint8Array&&t.constructor.name==="Uint8Array")return t;if(t instanceof ArrayBuffer)return new Uint8Array(t);if(ArrayBuffer.isView(t))return new Uint8Array(t.buffer,t.byteOffset,t.byteLength);throw new Error("Unknown type, must be binary type")},lb=t=>new TextEncoder().encode(t),ub=t=>new TextDecoder().decode(t);class hb{constructor(e,s,r){this.name=e,this.prefix=s,this.baseEncode=r}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}}class db{constructor(e,s,r){if(this.name=e,this.prefix=s,s.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=s.codePointAt(0),this.baseDecode=r}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return ah(this,e)}}class pb{constructor(e){this.decoders=e}or(e){return ah(this,e)}decode(e){const s=e[0],r=this.decoders[s];if(r)return r.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}}const ah=(t,e)=>new pb({...t.decoders||{[t.prefix]:t},...e.decoders||{[e.prefix]:e}});class fb{constructor(e,s,r,i){this.name=e,this.prefix=s,this.baseEncode=r,this.baseDecode=i,this.encoder=new hb(e,s,r),this.decoder=new db(e,s,i)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}const Mn=({name:t,prefix:e,encode:s,decode:r})=>new fb(t,e,s,r),Fi=({prefix:t,name:e,alphabet:s})=>{const{encode:r,decode:i}=cb(s,e);return Mn({prefix:t,name:e,encode:r,decode:n=>oh(i(n))})},gb=(t,e,s,r)=>{const i={};for(let u=0;u=8&&(a-=8,o[l++]=255&c>>a)}if(a>=s||255&c<<8-a)throw new SyntaxError("Unexpected end of data");return o},mb=(t,e,s)=>{const r=e[e.length-1]==="=",i=(1<s;)o-=s,n+=e[i&a>>o];if(o&&(n+=e[i&a<Mn({prefix:e,name:t,encode(i){return mb(i,r,s)},decode(i){return gb(i,r,s,t)}}),wb=Mn({prefix:"\0",name:"identity",encode:t=>ub(t),decode:t=>lb(t)});var yb=Object.freeze({__proto__:null,identity:wb});const bb=Ye({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var vb=Object.freeze({__proto__:null,base2:bb});const Eb=Ye({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var Cb=Object.freeze({__proto__:null,base8:Eb});const Ib=Fi({prefix:"9",name:"base10",alphabet:"0123456789"});var Nb=Object.freeze({__proto__:null,base10:Ib});const Ab=Ye({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),_b=Ye({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var Sb=Object.freeze({__proto__:null,base16:Ab,base16upper:_b});const Pb=Ye({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),kb=Ye({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),Ob=Ye({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),Tb=Ye({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),xb=Ye({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),$b=Ye({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),Rb=Ye({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),Ub=Ye({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),Db=Ye({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var Lb=Object.freeze({__proto__:null,base32:Pb,base32upper:kb,base32pad:Ob,base32padupper:Tb,base32hex:xb,base32hexupper:$b,base32hexpad:Rb,base32hexpadupper:Ub,base32z:Db});const Mb=Fi({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Bb=Fi({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var jb=Object.freeze({__proto__:null,base36:Mb,base36upper:Bb});const qb=Fi({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),Fb=Fi({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var zb=Object.freeze({__proto__:null,base58btc:qb,base58flickr:Fb});const Wb=Ye({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Hb=Ye({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Vb=Ye({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),Kb=Ye({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var Gb=Object.freeze({__proto__:null,base64:Wb,base64pad:Hb,base64url:Vb,base64urlpad:Kb});const ch=Array.from("🚀🪐☄🛰🌌🌑🌒🌓🌔🌕🌖🌗🌘🌍🌏🌎🐉☀💻🖥💾💿😂❤😍🤣😊🙏💕😭😘👍😅👏😁🔥🥰💔💖💙😢🤔😆🙄💪😉☺👌🤗💜😔😎😇🌹🤦🎉💞✌✨🤷😱😌🌸🙌😋💗💚😏💛🙂💓🤩😄😀🖤😃💯🙈👇🎶😒🤭❣😜💋👀😪😑💥🙋😞😩😡🤪👊🥳😥🤤👉💃😳✋😚😝😴🌟😬🙃🍀🌷😻😓⭐✅🥺🌈😈🤘💦✔😣🏃💐☹🎊💘😠☝😕🌺🎂🌻😐🖕💝🙊😹🗣💫💀👑🎵🤞😛🔴😤🌼😫⚽🤙☕🏆🤫👈😮🙆🍻🍃🐶💁😲🌿🧡🎁⚡🌞🎈❌✊👋😰🤨😶🤝🚶💰🍓💢🤟🙁🚨💨🤬✈🎀🍺🤓😙💟🌱😖👶🥴▶➡❓💎💸⬇😨🌚🦋😷🕺⚠🙅😟😵👎🤲🤠🤧📌🔵💅🧐🐾🍒😗🤑🌊🤯🐷☎💧😯💆👆🎤🙇🍑❄🌴💣🐸💌📍🥀🤢👅💡💩👐📸👻🤐🤮🎼🥵🚩🍎🍊👼💍📣🥂"),Jb=ch.reduce((t,e,s)=>(t[s]=e,t),[]),Yb=ch.reduce((t,e,s)=>(t[e.codePointAt(0)]=s,t),[]);function Xb(t){return t.reduce((e,s)=>(e+=Jb[s],e),"")}function Zb(t){const e=[];for(const s of t){const r=Yb[s.codePointAt(0)];if(r===void 0)throw new Error(`Non-base256emoji character: ${s}`);e.push(r)}return new Uint8Array(e)}const Qb=Mn({prefix:"🚀",name:"base256emoji",encode:Xb,decode:Zb});var ev=Object.freeze({__proto__:null,base256emoji:Qb}),tv=lh,Jc=128,sv=-128,rv=Math.pow(2,31);function lh(t,e,s){e=e||[],s=s||0;for(var r=s;t>=rv;)e[s++]=t&255|Jc,t/=128;for(;t&sv;)e[s++]=t&255|Jc,t>>>=7;return e[s]=t|0,lh.bytes=s-r+1,e}var iv=Wo,nv=128,Yc=127;function Wo(t,r){var s=0,r=r||0,i=0,n=r,o,a=t.length;do{if(n>=a)throw Wo.bytes=0,new RangeError("Could not decode varint");o=t[n++],s+=i<28?(o&Yc)<=nv);return Wo.bytes=n-r,s}var ov=Math.pow(2,7),av=Math.pow(2,14),cv=Math.pow(2,21),lv=Math.pow(2,28),uv=Math.pow(2,35),hv=Math.pow(2,42),dv=Math.pow(2,49),pv=Math.pow(2,56),fv=Math.pow(2,63),gv=function(t){return t(uh.encode(t,e,s),e),Zc=t=>uh.encodingLength(t),Ho=(t,e)=>{const s=e.byteLength,r=Zc(t),i=r+Zc(s),n=new Uint8Array(i+s);return Xc(t,n,0),Xc(s,n,r),n.set(e,i),new wv(t,s,e,n)};class wv{constructor(e,s,r,i){this.code=e,this.size=s,this.digest=r,this.bytes=i}}const hh=({name:t,code:e,encode:s})=>new yv(t,e,s);class yv{constructor(e,s,r){this.name=e,this.code=s,this.encode=r}digest(e){if(e instanceof Uint8Array){const s=this.encode(e);return s instanceof Uint8Array?Ho(this.code,s):s.then(r=>Ho(this.code,r))}else throw Error("Unknown type, must be binary type")}}const dh=t=>async e=>new Uint8Array(await crypto.subtle.digest(t,e)),bv=hh({name:"sha2-256",code:18,encode:dh("SHA-256")}),vv=hh({name:"sha2-512",code:19,encode:dh("SHA-512")});var Ev=Object.freeze({__proto__:null,sha256:bv,sha512:vv});const ph=0,Cv="identity",fh=oh,Iv=t=>Ho(ph,fh(t)),Nv={code:ph,name:Cv,encode:fh,digest:Iv};var Av=Object.freeze({__proto__:null,identity:Nv});new TextEncoder,new TextDecoder;const Qc={...yb,...vb,...Cb,...Nb,...Sb,...Lb,...jb,...zb,...Gb,...ev};({...Ev,...Av});function _v(t=0){return globalThis.Buffer!=null&&globalThis.Buffer.allocUnsafe!=null?globalThis.Buffer.allocUnsafe(t):new Uint8Array(t)}function gh(t,e,s,r){return{name:t,prefix:e,encoder:{name:t,prefix:e,encode:s},decoder:{decode:r}}}const el=gh("utf8","u",t=>"u"+new TextDecoder("utf8").decode(t),t=>new TextEncoder().encode(t.substring(1))),co=gh("ascii","a",t=>{let e="a";for(let s=0;s{t=t.substring(1);const e=_v(t.length);for(let s=0;se in t?kv(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,Ft=(t,e,s)=>Ov(t,typeof e!="symbol"?e+"":e,s);class Tv{constructor(e,s){this.core=e,this.logger=s,Ft(this,"keychain",new Map),Ft(this,"name",Ty),Ft(this,"version",xy),Ft(this,"initialized",!1),Ft(this,"storagePrefix",Yt),Ft(this,"init",async()=>{if(!this.initialized){const r=await this.getKeyChain();typeof r<"u"&&(this.keychain=r),this.initialized=!0}}),Ft(this,"has",r=>(this.isInitialized(),this.keychain.has(r))),Ft(this,"set",async(r,i)=>{this.isInitialized(),this.keychain.set(r,i),await this.persist()}),Ft(this,"get",r=>{this.isInitialized();const i=this.keychain.get(r);if(typeof i>"u"){const{message:n}=R("NO_MATCHING_KEY",`${this.name}: ${r}`);throw new Error(n)}return i}),Ft(this,"del",async r=>{this.isInitialized(),this.keychain.delete(r),await this.persist()}),this.core=e,this.logger=rt(s,this.name)}get context(){return Et(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}async setKeyChain(e){await this.core.storage.setItem(this.storageKey,Oo(e))}async getKeyChain(){const e=await this.core.storage.getItem(this.storageKey);return typeof e<"u"?To(e):void 0}async persist(){await this.setKeyChain(this.keychain)}isInitialized(){if(!this.initialized){const{message:e}=R("NOT_INITIALIZED",this.name);throw new Error(e)}}}var xv=Object.defineProperty,$v=(t,e,s)=>e in t?xv(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,Ke=(t,e,s)=>$v(t,typeof e!="symbol"?e+"":e,s);class Rv{constructor(e,s,r){this.core=e,this.logger=s,Ke(this,"name",ky),Ke(this,"keychain"),Ke(this,"randomSessionIdentifier",qo()),Ke(this,"initialized",!1),Ke(this,"init",async()=>{this.initialized||(await this.keychain.init(),this.initialized=!0)}),Ke(this,"hasKeys",i=>(this.isInitialized(),this.keychain.has(i))),Ke(this,"getClientId",async()=>{this.isInitialized();const i=await this.getClientSeed(),n=ka(i);return Zh(n.publicKey)}),Ke(this,"generateKeyPair",()=>{this.isInitialized();const i=Iw();return this.setPrivateKey(i.publicKey,i.privateKey)}),Ke(this,"signJWT",async i=>{this.isInitialized();const n=await this.getClientSeed(),o=ka(n),a=this.randomSessionIdentifier;return await Qh(a,i,Oy,o)}),Ke(this,"generateSharedKey",(i,n,o)=>{this.isInitialized();const a=this.getPrivateKey(i),c=Nw(a,n);return this.setSymKey(c,o)}),Ke(this,"setSymKey",async(i,n)=>{this.isInitialized();const o=n||dn(i);return await this.keychain.set(o,i),o}),Ke(this,"deleteKeyPair",async i=>{this.isInitialized(),await this.keychain.del(i)}),Ke(this,"deleteSymKey",async i=>{this.isInitialized(),await this.keychain.del(i)}),Ke(this,"encode",async(i,n,o)=>{this.isInitialized();const a=Zu(o),c=na(n);if(Rc(a))return Sw(c,o?.encoding);if($c(a)){const d=a.senderPublicKey,p=a.receiverPublicKey;i=await this.generateSharedKey(d,p)}const l=this.getSymKey(i),{type:u,senderPublicKey:h}=a;return Aw({type:u,symKey:l,message:c,senderPublicKey:h,encoding:o?.encoding})}),Ke(this,"decode",async(i,n,o)=>{this.isInitialized();const a=kw(n,o);if(Rc(a)){const c=Pw(n,o?.encoding);return bn(c)}if($c(a)){const c=a.receiverPublicKey,l=a.senderPublicKey;i=await this.generateSharedKey(c,l)}try{const c=this.getSymKey(i),l=_w({symKey:c,encoded:n,encoding:o?.encoding});return bn(l)}catch(c){this.logger.error(`Failed to decode message from topic: '${i}', clientId: '${await this.getClientId()}'`),this.logger.error(c)}}),Ke(this,"getPayloadType",(i,n=Mt)=>{const o=ki({encoded:i,encoding:n});return Ys(o.type)}),Ke(this,"getPayloadSenderPublicKey",(i,n=Mt)=>{const o=ki({encoded:i,encoding:n});return o.senderPublicKey?dt(o.senderPublicKey,st):void 0}),this.core=e,this.logger=rt(s,this.name),this.keychain=r||new Tv(this.core,this.logger)}get context(){return Et(this.logger)}async setPrivateKey(e,s){return await this.keychain.set(e,s),e}getPrivateKey(e){return this.keychain.get(e)}async getClientSeed(){let e="";try{e=this.keychain.get(Vc)}catch{e=qo(),await this.keychain.set(Vc,e)}return Pv(e,"base16")}getSymKey(e){return this.keychain.get(e)}isInitialized(){if(!this.initialized){const{message:e}=R("NOT_INITIALIZED",this.name);throw new Error(e)}}}var Uv=Object.defineProperty,Dv=Object.defineProperties,Lv=Object.getOwnPropertyDescriptors,tl=Object.getOwnPropertySymbols,Mv=Object.prototype.hasOwnProperty,Bv=Object.prototype.propertyIsEnumerable,Vo=(t,e,s)=>e in t?Uv(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,jv=(t,e)=>{for(var s in e||(e={}))Mv.call(e,s)&&Vo(t,s,e[s]);if(tl)for(var s of tl(e))Bv.call(e,s)&&Vo(t,s,e[s]);return t},qv=(t,e)=>Dv(t,Lv(e)),ft=(t,e,s)=>Vo(t,typeof e!="symbol"?e+"":e,s);class Fv extends Up{constructor(e,s){super(e,s),this.logger=e,this.core=s,ft(this,"messages",new Map),ft(this,"messagesWithoutClientAck",new Map),ft(this,"name",$y),ft(this,"version",Ry),ft(this,"initialized",!1),ft(this,"storagePrefix",Yt),ft(this,"init",async()=>{if(!this.initialized){this.logger.trace("Initialized");try{const r=await this.getRelayerMessages();typeof r<"u"&&(this.messages=r);const i=await this.getRelayerMessagesWithoutClientAck();typeof i<"u"&&(this.messagesWithoutClientAck=i),this.logger.debug(`Successfully Restored records for ${this.name}`),this.logger.trace({type:"method",method:"restore",size:this.messages.size})}catch(r){this.logger.debug(`Failed to Restore records for ${this.name}`),this.logger.error(r)}finally{this.initialized=!0}}}),ft(this,"set",async(r,i,n)=>{this.isInitialized();const o=Kt(i);let a=this.messages.get(r);if(typeof a>"u"&&(a={}),typeof a[o]<"u")return o;if(a[o]=i,this.messages.set(r,a),n===pn.inbound){const c=this.messagesWithoutClientAck.get(r)||{};this.messagesWithoutClientAck.set(r,qv(jv({},c),{[o]:i}))}return await this.persist(),o}),ft(this,"get",r=>{this.isInitialized();let i=this.messages.get(r);return typeof i>"u"&&(i={}),i}),ft(this,"getWithoutAck",r=>{this.isInitialized();const i={};for(const n of r){const o=this.messagesWithoutClientAck.get(n)||{};i[n]=Object.values(o)}return i}),ft(this,"has",(r,i)=>{this.isInitialized();const n=this.get(r),o=Kt(i);return typeof n[o]<"u"}),ft(this,"ack",async(r,i)=>{this.isInitialized();const n=this.messagesWithoutClientAck.get(r);if(typeof n>"u")return;const o=Kt(i);delete n[o],Object.keys(n).length===0?this.messagesWithoutClientAck.delete(r):this.messagesWithoutClientAck.set(r,n),await this.persist()}),ft(this,"del",async r=>{this.isInitialized(),this.messages.delete(r),this.messagesWithoutClientAck.delete(r),await this.persist()}),this.logger=rt(e,this.name),this.core=s}get context(){return Et(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get storageKeyWithoutClientAck(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name+"_withoutClientAck"}async setRelayerMessages(e){await this.core.storage.setItem(this.storageKey,Oo(e))}async setRelayerMessagesWithoutClientAck(e){await this.core.storage.setItem(this.storageKeyWithoutClientAck,Oo(e))}async getRelayerMessages(){const e=await this.core.storage.getItem(this.storageKey);return typeof e<"u"?To(e):void 0}async getRelayerMessagesWithoutClientAck(){const e=await this.core.storage.getItem(this.storageKeyWithoutClientAck);return typeof e<"u"?To(e):void 0}async persist(){await this.setRelayerMessages(this.messages),await this.setRelayerMessagesWithoutClientAck(this.messagesWithoutClientAck)}isInitialized(){if(!this.initialized){const{message:e}=R("NOT_INITIALIZED",this.name);throw new Error(e)}}}var zv=Object.defineProperty,Wv=Object.defineProperties,Hv=Object.getOwnPropertyDescriptors,sl=Object.getOwnPropertySymbols,Vv=Object.prototype.hasOwnProperty,Kv=Object.prototype.propertyIsEnumerable,Ko=(t,e,s)=>e in t?zv(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,tn=(t,e)=>{for(var s in e||(e={}))Vv.call(e,s)&&Ko(t,s,e[s]);if(sl)for(var s of sl(e))Kv.call(e,s)&&Ko(t,s,e[s]);return t},lo=(t,e)=>Wv(t,Hv(e)),Rt=(t,e,s)=>Ko(t,typeof e!="symbol"?e+"":e,s);class Gv extends Dp{constructor(e,s){super(e,s),this.relayer=e,this.logger=s,Rt(this,"events",new Zs.EventEmitter),Rt(this,"name",Uy),Rt(this,"queue",new Map),Rt(this,"publishTimeout",D.toMiliseconds(D.ONE_MINUTE)),Rt(this,"initialPublishTimeout",D.toMiliseconds(D.ONE_SECOND*15)),Rt(this,"needsTransportRestart",!1),Rt(this,"publish",async(r,i,n)=>{var o;this.logger.debug("Publishing Payload"),this.logger.trace({type:"method",method:"publish",params:{topic:r,message:i,opts:n}});const a=n?.ttl||Kc,c=Nn(n),l=n?.prompt||!1,u=n?.tag||0,h=n?.id||_r().toString(),d={topic:r,message:i,opts:{ttl:a,relay:c,prompt:l,tag:u,id:h,attestation:n?.attestation,tvf:n?.tvf}},p=`Failed to publish payload, please try again. id:${h} tag:${u}`;try{const w=new Promise(async m=>{const f=({id:b})=>{d.opts.id===b&&(this.removeRequestFromQueue(b),this.relayer.events.removeListener(Fe.publish,f),m(d))};this.relayer.events.on(Fe.publish,f);const y=Cs(new Promise((b,v)=>{this.rpcPublish({topic:r,message:i,ttl:a,prompt:l,tag:u,id:h,attestation:n?.attestation,tvf:n?.tvf}).then(b).catch(C=>{this.logger.warn(C,C?.message),v(C)})}),this.initialPublishTimeout,`Failed initial publish, retrying.... id:${h} tag:${u}`);try{await y,this.events.removeListener(Fe.publish,f)}catch(b){this.queue.set(h,lo(tn({},d),{attempt:1})),this.logger.warn(b,b?.message)}});this.logger.trace({type:"method",method:"publish",params:{id:h,topic:r,message:i,opts:n}}),await Cs(w,this.publishTimeout,p)}catch(w){if(this.logger.debug("Failed to Publish Payload"),this.logger.error(w),(o=n?.internal)!=null&&o.throwOnFailedPublish)throw w}finally{this.queue.delete(h)}}),Rt(this,"on",(r,i)=>{this.events.on(r,i)}),Rt(this,"once",(r,i)=>{this.events.once(r,i)}),Rt(this,"off",(r,i)=>{this.events.off(r,i)}),Rt(this,"removeListener",(r,i)=>{this.events.removeListener(r,i)}),this.relayer=e,this.logger=rt(s,this.name),this.registerEventListeners()}get context(){return Et(this.logger)}async rpcPublish(e){var s,r,i,n;const{topic:o,message:a,ttl:c=Kc,prompt:l,tag:u,id:h,attestation:d,tvf:p}=e,w={method:ui(Nn().protocol).publish,params:tn({topic:o,message:a,ttl:c,prompt:l,tag:u,attestation:d},p),id:h};Je((s=w.params)==null?void 0:s.prompt)&&((r=w.params)==null||delete r.prompt),Je((i=w.params)==null?void 0:i.tag)&&((n=w.params)==null||delete n.tag),this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"message",direction:"outgoing",request:w});const m=await this.relayer.request(w);return this.relayer.events.emit(Fe.publish,e),this.logger.debug("Successfully Published Payload"),m}removeRequestFromQueue(e){this.queue.delete(e)}checkQueue(){this.queue.forEach(async(e,s)=>{const r=e.attempt+1;this.queue.set(s,lo(tn({},e),{attempt:r}));const{topic:i,message:n,opts:o,attestation:a}=e;this.logger.warn({},`Publisher: queue->publishing: ${e.opts.id}, tag: ${e.opts.tag}, attempt: ${r}`),await this.rpcPublish(lo(tn({},e),{topic:i,message:n,ttl:o.ttl,prompt:o.prompt,tag:o.tag,id:o.id,attestation:a,tvf:o.tvf})),this.logger.warn({},`Publisher: queue->published: ${e.opts.id}`)})}registerEventListeners(){this.relayer.core.heartbeat.on(Wr.pulse,()=>{if(this.needsTransportRestart){this.needsTransportRestart=!1,this.relayer.events.emit(Fe.connection_stalled);return}this.checkQueue()}),this.relayer.on(Fe.message_ack,e=>{this.removeRequestFromQueue(e.id.toString())})}}var Jv=Object.defineProperty,Yv=(t,e,s)=>e in t?Jv(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,lr=(t,e,s)=>Yv(t,typeof e!="symbol"?e+"":e,s);class Xv{constructor(){lr(this,"map",new Map),lr(this,"set",(e,s)=>{const r=this.get(e);this.exists(e,s)||this.map.set(e,[...r,s])}),lr(this,"get",e=>this.map.get(e)||[]),lr(this,"exists",(e,s)=>this.get(e).includes(s)),lr(this,"delete",(e,s)=>{if(typeof s>"u"){this.map.delete(e);return}if(!this.map.has(e))return;const r=this.get(e);if(!this.exists(e,s))return;const i=r.filter(n=>n!==s);if(!i.length){this.map.delete(e);return}this.map.set(e,i)}),lr(this,"clear",()=>{this.map.clear()})}get topics(){return Array.from(this.map.keys())}}var Zv=Object.defineProperty,Qv=Object.defineProperties,e0=Object.getOwnPropertyDescriptors,rl=Object.getOwnPropertySymbols,t0=Object.prototype.hasOwnProperty,s0=Object.prototype.propertyIsEnumerable,Go=(t,e,s)=>e in t?Zv(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,ii=(t,e)=>{for(var s in e||(e={}))t0.call(e,s)&&Go(t,s,e[s]);if(rl)for(var s of rl(e))s0.call(e,s)&&Go(t,s,e[s]);return t},uo=(t,e)=>Qv(t,e0(e)),ye=(t,e,s)=>Go(t,typeof e!="symbol"?e+"":e,s);class r0 extends Bp{constructor(e,s){super(e,s),this.relayer=e,this.logger=s,ye(this,"subscriptions",new Map),ye(this,"topicMap",new Xv),ye(this,"events",new Zs.EventEmitter),ye(this,"name",Fy),ye(this,"version",zy),ye(this,"pending",new Map),ye(this,"cached",[]),ye(this,"initialized",!1),ye(this,"storagePrefix",Yt),ye(this,"subscribeTimeout",D.toMiliseconds(D.ONE_MINUTE)),ye(this,"initialSubscribeTimeout",D.toMiliseconds(D.ONE_SECOND*15)),ye(this,"clientId"),ye(this,"batchSubscribeTopicsLimit",500),ye(this,"init",async()=>{this.initialized||(this.logger.trace("Initialized"),this.registerEventListeners(),await this.restore()),this.initialized=!0}),ye(this,"subscribe",async(r,i)=>{this.isInitialized(),this.logger.debug("Subscribing Topic"),this.logger.trace({type:"method",method:"subscribe",params:{topic:r,opts:i}});try{const n=Nn(i),o={topic:r,relay:n,transportType:i?.transportType};this.pending.set(r,o);const a=await this.rpcSubscribe(r,n,i);return typeof a=="string"&&(this.onSubscribe(a,o),this.logger.debug("Successfully Subscribed Topic"),this.logger.trace({type:"method",method:"subscribe",params:{topic:r,opts:i}})),a}catch(n){throw this.logger.debug("Failed to Subscribe Topic"),this.logger.error(n),n}}),ye(this,"unsubscribe",async(r,i)=>{this.isInitialized(),typeof i?.id<"u"?await this.unsubscribeById(r,i.id,i):await this.unsubscribeByTopic(r,i)}),ye(this,"isSubscribed",r=>new Promise(i=>{i(this.topicMap.topics.includes(r))})),ye(this,"isKnownTopic",r=>new Promise(i=>{i(this.topicMap.topics.includes(r)||this.pending.has(r)||this.cached.some(n=>n.topic===r))})),ye(this,"on",(r,i)=>{this.events.on(r,i)}),ye(this,"once",(r,i)=>{this.events.once(r,i)}),ye(this,"off",(r,i)=>{this.events.off(r,i)}),ye(this,"removeListener",(r,i)=>{this.events.removeListener(r,i)}),ye(this,"start",async()=>{await this.onConnect()}),ye(this,"stop",async()=>{await this.onDisconnect()}),ye(this,"restart",async()=>{await this.restore(),await this.onRestart()}),ye(this,"checkPending",async()=>{if(this.pending.size===0&&(!this.initialized||!this.relayer.connected))return;const r=[];this.pending.forEach(i=>{r.push(i)}),await this.batchSubscribe(r)}),ye(this,"registerEventListeners",()=>{this.relayer.core.heartbeat.on(Wr.pulse,async()=>{await this.checkPending()}),this.events.on(gt.created,async r=>{const i=gt.created;this.logger.info(`Emitting ${i}`),this.logger.debug({type:"event",event:i,data:r}),await this.persist()}),this.events.on(gt.deleted,async r=>{const i=gt.deleted;this.logger.info(`Emitting ${i}`),this.logger.debug({type:"event",event:i,data:r}),await this.persist()})}),this.relayer=e,this.logger=rt(s,this.name),this.clientId=""}get context(){return Et(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.relayer.core.customStoragePrefix+"//"+this.name}get length(){return this.subscriptions.size}get ids(){return Array.from(this.subscriptions.keys())}get values(){return Array.from(this.subscriptions.values())}get topics(){return this.topicMap.topics}get hasAnyTopics(){return this.topicMap.topics.length>0||this.pending.size>0||this.cached.length>0||this.subscriptions.size>0}hasSubscription(e,s){let r=!1;try{r=this.getSubscription(e).topic===s}catch{}return r}reset(){this.cached=[],this.initialized=!0}onDisable(){this.values.length>0&&(this.cached=this.values),this.subscriptions.clear(),this.topicMap.clear()}async unsubscribeByTopic(e,s){const r=this.topicMap.get(e);await Promise.all(r.map(async i=>await this.unsubscribeById(e,i,s)))}async unsubscribeById(e,s,r){this.logger.debug("Unsubscribing Topic"),this.logger.trace({type:"method",method:"unsubscribe",params:{topic:e,id:s,opts:r}});try{const i=Nn(r);await this.restartToComplete({topic:e,id:s,relay:i}),await this.rpcUnsubscribe(e,s,i);const n=we("USER_DISCONNECTED",`${this.name}, ${e}`);await this.onUnsubscribe(e,s,n),this.logger.debug("Successfully Unsubscribed Topic"),this.logger.trace({type:"method",method:"unsubscribe",params:{topic:e,id:s,opts:r}})}catch(i){throw this.logger.debug("Failed to Unsubscribe Topic"),this.logger.error(i),i}}async rpcSubscribe(e,s,r){var i;(!r||r?.transportType===Ae.relay)&&await this.restartToComplete({topic:e,id:e,relay:s});const n={method:ui(s.protocol).subscribe,params:{topic:e}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:n});const o=(i=r?.internal)==null?void 0:i.throwOnFailedPublish;try{const a=await this.getSubscriptionId(e);if(r?.transportType===Ae.link_mode)return setTimeout(()=>{(this.relayer.connected||this.relayer.connecting)&&this.relayer.request(n).catch(u=>this.logger.warn(u))},D.toMiliseconds(D.ONE_SECOND)),a;const c=new Promise(async u=>{const h=d=>{d.topic===e&&(this.events.removeListener(gt.created,h),u(d.id))};this.events.on(gt.created,h);try{const d=await Cs(new Promise((p,w)=>{this.relayer.request(n).catch(m=>{this.logger.warn(m,m?.message),w(m)}).then(p)}),this.initialSubscribeTimeout,`Subscribing to ${e} failed, please try again`);this.events.removeListener(gt.created,h),u(d)}catch{}}),l=await Cs(c,this.subscribeTimeout,`Subscribing to ${e} failed, please try again`);if(!l&&o)throw new Error(`Subscribing to ${e} failed, please try again`);return l?a:null}catch(a){if(this.logger.debug("Outgoing Relay Subscribe Payload stalled"),this.relayer.events.emit(Fe.connection_stalled),o)throw a}return null}async rpcBatchSubscribe(e){if(!e.length)return;const s=e[0].relay,r={method:ui(s.protocol).batchSubscribe,params:{topics:e.map(i=>i.topic)}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:r});try{await await Cs(new Promise(i=>{this.relayer.request(r).catch(n=>this.logger.warn(n)).then(i)}),this.subscribeTimeout,"rpcBatchSubscribe failed, please try again")}catch{this.relayer.events.emit(Fe.connection_stalled)}}async rpcBatchFetchMessages(e){if(!e.length)return;const s=e[0].relay,r={method:ui(s.protocol).batchFetchMessages,params:{topics:e.map(n=>n.topic)}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:r});let i;try{i=await await Cs(new Promise((n,o)=>{this.relayer.request(r).catch(a=>{this.logger.warn(a),o(a)}).then(n)}),this.subscribeTimeout,"rpcBatchFetchMessages failed, please try again")}catch{this.relayer.events.emit(Fe.connection_stalled)}return i}rpcUnsubscribe(e,s,r){const i={method:ui(r.protocol).unsubscribe,params:{topic:e,id:s}};return this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:i}),this.relayer.request(i)}onSubscribe(e,s){this.setSubscription(e,uo(ii({},s),{id:e})),this.pending.delete(s.topic)}onBatchSubscribe(e){e.length&&e.forEach(s=>{this.setSubscription(s.id,ii({},s)),this.pending.delete(s.topic)})}async onUnsubscribe(e,s,r){this.events.removeAllListeners(s),this.hasSubscription(s,e)&&this.deleteSubscription(s,r),await this.relayer.messages.del(e)}async setRelayerSubscriptions(e){await this.relayer.core.storage.setItem(this.storageKey,e)}async getRelayerSubscriptions(){return await this.relayer.core.storage.getItem(this.storageKey)}setSubscription(e,s){this.logger.debug("Setting subscription"),this.logger.trace({type:"method",method:"setSubscription",id:e,subscription:s}),this.addSubscription(e,s)}addSubscription(e,s){this.subscriptions.set(e,ii({},s)),this.topicMap.set(s.topic,e),this.events.emit(gt.created,s)}getSubscription(e){this.logger.debug("Getting subscription"),this.logger.trace({type:"method",method:"getSubscription",id:e});const s=this.subscriptions.get(e);if(!s){const{message:r}=R("NO_MATCHING_KEY",`${this.name}: ${e}`);throw new Error(r)}return s}deleteSubscription(e,s){this.logger.debug("Deleting subscription"),this.logger.trace({type:"method",method:"deleteSubscription",id:e,reason:s});const r=this.getSubscription(e);this.subscriptions.delete(e),this.topicMap.delete(r.topic,e),this.events.emit(gt.deleted,uo(ii({},r),{reason:s}))}async persist(){await this.setRelayerSubscriptions(this.values),this.events.emit(gt.sync)}async onRestart(){if(this.cached.length){const e=[...this.cached],s=Math.ceil(this.cached.length/this.batchSubscribeTopicsLimit);for(let r=0;r"u"||!e.length)return;if(this.subscriptions.size){const{message:s}=R("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(s),this.logger.error(`${this.name}: ${JSON.stringify(this.values)}`),new Error(s)}this.cached=e,this.logger.debug(`Successfully Restored subscriptions for ${this.name}`),this.logger.trace({type:"method",method:"restore",subscriptions:this.values})}catch(e){this.logger.debug(`Failed to Restore subscriptions for ${this.name}`),this.logger.error(e)}}async batchSubscribe(e){e.length&&(await this.rpcBatchSubscribe(e),this.onBatchSubscribe(await Promise.all(e.map(async s=>uo(ii({},s),{id:await this.getSubscriptionId(s.topic)})))))}async batchFetchMessages(e){if(!e.length)return;this.logger.trace(`Fetching batch messages for ${e.length} subscriptions`);const s=await this.rpcBatchFetchMessages(e);s&&s.messages&&(await ug(D.toMiliseconds(D.ONE_SECOND)),await this.relayer.handleBatchMessageEvents(s.messages))}async onConnect(){await this.restart(),this.reset()}onDisconnect(){this.onDisable()}isInitialized(){if(!this.initialized){const{message:e}=R("NOT_INITIALIZED",this.name);throw new Error(e)}}async restartToComplete(e){!this.relayer.connected&&!this.relayer.connecting&&(this.cached.push(e),await this.relayer.transportOpen())}async getClientId(){return this.clientId||(this.clientId=await this.relayer.core.crypto.getClientId()),this.clientId}async getSubscriptionId(e){return Kt(e+await this.getClientId())}}var i0=Object.defineProperty,il=Object.getOwnPropertySymbols,n0=Object.prototype.hasOwnProperty,o0=Object.prototype.propertyIsEnumerable,Jo=(t,e,s)=>e in t?i0(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,nl=(t,e)=>{for(var s in e||(e={}))n0.call(e,s)&&Jo(t,s,e[s]);if(il)for(var s of il(e))o0.call(e,s)&&Jo(t,s,e[s]);return t},le=(t,e,s)=>Jo(t,typeof e!="symbol"?e+"":e,s);class a0 extends Lp{constructor(e){super(e),le(this,"protocol","wc"),le(this,"version",2),le(this,"core"),le(this,"logger"),le(this,"events",new Zs.EventEmitter),le(this,"provider"),le(this,"messages"),le(this,"subscriber"),le(this,"publisher"),le(this,"name",Ly),le(this,"transportExplicitlyClosed",!1),le(this,"initialized",!1),le(this,"connectionAttemptInProgress",!1),le(this,"relayUrl"),le(this,"projectId"),le(this,"packageName"),le(this,"bundleId"),le(this,"hasExperiencedNetworkDisruption",!1),le(this,"pingTimeout"),le(this,"heartBeatTimeout",D.toMiliseconds(D.THIRTY_SECONDS+D.FIVE_SECONDS)),le(this,"reconnectTimeout"),le(this,"connectPromise"),le(this,"reconnectInProgress",!1),le(this,"requestsInFlight",[]),le(this,"connectTimeout",D.toMiliseconds(D.ONE_SECOND*15)),le(this,"request",async s=>{var r,i;this.logger.debug("Publishing Request Payload");const n=s.id||_r().toString();await this.toEstablishConnection();try{this.logger.trace({id:n,method:s.method,topic:(r=s.params)==null?void 0:r.topic},"relayer.request - publishing...");const o=`${n}:${((i=s.params)==null?void 0:i.tag)||""}`;this.requestsInFlight.push(o);const a=await this.provider.request(s);return this.requestsInFlight=this.requestsInFlight.filter(c=>c!==o),a}catch(o){throw this.logger.debug(`Failed to Publish Request: ${n}`),o}}),le(this,"resetPingTimeout",()=>{Cn()&&(clearTimeout(this.pingTimeout),this.pingTimeout=setTimeout(()=>{var s,r,i,n;try{this.logger.debug({},"pingTimeout: Connection stalled, terminating..."),(n=(i=(r=(s=this.provider)==null?void 0:s.connection)==null?void 0:r.socket)==null?void 0:i.terminate)==null||n.call(i)}catch(o){this.logger.warn(o,o?.message)}},this.heartBeatTimeout))}),le(this,"onPayloadHandler",s=>{this.onProviderPayload(s),this.resetPingTimeout()}),le(this,"onConnectHandler",()=>{this.logger.warn({},"Relayer connected 🛜"),this.startPingTimeout(),this.events.emit(Fe.connect)}),le(this,"onDisconnectHandler",()=>{this.logger.warn({},"Relayer disconnected 🛑"),this.requestsInFlight=[],this.onProviderDisconnect()}),le(this,"onProviderErrorHandler",s=>{this.logger.fatal(`Fatal socket error: ${s.message}`),this.events.emit(Fe.error,s),this.logger.fatal("Fatal socket error received, closing transport"),this.transportClose()}),le(this,"registerProviderListeners",()=>{this.provider.on(At.payload,this.onPayloadHandler),this.provider.on(At.connect,this.onConnectHandler),this.provider.on(At.disconnect,this.onDisconnectHandler),this.provider.on(At.error,this.onProviderErrorHandler)}),this.core=e.core,this.logger=typeof e.logger<"u"&&typeof e.logger!="string"?rt(e.logger,this.name):oa($i({level:e.logger||Dy})),this.messages=new Fv(this.logger,e.core),this.subscriber=new r0(this,this.logger),this.publisher=new Gv(this,this.logger),this.relayUrl=e?.relayUrl||ih,this.projectId=e.projectId,Gf()?this.packageName=rc():Jf()&&(this.bundleId=rc()),this.provider={}}async init(){if(this.logger.trace("Initialized"),this.registerEventListeners(),await Promise.all([this.messages.init(),this.subscriber.init()]),this.initialized=!0,this.subscriber.hasAnyTopics)try{await this.transportOpen()}catch(e){this.logger.warn(e,e?.message)}}get context(){return Et(this.logger)}get connected(){var e,s,r;return((r=(s=(e=this.provider)==null?void 0:e.connection)==null?void 0:s.socket)==null?void 0:r.readyState)===1||!1}get connecting(){var e,s,r;return((r=(s=(e=this.provider)==null?void 0:e.connection)==null?void 0:s.socket)==null?void 0:r.readyState)===0||this.connectPromise!==void 0||!1}async publish(e,s,r){this.isInitialized(),await this.publisher.publish(e,s,r),await this.recordMessageEvent({topic:e,message:s,publishedAt:Date.now(),transportType:Ae.relay},pn.outbound)}async subscribe(e,s){var r,i,n;this.isInitialized(),(!(s!=null&&s.transportType)||s?.transportType==="relay")&&await this.toEstablishConnection();const o=typeof((r=s?.internal)==null?void 0:r.throwOnFailedPublish)>"u"?!0:(i=s?.internal)==null?void 0:i.throwOnFailedPublish;let a=((n=this.subscriber.topicMap.get(e))==null?void 0:n[0])||"",c;const l=u=>{u.topic===e&&(this.subscriber.off(gt.created,l),c())};return await Promise.all([new Promise(u=>{c=u,this.subscriber.on(gt.created,l)}),new Promise(async(u,h)=>{a=await this.subscriber.subscribe(e,nl({internal:{throwOnFailedPublish:o}},s)).catch(d=>{o&&h(d)})||a,u()})]),a}async unsubscribe(e,s){this.isInitialized(),await this.subscriber.unsubscribe(e,s)}on(e,s){this.events.on(e,s)}once(e,s){this.events.once(e,s)}off(e,s){this.events.off(e,s)}removeListener(e,s){this.events.removeListener(e,s)}async transportDisconnect(){this.provider.disconnect&&(this.hasExperiencedNetworkDisruption||this.connected)?await Cs(this.provider.disconnect(),2e3,"provider.disconnect()").catch(()=>this.onProviderDisconnect()):this.onProviderDisconnect()}async transportClose(){this.transportExplicitlyClosed=!0,await this.transportDisconnect()}async transportOpen(e){if(!this.subscriber.hasAnyTopics){this.logger.warn("Starting WS connection skipped because the client has no topics to work with.");return}if(this.connectPromise?(this.logger.debug({},"Waiting for existing connection attempt to resolve..."),await this.connectPromise,this.logger.debug({},"Existing connection attempt resolved")):(this.connectPromise=new Promise(async(s,r)=>{await this.connect(e).then(s).catch(r).finally(()=>{this.connectPromise=void 0})}),await this.connectPromise),!this.connected)throw new Error(`Couldn't establish socket connection to the relay server: ${this.relayUrl}`)}async restartTransport(e){this.logger.debug({},"Restarting transport..."),!this.connectionAttemptInProgress&&(this.relayUrl=e||this.relayUrl,await this.confirmOnlineStateOrThrow(),await this.transportClose(),await this.transportOpen())}async confirmOnlineStateOrThrow(){if(!await Hc())throw new Error("No internet connection detected. Please restart your network and try again.")}async handleBatchMessageEvents(e){if(e?.length===0){this.logger.trace("Batch message events is empty. Ignoring...");return}const s=e.sort((r,i)=>r.publishedAt-i.publishedAt);this.logger.debug(`Batch of ${s.length} message events sorted`);for(const r of s)try{await this.onMessageEvent(r)}catch(i){this.logger.warn(i,"Error while processing batch message event: "+i?.message)}this.logger.trace(`Batch of ${s.length} message events processed`)}async onLinkMessageEvent(e,s){const{topic:r}=e;if(!s.sessionExists){const i=De(D.FIVE_MINUTES),n={topic:r,expiry:i,relay:{protocol:"irn"},active:!1};await this.core.pairing.pairings.set(r,n)}this.events.emit(Fe.message,e),await this.recordMessageEvent(e,pn.inbound)}async connect(e){await this.confirmOnlineStateOrThrow(),e&&e!==this.relayUrl&&(this.relayUrl=e,await this.transportDisconnect()),this.connectionAttemptInProgress=!0,this.transportExplicitlyClosed=!1;let s=1;for(;s<6;){try{if(this.transportExplicitlyClosed)break;this.logger.debug({},`Connecting to ${this.relayUrl}, attempt: ${s}...`),await this.createProvider(),await new Promise(async(r,i)=>{const n=()=>{i(new Error("Connection interrupted while trying to subscribe"))};this.provider.once(At.disconnect,n),await Cs(new Promise((o,a)=>{this.provider.connect().then(o).catch(a)}),this.connectTimeout,`Socket stalled when trying to connect to ${this.relayUrl}`).catch(o=>{i(o)}).finally(()=>{this.provider.off(At.disconnect,n),clearTimeout(this.reconnectTimeout)}),await new Promise(async(o,a)=>{const c=()=>{a(new Error("Connection interrupted while trying to subscribe"))};this.provider.once(At.disconnect,c),await this.subscriber.start().then(o).catch(a).finally(()=>{this.provider.off(At.disconnect,c)})}),this.hasExperiencedNetworkDisruption=!1,r()})}catch(r){await this.subscriber.stop();const i=r;this.logger.warn({},i.message),this.hasExperiencedNetworkDisruption=!0}finally{this.connectionAttemptInProgress=!1}if(this.connected){this.logger.debug({},`Connected to ${this.relayUrl} successfully on attempt: ${s}`);break}await new Promise(r=>setTimeout(r,D.toMiliseconds(s*1))),s++}}startPingTimeout(){var e,s,r,i,n;if(Cn())try{(s=(e=this.provider)==null?void 0:e.connection)!=null&&s.socket&&((n=(i=(r=this.provider)==null?void 0:r.connection)==null?void 0:i.socket)==null||n.on("ping",()=>{this.resetPingTimeout()})),this.resetPingTimeout()}catch(o){this.logger.warn(o,o?.message)}}async createProvider(){this.provider.connection&&this.unregisterProviderListeners();const e=await this.core.crypto.signJWT(this.relayUrl);this.provider=new Ot(new Xh(eg({sdkVersion:zo,protocol:this.protocol,version:this.version,relayUrl:this.relayUrl,projectId:this.projectId,auth:e,useOnCloseEvent:!0,bundleId:this.bundleId,packageName:this.packageName}))),this.registerProviderListeners()}async recordMessageEvent(e,s){const{topic:r,message:i}=e;await this.messages.set(r,i,s)}async shouldIgnoreMessageEvent(e){const{topic:s,message:r}=e;if(!r||r.length===0)return this.logger.warn(`Ignoring invalid/empty message: ${r}`),!0;if(!await this.subscriber.isKnownTopic(s))return this.logger.warn(`Ignoring message for unknown topic ${s}`),!0;const i=this.messages.has(s,r);return i&&this.logger.warn(`Ignoring duplicate message: ${r}`),i}async onProviderPayload(e){if(this.logger.debug("Incoming Relay Payload"),this.logger.trace({type:"payload",direction:"incoming",payload:e}),aa(e)){if(!e.method.endsWith(My))return;const s=e.params,{topic:r,message:i,publishedAt:n,attestation:o}=s.data,a={topic:r,message:i,publishedAt:n,transportType:Ae.relay,attestation:o};this.logger.debug("Emitting Relayer Payload"),this.logger.trace(nl({type:"event",event:s.id},a)),this.events.emit(s.id,a),await this.acknowledgePayload(e),await this.onMessageEvent(a)}else ca(e)&&this.events.emit(Fe.message_ack,e)}async onMessageEvent(e){await this.shouldIgnoreMessageEvent(e)||(await this.recordMessageEvent(e,pn.inbound),this.events.emit(Fe.message,e))}async acknowledgePayload(e){const s=kn(e.id,!0);await this.provider.connection.send(s)}unregisterProviderListeners(){this.provider.off(At.payload,this.onPayloadHandler),this.provider.off(At.connect,this.onConnectHandler),this.provider.off(At.disconnect,this.onDisconnectHandler),this.provider.off(At.error,this.onProviderErrorHandler),clearTimeout(this.pingTimeout)}async registerEventListeners(){let e=await Hc();Cy(async s=>{e!==s&&(e=s,s?await this.transportOpen().catch(r=>this.logger.error(r,r?.message)):(this.hasExperiencedNetworkDisruption=!0,await this.transportDisconnect(),this.transportExplicitlyClosed=!1))}),this.core.heartbeat.on(Wr.pulse,async()=>{if(!this.transportExplicitlyClosed&&!this.connected&&Ay())try{await this.confirmOnlineStateOrThrow(),await this.transportOpen()}catch(s){this.logger.warn(s,s?.message)}})}async onProviderDisconnect(){clearTimeout(this.pingTimeout),this.events.emit(Fe.disconnect),this.connectionAttemptInProgress=!1,!this.reconnectInProgress&&(this.reconnectInProgress=!0,await this.subscriber.stop(),this.subscriber.hasAnyTopics&&(this.transportExplicitlyClosed||(this.reconnectTimeout=setTimeout(async()=>{await this.transportOpen().catch(e=>this.logger.error(e,e?.message)),this.reconnectTimeout=void 0,this.reconnectInProgress=!1},D.toMiliseconds(By)))))}isInitialized(){if(!this.initialized){const{message:e}=R("NOT_INITIALIZED",this.name);throw new Error(e)}}async toEstablishConnection(){if(await this.confirmOnlineStateOrThrow(),!this.connected){if(this.connectPromise){await this.connectPromise;return}await this.connect()}}}function c0(){}function ol(t){if(!t||typeof t!="object")return!1;const e=Object.getPrototypeOf(t);return e===null||e===Object.prototype||Object.getPrototypeOf(e)===null?Object.prototype.toString.call(t)==="[object Object]":!1}function al(t){return Object.getOwnPropertySymbols(t).filter(e=>Object.prototype.propertyIsEnumerable.call(t,e))}function cl(t){return t==null?t===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(t)}const l0="[object RegExp]",u0="[object String]",h0="[object Number]",d0="[object Boolean]",ll="[object Arguments]",p0="[object Symbol]",f0="[object Date]",g0="[object Map]",m0="[object Set]",w0="[object Array]",y0="[object Function]",b0="[object ArrayBuffer]",ho="[object Object]",v0="[object Error]",E0="[object DataView]",C0="[object Uint8Array]",I0="[object Uint8ClampedArray]",N0="[object Uint16Array]",A0="[object Uint32Array]",_0="[object BigUint64Array]",S0="[object Int8Array]",P0="[object Int16Array]",k0="[object Int32Array]",O0="[object BigInt64Array]",T0="[object Float32Array]",x0="[object Float64Array]";function $0(t,e){return t===e||Number.isNaN(t)&&Number.isNaN(e)}function R0(t,e,s){return hi(t,e,void 0,void 0,void 0,void 0,s)}function hi(t,e,s,r,i,n,o){const a=o(t,e,s,r,i,n);if(a!==void 0)return a;if(typeof t==typeof e)switch(typeof t){case"bigint":case"string":case"boolean":case"symbol":case"undefined":return t===e;case"number":return t===e||Object.is(t,e);case"function":return t===e;case"object":return vi(t,e,n,o)}return vi(t,e,n,o)}function vi(t,e,s,r){if(Object.is(t,e))return!0;let i=cl(t),n=cl(e);if(i===ll&&(i=ho),n===ll&&(n=ho),i!==n)return!1;switch(i){case u0:return t.toString()===e.toString();case h0:{const c=t.valueOf(),l=e.valueOf();return $0(c,l)}case d0:case f0:case p0:return Object.is(t.valueOf(),e.valueOf());case l0:return t.source===e.source&&t.flags===e.flags;case y0:return t===e}s=s??new Map;const o=s.get(t),a=s.get(e);if(o!=null&&a!=null)return o===e;s.set(t,e),s.set(e,t);try{switch(i){case g0:{if(t.size!==e.size)return!1;for(const[c,l]of t.entries())if(!e.has(c)||!hi(l,e.get(c),c,t,e,s,r))return!1;return!0}case m0:{if(t.size!==e.size)return!1;const c=Array.from(t.values()),l=Array.from(e.values());for(let u=0;uhi(h,p,void 0,t,e,s,r));if(d===-1)return!1;l.splice(d,1)}return!0}case w0:case C0:case I0:case N0:case A0:case _0:case S0:case P0:case k0:case O0:case T0:case x0:{if(typeof Buffer<"u"&&Buffer.isBuffer(t)!==Buffer.isBuffer(e)||t.length!==e.length)return!1;for(let c=0;ce in t?D0(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,hl=(t,e)=>{for(var s in e||(e={}))L0.call(e,s)&&Yo(t,s,e[s]);if(ul)for(var s of ul(e))M0.call(e,s)&&Yo(t,s,e[s]);return t},at=(t,e,s)=>Yo(t,typeof e!="symbol"?e+"":e,s);class sr extends Mp{constructor(e,s,r,i=Yt,n=void 0){super(e,s,r,i),this.core=e,this.logger=s,this.name=r,at(this,"map",new Map),at(this,"version",jy),at(this,"cached",[]),at(this,"initialized",!1),at(this,"getKey"),at(this,"storagePrefix",Yt),at(this,"recentlyDeleted",[]),at(this,"recentlyDeletedLimit",200),at(this,"init",async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(o=>{this.getKey&&o!==null&&!Je(o)?this.map.set(this.getKey(o),o):Qw(o)?this.map.set(o.id,o):ey(o)&&this.map.set(o.topic,o)}),this.cached=[],this.initialized=!0)}),at(this,"set",async(o,a)=>{this.isInitialized(),this.map.has(o)?await this.update(o,a):(this.logger.debug("Setting value"),this.logger.trace({type:"method",method:"set",key:o,value:a}),this.map.set(o,a),await this.persist())}),at(this,"get",o=>(this.isInitialized(),this.logger.debug("Getting value"),this.logger.trace({type:"method",method:"get",key:o}),this.getData(o))),at(this,"getAll",o=>(this.isInitialized(),o?this.values.filter(a=>Object.keys(o).every(c=>U0(a[c],o[c]))):this.values)),at(this,"update",async(o,a)=>{this.isInitialized(),this.logger.debug("Updating value"),this.logger.trace({type:"method",method:"update",key:o,update:a});const c=hl(hl({},this.getData(o)),a);this.map.set(o,c),await this.persist()}),at(this,"delete",async(o,a)=>{this.isInitialized(),this.map.has(o)&&(this.logger.debug("Deleting value"),this.logger.trace({type:"method",method:"delete",key:o,reason:a}),this.map.delete(o),this.addToRecentlyDeleted(o),await this.persist())}),this.logger=rt(s,this.name),this.storagePrefix=i,this.getKey=n}get context(){return Et(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get length(){return this.map.size}get keys(){return Array.from(this.map.keys())}get values(){return Array.from(this.map.values())}addToRecentlyDeleted(e){this.recentlyDeleted.push(e),this.recentlyDeleted.length>=this.recentlyDeletedLimit&&this.recentlyDeleted.splice(0,this.recentlyDeletedLimit/2)}async setDataStore(e){await this.core.storage.setItem(this.storageKey,e)}async getDataStore(){return await this.core.storage.getItem(this.storageKey)}getData(e){const s=this.map.get(e);if(!s){if(this.recentlyDeleted.includes(e)){const{message:i}=R("MISSING_OR_INVALID",`Record was recently deleted - ${this.name}: ${e}`);throw this.logger.error(i),new Error(i)}const{message:r}=R("NO_MATCHING_KEY",`${this.name}: ${e}`);throw this.logger.error(r),new Error(r)}return s}async persist(){await this.setDataStore(this.values)}async restore(){try{const e=await this.getDataStore();if(typeof e>"u"||!e.length)return;if(this.map.size){const{message:s}=R("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(s),new Error(s)}this.cached=e,this.logger.debug(`Successfully Restored value for ${this.name}`),this.logger.trace({type:"method",method:"restore",value:this.values})}catch(e){this.logger.debug(`Failed to Restore value for ${this.name}`),this.logger.error(e)}}isInitialized(){if(!this.initialized){const{message:e}=R("NOT_INITIALIZED",this.name);throw new Error(e)}}}var B0=Object.defineProperty,j0=(t,e,s)=>e in t?B0(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,ie=(t,e,s)=>j0(t,typeof e!="symbol"?e+"":e,s);class q0{constructor(e,s){this.core=e,this.logger=s,ie(this,"name",Wy),ie(this,"version",Hy),ie(this,"events",new la),ie(this,"pairings"),ie(this,"initialized",!1),ie(this,"storagePrefix",Yt),ie(this,"ignoredPayloadTypes",[cs]),ie(this,"registeredMethods",[]),ie(this,"init",async()=>{this.initialized||(await this.pairings.init(),await this.cleanup(),this.registerRelayerEvents(),this.registerExpirerEvents(),this.initialized=!0,this.logger.trace("Initialized"))}),ie(this,"register",({methods:r})=>{this.isInitialized(),this.registeredMethods=[...new Set([...this.registeredMethods,...r])]}),ie(this,"create",async r=>{this.isInitialized();const i=qo(),n=await this.core.crypto.setSymKey(i),o=De(D.FIVE_MINUTES),a={protocol:rh},c={topic:n,expiry:o,relay:a,active:!1,methods:r?.methods},l=Dc({protocol:this.core.protocol,version:this.core.version,topic:n,symKey:i,relay:a,expiryTimestamp:o,methods:r?.methods});return this.events.emit(Bs.create,c),this.core.expirer.set(n,o),await this.pairings.set(n,c),await this.core.relayer.subscribe(n,{transportType:r?.transportType}),{topic:n,uri:l}}),ie(this,"pair",async r=>{this.isInitialized();const i=this.core.eventClient.createEvent({properties:{topic:r?.uri,trace:[Wt.pairing_started]}});this.isValidPair(r,i);const{topic:n,symKey:o,relay:a,expiryTimestamp:c,methods:l}=Uc(r.uri);i.props.properties.topic=n,i.addTrace(Wt.pairing_uri_validation_success),i.addTrace(Wt.pairing_uri_not_expired);let u;if(this.pairings.keys.includes(n)){if(u=this.pairings.get(n),i.addTrace(Wt.existing_pairing),u.active)throw i.setError(is.active_pairing_already_exists),new Error(`Pairing already exists: ${n}. Please try again with a new connection URI.`);i.addTrace(Wt.pairing_not_expired)}const h=c||De(D.FIVE_MINUTES),d={topic:n,relay:a,expiry:h,active:!1,methods:l};this.core.expirer.set(n,h),await this.pairings.set(n,d),i.addTrace(Wt.store_new_pairing),r.activatePairing&&await this.activate({topic:n}),this.events.emit(Bs.create,d),i.addTrace(Wt.emit_inactive_pairing),this.core.crypto.keychain.has(n)||await this.core.crypto.setSymKey(o,n),i.addTrace(Wt.subscribing_pairing_topic);try{await this.core.relayer.confirmOnlineStateOrThrow()}catch{i.setError(is.no_internet_connection)}try{await this.core.relayer.subscribe(n,{relay:a})}catch(p){throw i.setError(is.subscribe_pairing_topic_failure),p}return i.addTrace(Wt.subscribe_pairing_topic_success),d}),ie(this,"activate",async({topic:r})=>{this.isInitialized();const i=De(D.FIVE_MINUTES);this.core.expirer.set(r,i),await this.pairings.update(r,{active:!0,expiry:i})}),ie(this,"ping",async r=>{this.isInitialized(),await this.isValidPing(r),this.logger.warn("ping() is deprecated and will be removed in the next major release.");const{topic:i}=r;if(this.pairings.keys.includes(i)){const n=await this.sendRequest(i,"wc_pairingPing",{}),{done:o,resolve:a,reject:c}=Ds();this.events.once(pe("pairing_ping",n),({error:l})=>{l?c(l):a()}),await o()}}),ie(this,"updateExpiry",async({topic:r,expiry:i})=>{this.isInitialized(),await this.pairings.update(r,{expiry:i})}),ie(this,"updateMetadata",async({topic:r,metadata:i})=>{this.isInitialized(),await this.pairings.update(r,{peerMetadata:i})}),ie(this,"getPairings",()=>(this.isInitialized(),this.pairings.values)),ie(this,"disconnect",async r=>{this.isInitialized(),await this.isValidDisconnect(r);const{topic:i}=r;this.pairings.keys.includes(i)&&(await this.sendRequest(i,"wc_pairingDelete",we("USER_DISCONNECTED")),await this.deletePairing(i))}),ie(this,"formatUriFromPairing",r=>{this.isInitialized();const{topic:i,relay:n,expiry:o,methods:a}=r,c=this.core.crypto.keychain.get(i);return Dc({protocol:this.core.protocol,version:this.core.version,topic:i,symKey:c,relay:n,expiryTimestamp:o,methods:a})}),ie(this,"sendRequest",async(r,i,n)=>{const o=qs(i,n),a=await this.core.crypto.encode(r,o),c=si[i].req;return this.core.history.set(r,o),this.core.relayer.publish(r,a,c),o.id}),ie(this,"sendResult",async(r,i,n)=>{const o=kn(r,n),a=await this.core.crypto.encode(i,o),c=(await this.core.history.get(i,r)).request.method,l=si[c].res;await this.core.relayer.publish(i,a,l),await this.core.history.resolve(o)}),ie(this,"sendError",async(r,i,n)=>{const o=Gl(r,n),a=await this.core.crypto.encode(i,o),c=(await this.core.history.get(i,r)).request.method,l=si[c]?si[c].res:si.unregistered_method.res;await this.core.relayer.publish(i,a,l),await this.core.history.resolve(o)}),ie(this,"deletePairing",async(r,i)=>{await this.core.relayer.unsubscribe(r),await Promise.all([this.pairings.delete(r,we("USER_DISCONNECTED")),this.core.crypto.deleteSymKey(r),i?Promise.resolve():this.core.expirer.del(r)])}),ie(this,"cleanup",async()=>{const r=this.pairings.getAll().filter(i=>ys(i.expiry));await Promise.all(r.map(i=>this.deletePairing(i.topic)))}),ie(this,"onRelayEventRequest",async r=>{const{topic:i,payload:n}=r;switch(n.method){case"wc_pairingPing":return await this.onPairingPingRequest(i,n);case"wc_pairingDelete":return await this.onPairingDeleteRequest(i,n);default:return await this.onUnknownRpcMethodRequest(i,n)}}),ie(this,"onRelayEventResponse",async r=>{const{topic:i,payload:n}=r,o=(await this.core.history.get(i,n.id)).request.method;switch(o){case"wc_pairingPing":return this.onPairingPingResponse(i,n);default:return this.onUnknownRpcMethodResponse(o)}}),ie(this,"onPairingPingRequest",async(r,i)=>{const{id:n}=i;try{this.isValidPing({topic:r}),await this.sendResult(n,r,!0),this.events.emit(Bs.ping,{id:n,topic:r})}catch(o){await this.sendError(n,r,o),this.logger.error(o)}}),ie(this,"onPairingPingResponse",(r,i)=>{const{id:n}=i;setTimeout(()=>{rs(i)?this.events.emit(pe("pairing_ping",n),{}):Ht(i)&&this.events.emit(pe("pairing_ping",n),{error:i.error})},500)}),ie(this,"onPairingDeleteRequest",async(r,i)=>{const{id:n}=i;try{this.isValidDisconnect({topic:r}),await this.deletePairing(r),this.events.emit(Bs.delete,{id:n,topic:r})}catch(o){await this.sendError(n,r,o),this.logger.error(o)}}),ie(this,"onUnknownRpcMethodRequest",async(r,i)=>{const{id:n,method:o}=i;try{if(this.registeredMethods.includes(o))return;const a=we("WC_METHOD_UNSUPPORTED",o);await this.sendError(n,r,a),this.logger.error(a)}catch(a){await this.sendError(n,r,a),this.logger.error(a)}}),ie(this,"onUnknownRpcMethodResponse",r=>{this.registeredMethods.includes(r)||this.logger.error(we("WC_METHOD_UNSUPPORTED",r))}),ie(this,"isValidPair",(r,i)=>{var n;if(!ut(r)){const{message:a}=R("MISSING_OR_INVALID",`pair() params: ${r}`);throw i.setError(is.malformed_pairing_uri),new Error(a)}if(!Zw(r.uri)){const{message:a}=R("MISSING_OR_INVALID",`pair() uri: ${r.uri}`);throw i.setError(is.malformed_pairing_uri),new Error(a)}const o=Uc(r?.uri);if(!((n=o?.relay)!=null&&n.protocol)){const{message:a}=R("MISSING_OR_INVALID","pair() uri#relay-protocol");throw i.setError(is.malformed_pairing_uri),new Error(a)}if(!(o!=null&&o.symKey)){const{message:a}=R("MISSING_OR_INVALID","pair() uri#symKey");throw i.setError(is.malformed_pairing_uri),new Error(a)}if(o!=null&&o.expiryTimestamp&&D.toMiliseconds(o?.expiryTimestamp){if(!ut(r)){const{message:n}=R("MISSING_OR_INVALID",`ping() params: ${r}`);throw new Error(n)}const{topic:i}=r;await this.isValidPairingTopic(i)}),ie(this,"isValidDisconnect",async r=>{if(!ut(r)){const{message:n}=R("MISSING_OR_INVALID",`disconnect() params: ${r}`);throw new Error(n)}const{topic:i}=r;await this.isValidPairingTopic(i)}),ie(this,"isValidPairingTopic",async r=>{if(!xe(r,!1)){const{message:i}=R("MISSING_OR_INVALID",`pairing topic should be a string: ${r}`);throw new Error(i)}if(!this.pairings.keys.includes(r)){const{message:i}=R("NO_MATCHING_KEY",`pairing topic doesn't exist: ${r}`);throw new Error(i)}if(ys(this.pairings.get(r).expiry)){await this.deletePairing(r);const{message:i}=R("EXPIRED",`pairing topic: ${r}`);throw new Error(i)}}),this.core=e,this.logger=rt(s,this.name),this.pairings=new sr(this.core,this.logger,this.name,this.storagePrefix)}get context(){return Et(this.logger)}isInitialized(){if(!this.initialized){const{message:e}=R("NOT_INITIALIZED",this.name);throw new Error(e)}}registerRelayerEvents(){this.core.relayer.on(Fe.message,async e=>{const{topic:s,message:r,transportType:i}=e;if(this.pairings.keys.includes(s)&&i!==Ae.link_mode&&!this.ignoredPayloadTypes.includes(this.core.crypto.getPayloadType(r)))try{const n=await this.core.crypto.decode(s,r);aa(n)?(this.core.history.set(s,n),await this.onRelayEventRequest({topic:s,payload:n})):ca(n)&&(await this.core.history.resolve(n),await this.onRelayEventResponse({topic:s,payload:n}),this.core.history.delete(s,n.id)),await this.core.relayer.messages.ack(s,r)}catch(n){this.logger.error(n)}})}registerExpirerEvents(){this.core.expirer.on(Pt.expired,async e=>{const{topic:s}=bu(e.target);s&&this.pairings.keys.includes(s)&&(await this.deletePairing(s,!0),this.events.emit(Bs.expire,{topic:s}))})}}var F0=Object.defineProperty,z0=(t,e,s)=>e in t?F0(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,Ge=(t,e,s)=>z0(t,typeof e!="symbol"?e+"":e,s);class W0 extends Rp{constructor(e,s){super(e,s),this.core=e,this.logger=s,Ge(this,"records",new Map),Ge(this,"events",new Zs.EventEmitter),Ge(this,"name",Vy),Ge(this,"version",Ky),Ge(this,"cached",[]),Ge(this,"initialized",!1),Ge(this,"storagePrefix",Yt),Ge(this,"init",async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(r=>this.records.set(r.id,r)),this.cached=[],this.registerEventListeners(),this.initialized=!0)}),Ge(this,"set",(r,i,n)=>{if(this.isInitialized(),this.logger.debug("Setting JSON-RPC request history record"),this.logger.trace({type:"method",method:"set",topic:r,request:i,chainId:n}),this.records.has(i.id))return;const o={id:i.id,topic:r,request:{method:i.method,params:i.params||null},chainId:n,expiry:De(D.THIRTY_DAYS)};this.records.set(o.id,o),this.persist(),this.events.emit(xt.created,o)}),Ge(this,"resolve",async r=>{if(this.isInitialized(),this.logger.debug("Updating JSON-RPC response history record"),this.logger.trace({type:"method",method:"update",response:r}),!this.records.has(r.id))return;const i=await this.getRecord(r.id);typeof i.response>"u"&&(i.response=Ht(r)?{error:r.error}:{result:r.result},this.records.set(i.id,i),this.persist(),this.events.emit(xt.updated,i))}),Ge(this,"get",async(r,i)=>(this.isInitialized(),this.logger.debug("Getting record"),this.logger.trace({type:"method",method:"get",topic:r,id:i}),await this.getRecord(i))),Ge(this,"delete",(r,i)=>{this.isInitialized(),this.logger.debug("Deleting record"),this.logger.trace({type:"method",method:"delete",id:i}),this.values.forEach(n=>{if(n.topic===r){if(typeof i<"u"&&n.id!==i)return;this.records.delete(n.id),this.events.emit(xt.deleted,n)}}),this.persist()}),Ge(this,"exists",async(r,i)=>(this.isInitialized(),this.records.has(i)?(await this.getRecord(i)).topic===r:!1)),Ge(this,"on",(r,i)=>{this.events.on(r,i)}),Ge(this,"once",(r,i)=>{this.events.once(r,i)}),Ge(this,"off",(r,i)=>{this.events.off(r,i)}),Ge(this,"removeListener",(r,i)=>{this.events.removeListener(r,i)}),this.logger=rt(s,this.name)}get context(){return Et(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get size(){return this.records.size}get keys(){return Array.from(this.records.keys())}get values(){return Array.from(this.records.values())}get pending(){const e=[];return this.values.forEach(s=>{if(typeof s.response<"u")return;const r={topic:s.topic,request:qs(s.request.method,s.request.params,s.id),chainId:s.chainId};return e.push(r)}),e}async setJsonRpcRecords(e){await this.core.storage.setItem(this.storageKey,e)}async getJsonRpcRecords(){return await this.core.storage.getItem(this.storageKey)}getRecord(e){this.isInitialized();const s=this.records.get(e);if(!s){const{message:r}=R("NO_MATCHING_KEY",`${this.name}: ${e}`);throw new Error(r)}return s}async persist(){await this.setJsonRpcRecords(this.values),this.events.emit(xt.sync)}async restore(){try{const e=await this.getJsonRpcRecords();if(typeof e>"u"||!e.length)return;if(this.records.size){const{message:s}=R("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(s),new Error(s)}this.cached=e,this.logger.debug(`Successfully Restored records for ${this.name}`),this.logger.trace({type:"method",method:"restore",records:this.values})}catch(e){this.logger.debug(`Failed to Restore records for ${this.name}`),this.logger.error(e)}}registerEventListeners(){this.events.on(xt.created,e=>{const s=xt.created;this.logger.info(`Emitting ${s}`),this.logger.debug({type:"event",event:s,record:e})}),this.events.on(xt.updated,e=>{const s=xt.updated;this.logger.info(`Emitting ${s}`),this.logger.debug({type:"event",event:s,record:e})}),this.events.on(xt.deleted,e=>{const s=xt.deleted;this.logger.info(`Emitting ${s}`),this.logger.debug({type:"event",event:s,record:e})}),this.core.heartbeat.on(Wr.pulse,()=>{this.cleanup()})}cleanup(){try{this.isInitialized();let e=!1;this.records.forEach(s=>{D.toMiliseconds(s.expiry||0)-Date.now()<=0&&(this.logger.info(`Deleting expired history log: ${s.id}`),this.records.delete(s.id),this.events.emit(xt.deleted,s,!1),e=!0)}),e&&this.persist()}catch(e){this.logger.warn(e)}}isInitialized(){if(!this.initialized){const{message:e}=R("NOT_INITIALIZED",this.name);throw new Error(e)}}}var H0=Object.defineProperty,V0=(t,e,s)=>e in t?H0(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,Ze=(t,e,s)=>V0(t,typeof e!="symbol"?e+"":e,s);class K0 extends jp{constructor(e,s){super(e,s),this.core=e,this.logger=s,Ze(this,"expirations",new Map),Ze(this,"events",new Zs.EventEmitter),Ze(this,"name",Gy),Ze(this,"version",Jy),Ze(this,"cached",[]),Ze(this,"initialized",!1),Ze(this,"storagePrefix",Yt),Ze(this,"init",async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(r=>this.expirations.set(r.target,r)),this.cached=[],this.registerEventListeners(),this.initialized=!0)}),Ze(this,"has",r=>{try{const i=this.formatTarget(r);return typeof this.getExpiration(i)<"u"}catch{return!1}}),Ze(this,"set",(r,i)=>{this.isInitialized();const n=this.formatTarget(r),o={target:n,expiry:i};this.expirations.set(n,o),this.checkExpiry(n,o),this.events.emit(Pt.created,{target:n,expiration:o})}),Ze(this,"get",r=>{this.isInitialized();const i=this.formatTarget(r);return this.getExpiration(i)}),Ze(this,"del",r=>{if(this.isInitialized(),this.has(r)){const i=this.formatTarget(r),n=this.getExpiration(i);this.expirations.delete(i),this.events.emit(Pt.deleted,{target:i,expiration:n})}}),Ze(this,"on",(r,i)=>{this.events.on(r,i)}),Ze(this,"once",(r,i)=>{this.events.once(r,i)}),Ze(this,"off",(r,i)=>{this.events.off(r,i)}),Ze(this,"removeListener",(r,i)=>{this.events.removeListener(r,i)}),this.logger=rt(s,this.name)}get context(){return Et(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get length(){return this.expirations.size}get keys(){return Array.from(this.expirations.keys())}get values(){return Array.from(this.expirations.values())}formatTarget(e){if(typeof e=="string")return tg(e);if(typeof e=="number")return sg(e);const{message:s}=R("UNKNOWN_TYPE",`Target type: ${typeof e}`);throw new Error(s)}async setExpirations(e){await this.core.storage.setItem(this.storageKey,e)}async getExpirations(){return await this.core.storage.getItem(this.storageKey)}async persist(){await this.setExpirations(this.values),this.events.emit(Pt.sync)}async restore(){try{const e=await this.getExpirations();if(typeof e>"u"||!e.length)return;if(this.expirations.size){const{message:s}=R("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(s),new Error(s)}this.cached=e,this.logger.debug(`Successfully Restored expirations for ${this.name}`),this.logger.trace({type:"method",method:"restore",expirations:this.values})}catch(e){this.logger.debug(`Failed to Restore expirations for ${this.name}`),this.logger.error(e)}}getExpiration(e){const s=this.expirations.get(e);if(!s){const{message:r}=R("NO_MATCHING_KEY",`${this.name}: ${e}`);throw this.logger.warn(r),new Error(r)}return s}checkExpiry(e,s){const{expiry:r}=s;D.toMiliseconds(r)-Date.now()<=0&&this.expire(e,s)}expire(e,s){this.expirations.delete(e),this.events.emit(Pt.expired,{target:e,expiration:s})}checkExpirations(){this.core.relayer.connected&&this.expirations.forEach((e,s)=>this.checkExpiry(s,e))}registerEventListeners(){this.core.heartbeat.on(Wr.pulse,()=>this.checkExpirations()),this.events.on(Pt.created,e=>{const s=Pt.created;this.logger.info(`Emitting ${s}`),this.logger.debug({type:"event",event:s,data:e}),this.persist()}),this.events.on(Pt.expired,e=>{const s=Pt.expired;this.logger.info(`Emitting ${s}`),this.logger.debug({type:"event",event:s,data:e}),this.persist()}),this.events.on(Pt.deleted,e=>{const s=Pt.deleted;this.logger.info(`Emitting ${s}`),this.logger.debug({type:"event",event:s,data:e}),this.persist()})}isInitialized(){if(!this.initialized){const{message:e}=R("NOT_INITIALIZED",this.name);throw new Error(e)}}}var G0=Object.defineProperty,J0=(t,e,s)=>e in t?G0(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,Te=(t,e,s)=>J0(t,typeof e!="symbol"?e+"":e,s);class Y0 extends qp{constructor(e,s,r){super(e,s,r),this.core=e,this.logger=s,this.store=r,Te(this,"name",Yy),Te(this,"abortController"),Te(this,"isDevEnv"),Te(this,"verifyUrlV3",Zy),Te(this,"storagePrefix",Yt),Te(this,"version",sh),Te(this,"publicKey"),Te(this,"fetchPromise"),Te(this,"init",async()=>{var i;this.isDevEnv||(this.publicKey=await this.store.getItem(this.storeKey),this.publicKey&&D.toMiliseconds((i=this.publicKey)==null?void 0:i.expiresAt){if(!Kr()||this.isDevEnv)return;const n=window.location.origin,{id:o,decryptedId:a}=i,c=`${this.verifyUrlV3}/attestation?projectId=${this.core.projectId}&origin=${n}&id=${o}&decryptedId=${a}`;try{const l=ls.getDocument(),u=this.startAbortTimer(D.ONE_SECOND*5),h=await new Promise((d,p)=>{const w=()=>{window.removeEventListener("message",f),l.body.removeChild(m),p("attestation aborted")};this.abortController.signal.addEventListener("abort",w);const m=l.createElement("iframe");m.src=c,m.style.display="none",m.addEventListener("error",w,{signal:this.abortController.signal});const f=y=>{if(y.data&&typeof y.data=="string")try{const b=JSON.parse(y.data);if(b.type==="verify_attestation"){if(Co(b.attestation).payload.id!==o)return;clearInterval(u),l.body.removeChild(m),this.abortController.signal.removeEventListener("abort",w),window.removeEventListener("message",f),d(b.attestation===null?"":b.attestation)}}catch(b){this.logger.warn(b)}};l.body.appendChild(m),window.addEventListener("message",f,{signal:this.abortController.signal})});return this.logger.debug("jwt attestation",h),h}catch(l){this.logger.warn(l)}return""}),Te(this,"resolve",async i=>{if(this.isDevEnv)return"";const{attestationId:n,hash:o,encryptedId:a}=i;if(n===""){this.logger.debug("resolve: attestationId is empty, skipping");return}if(n){if(Co(n).payload.id!==a)return;const l=await this.isValidJwtAttestation(n);if(l){if(!l.isVerified){this.logger.warn("resolve: jwt attestation: origin url not verified");return}return l}}if(!o)return;const c=this.getVerifyUrl(i?.verifyUrl);return this.fetchAttestation(o,c)}),Te(this,"fetchAttestation",async(i,n)=>{this.logger.debug(`resolving attestation: ${i} from url: ${n}`);const o=this.startAbortTimer(D.ONE_SECOND*5),a=await fetch(`${n}/attestation/${i}?v2Supported=true`,{signal:this.abortController.signal});return clearTimeout(o),a.status===200?await a.json():void 0}),Te(this,"getVerifyUrl",i=>{let n=i||bi;return Qy.includes(n)||(this.logger.info(`verify url: ${n}, not included in trusted list, assigning default: ${bi}`),n=bi),n}),Te(this,"fetchPublicKey",async()=>{try{this.logger.debug(`fetching public key from: ${this.verifyUrlV3}`);const i=this.startAbortTimer(D.FIVE_SECONDS),n=await fetch(`${this.verifyUrlV3}/public-key`,{signal:this.abortController.signal});return clearTimeout(i),await n.json()}catch(i){this.logger.warn(i)}}),Te(this,"persistPublicKey",async i=>{this.logger.debug("persisting public key to local storage",i),await this.store.setItem(this.storeKey,i),this.publicKey=i}),Te(this,"removePublicKey",async()=>{this.logger.debug("removing verify v2 public key from storage"),await this.store.removeItem(this.storeKey),this.publicKey=void 0}),Te(this,"isValidJwtAttestation",async i=>{const n=await this.getPublicKey();try{if(n)return this.validateAttestation(i,n)}catch(a){this.logger.error(a),this.logger.warn("error validating attestation")}const o=await this.fetchAndPersistPublicKey();try{if(o)return this.validateAttestation(i,o)}catch(a){this.logger.error(a),this.logger.warn("error validating attestation")}}),Te(this,"getPublicKey",async()=>this.publicKey?this.publicKey:await this.fetchAndPersistPublicKey()),Te(this,"fetchAndPersistPublicKey",async()=>{if(this.fetchPromise)return await this.fetchPromise,this.publicKey;this.fetchPromise=new Promise(async n=>{const o=await this.fetchPublicKey();o&&(await this.persistPublicKey(o),n(o))});const i=await this.fetchPromise;return this.fetchPromise=void 0,i}),Te(this,"validateAttestation",(i,n)=>{const o=Tw(i,n.publicKey),a={hasExpired:D.toMiliseconds(o.exp)this.abortController.abort(),D.toMiliseconds(e))}}var X0=Object.defineProperty,Z0=(t,e,s)=>e in t?X0(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,dl=(t,e,s)=>Z0(t,typeof e!="symbol"?e+"":e,s);class Q0 extends Fp{constructor(e,s){super(e,s),this.projectId=e,this.logger=s,dl(this,"context",eb),dl(this,"registerDeviceToken",async r=>{const{clientId:i,token:n,notificationType:o,enableEncrypted:a=!1}=r,c=`${tb}/${this.projectId}/clients`;await fetch(c,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client_id:i,type:o,token:n,always_raw:a})})}),this.logger=rt(s,this.context)}}var eE=Object.defineProperty,pl=Object.getOwnPropertySymbols,tE=Object.prototype.hasOwnProperty,sE=Object.prototype.propertyIsEnumerable,Xo=(t,e,s)=>e in t?eE(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,ni=(t,e)=>{for(var s in e||(e={}))tE.call(e,s)&&Xo(t,s,e[s]);if(pl)for(var s of pl(e))sE.call(e,s)&&Xo(t,s,e[s]);return t},Me=(t,e,s)=>Xo(t,typeof e!="symbol"?e+"":e,s);class rE extends zp{constructor(e,s,r=!0){super(e,s,r),this.core=e,this.logger=s,Me(this,"context",rb),Me(this,"storagePrefix",Yt),Me(this,"storageVersion",sb),Me(this,"events",new Map),Me(this,"shouldPersist",!1),Me(this,"init",async()=>{if(!ha())try{const i={eventId:nc(),timestamp:Date.now(),domain:this.getAppDomain(),props:{event:"INIT",type:"",properties:{client_id:await this.core.crypto.getClientId(),user_agent:wu(this.core.relayer.protocol,this.core.relayer.version,zo)}}};await this.sendEvent([i])}catch(i){this.logger.warn(i)}}),Me(this,"createEvent",i=>{const{event:n="ERROR",type:o="",properties:{topic:a,trace:c}}=i,l=nc(),u=this.core.projectId||"",h=Date.now(),d=ni({eventId:l,timestamp:h,props:{event:n,type:o,properties:{topic:a,trace:c}},bundleId:u,domain:this.getAppDomain()},this.setMethods(l));return this.telemetryEnabled&&(this.events.set(l,d),this.shouldPersist=!0),d}),Me(this,"getEvent",i=>{const{eventId:n,topic:o}=i;if(n)return this.events.get(n);const a=Array.from(this.events.values()).find(c=>c.props.properties.topic===o);if(a)return ni(ni({},a),this.setMethods(a.eventId))}),Me(this,"deleteEvent",i=>{const{eventId:n}=i;this.events.delete(n),this.shouldPersist=!0}),Me(this,"setEventListeners",()=>{this.core.heartbeat.on(Wr.pulse,async()=>{this.shouldPersist&&await this.persist(),this.events.forEach(i=>{D.fromMiliseconds(Date.now())-D.fromMiliseconds(i.timestamp)>ib&&(this.events.delete(i.eventId),this.shouldPersist=!0)})})}),Me(this,"setMethods",i=>({addTrace:n=>this.addTrace(i,n),setError:n=>this.setError(i,n)})),Me(this,"addTrace",(i,n)=>{const o=this.events.get(i);o&&(o.props.properties.trace.push(n),this.events.set(i,o),this.shouldPersist=!0)}),Me(this,"setError",(i,n)=>{const o=this.events.get(i);o&&(o.props.type=n,o.timestamp=Date.now(),this.events.set(i,o),this.shouldPersist=!0)}),Me(this,"persist",async()=>{await this.core.storage.setItem(this.storageKey,Array.from(this.events.values())),this.shouldPersist=!1}),Me(this,"restore",async()=>{try{const i=await this.core.storage.getItem(this.storageKey)||[];if(!i.length)return;i.forEach(n=>{this.events.set(n.eventId,ni(ni({},n),this.setMethods(n.eventId)))})}catch(i){this.logger.warn(i)}}),Me(this,"submit",async()=>{if(!this.telemetryEnabled||this.events.size===0)return;const i=[];for(const[n,o]of this.events)o.props.type&&i.push(o);if(i.length!==0)try{if((await this.sendEvent(i)).ok)for(const n of i)this.events.delete(n.eventId),this.shouldPersist=!0}catch(n){this.logger.warn(n)}}),Me(this,"sendEvent",async i=>{const n=this.getAppDomain()?"":"&sp=desktop";return await fetch(`${nb}?projectId=${this.core.projectId}&st=events_sdk&sv=js-${zo}${n}`,{method:"POST",body:JSON.stringify(i)})}),Me(this,"getAppDomain",()=>mu().url),this.logger=rt(s,this.context),this.telemetryEnabled=r,r?this.restore().then(async()=>{await this.submit(),this.setEventListeners()}):this.persist()}get storageKey(){return this.storagePrefix+this.storageVersion+this.core.customStoragePrefix+"//"+this.context}}var iE=Object.defineProperty,fl=Object.getOwnPropertySymbols,nE=Object.prototype.hasOwnProperty,oE=Object.prototype.propertyIsEnumerable,Zo=(t,e,s)=>e in t?iE(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,gl=(t,e)=>{for(var s in e||(e={}))nE.call(e,s)&&Zo(t,s,e[s]);if(fl)for(var s of fl(e))oE.call(e,s)&&Zo(t,s,e[s]);return t},Ie=(t,e,s)=>Zo(t,typeof e!="symbol"?e+"":e,s);let aE=class mh extends Op{constructor(e){var s;super(e),Ie(this,"protocol",th),Ie(this,"version",sh),Ie(this,"name",Fo),Ie(this,"relayUrl"),Ie(this,"projectId"),Ie(this,"customStoragePrefix"),Ie(this,"events",new Zs.EventEmitter),Ie(this,"logger"),Ie(this,"heartbeat"),Ie(this,"relayer"),Ie(this,"crypto"),Ie(this,"storage"),Ie(this,"history"),Ie(this,"expirer"),Ie(this,"pairing"),Ie(this,"verify"),Ie(this,"echoClient"),Ie(this,"linkModeSupportedApps"),Ie(this,"eventClient"),Ie(this,"initialized",!1),Ie(this,"logChunkController"),Ie(this,"on",(a,c)=>this.events.on(a,c)),Ie(this,"once",(a,c)=>this.events.once(a,c)),Ie(this,"off",(a,c)=>this.events.off(a,c)),Ie(this,"removeListener",(a,c)=>this.events.removeListener(a,c)),Ie(this,"dispatchEnvelope",({topic:a,message:c,sessionExists:l})=>{if(!a||!c)return;const u={topic:a,message:c,publishedAt:Date.now(),transportType:Ae.link_mode};this.relayer.onLinkMessageEvent(u,{sessionExists:l})});const r=this.getGlobalCore(e?.customStoragePrefix);if(r)try{return this.customStoragePrefix=r.customStoragePrefix,this.logger=r.logger,this.heartbeat=r.heartbeat,this.crypto=r.crypto,this.history=r.history,this.expirer=r.expirer,this.storage=r.storage,this.relayer=r.relayer,this.pairing=r.pairing,this.verify=r.verify,this.echoClient=r.echoClient,this.linkModeSupportedApps=r.linkModeSupportedApps,this.eventClient=r.eventClient,this.initialized=r.initialized,this.logChunkController=r.logChunkController,r}catch(a){console.warn("Failed to copy global core",a)}this.projectId=e?.projectId,this.relayUrl=e?.relayUrl||ih,this.customStoragePrefix=e!=null&&e.customStoragePrefix?`:${e.customStoragePrefix}`:"";const i=$i({level:typeof e?.logger=="string"&&e.logger?e.logger:Sy.logger,name:Fo}),{logger:n,chunkLoggerController:o}=Kl({opts:i,maxSizeInBytes:e?.maxLogBlobSizeInBytes,loggerOverride:e?.logger});this.logChunkController=o,(s=this.logChunkController)!=null&&s.downloadLogsBlobInBrowser&&(window.downloadLogsBlobInBrowser=async()=>{var a,c;(a=this.logChunkController)!=null&&a.downloadLogsBlobInBrowser&&((c=this.logChunkController)==null||c.downloadLogsBlobInBrowser({clientId:await this.crypto.getClientId()}))}),this.logger=rt(n,this.name),this.heartbeat=new Yh,this.crypto=new Rv(this,this.logger,e?.keychain),this.history=new W0(this,this.logger),this.expirer=new K0(this,this.logger),this.storage=e!=null&&e.storage?e.storage:new Sp(gl(gl({},Py),e?.storageOptions)),this.relayer=new a0({core:this,logger:this.logger,relayUrl:this.relayUrl,projectId:this.projectId}),this.pairing=new q0(this,this.logger),this.verify=new Y0(this,this.logger,this.storage),this.echoClient=new Q0(this.projectId||"",this.logger),this.linkModeSupportedApps=[],this.eventClient=new rE(this,this.logger,e?.telemetryEnabled),this.setGlobalCore(this)}static async init(e){const s=new mh(e);await s.initialize();const r=await s.crypto.getClientId();return await s.storage.setItem(qy,r),s}get context(){return Et(this.logger)}async start(){this.initialized||await this.initialize()}async getLogsBlob(){var e;return(e=this.logChunkController)==null?void 0:e.logsToBlob({clientId:await this.crypto.getClientId()})}async addLinkModeSupportedApp(e){this.linkModeSupportedApps.includes(e)||(this.linkModeSupportedApps.push(e),await this.storage.setItem(Gc,this.linkModeSupportedApps))}async initialize(){this.logger.trace("Initialized");try{await this.crypto.init(),await this.history.init(),await this.expirer.init(),await this.relayer.init(),await this.heartbeat.init(),await this.pairing.init(),this.linkModeSupportedApps=await this.storage.getItem(Gc)||[],this.initialized=!0,this.logger.info("Core Initialization Success")}catch(e){throw this.logger.warn(`Core Initialization Failure at epoch ${Date.now()}`,e),this.logger.error(e.message),e}}getGlobalCore(e=""){try{if(this.isGlobalCoreDisabled())return;const s=`_walletConnectCore_${e}`,r=`${s}_count`;return globalThis[r]=(globalThis[r]||0)+1,globalThis[r]>1&&console.warn(`WalletConnect Core is already initialized. This is probably a mistake and can lead to unexpected behavior. Init() was called ${globalThis[r]} times.`),globalThis[s]}catch(s){console.warn("Failed to get global WalletConnect core",s);return}}setGlobalCore(e){var s;try{if(this.isGlobalCoreDisabled())return;const r=`_walletConnectCore_${((s=e.opts)==null?void 0:s.customStoragePrefix)||""}`;globalThis[r]=e}catch(r){console.warn("Failed to set global WalletConnect core",r)}}isGlobalCoreDisabled(){try{return typeof process<"u"&&_y.DISABLE_GLOBAL_CORE==="true"}catch{return!0}}};const cE=aE,wh="wc",yh=2,bh="client",ba=`${wh}@${yh}:${bh}:`,po={name:bh,logger:"error"},ml="WALLETCONNECT_DEEPLINK_CHOICE",lE="proposal",wl="Proposal expired",uE="session",ur=D.SEVEN_DAYS,hE="engine",Be={wc_sessionPropose:{req:{ttl:D.FIVE_MINUTES,prompt:!0,tag:1100},res:{ttl:D.FIVE_MINUTES,prompt:!1,tag:1101},reject:{ttl:D.FIVE_MINUTES,prompt:!1,tag:1120},autoReject:{ttl:D.FIVE_MINUTES,prompt:!1,tag:1121}},wc_sessionSettle:{req:{ttl:D.FIVE_MINUTES,prompt:!1,tag:1102},res:{ttl:D.FIVE_MINUTES,prompt:!1,tag:1103}},wc_sessionUpdate:{req:{ttl:D.ONE_DAY,prompt:!1,tag:1104},res:{ttl:D.ONE_DAY,prompt:!1,tag:1105}},wc_sessionExtend:{req:{ttl:D.ONE_DAY,prompt:!1,tag:1106},res:{ttl:D.ONE_DAY,prompt:!1,tag:1107}},wc_sessionRequest:{req:{ttl:D.FIVE_MINUTES,prompt:!0,tag:1108},res:{ttl:D.FIVE_MINUTES,prompt:!1,tag:1109}},wc_sessionEvent:{req:{ttl:D.FIVE_MINUTES,prompt:!0,tag:1110},res:{ttl:D.FIVE_MINUTES,prompt:!1,tag:1111}},wc_sessionDelete:{req:{ttl:D.ONE_DAY,prompt:!1,tag:1112},res:{ttl:D.ONE_DAY,prompt:!1,tag:1113}},wc_sessionPing:{req:{ttl:D.ONE_DAY,prompt:!1,tag:1114},res:{ttl:D.ONE_DAY,prompt:!1,tag:1115}},wc_sessionAuthenticate:{req:{ttl:D.ONE_HOUR,prompt:!0,tag:1116},res:{ttl:D.ONE_HOUR,prompt:!1,tag:1117},reject:{ttl:D.FIVE_MINUTES,prompt:!1,tag:1118},autoReject:{ttl:D.FIVE_MINUTES,prompt:!1,tag:1119}}},fo={min:D.FIVE_MINUTES,max:D.SEVEN_DAYS},zt={idle:"IDLE",active:"ACTIVE"},yl={eth_sendTransaction:{key:""},eth_sendRawTransaction:{key:""},wallet_sendCalls:{key:""},solana_signTransaction:{key:"signature"},solana_signAllTransactions:{key:"transactions"},solana_signAndSendTransaction:{key:"signature"}},dE="request",pE=["wc_sessionPropose","wc_sessionRequest","wc_authRequest","wc_sessionAuthenticate"],fE="wc",gE="auth",mE="authKeys",wE="pairingTopics",yE="requests",Bn=`${fE}@${1.5}:${gE}:`,fn=`${Bn}:PUB_KEY`;var bE=Object.defineProperty,vE=Object.defineProperties,EE=Object.getOwnPropertyDescriptors,bl=Object.getOwnPropertySymbols,CE=Object.prototype.hasOwnProperty,IE=Object.prototype.propertyIsEnumerable,Qo=(t,e,s)=>e in t?bE(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,be=(t,e)=>{for(var s in e||(e={}))CE.call(e,s)&&Qo(t,s,e[s]);if(bl)for(var s of bl(e))IE.call(e,s)&&Qo(t,s,e[s]);return t},tt=(t,e)=>vE(t,EE(e)),P=(t,e,s)=>Qo(t,typeof e!="symbol"?e+"":e,s);class NE extends Kp{constructor(e){super(e),P(this,"name",hE),P(this,"events",new la),P(this,"initialized",!1),P(this,"requestQueue",{state:zt.idle,queue:[]}),P(this,"sessionRequestQueue",{state:zt.idle,queue:[]}),P(this,"requestQueueDelay",D.ONE_SECOND),P(this,"expectedPairingMethodMap",new Map),P(this,"recentlyDeletedMap",new Map),P(this,"recentlyDeletedLimit",200),P(this,"relayMessageCache",[]),P(this,"pendingSessions",new Map),P(this,"init",async()=>{this.initialized||(await this.cleanup(),this.registerRelayerEvents(),this.registerExpirerEvents(),this.registerPairingEvents(),await this.registerLinkModeListeners(),this.client.core.pairing.register({methods:Object.keys(Be)}),this.initialized=!0,setTimeout(async()=>{await this.processPendingMessageEvents(),this.sessionRequestQueue.queue=this.getPendingSessionRequests(),this.processSessionRequestQueue()},D.toMiliseconds(this.requestQueueDelay)))}),P(this,"connect",async s=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();const r=tt(be({},s),{requiredNamespaces:s.requiredNamespaces||{},optionalNamespaces:s.optionalNamespaces||{}});await this.isValidConnect(r),r.optionalNamespaces=Kw(r.requiredNamespaces,r.optionalNamespaces),r.requiredNamespaces={};const{pairingTopic:i,requiredNamespaces:n,optionalNamespaces:o,sessionProperties:a,scopedProperties:c,relays:l}=r;let u=i,h,d=!1;try{if(u){const A=this.client.core.pairing.pairings.get(u);this.client.logger.warn("connect() with existing pairing topic is deprecated and will be removed in the next major release."),d=A.active}}catch(A){throw this.client.logger.error(`connect() -> pairing.get(${u}) failed`),A}if(!u||!d){const{topic:A,uri:_}=await this.client.core.pairing.create();u=A,h=_}if(!u){const{message:A}=R("NO_MATCHING_KEY",`connect() pairing topic: ${u}`);throw new Error(A)}const p=await this.client.core.crypto.generateKeyPair(),w=Be.wc_sessionPropose.req.ttl||D.FIVE_MINUTES,m=De(w),f=tt(be(be({requiredNamespaces:n,optionalNamespaces:o,relays:l??[{protocol:rh}],proposer:{publicKey:p,metadata:this.client.metadata},expiryTimestamp:m,pairingTopic:u},a&&{sessionProperties:a}),c&&{scopedProperties:c}),{id:us()}),y=pe("session_connect",f.id),{reject:b,resolve:v,done:C}=Ds(w,wl),S=({id:A})=>{A===f.id&&(this.client.events.off("proposal_expire",S),this.pendingSessions.delete(f.id),this.events.emit(y,{error:{message:wl,code:0}}))};return this.client.events.on("proposal_expire",S),this.events.once(y,({error:A,session:_})=>{this.client.events.off("proposal_expire",S),A?b(A):_&&v(_)}),await this.sendRequest({topic:u,method:"wc_sessionPropose",params:f,throwOnFailedPublish:!0,clientRpcId:f.id}),await this.setProposal(f.id,f),{uri:h,approval:C}}),P(this,"pair",async s=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{return await this.client.core.pairing.pair(s)}catch(r){throw this.client.logger.error("pair() failed"),r}}),P(this,"approve",async s=>{var r,i,n;const o=this.client.core.eventClient.createEvent({properties:{topic:(r=s?.id)==null?void 0:r.toString(),trace:[$t.session_approve_started]}});try{this.isInitialized(),await this.confirmOnlineStateOrThrow()}catch(E){throw o.setError(xs.no_internet_connection),E}try{await this.isValidProposalId(s?.id)}catch(E){throw this.client.logger.error(`approve() -> proposal.get(${s?.id}) failed`),o.setError(xs.proposal_not_found),E}try{await this.isValidApprove(s)}catch(E){throw this.client.logger.error("approve() -> isValidApprove() failed"),o.setError(xs.session_approve_namespace_validation_failure),E}const{id:a,relayProtocol:c,namespaces:l,sessionProperties:u,scopedProperties:h,sessionConfig:d}=s,p=this.client.proposal.get(a);this.client.core.eventClient.deleteEvent({eventId:o.eventId});const{pairingTopic:w,proposer:m,requiredNamespaces:f,optionalNamespaces:y}=p;let b=(i=this.client.core.eventClient)==null?void 0:i.getEvent({topic:w});b||(b=(n=this.client.core.eventClient)==null?void 0:n.createEvent({type:$t.session_approve_started,properties:{topic:w,trace:[$t.session_approve_started,$t.session_namespaces_validation_success]}}));const v=await this.client.core.crypto.generateKeyPair(),C=m.publicKey,S=await this.client.core.crypto.generateSharedKey(v,C),A=be(be(be({relay:{protocol:c??"irn"},namespaces:l,controller:{publicKey:v,metadata:this.client.metadata},expiry:De(ur)},u&&{sessionProperties:u}),h&&{scopedProperties:h}),d&&{sessionConfig:d}),_=Ae.relay;b.addTrace($t.subscribing_session_topic);try{await this.client.core.relayer.subscribe(S,{transportType:_})}catch(E){throw b.setError(xs.subscribe_session_topic_failure),E}b.addTrace($t.subscribe_session_topic_success);const U=tt(be({},A),{topic:S,requiredNamespaces:f,optionalNamespaces:y,pairingTopic:w,acknowledged:!1,self:A.controller,peer:{publicKey:m.publicKey,metadata:m.metadata},controller:v,transportType:Ae.relay});await this.client.session.set(S,U),b.addTrace($t.store_session);try{b.addTrace($t.publishing_session_settle),await this.sendRequest({topic:S,method:"wc_sessionSettle",params:A,throwOnFailedPublish:!0}).catch(E=>{throw b?.setError(xs.session_settle_publish_failure),E}),b.addTrace($t.session_settle_publish_success),b.addTrace($t.publishing_session_approve),await this.sendResult({id:a,topic:w,result:{relay:{protocol:c??"irn"},responderPublicKey:v},throwOnFailedPublish:!0}).catch(E=>{throw b?.setError(xs.session_approve_publish_failure),E}),b.addTrace($t.session_approve_publish_success)}catch(E){throw this.client.logger.error(E),this.client.session.delete(S,we("USER_DISCONNECTED")),await this.client.core.relayer.unsubscribe(S),E}return this.client.core.eventClient.deleteEvent({eventId:b.eventId}),await this.client.core.pairing.updateMetadata({topic:w,metadata:m.metadata}),await this.client.proposal.delete(a,we("USER_DISCONNECTED")),await this.client.core.pairing.activate({topic:w}),await this.setExpiry(S,De(ur)),{topic:S,acknowledged:()=>Promise.resolve(this.client.session.get(S))}}),P(this,"reject",async s=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidReject(s)}catch(o){throw this.client.logger.error("reject() -> isValidReject() failed"),o}const{id:r,reason:i}=s;let n;try{n=this.client.proposal.get(r).pairingTopic}catch(o){throw this.client.logger.error(`reject() -> proposal.get(${r}) failed`),o}n&&(await this.sendError({id:r,topic:n,error:i,rpcOpts:Be.wc_sessionPropose.reject}),await this.client.proposal.delete(r,we("USER_DISCONNECTED")))}),P(this,"update",async s=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidUpdate(s)}catch(h){throw this.client.logger.error("update() -> isValidUpdate() failed"),h}const{topic:r,namespaces:i}=s,{done:n,resolve:o,reject:a}=Ds(),c=us(),l=_r().toString(),u=this.client.session.get(r).namespaces;return this.events.once(pe("session_update",c),({error:h})=>{h?a(h):o()}),await this.client.session.update(r,{namespaces:i}),await this.sendRequest({topic:r,method:"wc_sessionUpdate",params:{namespaces:i},throwOnFailedPublish:!0,clientRpcId:c,relayRpcId:l}).catch(h=>{this.client.logger.error(h),this.client.session.update(r,{namespaces:u}),a(h)}),{acknowledged:n}}),P(this,"extend",async s=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidExtend(s)}catch(c){throw this.client.logger.error("extend() -> isValidExtend() failed"),c}const{topic:r}=s,i=us(),{done:n,resolve:o,reject:a}=Ds();return this.events.once(pe("session_extend",i),({error:c})=>{c?a(c):o()}),await this.setExpiry(r,De(ur)),this.sendRequest({topic:r,method:"wc_sessionExtend",params:{},clientRpcId:i,throwOnFailedPublish:!0}).catch(c=>{a(c)}),{acknowledged:n}}),P(this,"request",async s=>{this.isInitialized();try{await this.isValidRequest(s)}catch(y){throw this.client.logger.error("request() -> isValidRequest() failed"),y}const{chainId:r,request:i,topic:n,expiry:o=Be.wc_sessionRequest.req.ttl}=s,a=this.client.session.get(n);a?.transportType===Ae.relay&&await this.confirmOnlineStateOrThrow();const c=us(),l=_r().toString(),{done:u,resolve:h,reject:d}=Ds(o,"Request expired. Please try again.");this.events.once(pe("session_request",c),({error:y,result:b})=>{y?d(y):h(b)});const p="wc_sessionRequest",w=this.getAppLinkIfEnabled(a.peer.metadata,a.transportType);if(w)return await this.sendRequest({clientRpcId:c,relayRpcId:l,topic:n,method:p,params:{request:tt(be({},i),{expiryTimestamp:De(o)}),chainId:r},expiry:o,throwOnFailedPublish:!0,appLink:w}).catch(y=>d(y)),this.client.events.emit("session_request_sent",{topic:n,request:i,chainId:r,id:c}),await u();const m={request:tt(be({},i),{expiryTimestamp:De(o)}),chainId:r},f=this.shouldSetTVF(p,m);return await Promise.all([new Promise(async y=>{await this.sendRequest(be({clientRpcId:c,relayRpcId:l,topic:n,method:p,params:m,expiry:o,throwOnFailedPublish:!0},f&&{tvf:this.getTVFParams(c,m)})).catch(b=>d(b)),this.client.events.emit("session_request_sent",{topic:n,request:i,chainId:r,id:c}),y()}),new Promise(async y=>{var b;if(!((b=a.sessionConfig)!=null&&b.disableDeepLink)){const v=await og(this.client.core.storage,ml);await rg({id:c,topic:n,wcDeepLink:v})}y()}),u()]).then(y=>y[2])}),P(this,"respond",async s=>{this.isInitialized(),await this.isValidRespond(s);const{topic:r,response:i}=s,{id:n}=i,o=this.client.session.get(r);o.transportType===Ae.relay&&await this.confirmOnlineStateOrThrow();const a=this.getAppLinkIfEnabled(o.peer.metadata,o.transportType);rs(i)?await this.sendResult({id:n,topic:r,result:i.result,throwOnFailedPublish:!0,appLink:a}):Ht(i)&&await this.sendError({id:n,topic:r,error:i.error,appLink:a}),this.cleanupAfterResponse(s)}),P(this,"ping",async s=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidPing(s)}catch(i){throw this.client.logger.error("ping() -> isValidPing() failed"),i}const{topic:r}=s;if(this.client.session.keys.includes(r)){const i=us(),n=_r().toString(),{done:o,resolve:a,reject:c}=Ds();this.events.once(pe("session_ping",i),({error:l})=>{l?c(l):a()}),await Promise.all([this.sendRequest({topic:r,method:"wc_sessionPing",params:{},throwOnFailedPublish:!0,clientRpcId:i,relayRpcId:n}),o()])}else this.client.core.pairing.pairings.keys.includes(r)&&(this.client.logger.warn("ping() on pairing topic is deprecated and will be removed in the next major release."),await this.client.core.pairing.ping({topic:r}))}),P(this,"emit",async s=>{this.isInitialized(),await this.confirmOnlineStateOrThrow(),await this.isValidEmit(s);const{topic:r,event:i,chainId:n}=s,o=_r().toString(),a=us();await this.sendRequest({topic:r,method:"wc_sessionEvent",params:{event:i,chainId:n},throwOnFailedPublish:!0,relayRpcId:o,clientRpcId:a})}),P(this,"disconnect",async s=>{this.isInitialized(),await this.confirmOnlineStateOrThrow(),await this.isValidDisconnect(s);const{topic:r}=s;if(this.client.session.keys.includes(r))await this.sendRequest({topic:r,method:"wc_sessionDelete",params:we("USER_DISCONNECTED"),throwOnFailedPublish:!0}),await this.deleteSession({topic:r,emitEvent:!1});else if(this.client.core.pairing.pairings.keys.includes(r))await this.client.core.pairing.disconnect({topic:r});else{const{message:i}=R("MISMATCHED_TOPIC",`Session or pairing topic not found: ${r}`);throw new Error(i)}}),P(this,"find",s=>(this.isInitialized(),this.client.session.getAll().filter(r=>Yw(r,s)))),P(this,"getPendingSessionRequests",()=>this.client.pendingRequest.getAll()),P(this,"authenticate",async(s,r)=>{var i;this.isInitialized(),this.isValidAuthenticate(s);const n=r&&this.client.core.linkModeSupportedApps.includes(r)&&((i=this.client.metadata.redirect)==null?void 0:i.linkMode),o=n?Ae.link_mode:Ae.relay;o===Ae.relay&&await this.confirmOnlineStateOrThrow();const{chains:a,statement:c="",uri:l,domain:u,nonce:h,type:d,exp:p,nbf:w,methods:m=[],expiry:f}=s,y=[...s.resources||[]],{topic:b,uri:v}=await this.client.core.pairing.create({methods:["wc_sessionAuthenticate"],transportType:o});this.client.logger.info({message:"Generated new pairing",pairing:{topic:b,uri:v}});const C=await this.client.core.crypto.generateKeyPair(),S=dn(C);if(await Promise.all([this.client.auth.authKeys.set(fn,{responseTopic:S,publicKey:C}),this.client.auth.pairingTopics.set(S,{topic:S,pairingTopic:b})]),await this.client.core.relayer.subscribe(S,{transportType:o}),this.client.logger.info(`sending request to new pairing topic: ${b}`),m.length>0){const{namespace:x}=Or(a[0]);let G=Zg(x,"request",m);hn(y)&&(G=em(G,y.pop())),y.push(G)}const A=f&&f>Be.wc_sessionAuthenticate.req.ttl?f:Be.wc_sessionAuthenticate.req.ttl,_={authPayload:{type:d??"caip122",chains:a,statement:c,aud:l,domain:u,version:"1",nonce:h,iat:new Date().toISOString(),exp:p,nbf:w,resources:y},requester:{publicKey:C,metadata:this.client.metadata},expiryTimestamp:De(A)},U={eip155:{chains:a,methods:[...new Set(["personal_sign",...m])],events:["chainChanged","accountsChanged"]}},E={requiredNamespaces:{},optionalNamespaces:U,relays:[{protocol:"irn"}],pairingTopic:b,proposer:{publicKey:C,metadata:this.client.metadata},expiryTimestamp:De(Be.wc_sessionPropose.req.ttl),id:us()},{done:$,resolve:I,reject:L}=Ds(A,"Request expired"),H=us(),N=pe("session_connect",E.id),T=pe("session_request",H),k=async({error:x,session:G})=>{this.events.off(T,B),x?L(x):G&&I({session:G})},B=async x=>{var G,Q,se;if(await this.deletePendingAuthRequest(H,{message:"fulfilled",code:0}),x.error){const Re=we("WC_METHOD_UNSUPPORTED","wc_sessionAuthenticate");return x.error.code===Re.code?void 0:(this.events.off(N,k),L(x.error.message))}await this.deleteProposal(E.id),this.events.off(N,k);const{cacaos:Ee,responder:de}=x.result,Oe=[],Le=[];for(const Re of Ee){await pc({cacao:Re,projectId:this.client.core.projectId})||(this.client.logger.error(Re,"Signature verification failed"),L(we("SESSION_SETTLEMENT_FAILED","Signature verification failed")));const{p:Os}=Re,Xt=hn(Os.resources),jt=[xo(Os.iss)],Zt=In(Os.iss);if(Xt){const ir=fc(Xt),Hi=gc(Xt);Oe.push(...ir),jt.push(...Hi)}for(const ir of jt)Le.push(`${ir}:${Zt}`)}const Xe=await this.client.core.crypto.generateSharedKey(C,de.publicKey);let $e;Oe.length>0&&($e={topic:Xe,acknowledged:!0,self:{publicKey:C,metadata:this.client.metadata},peer:de,controller:de.publicKey,expiry:De(ur),requiredNamespaces:{},optionalNamespaces:{},relay:{protocol:"irn"},pairingTopic:b,namespaces:jc([...new Set(Oe)],[...new Set(Le)]),transportType:o},await this.client.core.relayer.subscribe(Xe,{transportType:o}),await this.client.session.set(Xe,$e),b&&await this.client.core.pairing.updateMetadata({topic:b,metadata:de.metadata}),$e=this.client.session.get(Xe)),(G=this.client.metadata.redirect)!=null&&G.linkMode&&(Q=de.metadata.redirect)!=null&&Q.linkMode&&(se=de.metadata.redirect)!=null&&se.universal&&r&&(this.client.core.addLinkModeSupportedApp(de.metadata.redirect.universal),this.client.session.update(Xe,{transportType:Ae.link_mode})),I({auths:Ee,session:$e})};this.events.once(N,k),this.events.once(T,B);let q;try{if(n){const x=qs("wc_sessionAuthenticate",_,H);this.client.core.history.set(b,x);const G=await this.client.core.crypto.encode("",x,{type:qi,encoding:bs});q=en(r,b,G)}else await Promise.all([this.sendRequest({topic:b,method:"wc_sessionAuthenticate",params:_,expiry:s.expiry,throwOnFailedPublish:!0,clientRpcId:H}),this.sendRequest({topic:b,method:"wc_sessionPropose",params:E,expiry:Be.wc_sessionPropose.req.ttl,throwOnFailedPublish:!0,clientRpcId:E.id})])}catch(x){throw this.events.off(N,k),this.events.off(T,B),x}return await this.setProposal(E.id,E),await this.setAuthRequest(H,{request:tt(be({},_),{verifyContext:{}}),pairingTopic:b,transportType:o}),{uri:q??v,response:$}}),P(this,"approveSessionAuthenticate",async s=>{const{id:r,auths:i}=s,n=this.client.core.eventClient.createEvent({properties:{topic:r.toString(),trace:[$s.authenticated_session_approve_started]}});try{this.isInitialized()}catch(f){throw n.setError(ri.no_internet_connection),f}const o=this.getPendingAuthRequest(r);if(!o)throw n.setError(ri.authenticated_session_pending_request_not_found),new Error(`Could not find pending auth request with id ${r}`);const a=o.transportType||Ae.relay;a===Ae.relay&&await this.confirmOnlineStateOrThrow();const c=o.requester.publicKey,l=await this.client.core.crypto.generateKeyPair(),u=dn(c),h={type:cs,receiverPublicKey:c,senderPublicKey:l},d=[],p=[];for(const f of i){if(!await pc({cacao:f,projectId:this.client.core.projectId})){n.setError(ri.invalid_cacao);const S=we("SESSION_SETTLEMENT_FAILED","Signature verification failed");throw await this.sendError({id:r,topic:u,error:S,encodeOpts:h}),new Error(S.message)}n.addTrace($s.cacaos_verified);const{p:y}=f,b=hn(y.resources),v=[xo(y.iss)],C=In(y.iss);if(b){const S=fc(b),A=gc(b);d.push(...S),v.push(...A)}for(const S of v)p.push(`${S}:${C}`)}const w=await this.client.core.crypto.generateSharedKey(l,c);n.addTrace($s.create_authenticated_session_topic);let m;if(d?.length>0){m={topic:w,acknowledged:!0,self:{publicKey:l,metadata:this.client.metadata},peer:{publicKey:c,metadata:o.requester.metadata},controller:c,expiry:De(ur),authentication:i,requiredNamespaces:{},optionalNamespaces:{},relay:{protocol:"irn"},pairingTopic:o.pairingTopic,namespaces:jc([...new Set(d)],[...new Set(p)]),transportType:a},n.addTrace($s.subscribing_authenticated_session_topic);try{await this.client.core.relayer.subscribe(w,{transportType:a})}catch(f){throw n.setError(ri.subscribe_authenticated_session_topic_failure),f}n.addTrace($s.subscribe_authenticated_session_topic_success),await this.client.session.set(w,m),n.addTrace($s.store_authenticated_session),await this.client.core.pairing.updateMetadata({topic:o.pairingTopic,metadata:o.requester.metadata})}n.addTrace($s.publishing_authenticated_session_approve);try{await this.sendResult({topic:u,id:r,result:{cacaos:i,responder:{publicKey:l,metadata:this.client.metadata}},encodeOpts:h,throwOnFailedPublish:!0,appLink:this.getAppLinkIfEnabled(o.requester.metadata,a)})}catch(f){throw n.setError(ri.authenticated_session_approve_publish_failure),f}return await this.client.auth.requests.delete(r,{message:"fulfilled",code:0}),await this.client.core.pairing.activate({topic:o.pairingTopic}),this.client.core.eventClient.deleteEvent({eventId:n.eventId}),{session:m}}),P(this,"rejectSessionAuthenticate",async s=>{this.isInitialized();const{id:r,reason:i}=s,n=this.getPendingAuthRequest(r);if(!n)throw new Error(`Could not find pending auth request with id ${r}`);n.transportType===Ae.relay&&await this.confirmOnlineStateOrThrow();const o=n.requester.publicKey,a=await this.client.core.crypto.generateKeyPair(),c=dn(o),l={type:cs,receiverPublicKey:o,senderPublicKey:a};await this.sendError({id:r,topic:c,error:i,encodeOpts:l,rpcOpts:Be.wc_sessionAuthenticate.reject,appLink:this.getAppLinkIfEnabled(n.requester.metadata,n.transportType)}),await this.client.auth.requests.delete(r,{message:"rejected",code:0}),await this.client.proposal.delete(r,we("USER_DISCONNECTED"))}),P(this,"formatAuthMessage",s=>{this.isInitialized();const{request:r,iss:i}=s;return Pu(r,i)}),P(this,"processRelayMessageCache",()=>{setTimeout(async()=>{if(this.relayMessageCache.length!==0)for(;this.relayMessageCache.length>0;)try{const s=this.relayMessageCache.shift();s&&await this.onRelayMessage(s)}catch(s){this.client.logger.error(s)}},50)}),P(this,"cleanupDuplicatePairings",async s=>{if(s.pairingTopic)try{const r=this.client.core.pairing.pairings.get(s.pairingTopic),i=this.client.core.pairing.pairings.getAll().filter(n=>{var o,a;return((o=n.peerMetadata)==null?void 0:o.url)&&((a=n.peerMetadata)==null?void 0:a.url)===s.peer.metadata.url&&n.topic&&n.topic!==r.topic});if(i.length===0)return;this.client.logger.info(`Cleaning up ${i.length} duplicate pairing(s)`),await Promise.all(i.map(n=>this.client.core.pairing.disconnect({topic:n.topic}))),this.client.logger.info("Duplicate pairings clean up finished")}catch(r){this.client.logger.error(r)}}),P(this,"deleteSession",async s=>{var r;const{topic:i,expirerHasDeleted:n=!1,emitEvent:o=!0,id:a=0}=s,{self:c}=this.client.session.get(i);await this.client.core.relayer.unsubscribe(i),await this.client.session.delete(i,we("USER_DISCONNECTED")),this.addToRecentlyDeleted(i,"session"),this.client.core.crypto.keychain.has(c.publicKey)&&await this.client.core.crypto.deleteKeyPair(c.publicKey),this.client.core.crypto.keychain.has(i)&&await this.client.core.crypto.deleteSymKey(i),n||this.client.core.expirer.del(i),this.client.core.storage.removeItem(ml).catch(l=>this.client.logger.warn(l)),this.getPendingSessionRequests().forEach(l=>{l.topic===i&&this.deletePendingSessionRequest(l.id,we("USER_DISCONNECTED"))}),i===((r=this.sessionRequestQueue.queue[0])==null?void 0:r.topic)&&(this.sessionRequestQueue.state=zt.idle),o&&this.client.events.emit("session_delete",{id:a,topic:i})}),P(this,"deleteProposal",async(s,r)=>{if(r)try{const i=this.client.proposal.get(s);this.client.core.eventClient.getEvent({topic:i.pairingTopic})?.setError(xs.proposal_expired)}catch{}await Promise.all([this.client.proposal.delete(s,we("USER_DISCONNECTED")),r?Promise.resolve():this.client.core.expirer.del(s)]),this.addToRecentlyDeleted(s,"proposal")}),P(this,"deletePendingSessionRequest",async(s,r,i=!1)=>{await Promise.all([this.client.pendingRequest.delete(s,r),i?Promise.resolve():this.client.core.expirer.del(s)]),this.addToRecentlyDeleted(s,"request"),this.sessionRequestQueue.queue=this.sessionRequestQueue.queue.filter(n=>n.id!==s),i&&(this.sessionRequestQueue.state=zt.idle,this.client.events.emit("session_request_expire",{id:s}))}),P(this,"deletePendingAuthRequest",async(s,r,i=!1)=>{await Promise.all([this.client.auth.requests.delete(s,r),i?Promise.resolve():this.client.core.expirer.del(s)])}),P(this,"setExpiry",async(s,r)=>{this.client.session.keys.includes(s)&&(this.client.core.expirer.set(s,r),await this.client.session.update(s,{expiry:r}))}),P(this,"setProposal",async(s,r)=>{this.client.core.expirer.set(s,De(Be.wc_sessionPropose.req.ttl)),await this.client.proposal.set(s,r)}),P(this,"setAuthRequest",async(s,r)=>{const{request:i,pairingTopic:n,transportType:o=Ae.relay}=r;this.client.core.expirer.set(s,i.expiryTimestamp),await this.client.auth.requests.set(s,{authPayload:i.authPayload,requester:i.requester,expiryTimestamp:i.expiryTimestamp,id:s,pairingTopic:n,verifyContext:i.verifyContext,transportType:o})}),P(this,"setPendingSessionRequest",async s=>{const{id:r,topic:i,params:n,verifyContext:o}=s,a=n.request.expiryTimestamp||De(Be.wc_sessionRequest.req.ttl);this.client.core.expirer.set(r,a),await this.client.pendingRequest.set(r,{id:r,topic:i,params:n,verifyContext:o})}),P(this,"sendRequest",async s=>{const{topic:r,method:i,params:n,expiry:o,relayRpcId:a,clientRpcId:c,throwOnFailedPublish:l,appLink:u,tvf:h}=s,d=qs(i,n,c);let p;const w=!!u;try{const y=w?bs:Mt;p=await this.client.core.crypto.encode(r,d,{encoding:y})}catch(y){throw await this.cleanup(),this.client.logger.error(`sendRequest() -> core.crypto.encode() for topic ${r} failed`),y}let m;if(pE.includes(i)){const y=Kt(JSON.stringify(d)),b=Kt(p);m=await this.client.core.verify.register({id:b,decryptedId:y})}const f=Be[i].req;if(f.attestation=m,o&&(f.ttl=o),a&&(f.id=a),this.client.core.history.set(r,d),w){const y=en(u,r,p);await global.Linking.openURL(y,this.client.name)}else{const y=Be[i].req;o&&(y.ttl=o),a&&(y.id=a),y.tvf=tt(be({},h),{correlationId:d.id}),l?(y.internal=tt(be({},y.internal),{throwOnFailedPublish:!0}),await this.client.core.relayer.publish(r,p,y)):this.client.core.relayer.publish(r,p,y).catch(b=>this.client.logger.error(b))}return d.id}),P(this,"sendResult",async s=>{const{id:r,topic:i,result:n,throwOnFailedPublish:o,encodeOpts:a,appLink:c}=s,l=kn(r,n);let u;const h=c&&typeof(global==null?void 0:global.Linking)<"u";try{const w=h?bs:Mt;u=await this.client.core.crypto.encode(i,l,tt(be({},a||{}),{encoding:w}))}catch(w){throw await this.cleanup(),this.client.logger.error(`sendResult() -> core.crypto.encode() for topic ${i} failed`),w}let d,p;try{d=await this.client.core.history.get(i,r);const w=d.request;try{this.shouldSetTVF(w.method,w.params)&&(p=this.getTVFParams(r,w.params,n))}catch(m){this.client.logger.warn("sendResult() -> getTVFParams() failed",m)}}catch(w){throw this.client.logger.error(`sendResult() -> history.get(${i}, ${r}) failed`),w}if(h){const w=en(c,i,u);await global.Linking.openURL(w,this.client.name)}else{const w=d.request.method,m=Be[w].res;m.tvf=tt(be({},p),{correlationId:r}),o?(m.internal=tt(be({},m.internal),{throwOnFailedPublish:!0}),await this.client.core.relayer.publish(i,u,m)):this.client.core.relayer.publish(i,u,m).catch(f=>this.client.logger.error(f))}await this.client.core.history.resolve(l)}),P(this,"sendError",async s=>{const{id:r,topic:i,error:n,encodeOpts:o,rpcOpts:a,appLink:c}=s,l=Gl(r,n);let u;const h=c&&typeof(global==null?void 0:global.Linking)<"u";try{const p=h?bs:Mt;u=await this.client.core.crypto.encode(i,l,tt(be({},o||{}),{encoding:p}))}catch(p){throw await this.cleanup(),this.client.logger.error(`sendError() -> core.crypto.encode() for topic ${i} failed`),p}let d;try{d=await this.client.core.history.get(i,r)}catch(p){throw this.client.logger.error(`sendError() -> history.get(${i}, ${r}) failed`),p}if(h){const p=en(c,i,u);await global.Linking.openURL(p,this.client.name)}else{const p=d.request.method,w=a||Be[p].res;this.client.core.relayer.publish(i,u,w)}await this.client.core.history.resolve(l)}),P(this,"cleanup",async()=>{const s=[],r=[];this.client.session.getAll().forEach(i=>{let n=!1;ys(i.expiry)&&(n=!0),this.client.core.crypto.keychain.has(i.topic)||(n=!0),n&&s.push(i.topic)}),this.client.proposal.getAll().forEach(i=>{ys(i.expiryTimestamp)&&r.push(i.id)}),await Promise.all([...s.map(i=>this.deleteSession({topic:i})),...r.map(i=>this.deleteProposal(i))])}),P(this,"onProviderMessageEvent",async s=>{!this.initialized||this.relayMessageCache.length>0?this.relayMessageCache.push(s):await this.onRelayMessage(s)}),P(this,"onRelayEventRequest",async s=>{this.requestQueue.queue.push(s),await this.processRequestsQueue()}),P(this,"processRequestsQueue",async()=>{if(this.requestQueue.state===zt.active){this.client.logger.info("Request queue already active, skipping...");return}for(this.client.logger.info(`Request queue starting with ${this.requestQueue.queue.length} requests`);this.requestQueue.queue.length>0;){this.requestQueue.state=zt.active;const s=this.requestQueue.queue.shift();if(s)try{await this.processRequest(s)}catch(r){this.client.logger.warn(r)}}this.requestQueue.state=zt.idle}),P(this,"processRequest",async s=>{const{topic:r,payload:i,attestation:n,transportType:o,encryptedId:a}=s,c=i.method;if(!this.shouldIgnorePairingRequest({topic:r,requestMethod:c}))switch(c){case"wc_sessionPropose":return await this.onSessionProposeRequest({topic:r,payload:i,attestation:n,encryptedId:a});case"wc_sessionSettle":return await this.onSessionSettleRequest(r,i);case"wc_sessionUpdate":return await this.onSessionUpdateRequest(r,i);case"wc_sessionExtend":return await this.onSessionExtendRequest(r,i);case"wc_sessionPing":return await this.onSessionPingRequest(r,i);case"wc_sessionDelete":return await this.onSessionDeleteRequest(r,i);case"wc_sessionRequest":return await this.onSessionRequest({topic:r,payload:i,attestation:n,encryptedId:a,transportType:o});case"wc_sessionEvent":return await this.onSessionEventRequest(r,i);case"wc_sessionAuthenticate":return await this.onSessionAuthenticateRequest({topic:r,payload:i,attestation:n,encryptedId:a,transportType:o});default:return this.client.logger.info(`Unsupported request method ${c}`)}}),P(this,"onRelayEventResponse",async s=>{const{topic:r,payload:i,transportType:n}=s,o=(await this.client.core.history.get(r,i.id)).request.method;switch(o){case"wc_sessionPropose":return this.onSessionProposeResponse(r,i,n);case"wc_sessionSettle":return this.onSessionSettleResponse(r,i);case"wc_sessionUpdate":return this.onSessionUpdateResponse(r,i);case"wc_sessionExtend":return this.onSessionExtendResponse(r,i);case"wc_sessionPing":return this.onSessionPingResponse(r,i);case"wc_sessionRequest":return this.onSessionRequestResponse(r,i);case"wc_sessionAuthenticate":return this.onSessionAuthenticateResponse(r,i);default:return this.client.logger.info(`Unsupported response method ${o}`)}}),P(this,"onRelayEventUnknownPayload",s=>{const{topic:r}=s,{message:i}=R("MISSING_OR_INVALID",`Decoded payload on topic ${r} is not identifiable as a JSON-RPC request or a response.`);throw new Error(i)}),P(this,"shouldIgnorePairingRequest",s=>{const{topic:r,requestMethod:i}=s,n=this.expectedPairingMethodMap.get(r);return!n||n.includes(i)?!1:!!(n.includes("wc_sessionAuthenticate")&&this.client.events.listenerCount("session_authenticate")>0)}),P(this,"onSessionProposeRequest",async s=>{const{topic:r,payload:i,attestation:n,encryptedId:o}=s,{params:a,id:c}=i;try{const l=this.client.core.eventClient.getEvent({topic:r});this.client.events.listenerCount("session_proposal")===0&&(console.warn("No listener for session_proposal event"),l?.setError(is.proposal_listener_not_found)),this.isValidConnect(be({},i.params));const u=a.expiryTimestamp||De(Be.wc_sessionPropose.req.ttl),h=be({id:c,pairingTopic:r,expiryTimestamp:u},a);await this.setProposal(c,h);const d=await this.getVerifyContext({attestationId:n,hash:Kt(JSON.stringify(i)),encryptedId:o,metadata:h.proposer.metadata});l?.addTrace(Wt.emit_session_proposal),this.client.events.emit("session_proposal",{id:c,params:h,verifyContext:d})}catch(l){await this.sendError({id:c,topic:r,error:l,rpcOpts:Be.wc_sessionPropose.autoReject}),this.client.logger.error(l)}}),P(this,"onSessionProposeResponse",async(s,r,i)=>{const{id:n}=r;if(rs(r)){const{result:o}=r;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",result:o});const a=this.client.proposal.get(n);this.client.logger.trace({type:"method",method:"onSessionProposeResponse",proposal:a});const c=a.proposer.publicKey;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",selfPublicKey:c});const l=o.responderPublicKey;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",peerPublicKey:l});const u=await this.client.core.crypto.generateSharedKey(c,l);this.pendingSessions.set(n,{sessionTopic:u,pairingTopic:s,proposalId:n,publicKey:c});const h=await this.client.core.relayer.subscribe(u,{transportType:i});this.client.logger.trace({type:"method",method:"onSessionProposeResponse",subscriptionId:h}),await this.client.core.pairing.activate({topic:s})}else if(Ht(r)){await this.client.proposal.delete(n,we("USER_DISCONNECTED"));const o=pe("session_connect",n);if(this.events.listenerCount(o)===0)throw new Error(`emitting ${o} without any listeners, 954`);this.events.emit(o,{error:r.error})}}),P(this,"onSessionSettleRequest",async(s,r)=>{const{id:i,params:n}=r;try{this.isValidSessionSettleRequest(n);const{relay:o,controller:a,expiry:c,namespaces:l,sessionProperties:u,scopedProperties:h,sessionConfig:d}=r.params,p=[...this.pendingSessions.values()].find(f=>f.sessionTopic===s);if(!p)return this.client.logger.error(`Pending session not found for topic ${s}`);const w=this.client.proposal.get(p.proposalId),m=tt(be(be(be({topic:s,relay:o,expiry:c,namespaces:l,acknowledged:!0,pairingTopic:p.pairingTopic,requiredNamespaces:w.requiredNamespaces,optionalNamespaces:w.optionalNamespaces,controller:a.publicKey,self:{publicKey:p.publicKey,metadata:this.client.metadata},peer:{publicKey:a.publicKey,metadata:a.metadata}},u&&{sessionProperties:u}),h&&{scopedProperties:h}),d&&{sessionConfig:d}),{transportType:Ae.relay});await this.client.session.set(m.topic,m),await this.setExpiry(m.topic,m.expiry),await this.client.core.pairing.updateMetadata({topic:p.pairingTopic,metadata:m.peer.metadata}),this.client.events.emit("session_connect",{session:m}),this.events.emit(pe("session_connect",p.proposalId),{session:m}),this.pendingSessions.delete(p.proposalId),this.deleteProposal(p.proposalId,!1),this.cleanupDuplicatePairings(m),await this.sendResult({id:r.id,topic:s,result:!0,throwOnFailedPublish:!0})}catch(o){await this.sendError({id:i,topic:s,error:o}),this.client.logger.error(o)}}),P(this,"onSessionSettleResponse",async(s,r)=>{const{id:i}=r;rs(r)?(await this.client.session.update(s,{acknowledged:!0}),this.events.emit(pe("session_approve",i),{})):Ht(r)&&(await this.client.session.delete(s,we("USER_DISCONNECTED")),this.events.emit(pe("session_approve",i),{error:r.error}))}),P(this,"onSessionUpdateRequest",async(s,r)=>{const{params:i,id:n}=r;try{const o=`${s}_session_update`,a=ti.get(o);if(a&&this.isRequestOutOfSync(a,n)){this.client.logger.warn(`Discarding out of sync request - ${n}`),this.sendError({id:n,topic:s,error:we("INVALID_UPDATE_REQUEST")});return}this.isValidUpdate(be({topic:s},i));try{ti.set(o,n),await this.client.session.update(s,{namespaces:i.namespaces}),await this.sendResult({id:n,topic:s,result:!0,throwOnFailedPublish:!0})}catch(c){throw ti.delete(o),c}this.client.events.emit("session_update",{id:n,topic:s,params:i})}catch(o){await this.sendError({id:n,topic:s,error:o}),this.client.logger.error(o)}}),P(this,"isRequestOutOfSync",(s,r)=>r.toString().slice(0,-3){const{id:i}=r,n=pe("session_update",i);if(this.events.listenerCount(n)===0)throw new Error(`emitting ${n} without any listeners`);rs(r)?this.events.emit(pe("session_update",i),{}):Ht(r)&&this.events.emit(pe("session_update",i),{error:r.error})}),P(this,"onSessionExtendRequest",async(s,r)=>{const{id:i}=r;try{this.isValidExtend({topic:s}),await this.setExpiry(s,De(ur)),await this.sendResult({id:i,topic:s,result:!0,throwOnFailedPublish:!0}),this.client.events.emit("session_extend",{id:i,topic:s})}catch(n){await this.sendError({id:i,topic:s,error:n}),this.client.logger.error(n)}}),P(this,"onSessionExtendResponse",(s,r)=>{const{id:i}=r,n=pe("session_extend",i);if(this.events.listenerCount(n)===0)throw new Error(`emitting ${n} without any listeners`);rs(r)?this.events.emit(pe("session_extend",i),{}):Ht(r)&&this.events.emit(pe("session_extend",i),{error:r.error})}),P(this,"onSessionPingRequest",async(s,r)=>{const{id:i}=r;try{this.isValidPing({topic:s}),await this.sendResult({id:i,topic:s,result:!0,throwOnFailedPublish:!0}),this.client.events.emit("session_ping",{id:i,topic:s})}catch(n){await this.sendError({id:i,topic:s,error:n}),this.client.logger.error(n)}}),P(this,"onSessionPingResponse",(s,r)=>{const{id:i}=r,n=pe("session_ping",i);setTimeout(()=>{if(this.events.listenerCount(n)===0)throw new Error(`emitting ${n} without any listeners 2176`);rs(r)?this.events.emit(pe("session_ping",i),{}):Ht(r)&&this.events.emit(pe("session_ping",i),{error:r.error})},500)}),P(this,"onSessionDeleteRequest",async(s,r)=>{const{id:i}=r;try{this.isValidDisconnect({topic:s,reason:r.params}),Promise.all([new Promise(n=>{this.client.core.relayer.once(Fe.publish,async()=>{n(await this.deleteSession({topic:s,id:i}))})}),this.sendResult({id:i,topic:s,result:!0,throwOnFailedPublish:!0}),this.cleanupPendingSentRequestsForTopic({topic:s,error:we("USER_DISCONNECTED")})]).catch(n=>this.client.logger.error(n))}catch(n){this.client.logger.error(n)}}),P(this,"onSessionRequest",async s=>{var r,i,n;const{topic:o,payload:a,attestation:c,encryptedId:l,transportType:u}=s,{id:h,params:d}=a;try{await this.isValidRequest(be({topic:o},d));const p=this.client.session.get(o),w=await this.getVerifyContext({attestationId:c,hash:Kt(JSON.stringify(qs("wc_sessionRequest",d,h))),encryptedId:l,metadata:p.peer.metadata,transportType:u}),m={id:h,topic:o,params:d,verifyContext:w};await this.setPendingSessionRequest(m),u===Ae.link_mode&&(r=p.peer.metadata.redirect)!=null&&r.universal&&this.client.core.addLinkModeSupportedApp((i=p.peer.metadata.redirect)==null?void 0:i.universal),(n=this.client.signConfig)!=null&&n.disableRequestQueue?this.emitSessionRequest(m):(this.addSessionRequestToSessionRequestQueue(m),this.processSessionRequestQueue())}catch(p){await this.sendError({id:h,topic:o,error:p}),this.client.logger.error(p)}}),P(this,"onSessionRequestResponse",(s,r)=>{const{id:i}=r,n=pe("session_request",i);if(this.events.listenerCount(n)===0)throw new Error(`emitting ${n} without any listeners`);rs(r)?this.events.emit(pe("session_request",i),{result:r.result}):Ht(r)&&this.events.emit(pe("session_request",i),{error:r.error})}),P(this,"onSessionEventRequest",async(s,r)=>{const{id:i,params:n}=r;try{const o=`${s}_session_event_${n.event.name}`,a=ti.get(o);if(a&&this.isRequestOutOfSync(a,i)){this.client.logger.info(`Discarding out of sync request - ${i}`);return}this.isValidEmit(be({topic:s},n)),this.client.events.emit("session_event",{id:i,topic:s,params:n}),ti.set(o,i)}catch(o){await this.sendError({id:i,topic:s,error:o}),this.client.logger.error(o)}}),P(this,"onSessionAuthenticateResponse",(s,r)=>{const{id:i}=r;this.client.logger.trace({type:"method",method:"onSessionAuthenticateResponse",topic:s,payload:r}),rs(r)?this.events.emit(pe("session_request",i),{result:r.result}):Ht(r)&&this.events.emit(pe("session_request",i),{error:r.error})}),P(this,"onSessionAuthenticateRequest",async s=>{var r;const{topic:i,payload:n,attestation:o,encryptedId:a,transportType:c}=s;try{const{requester:l,authPayload:u,expiryTimestamp:h}=n.params,d=await this.getVerifyContext({attestationId:o,hash:Kt(JSON.stringify(n)),encryptedId:a,metadata:l.metadata,transportType:c}),p={requester:l,pairingTopic:i,id:n.id,authPayload:u,verifyContext:d,expiryTimestamp:h};await this.setAuthRequest(n.id,{request:p,pairingTopic:i,transportType:c}),c===Ae.link_mode&&(r=l.metadata.redirect)!=null&&r.universal&&this.client.core.addLinkModeSupportedApp(l.metadata.redirect.universal),this.client.events.emit("session_authenticate",{topic:i,params:n.params,id:n.id,verifyContext:d})}catch(l){this.client.logger.error(l);const u=n.params.requester.publicKey,h=await this.client.core.crypto.generateKeyPair(),d=this.getAppLinkIfEnabled(n.params.requester.metadata,c),p={type:cs,receiverPublicKey:u,senderPublicKey:h};await this.sendError({id:n.id,topic:i,error:l,encodeOpts:p,rpcOpts:Be.wc_sessionAuthenticate.autoReject,appLink:d})}}),P(this,"addSessionRequestToSessionRequestQueue",s=>{this.sessionRequestQueue.queue.push(s)}),P(this,"cleanupAfterResponse",s=>{this.deletePendingSessionRequest(s.response.id,{message:"fulfilled",code:0}),setTimeout(()=>{this.sessionRequestQueue.state=zt.idle,this.processSessionRequestQueue()},D.toMiliseconds(this.requestQueueDelay))}),P(this,"cleanupPendingSentRequestsForTopic",({topic:s,error:r})=>{const i=this.client.core.history.pending;i.length>0&&i.filter(n=>n.topic===s&&n.request.method==="wc_sessionRequest").forEach(n=>{const o=n.request.id,a=pe("session_request",o);if(this.events.listenerCount(a)===0)throw new Error(`emitting ${a} without any listeners`);this.events.emit(pe("session_request",n.request.id),{error:r})})}),P(this,"processSessionRequestQueue",()=>{if(this.sessionRequestQueue.state===zt.active){this.client.logger.info("session request queue is already active.");return}const s=this.sessionRequestQueue.queue[0];if(!s){this.client.logger.info("session request queue is empty.");return}try{this.sessionRequestQueue.state=zt.active,this.emitSessionRequest(s)}catch(r){this.client.logger.error(r)}}),P(this,"emitSessionRequest",s=>{this.client.events.emit("session_request",s)}),P(this,"onPairingCreated",s=>{if(s.methods&&this.expectedPairingMethodMap.set(s.topic,s.methods),s.active)return;const r=this.client.proposal.getAll().find(i=>i.pairingTopic===s.topic);r&&this.onSessionProposeRequest({topic:s.topic,payload:qs("wc_sessionPropose",tt(be({},r),{requiredNamespaces:r.requiredNamespaces,optionalNamespaces:r.optionalNamespaces,relays:r.relays,proposer:r.proposer,sessionProperties:r.sessionProperties,scopedProperties:r.scopedProperties}),r.id)})}),P(this,"isValidConnect",async s=>{if(!ut(s)){const{message:l}=R("MISSING_OR_INVALID",`connect() params: ${JSON.stringify(s)}`);throw new Error(l)}const{pairingTopic:r,requiredNamespaces:i,optionalNamespaces:n,sessionProperties:o,scopedProperties:a,relays:c}=s;if(Je(r)||await this.isValidPairingTopic(r),!cy(c)){const{message:l}=R("MISSING_OR_INVALID",`connect() relays: ${c}`);throw new Error(l)}if(!Je(i)&&_s(i)!==0){const l="requiredNamespaces are deprecated and are automatically assigned to optionalNamespaces";["fatal","error","silent"].includes(this.client.logger.level)?console.warn(l):this.client.logger.warn(l),this.validateNamespaces(i,"requiredNamespaces")}if(!Je(n)&&_s(n)!==0&&this.validateNamespaces(n,"optionalNamespaces"),Je(o)||this.validateSessionProps(o,"sessionProperties"),!Je(a)){this.validateSessionProps(a,"scopedProperties");const l=Object.keys(i||{}).concat(Object.keys(n||{}));if(!Object.keys(a).every(u=>l.includes(u)))throw new Error(`Scoped properties must be a subset of required/optional namespaces, received: ${JSON.stringify(a)}, required/optional namespaces: ${JSON.stringify(l)}`)}}),P(this,"validateNamespaces",(s,r)=>{const i=ay(s,"connect()",r);if(i)throw new Error(i.message)}),P(this,"isValidApprove",async s=>{if(!ut(s))throw new Error(R("MISSING_OR_INVALID",`approve() params: ${s}`).message);const{id:r,namespaces:i,relayProtocol:n,sessionProperties:o,scopedProperties:a}=s;this.checkRecentlyDeleted(r),await this.isValidProposalId(r);const c=this.client.proposal.get(r),l=oo(i,"approve()");if(l)throw new Error(l.message);const u=zc(c.requiredNamespaces,i,"approve()");if(u)throw new Error(u.message);if(!xe(n,!0)){const{message:h}=R("MISSING_OR_INVALID",`approve() relayProtocol: ${n}`);throw new Error(h)}if(Je(o)||this.validateSessionProps(o,"sessionProperties"),!Je(a)){this.validateSessionProps(a,"scopedProperties");const h=new Set(Object.keys(i));if(!Object.keys(a).every(d=>h.has(d)))throw new Error(`Scoped properties must be a subset of approved namespaces, received: ${JSON.stringify(a)}, approved namespaces: ${Array.from(h).join(", ")}`)}}),P(this,"isValidReject",async s=>{if(!ut(s)){const{message:n}=R("MISSING_OR_INVALID",`reject() params: ${s}`);throw new Error(n)}const{id:r,reason:i}=s;if(this.checkRecentlyDeleted(r),await this.isValidProposalId(r),!uy(i)){const{message:n}=R("MISSING_OR_INVALID",`reject() reason: ${JSON.stringify(i)}`);throw new Error(n)}}),P(this,"isValidSessionSettleRequest",s=>{if(!ut(s)){const{message:l}=R("MISSING_OR_INVALID",`onSessionSettleRequest() params: ${s}`);throw new Error(l)}const{relay:r,controller:i,namespaces:n,expiry:o}=s;if(!eh(r)){const{message:l}=R("MISSING_OR_INVALID","onSessionSettleRequest() relay protocol should be a string");throw new Error(l)}const a=ty(i,"onSessionSettleRequest()");if(a)throw new Error(a.message);const c=oo(n,"onSessionSettleRequest()");if(c)throw new Error(c.message);if(ys(o)){const{message:l}=R("EXPIRED","onSessionSettleRequest()");throw new Error(l)}}),P(this,"isValidUpdate",async s=>{if(!ut(s)){const{message:c}=R("MISSING_OR_INVALID",`update() params: ${s}`);throw new Error(c)}const{topic:r,namespaces:i}=s;this.checkRecentlyDeleted(r),await this.isValidSessionTopic(r);const n=this.client.session.get(r),o=oo(i,"update()");if(o)throw new Error(o.message);const a=zc(n.requiredNamespaces,i,"update()");if(a)throw new Error(a.message)}),P(this,"isValidExtend",async s=>{if(!ut(s)){const{message:i}=R("MISSING_OR_INVALID",`extend() params: ${s}`);throw new Error(i)}const{topic:r}=s;this.checkRecentlyDeleted(r),await this.isValidSessionTopic(r)}),P(this,"isValidRequest",async s=>{if(!ut(s)){const{message:c}=R("MISSING_OR_INVALID",`request() params: ${s}`);throw new Error(c)}const{topic:r,request:i,chainId:n,expiry:o}=s;this.checkRecentlyDeleted(r),await this.isValidSessionTopic(r);const{namespaces:a}=this.client.session.get(r);if(!Fc(a,n)){const{message:c}=R("MISSING_OR_INVALID",`request() chainId: ${n}`);throw new Error(c)}if(!hy(i)){const{message:c}=R("MISSING_OR_INVALID",`request() ${JSON.stringify(i)}`);throw new Error(c)}if(!fy(a,n,i.method)){const{message:c}=R("MISSING_OR_INVALID",`request() method: ${i.method}`);throw new Error(c)}if(o&&!yy(o,fo)){const{message:c}=R("MISSING_OR_INVALID",`request() expiry: ${o}. Expiry must be a number (in seconds) between ${fo.min} and ${fo.max}`);throw new Error(c)}}),P(this,"isValidRespond",async s=>{var r;if(!ut(s)){const{message:o}=R("MISSING_OR_INVALID",`respond() params: ${s}`);throw new Error(o)}const{topic:i,response:n}=s;try{await this.isValidSessionTopic(i)}catch(o){throw(r=s?.response)!=null&&r.id&&this.cleanupAfterResponse(s),o}if(!dy(n)){const{message:o}=R("MISSING_OR_INVALID",`respond() response: ${JSON.stringify(n)}`);throw new Error(o)}}),P(this,"isValidPing",async s=>{if(!ut(s)){const{message:i}=R("MISSING_OR_INVALID",`ping() params: ${s}`);throw new Error(i)}const{topic:r}=s;await this.isValidSessionOrPairingTopic(r)}),P(this,"isValidEmit",async s=>{if(!ut(s)){const{message:a}=R("MISSING_OR_INVALID",`emit() params: ${s}`);throw new Error(a)}const{topic:r,event:i,chainId:n}=s;await this.isValidSessionTopic(r);const{namespaces:o}=this.client.session.get(r);if(!Fc(o,n)){const{message:a}=R("MISSING_OR_INVALID",`emit() chainId: ${n}`);throw new Error(a)}if(!py(i)){const{message:a}=R("MISSING_OR_INVALID",`emit() event: ${JSON.stringify(i)}`);throw new Error(a)}if(!gy(o,n,i.name)){const{message:a}=R("MISSING_OR_INVALID",`emit() event: ${JSON.stringify(i)}`);throw new Error(a)}}),P(this,"isValidDisconnect",async s=>{if(!ut(s)){const{message:i}=R("MISSING_OR_INVALID",`disconnect() params: ${s}`);throw new Error(i)}const{topic:r}=s;await this.isValidSessionOrPairingTopic(r)}),P(this,"isValidAuthenticate",s=>{const{chains:r,uri:i,domain:n,nonce:o}=s;if(!Array.isArray(r)||r.length===0)throw new Error("chains is required and must be a non-empty array");if(!xe(i,!1))throw new Error("uri is required parameter");if(!xe(n,!1))throw new Error("domain is required parameter");if(!xe(o,!1))throw new Error("nonce is required parameter");if([...new Set(r.map(c=>Or(c).namespace))].length>1)throw new Error("Multi-namespace requests are not supported. Please request single namespace only.");const{namespace:a}=Or(r[0]);if(a!=="eip155")throw new Error("Only eip155 namespace is supported for authenticated sessions. Please use .connect() for non-eip155 chains.")}),P(this,"getVerifyContext",async s=>{const{attestationId:r,hash:i,encryptedId:n,metadata:o,transportType:a}=s,c={verified:{verifyUrl:o.verifyUrl||bi,validation:"UNKNOWN",origin:o.url||""}};try{if(a===Ae.link_mode){const u=this.getAppLinkIfEnabled(o,a);return c.verified.validation=u&&new URL(u).origin===new URL(o.url).origin?"VALID":"INVALID",c}const l=await this.client.core.verify.resolve({attestationId:r,hash:i,encryptedId:n,verifyUrl:o.verifyUrl});l&&(c.verified.origin=l.origin,c.verified.isScam=l.isScam,c.verified.validation=l.origin===new URL(o.url).origin?"VALID":"INVALID")}catch(l){this.client.logger.warn(l)}return this.client.logger.debug(`Verify context: ${JSON.stringify(c)}`),c}),P(this,"validateSessionProps",(s,r)=>{Object.values(s).forEach((i,n)=>{if(i==null){const{message:o}=R("MISSING_OR_INVALID",`${r} must contain an existing value for each key. Received: ${i} for key ${Object.keys(s)[n]}`);throw new Error(o)}})}),P(this,"getPendingAuthRequest",s=>{const r=this.client.auth.requests.get(s);return typeof r=="object"?r:void 0}),P(this,"addToRecentlyDeleted",(s,r)=>{if(this.recentlyDeletedMap.set(s,r),this.recentlyDeletedMap.size>=this.recentlyDeletedLimit){let i=0;const n=this.recentlyDeletedLimit/2;for(const o of this.recentlyDeletedMap.keys()){if(i++>=n)break;this.recentlyDeletedMap.delete(o)}}}),P(this,"checkRecentlyDeleted",s=>{const r=this.recentlyDeletedMap.get(s);if(r){const{message:i}=R("MISSING_OR_INVALID",`Record was recently deleted - ${r}: ${s}`);throw new Error(i)}}),P(this,"isLinkModeEnabled",(s,r)=>{var i,n,o,a,c,l,u,h,d;return!s||r!==Ae.link_mode?!1:((n=(i=this.client.metadata)==null?void 0:i.redirect)==null?void 0:n.linkMode)===!0&&((a=(o=this.client.metadata)==null?void 0:o.redirect)==null?void 0:a.universal)!==void 0&&((l=(c=this.client.metadata)==null?void 0:c.redirect)==null?void 0:l.universal)!==""&&((u=s?.redirect)==null?void 0:u.universal)!==void 0&&((h=s?.redirect)==null?void 0:h.universal)!==""&&((d=s?.redirect)==null?void 0:d.linkMode)===!0&&this.client.core.linkModeSupportedApps.includes(s.redirect.universal)&&typeof(global==null?void 0:global.Linking)<"u"}),P(this,"getAppLinkIfEnabled",(s,r)=>{var i;return this.isLinkModeEnabled(s,r)?(i=s?.redirect)==null?void 0:i.universal:void 0}),P(this,"handleLinkModeMessage",({url:s})=>{if(!s||!s.includes("wc_ev")||!s.includes("topic"))return;const r=ic(s,"topic")||"",i=decodeURIComponent(ic(s,"wc_ev")||""),n=this.client.session.keys.includes(r);n&&this.client.session.update(r,{transportType:Ae.link_mode}),this.client.core.dispatchEnvelope({topic:r,message:i,sessionExists:n})}),P(this,"registerLinkModeListeners",async()=>{var s;if(ha()||ks()&&(s=this.client.metadata.redirect)!=null&&s.linkMode){const r=global==null?void 0:global.Linking;if(typeof r<"u"){r.addEventListener("url",this.handleLinkModeMessage,this.client.name);const i=await r.getInitialURL();i&&setTimeout(()=>{this.handleLinkModeMessage({url:i})},50)}}}),P(this,"shouldSetTVF",(s,r)=>{if(!r||s!=="wc_sessionRequest")return!1;const{request:i}=r;return Object.keys(yl).includes(i.method)}),P(this,"getTVFParams",(s,r,i)=>{var n,o;try{const a=r.request.method,c=this.extractTxHashesFromResult(a,i);return tt(be({correlationId:s,rpcMethods:[a],chainId:r.chainId},this.isValidContractData(r.request.params)&&{contractAddresses:[(o=(n=r.request.params)==null?void 0:n[0])==null?void 0:o.to]}),{txHashes:c})}catch(a){this.client.logger.warn("Error getting TVF params",a)}return{}}),P(this,"isValidContractData",s=>{var r;if(!s)return!1;try{const i=s?.data||((r=s?.[0])==null?void 0:r.data);if(!i.startsWith("0x"))return!1;const n=i.slice(2);return/^[0-9a-fA-F]*$/.test(n)?n.length%2===0:!1}catch{}return!1}),P(this,"extractTxHashesFromResult",(s,r)=>{try{const i=yl[s];if(typeof r=="string")return[r];const n=r[i.key];if(As(n))return s==="solana_signAllTransactions"?n.map(o=>Mg(o)):n;if(typeof n=="string")return[n]}catch(i){this.client.logger.warn("Error extracting tx hashes from result",i)}return[]})}async processPendingMessageEvents(){try{const e=this.client.session.keys,s=this.client.core.relayer.messages.getWithoutAck(e);for(const[r,i]of Object.entries(s))for(const n of i)try{await this.onProviderMessageEvent({topic:r,message:n,publishedAt:Date.now()})}catch{this.client.logger.warn(`Error processing pending message event for topic: ${r}, message: ${n}`)}}catch(e){this.client.logger.warn("processPendingMessageEvents failed",e)}}isInitialized(){if(!this.initialized){const{message:e}=R("NOT_INITIALIZED",this.name);throw new Error(e)}}async confirmOnlineStateOrThrow(){await this.client.core.relayer.confirmOnlineStateOrThrow()}registerRelayerEvents(){this.client.core.relayer.on(Fe.message,e=>{this.onProviderMessageEvent(e)})}async onRelayMessage(e){const{topic:s,message:r,attestation:i,transportType:n}=e,{publicKey:o}=this.client.auth.authKeys.keys.includes(fn)?this.client.auth.authKeys.get(fn):{publicKey:void 0};try{const a=await this.client.core.crypto.decode(s,r,{receiverPublicKey:o,encoding:n===Ae.link_mode?bs:Mt});aa(a)?(this.client.core.history.set(s,a),await this.onRelayEventRequest({topic:s,payload:a,attestation:i,transportType:n,encryptedId:Kt(r)})):ca(a)?(await this.client.core.history.resolve(a),await this.onRelayEventResponse({topic:s,payload:a,transportType:n}),this.client.core.history.delete(s,a.id)):await this.onRelayEventUnknownPayload({topic:s,payload:a,transportType:n}),await this.client.core.relayer.messages.ack(s,r)}catch(a){this.client.logger.error(a)}}registerExpirerEvents(){this.client.core.expirer.on(Pt.expired,async e=>{const{topic:s,id:r}=bu(e.target);if(r&&this.client.pendingRequest.keys.includes(r))return await this.deletePendingSessionRequest(r,R("EXPIRED"),!0);if(r&&this.client.auth.requests.keys.includes(r))return await this.deletePendingAuthRequest(r,R("EXPIRED"),!0);s?this.client.session.keys.includes(s)&&(await this.deleteSession({topic:s,expirerHasDeleted:!0}),this.client.events.emit("session_expire",{topic:s})):r&&(await this.deleteProposal(r,!0),this.client.events.emit("proposal_expire",{id:r}))})}registerPairingEvents(){this.client.core.pairing.events.on(Bs.create,e=>this.onPairingCreated(e)),this.client.core.pairing.events.on(Bs.delete,e=>{this.addToRecentlyDeleted(e.topic,"pairing")})}isValidPairingTopic(e){if(!xe(e,!1)){const{message:s}=R("MISSING_OR_INVALID",`pairing topic should be a string: ${e}`);throw new Error(s)}if(!this.client.core.pairing.pairings.keys.includes(e)){const{message:s}=R("NO_MATCHING_KEY",`pairing topic doesn't exist: ${e}`);throw new Error(s)}if(ys(this.client.core.pairing.pairings.get(e).expiry)){const{message:s}=R("EXPIRED",`pairing topic: ${e}`);throw new Error(s)}}async isValidSessionTopic(e){if(!xe(e,!1)){const{message:s}=R("MISSING_OR_INVALID",`session topic should be a string: ${e}`);throw new Error(s)}if(this.checkRecentlyDeleted(e),!this.client.session.keys.includes(e)){const{message:s}=R("NO_MATCHING_KEY",`session topic doesn't exist: ${e}`);throw new Error(s)}if(ys(this.client.session.get(e).expiry)){await this.deleteSession({topic:e});const{message:s}=R("EXPIRED",`session topic: ${e}`);throw new Error(s)}if(!this.client.core.crypto.keychain.has(e)){const{message:s}=R("MISSING_OR_INVALID",`session topic does not exist in keychain: ${e}`);throw await this.deleteSession({topic:e}),new Error(s)}}async isValidSessionOrPairingTopic(e){if(this.checkRecentlyDeleted(e),this.client.session.keys.includes(e))await this.isValidSessionTopic(e);else if(this.client.core.pairing.pairings.keys.includes(e))this.isValidPairingTopic(e);else if(xe(e,!1)){const{message:s}=R("NO_MATCHING_KEY",`session or pairing topic doesn't exist: ${e}`);throw new Error(s)}else{const{message:s}=R("MISSING_OR_INVALID",`session or pairing topic should be a string: ${e}`);throw new Error(s)}}async isValidProposalId(e){if(!ly(e)){const{message:s}=R("MISSING_OR_INVALID",`proposal id should be a number: ${e}`);throw new Error(s)}if(!this.client.proposal.keys.includes(e)){const{message:s}=R("NO_MATCHING_KEY",`proposal id doesn't exist: ${e}`);throw new Error(s)}if(ys(this.client.proposal.get(e).expiryTimestamp)){await this.deleteProposal(e);const{message:s}=R("EXPIRED",`proposal id: ${e}`);throw new Error(s)}}}class AE extends sr{constructor(e,s){super(e,s,lE,ba),this.core=e,this.logger=s}}let _E=class extends sr{constructor(e,s){super(e,s,uE,ba),this.core=e,this.logger=s}};class SE extends sr{constructor(e,s){super(e,s,dE,ba,r=>r.id),this.core=e,this.logger=s}}class PE extends sr{constructor(e,s){super(e,s,mE,Bn,()=>fn),this.core=e,this.logger=s}}class kE extends sr{constructor(e,s){super(e,s,wE,Bn),this.core=e,this.logger=s}}class OE extends sr{constructor(e,s){super(e,s,yE,Bn,r=>r.id),this.core=e,this.logger=s}}var TE=Object.defineProperty,xE=(t,e,s)=>e in t?TE(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,go=(t,e,s)=>xE(t,typeof e!="symbol"?e+"":e,s);class $E{constructor(e,s){this.core=e,this.logger=s,go(this,"authKeys"),go(this,"pairingTopics"),go(this,"requests"),this.authKeys=new PE(this.core,this.logger),this.pairingTopics=new kE(this.core,this.logger),this.requests=new OE(this.core,this.logger)}async init(){await this.authKeys.init(),await this.pairingTopics.init(),await this.requests.init()}}var RE=Object.defineProperty,UE=(t,e,s)=>e in t?RE(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,ne=(t,e,s)=>UE(t,typeof e!="symbol"?e+"":e,s);let DE=class vh extends Vp{constructor(e){super(e),ne(this,"protocol",wh),ne(this,"version",yh),ne(this,"name",po.name),ne(this,"metadata"),ne(this,"core"),ne(this,"logger"),ne(this,"events",new Zs.EventEmitter),ne(this,"engine"),ne(this,"session"),ne(this,"proposal"),ne(this,"pendingRequest"),ne(this,"auth"),ne(this,"signConfig"),ne(this,"on",(r,i)=>this.events.on(r,i)),ne(this,"once",(r,i)=>this.events.once(r,i)),ne(this,"off",(r,i)=>this.events.off(r,i)),ne(this,"removeListener",(r,i)=>this.events.removeListener(r,i)),ne(this,"removeAllListeners",r=>this.events.removeAllListeners(r)),ne(this,"connect",async r=>{try{return await this.engine.connect(r)}catch(i){throw this.logger.error(i.message),i}}),ne(this,"pair",async r=>{try{return await this.engine.pair(r)}catch(i){throw this.logger.error(i.message),i}}),ne(this,"approve",async r=>{try{return await this.engine.approve(r)}catch(i){throw this.logger.error(i.message),i}}),ne(this,"reject",async r=>{try{return await this.engine.reject(r)}catch(i){throw this.logger.error(i.message),i}}),ne(this,"update",async r=>{try{return await this.engine.update(r)}catch(i){throw this.logger.error(i.message),i}}),ne(this,"extend",async r=>{try{return await this.engine.extend(r)}catch(i){throw this.logger.error(i.message),i}}),ne(this,"request",async r=>{try{return await this.engine.request(r)}catch(i){throw this.logger.error(i.message),i}}),ne(this,"respond",async r=>{try{return await this.engine.respond(r)}catch(i){throw this.logger.error(i.message),i}}),ne(this,"ping",async r=>{try{return await this.engine.ping(r)}catch(i){throw this.logger.error(i.message),i}}),ne(this,"emit",async r=>{try{return await this.engine.emit(r)}catch(i){throw this.logger.error(i.message),i}}),ne(this,"disconnect",async r=>{try{return await this.engine.disconnect(r)}catch(i){throw this.logger.error(i.message),i}}),ne(this,"find",r=>{try{return this.engine.find(r)}catch(i){throw this.logger.error(i.message),i}}),ne(this,"getPendingSessionRequests",()=>{try{return this.engine.getPendingSessionRequests()}catch(r){throw this.logger.error(r.message),r}}),ne(this,"authenticate",async(r,i)=>{try{return await this.engine.authenticate(r,i)}catch(n){throw this.logger.error(n.message),n}}),ne(this,"formatAuthMessage",r=>{try{return this.engine.formatAuthMessage(r)}catch(i){throw this.logger.error(i.message),i}}),ne(this,"approveSessionAuthenticate",async r=>{try{return await this.engine.approveSessionAuthenticate(r)}catch(i){throw this.logger.error(i.message),i}}),ne(this,"rejectSessionAuthenticate",async r=>{try{return await this.engine.rejectSessionAuthenticate(r)}catch(i){throw this.logger.error(i.message),i}}),this.name=e?.name||po.name,this.metadata=Xf(e?.metadata),this.signConfig=e?.signConfig;const s=typeof e?.logger<"u"&&typeof e?.logger!="string"?e.logger:oa($i({level:e?.logger||po.logger}));this.core=e?.core||new cE(e),this.logger=rt(s,this.name),this.session=new _E(this.core,this.logger),this.proposal=new AE(this.core,this.logger),this.pendingRequest=new SE(this.core,this.logger),this.engine=new NE(this),this.auth=new $E(this.core,this.logger)}static async init(e){const s=new vh(e);return await s.initialize(),s}get context(){return Et(this.logger)}get pairing(){return this.core.pairing.pairings}async initialize(){this.logger.trace("Initialized");try{await this.core.start(),await this.session.init(),await this.proposal.init(),await this.pendingRequest.init(),await this.auth.init(),await this.engine.init(),this.logger.info("SignClient Initialization Success"),setTimeout(()=>{this.engine.processRelayMessageCache()},D.toMiliseconds(D.ONE_SECOND))}catch(e){throw this.logger.info("SignClient Initialization Failure"),this.logger.error(e.message),e}}};const vl="error",LE="wss://relay.walletconnect.org",ME="wc",BE="universal_provider",sn=`${ME}@2:${BE}:`,Eh="https://rpc.walletconnect.org/v1/",Ir="generic",jE=`${Eh}bundler`,Tt={DEFAULT_CHAIN_CHANGED:"default_chain_changed"};function qE(){}function va(t){return t==null||typeof t!="object"&&typeof t!="function"}function Ea(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function FE(t){if(va(t))return t;if(Array.isArray(t)||Ea(t)||t instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&t instanceof SharedArrayBuffer)return t.slice(0);const e=Object.getPrototypeOf(t),s=e.constructor;if(t instanceof Date||t instanceof Map||t instanceof Set)return new s(t);if(t instanceof RegExp){const r=new s(t);return r.lastIndex=t.lastIndex,r}if(t instanceof DataView)return new s(t.buffer.slice(0));if(t instanceof Error){const r=new s(t.message);return r.stack=t.stack,r.name=t.name,r.cause=t.cause,r}if(typeof File<"u"&&t instanceof File)return new s([t],t.name,{type:t.type,lastModified:t.lastModified});if(typeof t=="object"){const r=Object.create(e);return Object.assign(r,t)}return t}function El(t){return typeof t=="object"&&t!==null}function Ch(t){return Object.getOwnPropertySymbols(t).filter(e=>Object.prototype.propertyIsEnumerable.call(t,e))}function Ih(t){return t==null?t===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(t)}const zE="[object RegExp]",Nh="[object String]",Ah="[object Number]",_h="[object Boolean]",Sh="[object Arguments]",WE="[object Symbol]",HE="[object Date]",VE="[object Map]",KE="[object Set]",GE="[object Array]",JE="[object ArrayBuffer]",YE="[object Object]",XE="[object DataView]",ZE="[object Uint8Array]",QE="[object Uint8ClampedArray]",eC="[object Uint16Array]",tC="[object Uint32Array]",sC="[object Int8Array]",rC="[object Int16Array]",iC="[object Int32Array]",nC="[object Float32Array]",oC="[object Float64Array]";function aC(t,e){return kr(t,void 0,t,new Map,e)}function kr(t,e,s,r=new Map,i=void 0){const n=i?.(t,e,s,r);if(n!=null)return n;if(va(t))return t;if(r.has(t))return r.get(t);if(Array.isArray(t)){const o=new Array(t.length);r.set(t,o);for(let a=0;a{if(typeof t=="object")switch(Object.prototype.toString.call(t)){case Ah:case Nh:case _h:{const o=new t.constructor(t?.valueOf());return js(o,t),o}case Sh:{const o={};return js(o,t),o.length=t.length,o[Symbol.iterator]=t[Symbol.iterator],o}default:return}})}function Cl(t){return lC(t)}function Il(t){return t!==null&&typeof t=="object"&&Ih(t)==="[object Arguments]"}function uC(t){return Ea(t)}function hC(t){if(typeof t!="object"||t==null)return!1;if(Object.getPrototypeOf(t)===null)return!0;if(Object.prototype.toString.call(t)!=="[object Object]"){const s=t[Symbol.toStringTag];return s==null||!Object.getOwnPropertyDescriptor(t,Symbol.toStringTag)?.writable?!1:t.toString()===`[object ${s}]`}let e=t;for(;Object.getPrototypeOf(e)!==null;)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}function dC(t,...e){const s=e.slice(0,-1),r=e[e.length-1];let i=t;for(let n=0;ne in t?fC(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,rn=(t,e)=>{for(var s in e||(e={}))wC.call(e,s)&&Al(t,s,e[s]);if(Nl)for(var s of Nl(e))yC.call(e,s)&&Al(t,s,e[s]);return t},bC=(t,e)=>gC(t,mC(e));function vt(t,e,s){var r;const i=Or(t);return((r=e.rpcMap)==null?void 0:r[i.reference])||`${Eh}?chainId=${i.namespace}:${i.reference}&projectId=${s}`}function rr(t){return t.includes(":")?t.split(":")[1]:t}function Ph(t){return t.map(e=>`${e.split(":")[0]}:${e.split(":")[1]}`)}function vC(t,e){const s=Object.keys(e.namespaces).filter(i=>i.includes(t));if(!s.length)return[];const r=[];return s.forEach(i=>{const n=e.namespaces[i].accounts;r.push(...n)}),r}function nn(t={},e={}){const s=_l(t),r=_l(e);return pC(s,r)}function _l(t){var e,s,r,i,n;const o={};if(!_s(t))return o;for(const[a,c]of Object.entries(t)){const l=Ln(a)?[a]:c.chains,u=c.methods||[],h=c.events||[],d=c.rpcMap||{},p=Pr(a);o[p]=bC(rn(rn({},o[p]),c),{chains:Jt(l,(e=o[p])==null?void 0:e.chains),methods:Jt(u,(s=o[p])==null?void 0:s.methods),events:Jt(h,(r=o[p])==null?void 0:r.events)}),(_s(d)||_s(((i=o[p])==null?void 0:i.rpcMap)||{}))&&(o[p].rpcMap=rn(rn({},d),(n=o[p])==null?void 0:n.rpcMap))}return o}function Sl(t){return t.includes(":")?t.split(":")[2]:t}function Pl(t){const e={};for(const[s,r]of Object.entries(t)){const i=r.methods||[],n=r.events||[],o=r.accounts||[],a=Ln(s)?[s]:r.chains?r.chains:Ph(r.accounts);e[s]={chains:a,methods:i,events:n,accounts:o}}return e}function mo(t){return typeof t=="number"?t:t.includes("0x")?parseInt(t,16):(t=t.includes(":")?t.split(":")[1]:t,isNaN(Number(t))?t:Number(t))}const kh={},ue=t=>kh[t],wo=(t,e)=>{kh[t]=e};var EC=Object.defineProperty,CC=(t,e,s)=>e in t?EC(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,hr=(t,e,s)=>CC(t,typeof e!="symbol"?e+"":e,s);class IC{constructor(e){hr(this,"name","polkadot"),hr(this,"client"),hr(this,"httpProviders"),hr(this,"events"),hr(this,"namespace"),hr(this,"chainId"),this.namespace=e.namespace,this.events=ue("events"),this.client=ue("client"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const e=this.namespace.chains[0];if(!e)throw new Error("ChainId not found");return e.split(":")[1]}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,s){this.httpProviders[e]||this.setHttpProvider(e,s),this.chainId=e,this.events.emit(Tt.DEFAULT_CHAIN_CHANGED,`${this.name}:${e}`)}getAccounts(){const e=this.namespace.accounts;return e?e.filter(s=>s.split(":")[1]===this.chainId.toString()).map(s=>s.split(":")[2])||[]:[]}createHttpProviders(){const e={};return this.namespace.chains.forEach(s=>{var r;const i=rr(s);e[i]=this.createHttpProvider(i,(r=this.namespace.rpcMap)==null?void 0:r[s])}),e}getHttpProvider(){const e=`${this.name}:${this.chainId}`,s=this.httpProviders[e];if(typeof s>"u")throw new Error(`JSON-RPC provider for ${e} not found`);return s}setHttpProvider(e,s){const r=this.createHttpProvider(e,s);r&&(this.httpProviders[e]=r)}createHttpProvider(e,s){const r=s||vt(e,this.namespace,this.client.core.projectId);if(!r)throw new Error(`No RPC url provided for chainId: ${e}`);return new Ot(new Bt(r,ue("disableProviderPing")))}}var NC=Object.defineProperty,AC=Object.defineProperties,_C=Object.getOwnPropertyDescriptors,kl=Object.getOwnPropertySymbols,SC=Object.prototype.hasOwnProperty,PC=Object.prototype.propertyIsEnumerable,ta=(t,e,s)=>e in t?NC(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,Ol=(t,e)=>{for(var s in e||(e={}))SC.call(e,s)&&ta(t,s,e[s]);if(kl)for(var s of kl(e))PC.call(e,s)&&ta(t,s,e[s]);return t},Tl=(t,e)=>AC(t,_C(e)),dr=(t,e,s)=>ta(t,typeof e!="symbol"?e+"":e,s);class kC{constructor(e){dr(this,"name","eip155"),dr(this,"client"),dr(this,"chainId"),dr(this,"namespace"),dr(this,"httpProviders"),dr(this,"events"),this.namespace=e.namespace,this.events=ue("events"),this.client=ue("client"),this.httpProviders=this.createHttpProviders(),this.chainId=parseInt(this.getDefaultChain())}async request(e){switch(e.request.method){case"eth_requestAccounts":return this.getAccounts();case"eth_accounts":return this.getAccounts();case"wallet_switchEthereumChain":return await this.handleSwitchChain(e);case"eth_chainId":return parseInt(this.getDefaultChain());case"wallet_getCapabilities":return await this.getCapabilities(e);case"wallet_getCallsStatus":return await this.getCallStatus(e)}return this.namespace.methods.includes(e.request.method)?await this.client.request(e):this.getHttpProvider().request(e.request)}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}setDefaultChain(e,s){this.httpProviders[e]||this.setHttpProvider(parseInt(e),s),this.chainId=parseInt(e),this.events.emit(Tt.DEFAULT_CHAIN_CHANGED,`${this.name}:${e}`)}requestAccounts(){return this.getAccounts()}getDefaultChain(){if(this.chainId)return this.chainId.toString();if(this.namespace.defaultChain)return this.namespace.defaultChain;const e=this.namespace.chains[0];if(!e)throw new Error("ChainId not found");return e.split(":")[1]}createHttpProvider(e,s){const r=s||vt(`${this.name}:${e}`,this.namespace,this.client.core.projectId);if(!r)throw new Error(`No RPC url provided for chainId: ${e}`);return new Ot(new Bt(r,ue("disableProviderPing")))}setHttpProvider(e,s){const r=this.createHttpProvider(e,s);r&&(this.httpProviders[e]=r)}createHttpProviders(){const e={};return this.namespace.chains.forEach(s=>{var r;const i=parseInt(rr(s));e[i]=this.createHttpProvider(i,(r=this.namespace.rpcMap)==null?void 0:r[s])}),e}getAccounts(){const e=this.namespace.accounts;return e?[...new Set(e.filter(s=>s.split(":")[1]===this.chainId.toString()).map(s=>s.split(":")[2]))]:[]}getHttpProvider(){const e=this.chainId,s=this.httpProviders[e];if(typeof s>"u")throw new Error(`JSON-RPC provider for ${e} not found`);return s}async handleSwitchChain(e){var s,r;let i=e.request.params?(s=e.request.params[0])==null?void 0:s.chainId:"0x0";i=i.startsWith("0x")?i:`0x${i}`;const n=parseInt(i,16);if(this.isChainApproved(n))this.setDefaultChain(`${n}`);else if(this.namespace.methods.includes("wallet_switchEthereumChain"))await this.client.request({topic:e.topic,request:{method:e.request.method,params:[{chainId:i}]},chainId:(r=this.namespace.chains)==null?void 0:r[0]}),this.setDefaultChain(`${n}`);else throw new Error(`Failed to switch to chain 'eip155:${n}'. The chain is not approved or the wallet does not support 'wallet_switchEthereumChain' method.`);return null}isChainApproved(e){return this.namespace.chains.includes(`${this.name}:${e}`)}async getCapabilities(e){var s,r,i,n,o;const a=(r=(s=e.request)==null?void 0:s.params)==null?void 0:r[0],c=((n=(i=e.request)==null?void 0:i.params)==null?void 0:n[1])||[],l=`${a}${c.join(",")}`;if(!a)throw new Error("Missing address parameter in `wallet_getCapabilities` request");const u=this.client.session.get(e.topic),h=((o=u?.sessionProperties)==null?void 0:o.capabilities)||{};if(h!=null&&h[l])return h?.[l];const d=await this.client.request(e);try{await this.client.session.update(e.topic,{sessionProperties:Tl(Ol({},u.sessionProperties||{}),{capabilities:Tl(Ol({},h||{}),{[l]:d})})})}catch(p){console.warn("Failed to update session with capabilities",p)}return d}async getCallStatus(e){var s,r;const i=this.client.session.get(e.topic),n=(s=i.sessionProperties)==null?void 0:s.bundler_name;if(n){const a=this.getBundlerUrl(e.chainId,n);try{return await this.getUserOperationReceipt(a,e)}catch(c){console.warn("Failed to fetch call status from bundler",c,a)}}const o=(r=i.sessionProperties)==null?void 0:r.bundler_url;if(o)try{return await this.getUserOperationReceipt(o,e)}catch(a){console.warn("Failed to fetch call status from custom bundler",a,o)}if(this.namespace.methods.includes(e.request.method))return await this.client.request(e);throw new Error("Fetching call status not approved by the wallet.")}async getUserOperationReceipt(e,s){var r;const i=new URL(e),n=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(qs("eth_getUserOperationReceipt",[(r=s.request.params)==null?void 0:r[0]]))});if(!n.ok)throw new Error(`Failed to fetch user operation receipt - ${n.status}`);return await n.json()}getBundlerUrl(e,s){return`${jE}?projectId=${this.client.core.projectId}&chainId=${e}&bundler=${s}`}}var OC=Object.defineProperty,TC=(t,e,s)=>e in t?OC(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,pr=(t,e,s)=>TC(t,typeof e!="symbol"?e+"":e,s);class xC{constructor(e){pr(this,"name","solana"),pr(this,"client"),pr(this,"httpProviders"),pr(this,"events"),pr(this,"namespace"),pr(this,"chainId"),this.namespace=e.namespace,this.events=ue("events"),this.client=ue("client"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,s){this.httpProviders[e]||this.setHttpProvider(e,s),this.chainId=e,this.events.emit(Tt.DEFAULT_CHAIN_CHANGED,`${this.name}:${e}`)}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const e=this.namespace.chains[0];if(!e)throw new Error("ChainId not found");return e.split(":")[1]}getAccounts(){const e=this.namespace.accounts;return e?[...new Set(e.filter(s=>s.split(":")[1]===this.chainId.toString()).map(s=>s.split(":")[2]))]:[]}createHttpProviders(){const e={};return this.namespace.chains.forEach(s=>{var r;const i=rr(s);e[i]=this.createHttpProvider(i,(r=this.namespace.rpcMap)==null?void 0:r[s])}),e}getHttpProvider(){const e=`${this.name}:${this.chainId}`,s=this.httpProviders[e];if(typeof s>"u")throw new Error(`JSON-RPC provider for ${e} not found`);return s}setHttpProvider(e,s){const r=this.createHttpProvider(e,s);r&&(this.httpProviders[e]=r)}createHttpProvider(e,s){const r=s||vt(e,this.namespace,this.client.core.projectId);if(!r)throw new Error(`No RPC url provided for chainId: ${e}`);return new Ot(new Bt(r,ue("disableProviderPing")))}}var $C=Object.defineProperty,RC=(t,e,s)=>e in t?$C(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,fr=(t,e,s)=>RC(t,typeof e!="symbol"?e+"":e,s);class UC{constructor(e){fr(this,"name","cosmos"),fr(this,"client"),fr(this,"httpProviders"),fr(this,"events"),fr(this,"namespace"),fr(this,"chainId"),this.namespace=e.namespace,this.events=ue("events"),this.client=ue("client"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const e=this.namespace.chains[0];if(!e)throw new Error("ChainId not found");return e.split(":")[1]}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,s){this.httpProviders[e]||this.setHttpProvider(e,s),this.chainId=e,this.events.emit(Tt.DEFAULT_CHAIN_CHANGED,`${this.name}:${this.chainId}`)}getAccounts(){const e=this.namespace.accounts;return e?[...new Set(e.filter(s=>s.split(":")[1]===this.chainId.toString()).map(s=>s.split(":")[2]))]:[]}createHttpProviders(){const e={};return this.namespace.chains.forEach(s=>{var r;const i=rr(s);e[i]=this.createHttpProvider(i,(r=this.namespace.rpcMap)==null?void 0:r[s])}),e}getHttpProvider(){const e=`${this.name}:${this.chainId}`,s=this.httpProviders[e];if(typeof s>"u")throw new Error(`JSON-RPC provider for ${e} not found`);return s}setHttpProvider(e,s){const r=this.createHttpProvider(e,s);r&&(this.httpProviders[e]=r)}createHttpProvider(e,s){const r=s||vt(e,this.namespace,this.client.core.projectId);if(!r)throw new Error(`No RPC url provided for chainId: ${e}`);return new Ot(new Bt(r,ue("disableProviderPing")))}}var DC=Object.defineProperty,LC=(t,e,s)=>e in t?DC(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,gr=(t,e,s)=>LC(t,typeof e!="symbol"?e+"":e,s);class MC{constructor(e){gr(this,"name","algorand"),gr(this,"client"),gr(this,"httpProviders"),gr(this,"events"),gr(this,"namespace"),gr(this,"chainId"),this.namespace=e.namespace,this.events=ue("events"),this.client=ue("client"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,s){if(!this.httpProviders[e]){const r=s||vt(`${this.name}:${e}`,this.namespace,this.client.core.projectId);if(!r)throw new Error(`No RPC url provided for chainId: ${e}`);this.setHttpProvider(e,r)}this.chainId=e,this.events.emit(Tt.DEFAULT_CHAIN_CHANGED,`${this.name}:${this.chainId}`)}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const e=this.namespace.chains[0];if(!e)throw new Error("ChainId not found");return e.split(":")[1]}getAccounts(){const e=this.namespace.accounts;return e?[...new Set(e.filter(s=>s.split(":")[1]===this.chainId.toString()).map(s=>s.split(":")[2]))]:[]}createHttpProviders(){const e={};return this.namespace.chains.forEach(s=>{var r;e[s]=this.createHttpProvider(s,(r=this.namespace.rpcMap)==null?void 0:r[s])}),e}getHttpProvider(){const e=`${this.name}:${this.chainId}`,s=this.httpProviders[e];if(typeof s>"u")throw new Error(`JSON-RPC provider for ${e} not found`);return s}setHttpProvider(e,s){const r=this.createHttpProvider(e,s);r&&(this.httpProviders[e]=r)}createHttpProvider(e,s){const r=s||vt(e,this.namespace,this.client.core.projectId);return typeof r>"u"?void 0:new Ot(new Bt(r,ue("disableProviderPing")))}}var BC=Object.defineProperty,jC=(t,e,s)=>e in t?BC(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,mr=(t,e,s)=>jC(t,typeof e!="symbol"?e+"":e,s);class qC{constructor(e){mr(this,"name","cip34"),mr(this,"client"),mr(this,"httpProviders"),mr(this,"events"),mr(this,"namespace"),mr(this,"chainId"),this.namespace=e.namespace,this.events=ue("events"),this.client=ue("client"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const e=this.namespace.chains[0];if(!e)throw new Error("ChainId not found");return e.split(":")[1]}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,s){this.httpProviders[e]||this.setHttpProvider(e,s),this.chainId=e,this.events.emit(Tt.DEFAULT_CHAIN_CHANGED,`${this.name}:${this.chainId}`)}getAccounts(){const e=this.namespace.accounts;return e?[...new Set(e.filter(s=>s.split(":")[1]===this.chainId.toString()).map(s=>s.split(":")[2]))]:[]}createHttpProviders(){const e={};return this.namespace.chains.forEach(s=>{const r=this.getCardanoRPCUrl(s),i=rr(s);e[i]=this.createHttpProvider(i,r)}),e}getHttpProvider(){const e=`${this.name}:${this.chainId}`,s=this.httpProviders[e];if(typeof s>"u")throw new Error(`JSON-RPC provider for ${e} not found`);return s}getCardanoRPCUrl(e){const s=this.namespace.rpcMap;if(s)return s[e]}setHttpProvider(e,s){const r=this.createHttpProvider(e,s);r&&(this.httpProviders[e]=r)}createHttpProvider(e,s){const r=s||this.getCardanoRPCUrl(e);if(!r)throw new Error(`No RPC url provided for chainId: ${e}`);return new Ot(new Bt(r,ue("disableProviderPing")))}}var FC=Object.defineProperty,zC=(t,e,s)=>e in t?FC(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,wr=(t,e,s)=>zC(t,typeof e!="symbol"?e+"":e,s);class WC{constructor(e){wr(this,"name","elrond"),wr(this,"client"),wr(this,"httpProviders"),wr(this,"events"),wr(this,"namespace"),wr(this,"chainId"),this.namespace=e.namespace,this.events=ue("events"),this.client=ue("client"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,s){this.httpProviders[e]||this.setHttpProvider(e,s),this.chainId=e,this.events.emit(Tt.DEFAULT_CHAIN_CHANGED,`${this.name}:${e}`)}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const e=this.namespace.chains[0];if(!e)throw new Error("ChainId not found");return e.split(":")[1]}getAccounts(){const e=this.namespace.accounts;return e?[...new Set(e.filter(s=>s.split(":")[1]===this.chainId.toString()).map(s=>s.split(":")[2]))]:[]}createHttpProviders(){const e={};return this.namespace.chains.forEach(s=>{var r;const i=rr(s);e[i]=this.createHttpProvider(i,(r=this.namespace.rpcMap)==null?void 0:r[s])}),e}getHttpProvider(){const e=`${this.name}:${this.chainId}`,s=this.httpProviders[e];if(typeof s>"u")throw new Error(`JSON-RPC provider for ${e} not found`);return s}setHttpProvider(e,s){const r=this.createHttpProvider(e,s);r&&(this.httpProviders[e]=r)}createHttpProvider(e,s){const r=s||vt(e,this.namespace,this.client.core.projectId);if(!r)throw new Error(`No RPC url provided for chainId: ${e}`);return new Ot(new Bt(r,ue("disableProviderPing")))}}var HC=Object.defineProperty,VC=(t,e,s)=>e in t?HC(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,yr=(t,e,s)=>VC(t,typeof e!="symbol"?e+"":e,s);class KC{constructor(e){yr(this,"name","multiversx"),yr(this,"client"),yr(this,"httpProviders"),yr(this,"events"),yr(this,"namespace"),yr(this,"chainId"),this.namespace=e.namespace,this.events=ue("events"),this.client=ue("client"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,s){this.httpProviders[e]||this.setHttpProvider(e,s),this.chainId=e,this.events.emit(Tt.DEFAULT_CHAIN_CHANGED,`${this.name}:${e}`)}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const e=this.namespace.chains[0];if(!e)throw new Error("ChainId not found");return e.split(":")[1]}getAccounts(){const e=this.namespace.accounts;return e?[...new Set(e.filter(s=>s.split(":")[1]===this.chainId.toString()).map(s=>s.split(":")[2]))]:[]}createHttpProviders(){const e={};return this.namespace.chains.forEach(s=>{var r;const i=rr(s);e[i]=this.createHttpProvider(i,(r=this.namespace.rpcMap)==null?void 0:r[s])}),e}getHttpProvider(){const e=`${this.name}:${this.chainId}`,s=this.httpProviders[e];if(typeof s>"u")throw new Error(`JSON-RPC provider for ${e} not found`);return s}setHttpProvider(e,s){const r=this.createHttpProvider(e,s);r&&(this.httpProviders[e]=r)}createHttpProvider(e,s){const r=s||vt(e,this.namespace,this.client.core.projectId);if(!r)throw new Error(`No RPC url provided for chainId: ${e}`);return new Ot(new Bt(r,ue("disableProviderPing")))}}var GC=Object.defineProperty,JC=(t,e,s)=>e in t?GC(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,br=(t,e,s)=>JC(t,typeof e!="symbol"?e+"":e,s);class YC{constructor(e){br(this,"name","near"),br(this,"client"),br(this,"httpProviders"),br(this,"events"),br(this,"namespace"),br(this,"chainId"),this.namespace=e.namespace,this.events=ue("events"),this.client=ue("client"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const e=this.namespace.chains[0];if(!e)throw new Error("ChainId not found");return e.split(":")[1]}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,s){if(this.chainId=e,!this.httpProviders[e]){const r=s||vt(`${this.name}:${e}`,this.namespace);if(!r)throw new Error(`No RPC url provided for chainId: ${e}`);this.setHttpProvider(e,r)}this.events.emit(Tt.DEFAULT_CHAIN_CHANGED,`${this.name}:${this.chainId}`)}getAccounts(){const e=this.namespace.accounts;return e?e.filter(s=>s.split(":")[1]===this.chainId.toString()).map(s=>s.split(":")[2])||[]:[]}createHttpProviders(){const e={};return this.namespace.chains.forEach(s=>{var r;e[s]=this.createHttpProvider(s,(r=this.namespace.rpcMap)==null?void 0:r[s])}),e}getHttpProvider(){const e=`${this.name}:${this.chainId}`,s=this.httpProviders[e];if(typeof s>"u")throw new Error(`JSON-RPC provider for ${e} not found`);return s}setHttpProvider(e,s){const r=this.createHttpProvider(e,s);r&&(this.httpProviders[e]=r)}createHttpProvider(e,s){const r=s||vt(e,this.namespace);return typeof r>"u"?void 0:new Ot(new Bt(r,ue("disableProviderPing")))}}var XC=Object.defineProperty,ZC=(t,e,s)=>e in t?XC(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,vr=(t,e,s)=>ZC(t,typeof e!="symbol"?e+"":e,s);class QC{constructor(e){vr(this,"name","tezos"),vr(this,"client"),vr(this,"httpProviders"),vr(this,"events"),vr(this,"namespace"),vr(this,"chainId"),this.namespace=e.namespace,this.events=ue("events"),this.client=ue("client"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const e=this.namespace.chains[0];if(!e)throw new Error("ChainId not found");return e.split(":")[1]}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,s){if(this.chainId=e,!this.httpProviders[e]){const r=s||vt(`${this.name}:${e}`,this.namespace);if(!r)throw new Error(`No RPC url provided for chainId: ${e}`);this.setHttpProvider(e,r)}this.events.emit(Tt.DEFAULT_CHAIN_CHANGED,`${this.name}:${this.chainId}`)}getAccounts(){const e=this.namespace.accounts;return e?e.filter(s=>s.split(":")[1]===this.chainId.toString()).map(s=>s.split(":")[2])||[]:[]}createHttpProviders(){const e={};return this.namespace.chains.forEach(s=>{e[s]=this.createHttpProvider(s)}),e}getHttpProvider(){const e=`${this.name}:${this.chainId}`,s=this.httpProviders[e];if(typeof s>"u")throw new Error(`JSON-RPC provider for ${e} not found`);return s}setHttpProvider(e,s){const r=this.createHttpProvider(e,s);r&&(this.httpProviders[e]=r)}createHttpProvider(e,s){const r=s||vt(e,this.namespace);return typeof r>"u"?void 0:new Ot(new Bt(r))}}var eI=Object.defineProperty,tI=(t,e,s)=>e in t?eI(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,Er=(t,e,s)=>tI(t,typeof e!="symbol"?e+"":e,s);class sI{constructor(e){Er(this,"name",Ir),Er(this,"client"),Er(this,"httpProviders"),Er(this,"events"),Er(this,"namespace"),Er(this,"chainId"),this.namespace=e.namespace,this.events=ue("events"),this.client=ue("client"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace.chains=[...new Set((this.namespace.chains||[]).concat(e.chains||[]))],this.namespace.accounts=[...new Set((this.namespace.accounts||[]).concat(e.accounts||[]))],this.namespace.methods=[...new Set((this.namespace.methods||[]).concat(e.methods||[]))],this.namespace.events=[...new Set((this.namespace.events||[]).concat(e.events||[]))],this.httpProviders=this.createHttpProviders()}requestAccounts(){return this.getAccounts()}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider(e.chainId).request(e.request)}setDefaultChain(e,s){this.httpProviders[e]||this.setHttpProvider(e,s),this.chainId=e,this.events.emit(Tt.DEFAULT_CHAIN_CHANGED,`${this.name}:${e}`)}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const e=this.namespace.chains[0];if(!e)throw new Error("ChainId not found");return e.split(":")[1]}getAccounts(){const e=this.namespace.accounts;return e?[...new Set(e.filter(s=>s.split(":")[1]===this.chainId.toString()).map(s=>s.split(":")[2]))]:[]}createHttpProviders(){var e,s;const r={};return(s=(e=this.namespace)==null?void 0:e.accounts)==null||s.forEach(i=>{const n=Or(i);r[`${n.namespace}:${n.reference}`]=this.createHttpProvider(i)}),r}getHttpProvider(e){const s=this.httpProviders[e];if(typeof s>"u")throw new Error(`JSON-RPC provider for ${e} not found`);return s}setHttpProvider(e,s){const r=this.createHttpProvider(e,s);r&&(this.httpProviders[e]=r)}createHttpProvider(e,s){const r=s||vt(e,this.namespace,this.client.core.projectId);if(!r)throw new Error(`No RPC url provided for chainId: ${e}`);return new Ot(new Bt(r,ue("disableProviderPing")))}}var rI=Object.defineProperty,iI=Object.defineProperties,nI=Object.getOwnPropertyDescriptors,xl=Object.getOwnPropertySymbols,oI=Object.prototype.hasOwnProperty,aI=Object.prototype.propertyIsEnumerable,sa=(t,e,s)=>e in t?rI(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s,on=(t,e)=>{for(var s in e||(e={}))oI.call(e,s)&&sa(t,s,e[s]);if(xl)for(var s of xl(e))aI.call(e,s)&&sa(t,s,e[s]);return t},yo=(t,e)=>iI(t,nI(e)),_t=(t,e,s)=>sa(t,typeof e!="symbol"?e+"":e,s);let cI=class Oh{constructor(e){_t(this,"client"),_t(this,"namespaces"),_t(this,"optionalNamespaces"),_t(this,"sessionProperties"),_t(this,"scopedProperties"),_t(this,"events",new la),_t(this,"rpcProviders",{}),_t(this,"session"),_t(this,"providerOpts"),_t(this,"logger"),_t(this,"uri"),_t(this,"disableProviderPing",!1),this.providerOpts=e,this.logger=typeof e?.logger<"u"&&typeof e?.logger!="string"?e.logger:oa($i({level:e?.logger||vl})),this.disableProviderPing=e?.disableProviderPing||!1}static async init(e){const s=new Oh(e);return await s.initialize(),s}async request(e,s,r){const[i,n]=this.validateChain(s);if(!this.session)throw new Error("Please call connect() before request()");return await this.getProvider(i).request({request:on({},e),chainId:`${i}:${n}`,topic:this.session.topic,expiry:r})}sendAsync(e,s,r,i){const n=new Date().getTime();this.request(e,r,i).then(o=>s(null,kn(n,o))).catch(o=>s(o,void 0))}async enable(){if(!this.client)throw new Error("Sign Client not initialized");return this.session||await this.connect({namespaces:this.namespaces,optionalNamespaces:this.optionalNamespaces,sessionProperties:this.sessionProperties,scopedProperties:this.scopedProperties}),await this.requestAccounts()}async disconnect(){var e;if(!this.session)throw new Error("Please call connect() before enable()");await this.client.disconnect({topic:(e=this.session)==null?void 0:e.topic,reason:we("USER_DISCONNECTED")}),await this.cleanup()}async connect(e){if(!this.client)throw new Error("Sign Client not initialized");if(this.setNamespaces(e),await this.cleanupPendingPairings(),!e.skipPairing)return await this.pair(e.pairingTopic)}async authenticate(e,s){if(!this.client)throw new Error("Sign Client not initialized");this.setNamespaces(e),await this.cleanupPendingPairings();const{uri:r,response:i}=await this.client.authenticate(e,s);r&&(this.uri=r,this.events.emit("display_uri",r));const n=await i();if(this.session=n.session,this.session){const o=Pl(this.session.namespaces);this.namespaces=nn(this.namespaces,o),await this.persist("namespaces",this.namespaces),this.onConnect()}return n}on(e,s){this.events.on(e,s)}once(e,s){this.events.once(e,s)}removeListener(e,s){this.events.removeListener(e,s)}off(e,s){this.events.off(e,s)}get isWalletConnect(){return!0}async pair(e){const{uri:s,approval:r}=await this.client.connect({pairingTopic:e,requiredNamespaces:this.namespaces,optionalNamespaces:this.optionalNamespaces,sessionProperties:this.sessionProperties,scopedProperties:this.scopedProperties});s&&(this.uri=s,this.events.emit("display_uri",s));const i=await r();this.session=i;const n=Pl(i.namespaces);return this.namespaces=nn(this.namespaces,n),await this.persist("namespaces",this.namespaces),await this.persist("optionalNamespaces",this.optionalNamespaces),this.onConnect(),this.session}setDefaultChain(e,s){try{if(!this.session)return;const[r,i]=this.validateChain(e),n=this.getProvider(r);n.name===Ir?n.setDefaultChain(`${r}:${i}`,s):n.setDefaultChain(i,s)}catch(r){if(!/Please call connect/.test(r.message))throw r}}async cleanupPendingPairings(e={}){this.logger.info("Cleaning up inactive pairings...");const s=this.client.pairing.getAll();if(As(s)){for(const r of s)e.deletePairings?this.client.core.expirer.set(r.topic,0):await this.client.core.relayer.subscriber.unsubscribe(r.topic);this.logger.info(`Inactive pairings cleared: ${s.length}`)}}abortPairingAttempt(){this.logger.warn("abortPairingAttempt is deprecated. This is now a no-op.")}async checkStorage(){this.namespaces=await this.getFromStore("namespaces")||{},this.optionalNamespaces=await this.getFromStore("optionalNamespaces")||{},this.session&&this.createProviders()}async initialize(){this.logger.trace("Initialized"),await this.createClient(),await this.checkStorage(),this.registerEventListeners()}async createClient(){var e,s;if(this.client=this.providerOpts.client||await DE.init({core:this.providerOpts.core,logger:this.providerOpts.logger||vl,relayUrl:this.providerOpts.relayUrl||LE,projectId:this.providerOpts.projectId,metadata:this.providerOpts.metadata,storageOptions:this.providerOpts.storageOptions,storage:this.providerOpts.storage,name:this.providerOpts.name,customStoragePrefix:this.providerOpts.customStoragePrefix,telemetryEnabled:this.providerOpts.telemetryEnabled}),this.providerOpts.session)try{this.session=this.client.session.get(this.providerOpts.session.topic)}catch(r){throw this.logger.error("Failed to get session",r),new Error(`The provided session: ${(s=(e=this.providerOpts)==null?void 0:e.session)==null?void 0:s.topic} doesn't exist in the Sign client`)}else{const r=this.client.session.getAll();this.session=r[0]}this.logger.trace("SignClient Initialized")}createProviders(){if(!this.client)throw new Error("Sign Client not initialized");if(!this.session)throw new Error("Session not initialized. Please call connect() before enable()");const e=[...new Set(Object.keys(this.session.namespaces).map(s=>Pr(s)))];wo("client",this.client),wo("events",this.events),wo("disableProviderPing",this.disableProviderPing),e.forEach(s=>{if(!this.session)return;const r=vC(s,this.session),i=Ph(r),n=nn(this.namespaces,this.optionalNamespaces),o=yo(on({},n[s]),{accounts:r,chains:i});switch(s){case"eip155":this.rpcProviders[s]=new kC({namespace:o});break;case"algorand":this.rpcProviders[s]=new MC({namespace:o});break;case"solana":this.rpcProviders[s]=new xC({namespace:o});break;case"cosmos":this.rpcProviders[s]=new UC({namespace:o});break;case"polkadot":this.rpcProviders[s]=new IC({namespace:o});break;case"cip34":this.rpcProviders[s]=new qC({namespace:o});break;case"elrond":this.rpcProviders[s]=new WC({namespace:o});break;case"multiversx":this.rpcProviders[s]=new KC({namespace:o});break;case"near":this.rpcProviders[s]=new YC({namespace:o});break;case"tezos":this.rpcProviders[s]=new QC({namespace:o});break;default:this.rpcProviders[Ir]?this.rpcProviders[Ir].updateNamespace(o):this.rpcProviders[Ir]=new sI({namespace:o})}})}registerEventListeners(){if(typeof this.client>"u")throw new Error("Sign Client is not initialized");this.client.on("session_ping",e=>{var s;const{topic:r}=e;r===((s=this.session)==null?void 0:s.topic)&&this.events.emit("session_ping",e)}),this.client.on("session_event",e=>{var s;const{params:r,topic:i}=e;if(i!==((s=this.session)==null?void 0:s.topic))return;const{event:n}=r;if(n.name==="accountsChanged"){const o=n.data;o&&As(o)&&this.events.emit("accountsChanged",o.map(Sl))}else if(n.name==="chainChanged"){const o=r.chainId,a=r.event.data,c=Pr(o),l=mo(o)!==mo(a)?`${c}:${mo(a)}`:o;this.onChainChanged(l)}else this.events.emit(n.name,n.data);this.events.emit("session_event",e)}),this.client.on("session_update",({topic:e,params:s})=>{var r,i;if(e!==((r=this.session)==null?void 0:r.topic))return;const{namespaces:n}=s,o=(i=this.client)==null?void 0:i.session.get(e);this.session=yo(on({},o),{namespaces:n}),this.onSessionUpdate(),this.events.emit("session_update",{topic:e,params:s})}),this.client.on("session_delete",async e=>{var s;e.topic===((s=this.session)==null?void 0:s.topic)&&(await this.cleanup(),this.events.emit("session_delete",e),this.events.emit("disconnect",yo(on({},we("USER_DISCONNECTED")),{data:e.topic})))}),this.on(Tt.DEFAULT_CHAIN_CHANGED,e=>{this.onChainChanged(e,!0)})}getProvider(e){return this.rpcProviders[e]||this.rpcProviders[Ir]}onSessionUpdate(){Object.keys(this.rpcProviders).forEach(e=>{var s;this.getProvider(e).updateNamespace((s=this.session)==null?void 0:s.namespaces[e])})}setNamespaces(e){const{namespaces:s={},optionalNamespaces:r={},sessionProperties:i,scopedProperties:n}=e;this.optionalNamespaces=nn(s,r),this.sessionProperties=i,this.scopedProperties=n}validateChain(e){const[s,r]=e?.split(":")||["",""];if(!this.namespaces||!Object.keys(this.namespaces).length)return[s,r];if(s&&!Object.keys(this.namespaces||{}).map(o=>Pr(o)).includes(s))throw new Error(`Namespace '${s}' is not configured. Please call connect() first with namespace config.`);if(s&&r)return[s,r];const i=Pr(Object.keys(this.namespaces)[0]),n=this.rpcProviders[i].getDefaultChain();return[i,n]}async requestAccounts(){const[e]=this.validateChain();return await this.getProvider(e).requestAccounts()}async onChainChanged(e,s=!1){if(!this.namespaces)return;const[r,i]=this.validateChain(e);if(!i)return;this.updateNamespaceChain(r,i),this.events.emit("chainChanged",i);const n=this.getProvider(r).getDefaultChain();s||this.getProvider(r).setDefaultChain(i),this.emitAccountsChangedOnChainChange({namespace:r,previousChainId:n,newChainId:e}),await this.persist("namespaces",this.namespaces)}emitAccountsChangedOnChainChange({namespace:e,previousChainId:s,newChainId:r}){var i,n;try{if(s===r)return;const o=(n=(i=this.session)==null?void 0:i.namespaces[e])==null?void 0:n.accounts;if(!o)return;const a=o.filter(c=>c.includes(`${r}:`)).map(Sl);if(!As(a))return;this.events.emit("accountsChanged",a)}catch(o){this.logger.warn("Failed to emit accountsChanged on chain change",o)}}updateNamespaceChain(e,s){if(!this.namespaces)return;const r=this.namespaces[e]?e:`${e}:${s}`,i={chains:[],methods:[],events:[],defaultChain:s};this.namespaces[r]?this.namespaces[r]&&(this.namespaces[r].defaultChain=s):this.namespaces[r]=i}onConnect(){this.createProviders(),this.events.emit("connect",{session:this.session})}async cleanup(){this.namespaces=void 0,this.optionalNamespaces=void 0,this.sessionProperties=void 0,await this.deleteFromStore("namespaces"),await this.deleteFromStore("optionalNamespaces"),await this.deleteFromStore("sessionProperties"),this.session=void 0,await this.cleanupPendingPairings({deletePairings:!0}),await this.cleanupStorage()}async persist(e,s){var r;const i=((r=this.session)==null?void 0:r.topic)||"";await this.client.core.storage.setItem(`${sn}/${e}${i}`,s)}async getFromStore(e){var s;const r=((s=this.session)==null?void 0:s.topic)||"";return await this.client.core.storage.getItem(`${sn}/${e}${r}`)}async deleteFromStore(e){var s;const r=((s=this.session)==null?void 0:s.topic)||"";await this.client.core.storage.removeItem(`${sn}/${e}${r}`)}async cleanupStorage(){var e;try{if(((e=this.client)==null?void 0:e.session.length)>0)return;const s=await this.client.core.storage.getKeys();for(const r of s)r.startsWith(sn)&&await this.client.core.storage.removeItem(r)}catch(s){this.logger.warn("Failed to cleanup storage",s)}}};function an(t,e){return j.getConnectorId(t)===e}function lI(t){const e=Array.from(g.state.chains.keys());let s=[];return t?(s.push([t,g.state.chains.get(t)]),an(t,W.CONNECTOR_ID.WALLET_CONNECT)?e.forEach(r=>{r!==t&&an(r,W.CONNECTOR_ID.WALLET_CONNECT)&&s.push([r,g.state.chains.get(r)])}):an(t,W.CONNECTOR_ID.AUTH)&&e.forEach(r=>{r!==t&&an(r,W.CONNECTOR_ID.AUTH)&&s.push([r,g.state.chains.get(r)])})):s=Array.from(g.state.chains.entries()),s}const ms={EIP155:"eip155",CONNECTOR_TYPE_WALLET_CONNECT:"WALLET_CONNECT",CONNECTOR_TYPE_INJECTED:"INJECTED",CONNECTOR_TYPE_ANNOUNCED:"ANNOUNCED"},_n={NetworkImageIds:{1:"ba0ba0cd-17c6-4806-ad93-f9d174f17900",42161:"3bff954d-5cb0-47a0-9a23-d20192e74600",43114:"30c46e53-e989-45fb-4549-be3bd4eb3b00",56:"93564157-2e8e-4ce7-81df-b264dbee9b00",250:"06b26297-fe0c-4733-5d6b-ffa5498aac00",10:"ab9c186a-c52f-464b-2906-ca59d760a400",137:"41d04d42-da3b-4453-8506-668cc0727900",5e3:"e86fae9b-b770-4eea-e520-150e12c81100",295:"6a97d510-cac8-4e58-c7ce-e8681b044c00",11155111:"e909ea0a-f92a-4512-c8fc-748044ea6800",84532:"a18a7ecd-e307-4360-4746-283182228e00",1301:"4eeea7ef-0014-4649-5d1d-07271a80f600",130:"2257980a-3463-48c6-cbac-a42d2a956e00",10143:"0a728e83-bacb-46db-7844-948f05434900",100:"02b53f6a-e3d4-479e-1cb4-21178987d100",9001:"f926ff41-260d-4028-635e-91913fc28e00",324:"b310f07f-4ef7-49f3-7073-2a0a39685800",314:"5a73b3dd-af74-424e-cae0-0de859ee9400",4689:"34e68754-e536-40da-c153-6ef2e7188a00",1088:"3897a66d-40b9-4833-162f-a2c90531c900",1284:"161038da-44ae-4ec7-1208-0ea569454b00",1285:"f1d73bb6-5450-4e18-38f7-fb6484264a00",7777777:"845c60df-d429-4991-e687-91ae45791600",42220:"ab781bbc-ccc6-418d-d32d-789b15da1f00",8453:"7289c336-3981-4081-c5f4-efc26ac64a00",1313161554:"3ff73439-a619-4894-9262-4470c773a100",2020:"b8101fc0-9c19-4b6f-ec65-f6dfff106e00",2021:"b8101fc0-9c19-4b6f-ec65-f6dfff106e00",80094:"e329c2c9-59b0-4a02-83e4-212ff3779900",2741:"fc2427d1-5af9-4a9c-8da5-6f94627cd900","5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp":"a1b58899-f671-4276-6a5e-56ca5bd59700","4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z":"a1b58899-f671-4276-6a5e-56ca5bd59700",EtWTRABZaYq6iMfeYKouRu166VU2xqa1:"a1b58899-f671-4276-6a5e-56ca5bd59700","000000000019d6689c085ae165831e93":"0b4838db-0161-4ffe-022d-532bf03dba00","000000000933ea01ad0ee984209779ba":"39354064-d79b-420b-065d-f980c4b78200"},ConnectorImageIds:{[W.CONNECTOR_ID.COINBASE]:"0c2840c3-5b04-4c44-9661-fbd4b49e1800",[W.CONNECTOR_ID.COINBASE_SDK]:"0c2840c3-5b04-4c44-9661-fbd4b49e1800",[W.CONNECTOR_ID.SAFE]:"461db637-8616-43ce-035a-d89b8a1d5800",[W.CONNECTOR_ID.LEDGER]:"54a1aa77-d202-4f8d-0fb2-5d2bb6db0300",[W.CONNECTOR_ID.WALLET_CONNECT]:"ef1a1fcf-7fe8-4d69-bd6d-fda1345b4400",[W.CONNECTOR_ID.INJECTED]:"07ba87ed-43aa-4adf-4540-9e6a2b9cae00"},ConnectorNamesMap:{[W.CONNECTOR_ID.INJECTED]:"Browser Wallet",[W.CONNECTOR_ID.WALLET_CONNECT]:"WalletConnect",[W.CONNECTOR_ID.COINBASE]:"Coinbase",[W.CONNECTOR_ID.COINBASE_SDK]:"Coinbase",[W.CONNECTOR_ID.LEDGER]:"Ledger",[W.CONNECTOR_ID.SAFE]:"Safe"}},Ca={getCaipTokens(t){if(!t)return;const e={};return Object.entries(t).forEach(([s,r])=>{e[`${ms.EIP155}:${s}`]=r}),e},isLowerCaseMatch(t,e){return t?.toLowerCase()===e?.toLowerCase()}};new AbortController;const Cr={UniversalProviderErrors:{UNAUTHORIZED_DOMAIN_NOT_ALLOWED:{message:"Unauthorized: origin not allowed",alertErrorKey:"INVALID_APP_CONFIGURATION"},JWT_VALIDATION_ERROR:{message:"JWT validation error: JWT Token is not yet valid",alertErrorKey:"JWT_TOKEN_NOT_VALID"},INVALID_KEY:{message:"Unauthorized: invalid key",alertErrorKey:"INVALID_PROJECT_ID"}},ALERT_ERRORS:{SWITCH_NETWORK_NOT_FOUND:{shortMessage:"Network Not Found",longMessage:"Network not found - please make sure it is included in 'networks' array in createAppKit function"},INVALID_APP_CONFIGURATION:{shortMessage:"Invalid App Configuration",longMessage:()=>`Origin ${uI()?window.origin:"unknown"} not found on Allowlist - update configuration on cloud.reown.com`},IFRAME_LOAD_FAILED:{shortMessage:"Network Error - Could not load embedded wallet",longMessage:()=>"There was an issue loading the embedded wallet. Please try again later."},IFRAME_REQUEST_TIMEOUT:{shortMessage:"Embedded Wallet Request Timed Out",longMessage:()=>"There was an issue doing the request to the embedded wallet. Please try again later."},UNVERIFIED_DOMAIN:{shortMessage:"Invalid App Configuration",longMessage:()=>"There was an issue loading the embedded wallet. Please verify that your domain is allowed at cloud.reown.com"},JWT_TOKEN_NOT_VALID:{shortMessage:"Session Expired",longMessage:"Invalid session found on UniversalProvider - please check your time settings and connect again"},INVALID_PROJECT_ID:{shortMessage:"Invalid App Configuration",longMessage:"Invalid Project ID - update configuration"},PROJECT_ID_NOT_CONFIGURED:{shortMessage:"Project ID Not Configured",longMessage:"Project ID Not Configured - update configuration on cloud.reown.com"}}};function uI(){return typeof window<"u"}const hI={createLogger(t,e="error"){const s=$i({level:e}),{logger:r}=Kl({opts:s});return r.error=(...i)=>{for(const n of i)if(n instanceof Error){t(n,...i);return}t(void 0,...i)},r}},dI="rpc.walletconnect.org";function $l(t,e){const s=new URL("https://rpc.walletconnect.org/v1/");return s.searchParams.set("chainId",t),s.searchParams.set("projectId",e),s.toString()}const bo=["near:mainnet","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","eip155:1101","eip155:56","eip155:42161","eip155:7777777","eip155:59144","eip155:324","solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1","eip155:5000","solana:4sgjmw1sunhzsxgspuhpqldx6wiyjntz","eip155:80084","eip155:5003","eip155:100","eip155:8453","eip155:42220","eip155:1313161555","eip155:17000","eip155:1","eip155:300","eip155:1313161554","eip155:1329","eip155:84532","eip155:421614","eip155:11155111","eip155:8217","eip155:43114","solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z","eip155:999999999","eip155:11155420","eip155:80002","eip155:97","eip155:43113","eip155:137","eip155:10","eip155:1301","bip122:000000000019d6689c085ae165831e93","bip122:000000000933ea01ad0ee984209779ba"],Nr={extendRpcUrlWithProjectId(t,e){let s=!1;try{s=new URL(t).host===dI}catch{s=!1}if(s){const r=new URL(t);return r.searchParams.has("projectId")||r.searchParams.set("projectId",e),r.toString()}return t},isCaipNetwork(t){return"chainNamespace"in t&&"caipNetworkId"in t},getChainNamespace(t){return this.isCaipNetwork(t)?t.chainNamespace:W.CHAIN.EVM},getCaipNetworkId(t){return this.isCaipNetwork(t)?t.caipNetworkId:`${W.CHAIN.EVM}:${t.id}`},getDefaultRpcUrl(t,e,s){const r=t.rpcUrls?.default?.http?.[0];return bo.includes(e)?$l(e,s):r||""},extendCaipNetwork(t,{customNetworkImageUrls:e,projectId:s,customRpcUrls:r}){const i=this.getChainNamespace(t),n=this.getCaipNetworkId(t),o=t.rpcUrls.default.http?.[0],a=this.getDefaultRpcUrl(t,n,s),c=t?.rpcUrls?.chainDefault?.http?.[0]||o,l=r?.[n]?.map(d=>d.url)||[],u=[...l,a],h=[...l];return c&&!h.includes(c)&&h.push(c),{...t,chainNamespace:i,caipNetworkId:n,assets:{imageId:_n.NetworkImageIds[t.id],imageUrl:e?.[t.id]},rpcUrls:{...t.rpcUrls,default:{http:u},chainDefault:{http:h}}}},extendCaipNetworks(t,{customNetworkImageUrls:e,projectId:s,customRpcUrls:r}){return t.map(i=>Nr.extendCaipNetwork(i,{customNetworkImageUrls:e,customRpcUrls:r,projectId:s}))},getViemTransport(t,e,s){const r=[];return s?.forEach(i=>{r.push(Vi(i.url,i.config))}),bo.includes(t.caipNetworkId)&&r.push(Vi($l(t.caipNetworkId,e),{fetchOptions:{headers:{"Content-Type":"text/plain"}}})),t?.rpcUrls?.default?.http?.forEach(i=>{r.push(Vi(i))}),Ta(r)},extendWagmiTransports(t,e,s){if(bo.includes(t.caipNetworkId)){const r=this.getDefaultRpcUrl(t,t.caipNetworkId,e);return Ta([s,Vi(r)])}return s},getUnsupportedNetwork(t){return{id:t.split(":")[1],caipNetworkId:t,name:W.UNSUPPORTED_NETWORK_NAME,chainNamespace:t.split(":")[0],nativeCurrency:{name:"",decimals:0,symbol:""},rpcUrls:{default:{http:[]}}}},getCaipNetworkFromStorage(t){const e=F.getActiveCaipNetworkId(),s=g.getAllRequestedCaipNetworks(),r=Array.from(g.state.chains?.keys()||[]),i=e?.split(":")[0],n=i?r.includes(i):!1,o=s?.find(c=>c.caipNetworkId===e);return n&&!o&&e?this.getUnsupportedNetwork(e):o||t||s?.[0]}},Sn={eip155:void 0,solana:void 0,polkadot:void 0,bip122:void 0,cosmos:void 0},ct=_e({providers:{...Sn},providerIds:{...Sn}}),Se={state:ct,subscribeKey(t,e){return et(ct,t,e)},subscribe(t){return Qe(ct,()=>{t(ct)})},subscribeProviders(t){return Qe(ct.providers,()=>t(ct.providers))},setProvider(t,e){e&&(ct.providers[t]=Vs(e))},getProvider(t){return ct.providers[t]},setProviderId(t,e){e&&(ct.providerIds[t]=e)},getProviderId(t){if(t)return ct.providerIds[t]},reset(){ct.providers={...Sn},ct.providerIds={...Sn}},resetChain(t){ct.providers[t]=void 0,ct.providerIds[t]=void 0}},pI={VIEW_DIRECTION:{Next:"next",Prev:"prev"},DEFAULT_CONNECT_METHOD_ORDER:["email","social","wallet"],ANIMATION_DURATIONS:{HeaderText:120,ModalHeight:150,ViewTransition:150}},ra={filterOutDuplicatesByRDNS(t){const e=O.state.enableEIP6963?j.state.connectors:[],s=F.getRecentWallets(),r=e.map(a=>a.info?.rdns).filter(Boolean),i=s.map(a=>a.rdns).filter(Boolean),n=r.concat(i);if(n.includes("io.metamask.mobile")&&X.isMobile()){const a=n.indexOf("io.metamask.mobile");n[a]="io.metamask"}return t.filter(a=>!n.includes(String(a?.rdns)))},filterOutDuplicatesByIds(t){const e=j.state.connectors.filter(a=>a.type==="ANNOUNCED"||a.type==="INJECTED"),s=F.getRecentWallets(),r=e.map(a=>a.explorerId),i=s.map(a=>a.id),n=r.concat(i);return t.filter(a=>!n.includes(a?.id))},filterOutDuplicateWallets(t){const e=this.filterOutDuplicatesByRDNS(t);return this.filterOutDuplicatesByIds(e)},markWalletsAsInstalled(t){const{connectors:e}=j.state,{featuredWalletIds:s}=O.state,r=e.filter(o=>o.type==="ANNOUNCED").reduce((o,a)=>(a.info?.rdns&&(o[a.info.rdns]=!0),o),{});return t.map(o=>({...o,installed:!!o.rdns&&!!r[o.rdns??""]})).sort((o,a)=>{const c=Number(a.installed)-Number(o.installed);if(c!==0)return c;if(s?.length){const l=s.indexOf(o.id),u=s.indexOf(a.id);if(l!==-1&&u!==-1)return l-u;if(l!==-1)return-1;if(u!==-1)return 1}return 0})},getConnectOrderMethod(t,e){const s=t?.connectMethodsOrder||O.state.features?.connectMethodsOrder,r=e||j.state.connectors;if(s)return s;const{injected:i,announced:n}=gn.getConnectorsByType(r,V.state.recommended,V.state.featured),o=i.filter(gn.showConnector),a=n.filter(gn.showConnector);return o.length||a.length?["wallet","email","social"]:pI.DEFAULT_CONNECT_METHOD_ORDER},isExcluded(t){const e=!!t.rdns&&V.state.excludedWallets.some(r=>r.rdns===t.rdns),s=!!t.name&&V.state.excludedWallets.some(r=>Ca.isLowerCaseMatch(r.name,t.name));return e||s}},gn={getConnectorsByType(t,e,s){const{customWallets:r}=O.state,i=F.getRecentWallets(),n=ra.filterOutDuplicateWallets(e),o=ra.filterOutDuplicateWallets(s),a=t.filter(h=>h.type==="MULTI_CHAIN"),c=t.filter(h=>h.type==="ANNOUNCED"),l=t.filter(h=>h.type==="INJECTED"),u=t.filter(h=>h.type==="EXTERNAL");return{custom:r,recent:i,external:u,multiChain:a,announced:c,injected:l,recommended:n,featured:o}},showConnector(t){const e=t.info?.rdns,s=!!e&&V.state.excludedWallets.some(i=>!!i.rdns&&i.rdns===e),r=!!t.name&&V.state.excludedWallets.some(i=>Ca.isLowerCaseMatch(i.name,t.name));return!(t.type==="INJECTED"&&(t.name==="Browser Wallet"&&(!X.isMobile()||X.isMobile()&&!e&&!Y.checkInstalled())||s||r)||(t.type==="ANNOUNCED"||t.type==="EXTERNAL")&&(s||r))},getIsConnectedWithWC(){return Array.from(g.state.chains.values()).some(s=>j.getConnectorId(s.namespace)===W.CONNECTOR_ID.WALLET_CONNECT)},getConnectorTypeOrder({recommended:t,featured:e,custom:s,recent:r,announced:i,injected:n,multiChain:o,external:a,overriddenConnectors:c=O.state.features?.connectorTypeOrder??[]}){const l=gn.getIsConnectedWithWC(),d=[{type:"walletConnect",isEnabled:O.state.enableWalletConnect&&!l},{type:"recent",isEnabled:r.length>0},{type:"injected",isEnabled:[...n,...i,...o].length>0},{type:"featured",isEnabled:e.length>0},{type:"custom",isEnabled:s&&s.length>0},{type:"external",isEnabled:a.length>0},{type:"recommended",isEnabled:t.length>0}].filter(f=>f.isEnabled),p=new Set(d.map(f=>f.type)),w=c.filter(f=>p.has(f)).map(f=>({type:f,isEnabled:!0})),m=d.filter(({type:f})=>!w.some(({type:b})=>b===f));return Array.from(new Set([...w,...m].map(({type:f})=>f)))}};/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: BSD-3-Clause - */const mn=globalThis,Ia=mn.ShadowRoot&&(mn.ShadyCSS===void 0||mn.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,Na=Symbol(),Rl=new WeakMap;let Th=class{constructor(e,s,r){if(this._$cssResult$=!0,r!==Na)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=s}get styleSheet(){let e=this.o;const s=this.t;if(Ia&&e===void 0){const r=s!==void 0&&s.length===1;r&&(e=Rl.get(s)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),r&&Rl.set(s,e))}return e}toString(){return this.cssText}};const St=t=>new Th(typeof t=="string"?t:t+"",void 0,Na),Tr=(t,...e)=>{const s=t.length===1?t[0]:e.reduce(((r,i,n)=>r+(o=>{if(o._$cssResult$===!0)return o.cssText;if(typeof o=="number")return o;throw Error("Value passed to 'css' function must be a 'css' function result: "+o+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(i)+t[n+1]),t[0]);return new Th(s,t,Na)},fI=(t,e)=>{if(Ia)t.adoptedStyleSheets=e.map((s=>s instanceof CSSStyleSheet?s:s.styleSheet));else for(const s of e){const r=document.createElement("style"),i=mn.litNonce;i!==void 0&&r.setAttribute("nonce",i),r.textContent=s.cssText,t.appendChild(r)}},Ul=Ia?t=>t:t=>t instanceof CSSStyleSheet?(e=>{let s="";for(const r of e.cssRules)s+=r.cssText;return St(s)})(t):t;/** - * @license - * Copyright 2017 Google LLC - * SPDX-License-Identifier: BSD-3-Clause - */const{is:gI,defineProperty:mI,getOwnPropertyDescriptor:wI,getOwnPropertyNames:yI,getOwnPropertySymbols:bI,getPrototypeOf:vI}=Object,jn=globalThis,Dl=jn.trustedTypes,EI=Dl?Dl.emptyScript:"",CI=jn.reactiveElementPolyfillSupport,Ei=(t,e)=>t,ia={toAttribute(t,e){switch(e){case Boolean:t=t?EI:null;break;case Object:case Array:t=t==null?t:JSON.stringify(t)}return t},fromAttribute(t,e){let s=t;switch(e){case Boolean:s=t!==null;break;case Number:s=t===null?null:Number(t);break;case Object:case Array:try{s=JSON.parse(t)}catch{s=null}}return s}},xh=(t,e)=>!gI(t,e),Ll={attribute:!0,type:String,converter:ia,reflect:!1,useDefault:!1,hasChanged:xh};Symbol.metadata??=Symbol("metadata"),jn.litPropertyMetadata??=new WeakMap;let Ar=class extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,s=Ll){if(s.state&&(s.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((s=Object.create(s)).wrapped=!0),this.elementProperties.set(e,s),!s.noAccessor){const r=Symbol(),i=this.getPropertyDescriptor(e,r,s);i!==void 0&&mI(this.prototype,e,i)}}static getPropertyDescriptor(e,s,r){const{get:i,set:n}=wI(this.prototype,e)??{get(){return this[s]},set(o){this[s]=o}};return{get:i,set(o){const a=i?.call(this);n?.call(this,o),this.requestUpdate(e,a,r)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??Ll}static _$Ei(){if(this.hasOwnProperty(Ei("elementProperties")))return;const e=vI(this);e.finalize(),e.l!==void 0&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(Ei("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(Ei("properties"))){const s=this.properties,r=[...yI(s),...bI(s)];for(const i of r)this.createProperty(i,s[i])}const e=this[Symbol.metadata];if(e!==null){const s=litPropertyMetadata.get(e);if(s!==void 0)for(const[r,i]of s)this.elementProperties.set(r,i)}this._$Eh=new Map;for(const[s,r]of this.elementProperties){const i=this._$Eu(s,r);i!==void 0&&this._$Eh.set(i,s)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){const s=[];if(Array.isArray(e)){const r=new Set(e.flat(1/0).reverse());for(const i of r)s.unshift(Ul(i))}else e!==void 0&&s.push(Ul(e));return s}static _$Eu(e,s){const r=s.attribute;return r===!1?void 0:typeof r=="string"?r:typeof e=="string"?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((e=>this.enableUpdating=e)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((e=>e(this)))}addController(e){(this._$EO??=new Set).add(e),this.renderRoot!==void 0&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){const e=new Map,s=this.constructor.elementProperties;for(const r of s.keys())this.hasOwnProperty(r)&&(e.set(r,this[r]),delete this[r]);e.size>0&&(this._$Ep=e)}createRenderRoot(){const e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return fI(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((e=>e.hostConnected?.()))}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach((e=>e.hostDisconnected?.()))}attributeChangedCallback(e,s,r){this._$AK(e,r)}_$ET(e,s){const r=this.constructor.elementProperties.get(e),i=this.constructor._$Eu(e,r);if(i!==void 0&&r.reflect===!0){const n=(r.converter?.toAttribute!==void 0?r.converter:ia).toAttribute(s,r.type);this._$Em=e,n==null?this.removeAttribute(i):this.setAttribute(i,n),this._$Em=null}}_$AK(e,s){const r=this.constructor,i=r._$Eh.get(e);if(i!==void 0&&this._$Em!==i){const n=r.getPropertyOptions(i),o=typeof n.converter=="function"?{fromAttribute:n.converter}:n.converter?.fromAttribute!==void 0?n.converter:ia;this._$Em=i;const a=o.fromAttribute(s,n.type);this[i]=a??this._$Ej?.get(i)??a,this._$Em=null}}requestUpdate(e,s,r){if(e!==void 0){const i=this.constructor,n=this[e];if(r??=i.getPropertyOptions(e),!((r.hasChanged??xh)(n,s)||r.useDefault&&r.reflect&&n===this._$Ej?.get(e)&&!this.hasAttribute(i._$Eu(e,r))))return;this.C(e,s,r)}this.isUpdatePending===!1&&(this._$ES=this._$EP())}C(e,s,{useDefault:r,reflect:i,wrapped:n},o){r&&!(this._$Ej??=new Map).has(e)&&(this._$Ej.set(e,o??s??this[e]),n!==!0||o!==void 0)||(this._$AL.has(e)||(this.hasUpdated||r||(s=void 0),this._$AL.set(e,s)),i===!0&&this._$Em!==e&&(this._$Eq??=new Set).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(s){Promise.reject(s)}const e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[i,n]of this._$Ep)this[i]=n;this._$Ep=void 0}const r=this.constructor.elementProperties;if(r.size>0)for(const[i,n]of r){const{wrapped:o}=n,a=this[i];o!==!0||this._$AL.has(i)||a===void 0||this.C(i,void 0,n,a)}}let e=!1;const s=this._$AL;try{e=this.shouldUpdate(s),e?(this.willUpdate(s),this._$EO?.forEach((r=>r.hostUpdate?.())),this.update(s)):this._$EM()}catch(r){throw e=!1,this._$EM(),r}e&&this._$AE(s)}willUpdate(e){}_$AE(e){this._$EO?.forEach((s=>s.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&=this._$Eq.forEach((s=>this._$ET(s,this[s]))),this._$EM()}updated(e){}firstUpdated(e){}};Ar.elementStyles=[],Ar.shadowRootOptions={mode:"open"},Ar[Ei("elementProperties")]=new Map,Ar[Ei("finalized")]=new Map,CI?.({ReactiveElement:Ar}),(jn.reactiveElementVersions??=[]).push("2.1.1");/** - * @license - * Copyright 2017 Google LLC - * SPDX-License-Identifier: BSD-3-Clause - */const Aa=globalThis,Pn=Aa.trustedTypes,Ml=Pn?Pn.createPolicy("lit-html",{createHTML:t=>t}):void 0,$h="$lit$",vs=`lit$${Math.random().toFixed(9).slice(2)}$`,Rh="?"+vs,II=`<${Rh}>`,Xs=document,Oi=()=>Xs.createComment(""),Ti=t=>t===null||typeof t!="object"&&typeof t!="function",_a=Array.isArray,NI=t=>_a(t)||typeof t?.[Symbol.iterator]=="function",vo=`[ -\f\r]`,oi=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Bl=/-->/g,jl=/>/g,Rs=RegExp(`>|${vo}(?:([^\\s"'>=/]+)(${vo}*=${vo}*(?:[^ -\f\r"'\`<>=]|("|')|))|$)`,"g"),ql=/'/g,Fl=/"/g,Uh=/^(?:script|style|textarea|title)$/i,Dh=t=>(e,...s)=>({_$litType$:t,strings:e,values:s}),v1=Dh(1),E1=Dh(2),qr=Symbol.for("lit-noChange"),ze=Symbol.for("lit-nothing"),zl=new WeakMap,zs=Xs.createTreeWalker(Xs,129);function Lh(t,e){if(!_a(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return Ml!==void 0?Ml.createHTML(e):e}const AI=(t,e)=>{const s=t.length-1,r=[];let i,n=e===2?"":e===3?"":"",o=oi;for(let a=0;a"?(o=i??oi,h=-1):u[1]===void 0?h=-2:(h=o.lastIndex-u[2].length,l=u[1],o=u[3]===void 0?Rs:u[3]==='"'?Fl:ql):o===Fl||o===ql?o=Rs:o===Bl||o===jl?o=oi:(o=Rs,i=void 0);const p=o===Rs&&t[a+1].startsWith("/>")?" ":"";n+=o===oi?c+II:h>=0?(r.push(l),c.slice(0,h)+$h+c.slice(h)+vs+p):c+vs+(h===-2?a:p)}return[Lh(t,n+(t[s]||"")+(e===2?"":e===3?"":"")),r]};class xi{constructor({strings:e,_$litType$:s},r){let i;this.parts=[];let n=0,o=0;const a=e.length-1,c=this.parts,[l,u]=AI(e,s);if(this.el=xi.createElement(l,r),zs.currentNode=this.el.content,s===2||s===3){const h=this.el.content.firstChild;h.replaceWith(...h.childNodes)}for(;(i=zs.nextNode())!==null&&c.length0){i.textContent=Pn?Pn.emptyScript:"";for(let p=0;p2||r[0]!==""||r[1]!==""?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=ze}_$AI(e,s=this,r,i){const n=this.strings;let o=!1;if(n===void 0)e=Fr(this,e,s,0),o=!Ti(e)||e!==this._$AH&&e!==qr,o&&(this._$AH=e);else{const a=e;let c,l;for(e=n[0],c=0;c{const r=s?.renderBefore??e;let i=r._$litPart$;if(i===void 0){const n=s?.renderBefore??null;r._$litPart$=i=new zi(e.insertBefore(Oi(),n),n,void 0,s??{})}return i._$AI(t),i};/** - * @license - * Copyright 2017 Google LLC - * SPDX-License-Identifier: BSD-3-Clause - */const Sa=globalThis;class wn extends Ar{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const e=super.createRenderRoot();return this.renderOptions.renderBefore??=e.firstChild,e}update(e){const s=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=xI(s,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return qr}}wn._$litElement$=!0,wn.finalized=!0,Sa.litElementHydrateSupport?.({LitElement:wn});const $I=Sa.litElementPolyfillSupport;$I?.({LitElement:wn});(Sa.litElementVersions??=[]).push("4.2.1");let Ci,Ss,Ps;function C1(t,e){Ci=document.createElement("style"),Ss=document.createElement("style"),Ps=document.createElement("style"),Ci.textContent=xr(t).core.cssText,Ss.textContent=xr(t).dark.cssText,Ps.textContent=xr(t).light.cssText,document.head.appendChild(Ci),document.head.appendChild(Ss),document.head.appendChild(Ps),Mh(e)}function Mh(t){Ss&&Ps&&(t==="light"?(Ss.removeAttribute("media"),Ps.media="enabled"):(Ps.removeAttribute("media"),Ss.media="enabled"))}function RI(t){Ci&&Ss&&Ps&&(Ci.textContent=xr(t).core.cssText,Ss.textContent=xr(t).dark.cssText,Ps.textContent=xr(t).light.cssText)}function xr(t){return{core:Tr` - @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap'); - @keyframes w3m-shake { - 0% { - transform: scale(1) rotate(0deg); - } - 20% { - transform: scale(1) rotate(-1deg); - } - 40% { - transform: scale(1) rotate(1.5deg); - } - 60% { - transform: scale(1) rotate(-1.5deg); - } - 80% { - transform: scale(1) rotate(1deg); - } - 100% { - transform: scale(1) rotate(0deg); - } - } - @keyframes w3m-iframe-fade-out { - 0% { - opacity: 1; - } - 100% { - opacity: 0; - } - } - @keyframes w3m-iframe-zoom-in { - 0% { - transform: translateY(50px); - opacity: 0; - } - 100% { - transform: translateY(0px); - opacity: 1; - } - } - @keyframes w3m-iframe-zoom-in-mobile { - 0% { - transform: scale(0.95); - opacity: 0; - } - 100% { - transform: scale(1); - opacity: 1; - } - } - :root { - --w3m-modal-width: 360px; - --w3m-color-mix-strength: ${St(t?.["--w3m-color-mix-strength"]?`${t["--w3m-color-mix-strength"]}%`:"0%")}; - --w3m-font-family: ${St(t?.["--w3m-font-family"]||"Inter, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;")}; - --w3m-font-size-master: ${St(t?.["--w3m-font-size-master"]||"10px")}; - --w3m-border-radius-master: ${St(t?.["--w3m-border-radius-master"]||"4px")}; - --w3m-z-index: ${St(t?.["--w3m-z-index"]||999)}; - - --wui-font-family: var(--w3m-font-family); - - --wui-font-size-mini: calc(var(--w3m-font-size-master) * 0.8); - --wui-font-size-micro: var(--w3m-font-size-master); - --wui-font-size-tiny: calc(var(--w3m-font-size-master) * 1.2); - --wui-font-size-small: calc(var(--w3m-font-size-master) * 1.4); - --wui-font-size-paragraph: calc(var(--w3m-font-size-master) * 1.6); - --wui-font-size-medium: calc(var(--w3m-font-size-master) * 1.8); - --wui-font-size-large: calc(var(--w3m-font-size-master) * 2); - --wui-font-size-title-6: calc(var(--w3m-font-size-master) * 2.2); - --wui-font-size-medium-title: calc(var(--w3m-font-size-master) * 2.4); - --wui-font-size-2xl: calc(var(--w3m-font-size-master) * 4); - - --wui-border-radius-5xs: var(--w3m-border-radius-master); - --wui-border-radius-4xs: calc(var(--w3m-border-radius-master) * 1.5); - --wui-border-radius-3xs: calc(var(--w3m-border-radius-master) * 2); - --wui-border-radius-xxs: calc(var(--w3m-border-radius-master) * 3); - --wui-border-radius-xs: calc(var(--w3m-border-radius-master) * 4); - --wui-border-radius-s: calc(var(--w3m-border-radius-master) * 5); - --wui-border-radius-m: calc(var(--w3m-border-radius-master) * 7); - --wui-border-radius-l: calc(var(--w3m-border-radius-master) * 9); - --wui-border-radius-3xl: calc(var(--w3m-border-radius-master) * 20); - - --wui-font-weight-light: 400; - --wui-font-weight-regular: 500; - --wui-font-weight-medium: 600; - --wui-font-weight-bold: 700; - - --wui-letter-spacing-2xl: -1.6px; - --wui-letter-spacing-medium-title: -0.96px; - --wui-letter-spacing-title-6: -0.88px; - --wui-letter-spacing-large: -0.8px; - --wui-letter-spacing-medium: -0.72px; - --wui-letter-spacing-paragraph: -0.64px; - --wui-letter-spacing-small: -0.56px; - --wui-letter-spacing-tiny: -0.48px; - --wui-letter-spacing-micro: -0.2px; - --wui-letter-spacing-mini: -0.16px; - - --wui-spacing-0: 0px; - --wui-spacing-4xs: 2px; - --wui-spacing-3xs: 4px; - --wui-spacing-xxs: 6px; - --wui-spacing-2xs: 7px; - --wui-spacing-xs: 8px; - --wui-spacing-1xs: 10px; - --wui-spacing-s: 12px; - --wui-spacing-m: 14px; - --wui-spacing-l: 16px; - --wui-spacing-2l: 18px; - --wui-spacing-xl: 20px; - --wui-spacing-xxl: 24px; - --wui-spacing-2xl: 32px; - --wui-spacing-3xl: 40px; - --wui-spacing-4xl: 90px; - --wui-spacing-5xl: 95px; - - --wui-icon-box-size-xxs: 14px; - --wui-icon-box-size-xs: 20px; - --wui-icon-box-size-sm: 24px; - --wui-icon-box-size-md: 32px; - --wui-icon-box-size-mdl: 36px; - --wui-icon-box-size-lg: 40px; - --wui-icon-box-size-2lg: 48px; - --wui-icon-box-size-xl: 64px; - - --wui-icon-size-inherit: inherit; - --wui-icon-size-xxs: 10px; - --wui-icon-size-xs: 12px; - --wui-icon-size-sm: 14px; - --wui-icon-size-md: 16px; - --wui-icon-size-mdl: 18px; - --wui-icon-size-lg: 20px; - --wui-icon-size-xl: 24px; - --wui-icon-size-xxl: 28px; - - --wui-wallet-image-size-inherit: inherit; - --wui-wallet-image-size-sm: 40px; - --wui-wallet-image-size-md: 56px; - --wui-wallet-image-size-lg: 80px; - - --wui-visual-size-size-inherit: inherit; - --wui-visual-size-sm: 40px; - --wui-visual-size-md: 55px; - --wui-visual-size-lg: 80px; - - --wui-box-size-md: 100px; - --wui-box-size-lg: 120px; - - --wui-ease-out-power-2: cubic-bezier(0, 0, 0.22, 1); - --wui-ease-out-power-1: cubic-bezier(0, 0, 0.55, 1); - - --wui-ease-in-power-3: cubic-bezier(0.66, 0, 1, 1); - --wui-ease-in-power-2: cubic-bezier(0.45, 0, 1, 1); - --wui-ease-in-power-1: cubic-bezier(0.3, 0, 1, 1); - - --wui-ease-inout-power-1: cubic-bezier(0.45, 0, 0.55, 1); - - --wui-duration-lg: 200ms; - --wui-duration-md: 125ms; - --wui-duration-sm: 75ms; - - --wui-path-network-sm: path( - 'M15.4 2.1a5.21 5.21 0 0 1 5.2 0l11.61 6.7a5.21 5.21 0 0 1 2.61 4.52v13.4c0 1.87-1 3.59-2.6 4.52l-11.61 6.7c-1.62.93-3.6.93-5.22 0l-11.6-6.7a5.21 5.21 0 0 1-2.61-4.51v-13.4c0-1.87 1-3.6 2.6-4.52L15.4 2.1Z' - ); - - --wui-path-network-md: path( - 'M43.4605 10.7248L28.0485 1.61089C25.5438 0.129705 22.4562 0.129705 19.9515 1.61088L4.53951 10.7248C2.03626 12.2051 0.5 14.9365 0.5 17.886V36.1139C0.5 39.0635 2.03626 41.7949 4.53951 43.2752L19.9515 52.3891C22.4562 53.8703 25.5438 53.8703 28.0485 52.3891L43.4605 43.2752C45.9637 41.7949 47.5 39.0635 47.5 36.114V17.8861C47.5 14.9365 45.9637 12.2051 43.4605 10.7248Z' - ); - - --wui-path-network-lg: path( - 'M78.3244 18.926L50.1808 2.45078C45.7376 -0.150261 40.2624 -0.150262 35.8192 2.45078L7.6756 18.926C3.23322 21.5266 0.5 26.3301 0.5 31.5248V64.4752C0.5 69.6699 3.23322 74.4734 7.6756 77.074L35.8192 93.5492C40.2624 96.1503 45.7376 96.1503 50.1808 93.5492L78.3244 77.074C82.7668 74.4734 85.5 69.6699 85.5 64.4752V31.5248C85.5 26.3301 82.7668 21.5266 78.3244 18.926Z' - ); - - --wui-width-network-sm: 36px; - --wui-width-network-md: 48px; - --wui-width-network-lg: 86px; - - --wui-height-network-sm: 40px; - --wui-height-network-md: 54px; - --wui-height-network-lg: 96px; - - --wui-icon-size-network-xs: 12px; - --wui-icon-size-network-sm: 16px; - --wui-icon-size-network-md: 24px; - --wui-icon-size-network-lg: 42px; - - --wui-color-inherit: inherit; - - --wui-color-inverse-100: #fff; - --wui-color-inverse-000: #000; - - --wui-cover: rgba(20, 20, 20, 0.8); - - --wui-color-modal-bg: var(--wui-color-modal-bg-base); - - --wui-color-accent-100: var(--wui-color-accent-base-100); - --wui-color-accent-090: var(--wui-color-accent-base-090); - --wui-color-accent-080: var(--wui-color-accent-base-080); - - --wui-color-success-100: var(--wui-color-success-base-100); - --wui-color-success-125: var(--wui-color-success-base-125); - - --wui-color-warning-100: var(--wui-color-warning-base-100); - - --wui-color-error-100: var(--wui-color-error-base-100); - --wui-color-error-125: var(--wui-color-error-base-125); - - --wui-color-blue-100: var(--wui-color-blue-base-100); - --wui-color-blue-90: var(--wui-color-blue-base-90); - - --wui-icon-box-bg-error-100: var(--wui-icon-box-bg-error-base-100); - --wui-icon-box-bg-blue-100: var(--wui-icon-box-bg-blue-base-100); - --wui-icon-box-bg-success-100: var(--wui-icon-box-bg-success-base-100); - --wui-icon-box-bg-inverse-100: var(--wui-icon-box-bg-inverse-base-100); - - --wui-all-wallets-bg-100: var(--wui-all-wallets-bg-100); - - --wui-avatar-border: var(--wui-avatar-border-base); - - --wui-thumbnail-border: var(--wui-thumbnail-border-base); - - --wui-wallet-button-bg: var(--wui-wallet-button-bg-base); - - --wui-box-shadow-blue: var(--wui-color-accent-glass-020); - } - - @supports (background: color-mix(in srgb, white 50%, black)) { - :root { - --wui-color-modal-bg: color-mix( - in srgb, - var(--w3m-color-mix) var(--w3m-color-mix-strength), - var(--wui-color-modal-bg-base) - ); - - --wui-box-shadow-blue: color-mix(in srgb, var(--wui-color-accent-100) 20%, transparent); - - --wui-color-accent-100: color-mix( - in srgb, - var(--wui-color-accent-base-100) 100%, - transparent - ); - --wui-color-accent-090: color-mix( - in srgb, - var(--wui-color-accent-base-100) 90%, - transparent - ); - --wui-color-accent-080: color-mix( - in srgb, - var(--wui-color-accent-base-100) 80%, - transparent - ); - --wui-color-accent-glass-090: color-mix( - in srgb, - var(--wui-color-accent-base-100) 90%, - transparent - ); - --wui-color-accent-glass-080: color-mix( - in srgb, - var(--wui-color-accent-base-100) 80%, - transparent - ); - --wui-color-accent-glass-020: color-mix( - in srgb, - var(--wui-color-accent-base-100) 20%, - transparent - ); - --wui-color-accent-glass-015: color-mix( - in srgb, - var(--wui-color-accent-base-100) 15%, - transparent - ); - --wui-color-accent-glass-010: color-mix( - in srgb, - var(--wui-color-accent-base-100) 10%, - transparent - ); - --wui-color-accent-glass-005: color-mix( - in srgb, - var(--wui-color-accent-base-100) 5%, - transparent - ); - --wui-color-accent-002: color-mix( - in srgb, - var(--wui-color-accent-base-100) 2%, - transparent - ); - - --wui-color-fg-100: color-mix( - in srgb, - var(--w3m-color-mix) var(--w3m-color-mix-strength), - var(--wui-color-fg-100) - ); - --wui-color-fg-125: color-mix( - in srgb, - var(--w3m-color-mix) var(--w3m-color-mix-strength), - var(--wui-color-fg-125) - ); - --wui-color-fg-150: color-mix( - in srgb, - var(--w3m-color-mix) var(--w3m-color-mix-strength), - var(--wui-color-fg-150) - ); - --wui-color-fg-175: color-mix( - in srgb, - var(--w3m-color-mix) var(--w3m-color-mix-strength), - var(--wui-color-fg-175) - ); - --wui-color-fg-200: color-mix( - in srgb, - var(--w3m-color-mix) var(--w3m-color-mix-strength), - var(--wui-color-fg-200) - ); - --wui-color-fg-225: color-mix( - in srgb, - var(--w3m-color-mix) var(--w3m-color-mix-strength), - var(--wui-color-fg-225) - ); - --wui-color-fg-250: color-mix( - in srgb, - var(--w3m-color-mix) var(--w3m-color-mix-strength), - var(--wui-color-fg-250) - ); - --wui-color-fg-275: color-mix( - in srgb, - var(--w3m-color-mix) var(--w3m-color-mix-strength), - var(--wui-color-fg-275) - ); - --wui-color-fg-300: color-mix( - in srgb, - var(--w3m-color-mix) var(--w3m-color-mix-strength), - var(--wui-color-fg-300) - ); - --wui-color-fg-325: color-mix( - in srgb, - var(--w3m-color-mix) var(--w3m-color-mix-strength), - var(--wui-color-fg-325) - ); - --wui-color-fg-350: color-mix( - in srgb, - var(--w3m-color-mix) var(--w3m-color-mix-strength), - var(--wui-color-fg-350) - ); - - --wui-color-bg-100: color-mix( - in srgb, - var(--w3m-color-mix) var(--w3m-color-mix-strength), - var(--wui-color-bg-100) - ); - --wui-color-bg-125: color-mix( - in srgb, - var(--w3m-color-mix) var(--w3m-color-mix-strength), - var(--wui-color-bg-125) - ); - --wui-color-bg-150: color-mix( - in srgb, - var(--w3m-color-mix) var(--w3m-color-mix-strength), - var(--wui-color-bg-150) - ); - --wui-color-bg-175: color-mix( - in srgb, - var(--w3m-color-mix) var(--w3m-color-mix-strength), - var(--wui-color-bg-175) - ); - --wui-color-bg-200: color-mix( - in srgb, - var(--w3m-color-mix) var(--w3m-color-mix-strength), - var(--wui-color-bg-200) - ); - --wui-color-bg-225: color-mix( - in srgb, - var(--w3m-color-mix) var(--w3m-color-mix-strength), - var(--wui-color-bg-225) - ); - --wui-color-bg-250: color-mix( - in srgb, - var(--w3m-color-mix) var(--w3m-color-mix-strength), - var(--wui-color-bg-250) - ); - --wui-color-bg-275: color-mix( - in srgb, - var(--w3m-color-mix) var(--w3m-color-mix-strength), - var(--wui-color-bg-275) - ); - --wui-color-bg-300: color-mix( - in srgb, - var(--w3m-color-mix) var(--w3m-color-mix-strength), - var(--wui-color-bg-300) - ); - --wui-color-bg-325: color-mix( - in srgb, - var(--w3m-color-mix) var(--w3m-color-mix-strength), - var(--wui-color-bg-325) - ); - --wui-color-bg-350: color-mix( - in srgb, - var(--w3m-color-mix) var(--w3m-color-mix-strength), - var(--wui-color-bg-350) - ); - - --wui-color-success-100: color-mix( - in srgb, - var(--w3m-color-mix) var(--w3m-color-mix-strength), - var(--wui-color-success-base-100) - ); - --wui-color-success-125: color-mix( - in srgb, - var(--w3m-color-mix) var(--w3m-color-mix-strength), - var(--wui-color-success-base-125) - ); - - --wui-color-warning-100: color-mix( - in srgb, - var(--w3m-color-mix) var(--w3m-color-mix-strength), - var(--wui-color-warning-base-100) - ); - - --wui-color-error-100: color-mix( - in srgb, - var(--w3m-color-mix) var(--w3m-color-mix-strength), - var(--wui-color-error-base-100) - ); - --wui-color-blue-100: color-mix( - in srgb, - var(--w3m-color-mix) var(--w3m-color-mix-strength), - var(--wui-color-blue-base-100) - ); - --wui-color-blue-90: color-mix( - in srgb, - var(--w3m-color-mix) var(--w3m-color-mix-strength), - var(--wui-color-blue-base-90) - ); - --wui-color-error-125: color-mix( - in srgb, - var(--w3m-color-mix) var(--w3m-color-mix-strength), - var(--wui-color-error-base-125) - ); - - --wui-icon-box-bg-error-100: color-mix( - in srgb, - var(--w3m-color-mix) var(--w3m-color-mix-strength), - var(--wui-icon-box-bg-error-base-100) - ); - --wui-icon-box-bg-accent-100: color-mix( - in srgb, - var(--w3m-color-mix) var(--w3m-color-mix-strength), - var(--wui-icon-box-bg-blue-base-100) - ); - --wui-icon-box-bg-success-100: color-mix( - in srgb, - var(--w3m-color-mix) var(--w3m-color-mix-strength), - var(--wui-icon-box-bg-success-base-100) - ); - --wui-icon-box-bg-inverse-100: color-mix( - in srgb, - var(--w3m-color-mix) var(--w3m-color-mix-strength), - var(--wui-icon-box-bg-inverse-base-100) - ); - - --wui-all-wallets-bg-100: color-mix( - in srgb, - var(--w3m-color-mix) var(--w3m-color-mix-strength), - var(--wui-all-wallets-bg-100) - ); - - --wui-avatar-border: color-mix( - in srgb, - var(--w3m-color-mix) var(--w3m-color-mix-strength), - var(--wui-avatar-border-base) - ); - - --wui-thumbnail-border: color-mix( - in srgb, - var(--w3m-color-mix) var(--w3m-color-mix-strength), - var(--wui-thumbnail-border-base) - ); - - --wui-wallet-button-bg: color-mix( - in srgb, - var(--w3m-color-mix) var(--w3m-color-mix-strength), - var(--wui-wallet-button-bg-base) - ); - } - } - `,light:Tr` - :root { - --w3m-color-mix: ${St(t?.["--w3m-color-mix"]||"#fff")}; - --w3m-accent: ${St(Es(t,"dark")["--w3m-accent"])}; - --w3m-default: #fff; - - --wui-color-modal-bg-base: ${St(Es(t,"dark")["--w3m-background"])}; - --wui-color-accent-base-100: var(--w3m-accent); - - --wui-color-blueberry-100: hsla(230, 100%, 67%, 1); - --wui-color-blueberry-090: hsla(231, 76%, 61%, 1); - --wui-color-blueberry-080: hsla(230, 59%, 55%, 1); - --wui-color-blueberry-050: hsla(231, 100%, 70%, 0.1); - - --wui-color-fg-100: #e4e7e7; - --wui-color-fg-125: #d0d5d5; - --wui-color-fg-150: #a8b1b1; - --wui-color-fg-175: #a8b0b0; - --wui-color-fg-200: #949e9e; - --wui-color-fg-225: #868f8f; - --wui-color-fg-250: #788080; - --wui-color-fg-275: #788181; - --wui-color-fg-300: #6e7777; - --wui-color-fg-325: #9a9a9a; - --wui-color-fg-350: #363636; - - --wui-color-bg-100: #141414; - --wui-color-bg-125: #191a1a; - --wui-color-bg-150: #1e1f1f; - --wui-color-bg-175: #222525; - --wui-color-bg-200: #272a2a; - --wui-color-bg-225: #2c3030; - --wui-color-bg-250: #313535; - --wui-color-bg-275: #363b3b; - --wui-color-bg-300: #3b4040; - --wui-color-bg-325: #252525; - --wui-color-bg-350: #ffffff; - - --wui-color-success-base-100: #26d962; - --wui-color-success-base-125: #30a46b; - - --wui-color-warning-base-100: #f3a13f; - - --wui-color-error-base-100: #f25a67; - --wui-color-error-base-125: #df4a34; - - --wui-color-blue-base-100: rgba(102, 125, 255, 1); - --wui-color-blue-base-90: rgba(102, 125, 255, 0.9); - - --wui-color-success-glass-001: rgba(38, 217, 98, 0.01); - --wui-color-success-glass-002: rgba(38, 217, 98, 0.02); - --wui-color-success-glass-005: rgba(38, 217, 98, 0.05); - --wui-color-success-glass-010: rgba(38, 217, 98, 0.1); - --wui-color-success-glass-015: rgba(38, 217, 98, 0.15); - --wui-color-success-glass-020: rgba(38, 217, 98, 0.2); - --wui-color-success-glass-025: rgba(38, 217, 98, 0.25); - --wui-color-success-glass-030: rgba(38, 217, 98, 0.3); - --wui-color-success-glass-060: rgba(38, 217, 98, 0.6); - --wui-color-success-glass-080: rgba(38, 217, 98, 0.8); - - --wui-color-success-glass-reown-020: rgba(48, 164, 107, 0.2); - - --wui-color-warning-glass-reown-020: rgba(243, 161, 63, 0.2); - - --wui-color-error-glass-001: rgba(242, 90, 103, 0.01); - --wui-color-error-glass-002: rgba(242, 90, 103, 0.02); - --wui-color-error-glass-005: rgba(242, 90, 103, 0.05); - --wui-color-error-glass-010: rgba(242, 90, 103, 0.1); - --wui-color-error-glass-015: rgba(242, 90, 103, 0.15); - --wui-color-error-glass-020: rgba(242, 90, 103, 0.2); - --wui-color-error-glass-025: rgba(242, 90, 103, 0.25); - --wui-color-error-glass-030: rgba(242, 90, 103, 0.3); - --wui-color-error-glass-060: rgba(242, 90, 103, 0.6); - --wui-color-error-glass-080: rgba(242, 90, 103, 0.8); - - --wui-color-error-glass-reown-020: rgba(223, 74, 52, 0.2); - - --wui-color-gray-glass-001: rgba(255, 255, 255, 0.01); - --wui-color-gray-glass-002: rgba(255, 255, 255, 0.02); - --wui-color-gray-glass-005: rgba(255, 255, 255, 0.05); - --wui-color-gray-glass-010: rgba(255, 255, 255, 0.1); - --wui-color-gray-glass-015: rgba(255, 255, 255, 0.15); - --wui-color-gray-glass-020: rgba(255, 255, 255, 0.2); - --wui-color-gray-glass-025: rgba(255, 255, 255, 0.25); - --wui-color-gray-glass-030: rgba(255, 255, 255, 0.3); - --wui-color-gray-glass-060: rgba(255, 255, 255, 0.6); - --wui-color-gray-glass-080: rgba(255, 255, 255, 0.8); - --wui-color-gray-glass-090: rgba(255, 255, 255, 0.9); - - --wui-color-dark-glass-100: rgba(42, 42, 42, 1); - - --wui-icon-box-bg-error-base-100: #3c2426; - --wui-icon-box-bg-blue-base-100: #20303f; - --wui-icon-box-bg-success-base-100: #1f3a28; - --wui-icon-box-bg-inverse-base-100: #243240; - - --wui-all-wallets-bg-100: #222b35; - - --wui-avatar-border-base: #252525; - - --wui-thumbnail-border-base: #252525; - - --wui-wallet-button-bg-base: var(--wui-color-bg-125); - - --w3m-card-embedded-shadow-color: rgb(17 17 18 / 25%); - } - `,dark:Tr` - :root { - --w3m-color-mix: ${St(t?.["--w3m-color-mix"]||"#000")}; - --w3m-accent: ${St(Es(t,"light")["--w3m-accent"])}; - --w3m-default: #000; - - --wui-color-modal-bg-base: ${St(Es(t,"light")["--w3m-background"])}; - --wui-color-accent-base-100: var(--w3m-accent); - - --wui-color-blueberry-100: hsla(231, 100%, 70%, 1); - --wui-color-blueberry-090: hsla(231, 97%, 72%, 1); - --wui-color-blueberry-080: hsla(231, 92%, 74%, 1); - - --wui-color-fg-100: #141414; - --wui-color-fg-125: #2d3131; - --wui-color-fg-150: #474d4d; - --wui-color-fg-175: #636d6d; - --wui-color-fg-200: #798686; - --wui-color-fg-225: #828f8f; - --wui-color-fg-250: #8b9797; - --wui-color-fg-275: #95a0a0; - --wui-color-fg-300: #9ea9a9; - --wui-color-fg-325: #9a9a9a; - --wui-color-fg-350: #d0d0d0; - - --wui-color-bg-100: #ffffff; - --wui-color-bg-125: #f5fafa; - --wui-color-bg-150: #f3f8f8; - --wui-color-bg-175: #eef4f4; - --wui-color-bg-200: #eaf1f1; - --wui-color-bg-225: #e5eded; - --wui-color-bg-250: #e1e9e9; - --wui-color-bg-275: #dce7e7; - --wui-color-bg-300: #d8e3e3; - --wui-color-bg-325: #f3f3f3; - --wui-color-bg-350: #202020; - - --wui-color-success-base-100: #26b562; - --wui-color-success-base-125: #30a46b; - - --wui-color-warning-base-100: #f3a13f; - - --wui-color-error-base-100: #f05142; - --wui-color-error-base-125: #df4a34; - - --wui-color-blue-base-100: rgba(102, 125, 255, 1); - --wui-color-blue-base-90: rgba(102, 125, 255, 0.9); - - --wui-color-success-glass-001: rgba(38, 181, 98, 0.01); - --wui-color-success-glass-002: rgba(38, 181, 98, 0.02); - --wui-color-success-glass-005: rgba(38, 181, 98, 0.05); - --wui-color-success-glass-010: rgba(38, 181, 98, 0.1); - --wui-color-success-glass-015: rgba(38, 181, 98, 0.15); - --wui-color-success-glass-020: rgba(38, 181, 98, 0.2); - --wui-color-success-glass-025: rgba(38, 181, 98, 0.25); - --wui-color-success-glass-030: rgba(38, 181, 98, 0.3); - --wui-color-success-glass-060: rgba(38, 181, 98, 0.6); - --wui-color-success-glass-080: rgba(38, 181, 98, 0.8); - - --wui-color-success-glass-reown-020: rgba(48, 164, 107, 0.2); - - --wui-color-warning-glass-reown-020: rgba(243, 161, 63, 0.2); - - --wui-color-error-glass-001: rgba(240, 81, 66, 0.01); - --wui-color-error-glass-002: rgba(240, 81, 66, 0.02); - --wui-color-error-glass-005: rgba(240, 81, 66, 0.05); - --wui-color-error-glass-010: rgba(240, 81, 66, 0.1); - --wui-color-error-glass-015: rgba(240, 81, 66, 0.15); - --wui-color-error-glass-020: rgba(240, 81, 66, 0.2); - --wui-color-error-glass-025: rgba(240, 81, 66, 0.25); - --wui-color-error-glass-030: rgba(240, 81, 66, 0.3); - --wui-color-error-glass-060: rgba(240, 81, 66, 0.6); - --wui-color-error-glass-080: rgba(240, 81, 66, 0.8); - - --wui-color-error-glass-reown-020: rgba(223, 74, 52, 0.2); - - --wui-icon-box-bg-error-base-100: #f4dfdd; - --wui-icon-box-bg-blue-base-100: #d9ecfb; - --wui-icon-box-bg-success-base-100: #daf0e4; - --wui-icon-box-bg-inverse-base-100: #dcecfc; - - --wui-all-wallets-bg-100: #e8f1fa; - - --wui-avatar-border-base: #f3f4f4; - - --wui-thumbnail-border-base: #eaefef; - - --wui-wallet-button-bg-base: var(--wui-color-bg-125); - - --wui-color-gray-glass-001: rgba(0, 0, 0, 0.01); - --wui-color-gray-glass-002: rgba(0, 0, 0, 0.02); - --wui-color-gray-glass-005: rgba(0, 0, 0, 0.05); - --wui-color-gray-glass-010: rgba(0, 0, 0, 0.1); - --wui-color-gray-glass-015: rgba(0, 0, 0, 0.15); - --wui-color-gray-glass-020: rgba(0, 0, 0, 0.2); - --wui-color-gray-glass-025: rgba(0, 0, 0, 0.25); - --wui-color-gray-glass-030: rgba(0, 0, 0, 0.3); - --wui-color-gray-glass-060: rgba(0, 0, 0, 0.6); - --wui-color-gray-glass-080: rgba(0, 0, 0, 0.8); - --wui-color-gray-glass-090: rgba(0, 0, 0, 0.9); - - --wui-color-dark-glass-100: rgba(233, 233, 233, 1); - - --w3m-card-embedded-shadow-color: rgb(224 225 233 / 25%); - } - `}}const I1=Tr` - *, - *::after, - *::before, - :host { - margin: 0; - padding: 0; - box-sizing: border-box; - font-style: normal; - text-rendering: optimizeSpeed; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -webkit-tap-highlight-color: transparent; - font-family: var(--wui-font-family); - backface-visibility: hidden; - } -`,N1=Tr` - button, - a { - cursor: pointer; - display: flex; - justify-content: center; - align-items: center; - position: relative; - transition: - color var(--wui-duration-lg) var(--wui-ease-out-power-1), - background-color var(--wui-duration-lg) var(--wui-ease-out-power-1), - border var(--wui-duration-lg) var(--wui-ease-out-power-1), - border-radius var(--wui-duration-lg) var(--wui-ease-out-power-1), - box-shadow var(--wui-duration-lg) var(--wui-ease-out-power-1); - will-change: background-color, color, border, box-shadow, border-radius; - outline: none; - border: none; - column-gap: var(--wui-spacing-3xs); - background-color: transparent; - text-decoration: none; - } - - wui-flex { - transition: border-radius var(--wui-duration-lg) var(--wui-ease-out-power-1); - will-change: border-radius; - } - - button:disabled > wui-wallet-image, - button:disabled > wui-all-wallets-image, - button:disabled > wui-network-image, - button:disabled > wui-image, - button:disabled > wui-transaction-visual, - button:disabled > wui-logo { - filter: grayscale(1); - } - - @media (hover: hover) and (pointer: fine) { - button:hover:enabled { - background-color: var(--wui-color-gray-glass-005); - } - - button:active:enabled { - background-color: var(--wui-color-gray-glass-010); - } - } - - button:disabled > wui-icon-box { - opacity: 0.5; - } - - input { - border: none; - outline: none; - appearance: none; - } -`,A1=Tr` - .wui-color-inherit { - color: var(--wui-color-inherit); - } - - .wui-color-accent-100 { - color: var(--wui-color-accent-100); - } - - .wui-color-error-100 { - color: var(--wui-color-error-100); - } - - .wui-color-blue-100 { - color: var(--wui-color-blue-100); - } - - .wui-color-blue-90 { - color: var(--wui-color-blue-90); - } - - .wui-color-error-125 { - color: var(--wui-color-error-125); - } - - .wui-color-success-100 { - color: var(--wui-color-success-100); - } - - .wui-color-success-125 { - color: var(--wui-color-success-125); - } - - .wui-color-inverse-100 { - color: var(--wui-color-inverse-100); - } - - .wui-color-inverse-000 { - color: var(--wui-color-inverse-000); - } - - .wui-color-fg-100 { - color: var(--wui-color-fg-100); - } - - .wui-color-fg-200 { - color: var(--wui-color-fg-200); - } - - .wui-color-fg-300 { - color: var(--wui-color-fg-300); - } - - .wui-color-fg-325 { - color: var(--wui-color-fg-325); - } - - .wui-color-fg-350 { - color: var(--wui-color-fg-350); - } - - .wui-bg-color-inherit { - background-color: var(--wui-color-inherit); - } - - .wui-bg-color-blue-100 { - background-color: var(--wui-color-accent-100); - } - - .wui-bg-color-error-100 { - background-color: var(--wui-color-error-100); - } - - .wui-bg-color-error-125 { - background-color: var(--wui-color-error-125); - } - - .wui-bg-color-success-100 { - background-color: var(--wui-color-success-100); - } - - .wui-bg-color-success-125 { - background-color: var(--wui-color-success-100); - } - - .wui-bg-color-inverse-100 { - background-color: var(--wui-color-inverse-100); - } - - .wui-bg-color-inverse-000 { - background-color: var(--wui-color-inverse-000); - } - - .wui-bg-color-fg-100 { - background-color: var(--wui-color-fg-100); - } - - .wui-bg-color-fg-200 { - background-color: var(--wui-color-fg-200); - } - - .wui-bg-color-fg-300 { - background-color: var(--wui-color-fg-300); - } - - .wui-color-fg-325 { - background-color: var(--wui-color-fg-325); - } - - .wui-color-fg-350 { - background-color: var(--wui-color-fg-350); - } -`,di={ERROR_CODE_UNRECOGNIZED_CHAIN_ID:4902,ERROR_CODE_DEFAULT:5e3,ERROR_INVALID_CHAIN_ID:32603,DEFAULT_ALLOWED_ANCESTORS:["http://localhost:*","https://*.pages.dev","https://*.vercel.app","https://*.ngrok-free.app","https://secure-mobile.walletconnect.com","https://secure-mobile.walletconnect.org"]};function Wi(t){return{formatters:void 0,fees:void 0,serializers:void 0,...t}}const Wl=Wi({id:"5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",name:"Solana",network:"solana-mainnet",nativeCurrency:{name:"Solana",symbol:"SOL",decimals:9},rpcUrls:{default:{http:["https://rpc.walletconnect.org/v1"]}},blockExplorers:{default:{name:"Solscan",url:"https://solscan.io"}},testnet:!1,chainNamespace:"solana",caipNetworkId:"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",deprecatedCaipNetworkId:"solana:4sGjMW1sUnHzSxGspuhpqLDx6wiyjNtZ"}),Hl=Wi({id:"EtWTRABZaYq6iMfeYKouRu166VU2xqa1",name:"Solana Devnet",network:"solana-devnet",nativeCurrency:{name:"Solana",symbol:"SOL",decimals:9},rpcUrls:{default:{http:["https://rpc.walletconnect.org/v1"]}},blockExplorers:{default:{name:"Solscan",url:"https://solscan.io"}},testnet:!0,chainNamespace:"solana",caipNetworkId:"solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1",deprecatedCaipNetworkId:"solana:8E9rvCKLFQia2Y35HXjjpWzj8weVo44K"});Wi({id:"4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z",name:"Solana Testnet",network:"solana-testnet",nativeCurrency:{name:"Solana",symbol:"SOL",decimals:9},rpcUrls:{default:{http:["https://rpc.walletconnect.org/v1"]}},blockExplorers:{default:{name:"Solscan",url:"https://solscan.io"}},testnet:!0,chainNamespace:"solana",caipNetworkId:"solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z"});Wi({id:"000000000019d6689c085ae165831e93",caipNetworkId:"bip122:000000000019d6689c085ae165831e93",chainNamespace:"bip122",name:"Bitcoin",nativeCurrency:{name:"Bitcoin",symbol:"BTC",decimals:8},rpcUrls:{default:{http:["https://rpc.walletconnect.org/v1"]}}});Wi({id:"000000000933ea01ad0ee984209779ba",caipNetworkId:"bip122:000000000933ea01ad0ee984209779ba",chainNamespace:"bip122",name:"Bitcoin Testnet",nativeCurrency:{name:"Bitcoin",symbol:"BTC",decimals:8},rpcUrls:{default:{http:["https://rpc.walletconnect.org/v1"]}},testnet:!0});const UI={solana:["solana_signMessage","solana_signTransaction","solana_requestAccounts","solana_getAccounts","solana_signAllTransactions","solana_signAndSendTransaction"],eip155:["eth_accounts","eth_requestAccounts","eth_sendRawTransaction","eth_sign","eth_signTransaction","eth_signTypedData","eth_signTypedData_v3","eth_signTypedData_v4","eth_sendTransaction","personal_sign","wallet_switchEthereumChain","wallet_addEthereumChain","wallet_getPermissions","wallet_requestPermissions","wallet_registerOnboarding","wallet_watchAsset","wallet_scanQRCode","wallet_getCallsStatus","wallet_showCallsStatus","wallet_sendCalls","wallet_getCapabilities","wallet_grantPermissions","wallet_revokePermissions","wallet_getAssets"],bip122:["sendTransfer","signMessage","signPsbt","getAccountAddresses"]},yn={getMethodsByChainNamespace(t){return UI[t]||[]},createDefaultNamespace(t){return{methods:this.getMethodsByChainNamespace(t),events:["accountsChanged","chainChanged"],chains:[],rpcMap:{}}},applyNamespaceOverrides(t,e){if(!e)return{...t};const s={...t},r=new Set;if(e.methods&&Object.keys(e.methods).forEach(i=>r.add(i)),e.chains&&Object.keys(e.chains).forEach(i=>r.add(i)),e.events&&Object.keys(e.events).forEach(i=>r.add(i)),e.rpcMap&&Object.keys(e.rpcMap).forEach(i=>{const[n]=i.split(":");n&&r.add(n)}),r.forEach(i=>{s[i]||(s[i]=this.createDefaultNamespace(i))}),e.methods&&Object.entries(e.methods).forEach(([i,n])=>{s[i]&&(s[i].methods=n)}),e.chains&&Object.entries(e.chains).forEach(([i,n])=>{s[i]&&(s[i].chains=n)}),e.events&&Object.entries(e.events).forEach(([i,n])=>{s[i]&&(s[i].events=n)}),e.rpcMap){const i=new Set;Object.entries(e.rpcMap).forEach(([n,o])=>{const[a,c]=n.split(":");!a||!c||!s[a]||(s[a].rpcMap||(s[a].rpcMap={}),i.has(a)||(s[a].rpcMap={},i.add(a)),s[a].rpcMap[c]=o)})}return s},createNamespaces(t,e){const s=t.reduce((r,i)=>{const{id:n,chainNamespace:o,rpcUrls:a}=i,c=a.default.http[0];r[o]||(r[o]=this.createDefaultNamespace(o));const l=`${o}:${n}`,u=r[o];switch(u.chains.push(l),l){case Wl.caipNetworkId:u.chains.push(Wl.deprecatedCaipNetworkId);break;case Hl.caipNetworkId:u.chains.push(Hl.deprecatedCaipNetworkId);break}return u?.rpcMap&&c&&(u.rpcMap[n]=c),r},{});return this.applyNamespaceOverrides(s,e)},resolveReownName:async t=>{const e=await mi.resolveName(t);return(Object.values(e?.addresses)||[])[0]?.address||!1},getChainsFromNamespaces(t={}){return Object.values(t).flatMap(e=>{const s=e.chains||[],r=e.accounts.map(i=>{const[n,o]=i.split(":");return`${n}:${o}`});return Array.from(new Set([...s,...r]))})},isSessionEventData(t){return typeof t=="object"&&t!==null&&"id"in t&&"topic"in t&&"params"in t&&typeof t.params=="object"&&t.params!==null&&"chainId"in t.params&&"event"in t.params&&typeof t.params.event=="object"&&t.params.event!==null},isOriginAllowed(t,e,s){for(const r of[...e,...s])if(r.includes("*")){const n=`^${r.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&").replace(/\\\*/gu,".*")}$`;if(new RegExp(n,"u").test(t))return!0}else try{if(new URL(r).origin===t)return!0}catch{if(r===t)return!0}return!1}};class Bh{constructor({provider:e,namespace:s}){this.id=W.CONNECTOR_ID.WALLET_CONNECT,this.name=_n.ConnectorNamesMap[W.CONNECTOR_ID.WALLET_CONNECT],this.type="WALLET_CONNECT",this.imageId=_n.ConnectorImageIds[W.CONNECTOR_ID.WALLET_CONNECT],this.getCaipNetworks=g.getCaipNetworks.bind(g),this.caipNetworks=this.getCaipNetworks(),this.provider=e,this.chain=s}get chains(){return this.getCaipNetworks()}async connectWalletConnect(){if(!await this.authenticate()){const s=this.getCaipNetworks(),r=O.state.universalProviderConfigOverride,i=yn.createNamespaces(s,r);await this.provider.connect({optionalNamespaces:i})}return{clientId:await this.provider.client.core.crypto.getClientId(),session:this.provider.session}}async disconnect(){await this.provider.disconnect()}async authenticate(){const e=this.chains.map(s=>s.caipNetworkId);return wi.universalProviderAuthenticate({universalProvider:this.provider,chains:e,methods:DI})}}const DI=["eth_accounts","eth_requestAccounts","eth_sendRawTransaction","eth_sign","eth_signTransaction","eth_signTypedData","eth_signTypedData_v3","eth_signTypedData_v4","eth_sendTransaction","personal_sign","wallet_switchEthereumChain","wallet_addEthereumChain","wallet_getPermissions","wallet_requestPermissions","wallet_registerOnboarding","wallet_watchAsset","wallet_scanQRCode","wallet_getCallsStatus","wallet_sendCalls","wallet_getCapabilities","wallet_grantPermissions","wallet_revokePermissions","wallet_getAssets"];class LI{constructor(e){this.availableConnectors=[],this.eventListeners=new Map,this.getCaipNetworks=s=>g.getCaipNetworks(s),e&&this.construct(e)}construct(e){this.projectId=e.projectId,this.namespace=e.namespace,this.adapterType=e.adapterType}get connectors(){return this.availableConnectors}get networks(){return this.getCaipNetworks(this.namespace)}setAuthProvider(e){this.addConnector({id:W.CONNECTOR_ID.AUTH,type:"AUTH",name:W.CONNECTOR_NAMES.AUTH,provider:e,imageId:_n.ConnectorImageIds[W.CONNECTOR_ID.AUTH],chain:this.namespace,chains:[]})}addConnector(...e){const s=new Set;this.availableConnectors=[...e,...this.availableConnectors].filter(r=>s.has(r.id)?!1:(s.add(r.id),!0)),this.emit("connectors",this.availableConnectors)}setStatus(e,s){z.setStatus(e,s)}on(e,s){this.eventListeners.has(e)||this.eventListeners.set(e,new Set),this.eventListeners.get(e)?.add(s)}off(e,s){const r=this.eventListeners.get(e);r&&r.delete(s)}removeAllEventListeners(){this.eventListeners.forEach(e=>{e.clear()})}emit(e,s){const r=this.eventListeners.get(e);r&&r.forEach(i=>i(s))}async connectWalletConnect(e){return{clientId:(await this.getWalletConnectConnector().connectWalletConnect()).clientId}}async switchNetwork(e){const{caipNetwork:s,providerType:r}=e;if(!e.provider)return;const i="provider"in e.provider?e.provider.provider:e.provider;if(r==="WALLET_CONNECT"){i.setDefaultChain(s.caipNetworkId);return}if(i&&r==="AUTH"){const n=i,o=z.state.preferredAccountTypes?.[s.chainNamespace];await n.switchNetwork(s.caipNetworkId);const a=await n.getUser({chainId:s.caipNetworkId,preferredAccountType:o});this.emit("switchNetwork",a)}}getWalletConnectConnector(){const e=this.connectors.find(s=>s instanceof Bh);if(!e)throw new Error("WalletConnectConnector not found");return e}}class MI extends LI{setUniversalProvider(e){this.addConnector(new Bh({provider:e,caipNetworks:this.getCaipNetworks(),namespace:this.namespace}))}async connect(e){return Promise.resolve({id:"WALLET_CONNECT",type:"WALLET_CONNECT",chainId:Number(e.chainId),provider:this.provider,address:""})}async disconnect(){try{await this.getWalletConnectConnector().disconnect()}catch(e){console.warn("UniversalAdapter:disconnect - error",e)}}async getAccounts({namespace:e}){const r=this.provider?.session?.namespaces?.[e]?.accounts?.map(i=>{const[,,n]=i.split(":");return n}).filter((i,n,o)=>o.indexOf(i)===n)||[];return Promise.resolve({accounts:r.map(i=>X.createAccount(e,i,e==="bip122"?"payment":"eoa"))})}async syncConnectors(){return Promise.resolve()}async getBalance(e){if(!(e.caipNetwork&&ve.BALANCE_SUPPORTED_CHAINS.includes(e.caipNetwork?.chainNamespace))||e.caipNetwork?.testnet)return{balance:"0.00",symbol:e.caipNetwork?.nativeCurrency.symbol||""};if(z.state.balanceLoading&&e.chainId===g.state.activeCaipNetwork?.id)return{balance:z.state.balance||"0.00",symbol:z.state.balanceSymbol||""};const i=(await z.fetchTokenBalance()).find(n=>n.chainId===`${e.caipNetwork?.chainNamespace}:${e.chainId}`&&n.symbol===e.caipNetwork?.nativeCurrency.symbol);return{balance:i?.quantity.numeric||"0.00",symbol:i?.symbol||e.caipNetwork?.nativeCurrency.symbol||""}}async signMessage(e){const{provider:s,message:r,address:i}=e;if(!s)throw new Error("UniversalAdapter:signMessage - provider is undefined");let n="";return g.state.activeCaipNetwork?.chainNamespace===W.CHAIN.SOLANA?n=(await s.request({method:"solana_signMessage",params:{message:fu.encode(new TextEncoder().encode(r)),pubkey:i}},g.state.activeCaipNetwork?.caipNetworkId)).signature:n=await s.request({method:"personal_sign",params:[r,i]},g.state.activeCaipNetwork?.caipNetworkId),{signature:n}}async estimateGas(){return Promise.resolve({gas:BigInt(0)})}async sendTransaction(){return Promise.resolve({hash:""})}walletGetAssets(e){return Promise.resolve({})}async writeContract(){return Promise.resolve({hash:""})}parseUnits(){return 0n}formatUnits(){return"0"}async getCapabilities(){return Promise.resolve({})}async grantPermissions(){return Promise.resolve({})}async revokePermissions(){return Promise.resolve("0x")}async syncConnection(){return Promise.resolve({id:"WALLET_CONNECT",type:"WALLET_CONNECT",chainId:1,provider:this.provider,address:""})}async switchNetwork(e){const{caipNetwork:s}=e,r=this.getWalletConnectConnector();if(s.chainNamespace===W.CHAIN.EVM)try{await r.provider?.request({method:"wallet_switchEthereumChain",params:[{chainId:Pa(s.id)}]})}catch(i){if(i.code===di.ERROR_CODE_UNRECOGNIZED_CHAIN_ID||i.code===di.ERROR_INVALID_CHAIN_ID||i.code===di.ERROR_CODE_DEFAULT||i?.data?.originalError?.code===di.ERROR_CODE_UNRECOGNIZED_CHAIN_ID)try{await r.provider?.request({method:"wallet_addEthereumChain",params:[{chainId:Pa(s.id),rpcUrls:[s?.rpcUrls.chainDefault?.http],chainName:s.name,nativeCurrency:s.nativeCurrency,blockExplorerUrls:[s.blockExplorers?.default.url]}]})}catch{throw new Error("Chain is not supported")}}r.provider.setDefaultChain(s.caipNetworkId)}getWalletConnectProvider(){return this.connectors.find(r=>r.type==="WALLET_CONNECT")?.provider}}const BI=["email","socials","swaps","onramp","activity","reownBranding"],cn={email:{apiFeatureName:"social_login",localFeatureName:"email",returnType:!1,isLegacy:!1,isAvailableOnBasic:!1,processApi:t=>{if(!t?.config)return!1;const e=t.config;return!!t.isEnabled&&e.includes("email")},processFallback:t=>t===void 0?ve.DEFAULT_REMOTE_FEATURES.email:!!t},socials:{apiFeatureName:"social_login",localFeatureName:"socials",returnType:!1,isLegacy:!1,isAvailableOnBasic:!1,processApi:t=>{if(!t?.config)return!1;const e=t.config;return t.isEnabled&&e.length>0?e.filter(s=>s!=="email"):!1},processFallback:t=>t===void 0?ve.DEFAULT_REMOTE_FEATURES.socials:typeof t=="boolean"?t?ve.DEFAULT_REMOTE_FEATURES.socials:!1:t},swaps:{apiFeatureName:"swap",localFeatureName:"swaps",returnType:!1,isLegacy:!1,isAvailableOnBasic:!1,processApi:t=>{if(!t?.config)return!1;const e=t.config;return t.isEnabled&&e.length>0?e:!1},processFallback:t=>t===void 0?ve.DEFAULT_REMOTE_FEATURES.swaps:typeof t=="boolean"?t?ve.DEFAULT_REMOTE_FEATURES.swaps:!1:t},onramp:{apiFeatureName:"onramp",localFeatureName:"onramp",returnType:!1,isLegacy:!1,isAvailableOnBasic:!1,processApi:t=>{if(!t?.config)return!1;const e=t.config;return t.isEnabled&&e.length>0?e:!1},processFallback:t=>t===void 0?ve.DEFAULT_REMOTE_FEATURES.onramp:typeof t=="boolean"?t?ve.DEFAULT_REMOTE_FEATURES.onramp:!1:t},activity:{apiFeatureName:"activity",localFeatureName:"history",returnType:!1,isLegacy:!0,isAvailableOnBasic:!1,processApi:t=>!!t.isEnabled,processFallback:t=>t===void 0?ve.DEFAULT_REMOTE_FEATURES.activity:!!t},reownBranding:{apiFeatureName:"reown_branding",localFeatureName:"reownBranding",returnType:!1,isLegacy:!1,isAvailableOnBasic:!1,processApi:t=>!!t.isEnabled,processFallback:t=>t===void 0?ve.DEFAULT_REMOTE_FEATURES.reownBranding:!!t}},jI={localSettingsOverridden:new Set,getApiConfig(t,e){return e?.find(s=>s.id===t)},addWarning(t,e){if(t!==void 0){const s=cn[e],r=s.isLegacy?`"features.${s.localFeatureName}" (now "${e}")`:`"features.${e}"`;this.localSettingsOverridden.add(r)}},processFeature(t,e,s,r,i){const n=cn[t],o=e[n.localFeatureName];if(i&&!n.isAvailableOnBasic)return!1;if(r){const a=this.getApiConfig(n.apiFeatureName,s);return a?.config===null?this.processFallbackFeature(t,o):a?.config?(o!==void 0&&this.addWarning(o,t),this.processApiFeature(t,a)):!1}return this.processFallbackFeature(t,o)},processApiFeature(t,e){return cn[t].processApi(e)},processFallbackFeature(t,e){return cn[t].processFallback(e)},async fetchRemoteFeatures(t){const e=t.basic??!1,s=t.features||{};this.localSettingsOverridden.clear();let r=null,i=!1;try{r=await V.fetchProjectConfig(),i=r!=null}catch(o){console.warn("[Reown Config] Failed to fetch remote project configuration. Using local/default values.",o)}const n=i&&!e?ve.DEFAULT_REMOTE_FEATURES:ve.DEFAULT_REMOTE_FEATURES_DISABLED;try{for(const o of BI){const a=this.processFeature(o,s,r,i,e);Object.assign(n,{[o]:a})}}catch(o){return console.warn("[Reown Config] Failed to process the configuration from Cloud. Using default values.",o),ve.DEFAULT_REMOTE_FEATURES}if(i&&this.localSettingsOverridden.size>0){const o=`Your local configuration for ${Array.from(this.localSettingsOverridden).join(", ")} was ignored because a remote configuration was successfully fetched. Please manage these features via your project dashboard on dashboard.reown.com.`;Ls.open({shortMessage:"Local configuration ignored",longMessage:`[Reown Config Notice] ${o}`},"warning")}return n}};class qI{constructor(e){this.chainNamespaces=[],this.remoteFeatures={},this.reportedAlertErrors={},this.getCaipNetwork=(s,r)=>{if(s){const i=g.getNetworkData(s)?.requestedCaipNetworks?.find(a=>a.id===r);if(i)return i;const n=g.getNetworkData(s)?.caipNetwork;return n||g.getRequestedCaipNetworks(s).filter(a=>a.chainNamespace===s)?.[0]}return g.state.activeCaipNetwork||this.defaultCaipNetwork},this.getCaipNetworkId=()=>{const s=this.getCaipNetwork();if(s)return s.id},this.getCaipNetworks=s=>g.getCaipNetworks(s),this.getActiveChainNamespace=()=>g.state.activeChain,this.setRequestedCaipNetworks=(s,r)=>{g.setRequestedCaipNetworks(s,r)},this.getApprovedCaipNetworkIds=()=>g.getAllApprovedCaipNetworkIds(),this.getCaipAddress=s=>g.state.activeChain===s||!s?g.state.activeCaipAddress:g.getAccountProp("caipAddress",s),this.setClientId=s=>{J.setClientId(s)},this.getProvider=s=>Se.getProvider(s),this.getProviderType=s=>Se.getProviderId(s),this.getPreferredAccountType=s=>z.state.preferredAccountTypes?.[s],this.setCaipAddress=(s,r)=>{z.setCaipAddress(s,r),s&&O.state.enableEmbedded&&this.close()},this.setBalance=(s,r,i)=>{z.setBalance(s,r,i)},this.setProfileName=(s,r)=>{z.setProfileName(s,r)},this.setProfileImage=(s,r)=>{z.setProfileImage(s,r)},this.setUser=(s,r)=>{z.setUser(s,r)},this.resetAccount=s=>{z.resetAccount(s)},this.setCaipNetwork=s=>{g.setActiveCaipNetwork(s)},this.setCaipNetworkOfNamespace=(s,r)=>{g.setChainNetworkData(r,{caipNetwork:s})},this.setAllAccounts=(s,r)=>{z.setAllAccounts(s,r),O.setHasMultipleAddresses(s?.length>1)},this.setStatus=(s,r)=>{z.setStatus(s,r),j.isConnected()?F.setConnectionStatus("connected"):F.setConnectionStatus("disconnected")},this.getAddressByChainNamespace=s=>g.getAccountProp("address",s),this.setConnectors=s=>{const r=[...j.state.allConnectors,...s];j.setConnectors(r)},this.setConnections=(s,r)=>{Y.setConnections(s,r)},this.fetchIdentity=s=>J.fetchIdentity(s),this.getReownName=s=>mi.getNamesForAddress(s),this.getConnectors=()=>j.getConnectors(),this.getConnectorImage=s=>Ql.getConnectorImage(s),this.setConnectedWalletInfo=(s,r)=>{const i=Se.getProviderId(r),n=s?{...s,type:i}:void 0;z.setConnectedWalletInfo(n,r)},this.getIsConnectedState=()=>!!g.state.activeCaipAddress,this.addAddressLabel=(s,r,i)=>{z.addAddressLabel(s,r,i)},this.removeAddressLabel=(s,r)=>{z.removeAddressLabel(s,r)},this.getAddress=s=>g.state.activeChain===s||!s?z.state.address:g.getAccountProp("address",s),this.setApprovedCaipNetworksData=s=>g.setApprovedCaipNetworksData(s),this.resetNetwork=s=>{g.resetNetwork(s)},this.addConnector=s=>{j.addConnector(s)},this.resetWcConnection=()=>{Y.resetWcConnection()},this.setAddressExplorerUrl=(s,r)=>{z.setAddressExplorerUrl(s,r)},this.setSmartAccountDeployed=(s,r)=>{z.setSmartAccountDeployed(s,r)},this.setSmartAccountEnabledNetworks=(s,r)=>{g.setSmartAccountEnabledNetworks(s,r)},this.setPreferredAccountType=(s,r)=>{z.setPreferredAccountType(s,r)},this.setEIP6963Enabled=s=>{O.setEIP6963Enabled(s)},this.handleUnsafeRPCRequest=()=>{if(this.isOpen()){if(this.isTransactionStackEmpty())return;this.redirect("ApproveTransaction")}else this.open({view:"ApproveTransaction"})},this.options=e,this.version=e.sdkVersion,this.caipNetworks=this.extendCaipNetworks(e),this.chainNamespaces=this.getChainNamespacesSet(e.adapters,this.caipNetworks),this.defaultCaipNetwork=this.extendDefaultCaipNetwork(e),this.chainAdapters=this.createAdapters(e.adapters),this.readyPromise=this.initialize(e)}getChainNamespacesSet(e,s){const r=e?.map(n=>n.namespace).filter(n=>!!n);if(r?.length)return[...new Set(r)];const i=s?.map(n=>n.chainNamespace);return[...new Set(i)]}async initialize(e){this.initializeProjectSettings(e),this.initControllers(e),await this.initChainAdapters(),this.sendInitializeEvent(e),await this.syncExistingConnection(),this.remoteFeatures=await jI.fetchRemoteFeatures(e),O.setRemoteFeatures(this.remoteFeatures),this.remoteFeatures.onramp&&_o.setOnrampProviders(this.remoteFeatures.onramp),(O.state.remoteFeatures?.email||Array.isArray(O.state.remoteFeatures?.socials)&&O.state.remoteFeatures?.socials.length>0)&&await this.checkAllowedOrigins()}async checkAllowedOrigins(){const e=await V.fetchAllowedOrigins();if(e&&X.isClient()){const s=window.location.origin;yn.isOriginAllowed(s,e,di.DEFAULT_ALLOWED_ANCESTORS)||Ls.open(Cr.ALERT_ERRORS.INVALID_APP_CONFIGURATION,"error")}else Ls.open(Cr.ALERT_ERRORS.PROJECT_ID_NOT_CONFIGURED,"error")}sendInitializeEvent(e){const{...s}=e;delete s.adapters,delete s.universalProvider,Pe.sendEvent({type:"track",event:"INITIALIZE",properties:{...s,networks:e.networks.map(r=>r.id),siweConfig:{options:e.siweConfig?.options||{}}}})}initControllers(e){this.initializeOptionsController(e),this.initializeChainController(e),this.initializeThemeController(e),this.initializeConnectionController(e),this.initializeConnectorController()}initializeThemeController(e){e.themeMode&&mt.setThemeMode(e.themeMode),e.themeVariables&&mt.setThemeVariables(e.themeVariables)}initializeChainController(e){if(!this.connectionControllerClient||!this.networkControllerClient)throw new Error("ConnectionControllerClient and NetworkControllerClient must be set");g.initialize(e.adapters??[],this.caipNetworks,{connectionControllerClient:this.connectionControllerClient,networkControllerClient:this.networkControllerClient});const s=this.getDefaultNetwork();s&&g.setActiveCaipNetwork(s)}initializeConnectionController(e){Y.setWcBasic(e.basic??!1)}initializeConnectorController(){j.initialize(this.chainNamespaces)}initializeProjectSettings(e){O.setProjectId(e.projectId),O.setSdkVersion(e.sdkVersion)}initializeOptionsController(e){O.setDebug(e.debug!==!1),O.setEnableWalletConnect(e.enableWalletConnect!==!1),O.setEnableWalletGuide(e.enableWalletGuide!==!1),O.setEnableWallets(e.enableWallets!==!1),O.setEIP6963Enabled(e.enableEIP6963!==!1),O.setEnableNetworkSwitch(e.enableNetworkSwitch!==!1),O.setEnableAuthLogger(e.enableAuthLogger!==!1),O.setCustomRpcUrls(e.customRpcUrls),O.setEnableEmbedded(e.enableEmbedded),O.setAllWallets(e.allWallets),O.setIncludeWalletIds(e.includeWalletIds),O.setExcludeWalletIds(e.excludeWalletIds),O.setFeaturedWalletIds(e.featuredWalletIds),O.setTokens(e.tokens),O.setTermsConditionsUrl(e.termsConditionsUrl),O.setPrivacyPolicyUrl(e.privacyPolicyUrl),O.setCustomWallets(e.customWallets),O.setFeatures(e.features),O.setAllowUnsupportedChain(e.allowUnsupportedChain),O.setUniversalProviderConfigOverride(e.universalProviderConfigOverride),O.setPreferUniversalLinks(e.experimental_preferUniversalLinks),O.setDefaultAccountTypes(e.defaultAccountTypes);const s=F.getPreferredAccountTypes()||{},r={...O.state.defaultAccountTypes,...s};z.setPreferredAccountTypes(r);const i=this.getDefaultMetaData();if(!e.metadata&&i&&(e.metadata=i),O.setMetadata(e.metadata),O.setDisableAppend(e.disableAppend),O.setEnableEmbedded(e.enableEmbedded),O.setSIWX(e.siwx),!e.projectId){Ls.open(Cr.ALERT_ERRORS.PROJECT_ID_NOT_CONFIGURED,"error");return}if(e.adapters?.find(o=>o.namespace===W.CHAIN.EVM)&&e.siweConfig){if(e.siwx)throw new Error("Cannot set both `siweConfig` and `siwx` options");O.setSIWX(e.siweConfig.mapToSIWX())}}getDefaultMetaData(){return X.isClient()?{name:document.getElementsByTagName("title")?.[0]?.textContent||"",description:document.querySelector('meta[property="og:description"]')?.content||"",url:window.location.origin,icons:[document.querySelector('link[rel~="icon"]')?.href||""]}:null}setUnsupportedNetwork(e){const s=this.getActiveChainNamespace();if(s){const r=Nr.getUnsupportedNetwork(`${s}:${e}`);g.setActiveCaipNetwork(r)}}getDefaultNetwork(){return Nr.getCaipNetworkFromStorage(this.defaultCaipNetwork)}extendCaipNetwork(e,s){return Nr.extendCaipNetwork(e,{customNetworkImageUrls:s.chainImages,projectId:s.projectId})}extendCaipNetworks(e){return Nr.extendCaipNetworks(e.networks,{customNetworkImageUrls:e.chainImages,customRpcUrls:e.customRpcUrls,projectId:e.projectId})}extendDefaultCaipNetwork(e){const s=e.networks.find(i=>i.id===e.defaultNetwork?.id);return s?Nr.extendCaipNetwork(s,{customNetworkImageUrls:e.chainImages,customRpcUrls:e.customRpcUrls,projectId:e.projectId}):void 0}async disconnectNamespace(e){try{const s=this.getAdapter(e),r=Se.getProvider(e),i=Se.getProviderId(e),{caipAddress:n}=g.getAccountData(e)||{};this.setLoading(!0,e),n&&s?.disconnect&&await s.disconnect({provider:r,providerType:i}),F.removeConnectedNamespace(e),Se.resetChain(e),this.setUser(void 0,e),this.setStatus("disconnected",e),this.setConnectedWalletInfo(void 0,e),j.removeConnectorId(e),g.resetAccount(e),g.resetNetwork(e),this.setLoading(!1,e)}catch(s){throw this.setLoading(!1,e),new Error(`Failed to disconnect chain ${e}: ${s.message}`)}}createClients(){this.connectionControllerClient={connectWalletConnect:async()=>{const e=g.state.activeChain,s=this.getAdapter(e),r=this.getCaipNetwork(e)?.id;if(!s)throw new Error("Adapter not found");const i=await s.connectWalletConnect(r);this.close(),this.setClientId(i?.clientId||null),F.setConnectedNamespaces([...g.state.chains.keys()]),this.chainNamespaces.forEach(n=>{j.setConnectorId(ms.CONNECTOR_TYPE_WALLET_CONNECT,n)}),await this.syncWalletConnectAccount()},connectExternal:async({id:e,info:s,type:r,provider:i,chain:n,caipNetwork:o,socialUri:a})=>{const c=g.state.activeChain,l=n||c,u=this.getAdapter(l);if(n&&n!==c&&!o){const m=this.getCaipNetworks().find(f=>f.chainNamespace===n);m&&this.setCaipNetwork(m)}if(!u)throw new Error("Adapter not found");const h=this.getCaipNetwork(l),d=await u.connect({id:e,info:s,type:r,provider:i,socialUri:a,chainId:o?.id||h?.id,rpcUrl:o?.rpcUrls?.default?.http?.[0]||h?.rpcUrls?.default?.http?.[0]});if(!d)return;F.addConnectedNamespace(l),this.syncProvider({...d,chainNamespace:l});const p=z.state.allAccounts,{accounts:w}=p?.length>0?{accounts:[...p]}:await u.getAccounts({namespace:l,id:e});this.setAllAccounts(w,l),this.setStatus("connected",l),this.syncConnectedWalletInfo(l)},reconnectExternal:async({id:e,info:s,type:r,provider:i})=>{const n=g.state.activeChain,o=this.getAdapter(n);o?.reconnect&&(await o?.reconnect({id:e,info:s,type:r,provider:i,chainId:this.getCaipNetwork()?.id}),F.addConnectedNamespace(n),this.syncConnectedWalletInfo(n))},disconnect:async e=>{const s=lI(e);try{const r=await Promise.allSettled(s.map(async([n])=>this.disconnectNamespace(n)));he.resetSend(),Y.resetWcConnection(),await wi.clearSessions(),j.setFilterByNamespace(void 0);const i=r.filter(n=>n.status==="rejected");if(i.length>0)throw new Error(i.map(n=>n.reason.message).join(", "));F.deleteConnectedSocialProvider(),Pe.sendEvent({type:"track",event:"DISCONNECT_SUCCESS",properties:{namespace:e||"all"}})}catch(r){throw new Error(`Failed to disconnect chains: ${r.message}`)}},checkInstalled:e=>e?e.some(s=>!!window.ethereum?.[String(s)]):!!window.ethereum,signMessage:async e=>(await this.getAdapter(g.state.activeChain)?.signMessage({message:e,address:z.state.address,provider:Se.getProvider(g.state.activeChain)}))?.signature||"",sendTransaction:async e=>{const s=e.chainNamespace;if(ve.SEND_SUPPORTED_NAMESPACES.includes(s)){const r=this.getAdapter(g.state.activeChain),i=Se.getProvider(s);return(await r?.sendTransaction({...e,caipNetwork:this.getCaipNetwork(),provider:i}))?.hash||""}return""},estimateGas:async e=>{if(e.chainNamespace===W.CHAIN.EVM){const s=this.getAdapter(g.state.activeChain),r=Se.getProvider(g.state.activeChain),i=this.getCaipNetwork();if(!i)throw new Error("CaipNetwork is undefined");return(await s?.estimateGas({...e,provider:r,caipNetwork:i}))?.gas||0n}return 0n},getEnsAvatar:async()=>(await this.syncIdentity({address:z.state.address,chainId:Number(this.getCaipNetwork()?.id),chainNamespace:g.state.activeChain}),z.state.profileImage||!1),getEnsAddress:async e=>await yn.resolveReownName(e),writeContract:async e=>{const s=this.getAdapter(g.state.activeChain),r=this.getCaipNetwork(),i=this.getCaipAddress(),n=Se.getProvider(g.state.activeChain);if(!r||!i)throw new Error("CaipNetwork or CaipAddress is undefined");return(await s?.writeContract({...e,caipNetwork:r,provider:n,caipAddress:i}))?.hash},parseUnits:(e,s)=>this.getAdapter(g.state.activeChain)?.parseUnits({value:e,decimals:s})??0n,formatUnits:(e,s)=>this.getAdapter(g.state.activeChain)?.formatUnits({value:e,decimals:s})??"0",getCapabilities:async e=>await this.getAdapter(g.state.activeChain)?.getCapabilities(e),grantPermissions:async e=>await this.getAdapter(g.state.activeChain)?.grantPermissions(e),revokePermissions:async e=>{const s=this.getAdapter(g.state.activeChain);return s?.revokePermissions?await s.revokePermissions(e):"0x"},walletGetAssets:async e=>await this.getAdapter(g.state.activeChain)?.walletGetAssets(e)??{},updateBalance:e=>{const s=this.getCaipNetwork(e);!s||!z.state.address||this.updateNativeBalance(z.state.address,s?.id,e)}},this.networkControllerClient={switchCaipNetwork:async e=>await this.switchCaipNetwork(e),getApprovedCaipNetworksData:async()=>this.getApprovedCaipNetworksData()},Y.setClient(this.connectionControllerClient)}getApprovedCaipNetworksData(){if(Se.getProviderId(g.state.activeChain)===ms.CONNECTOR_TYPE_WALLET_CONNECT){const s=this.universalProvider?.session?.namespaces;return{supportsAllNetworks:this.universalProvider?.session?.peer?.metadata.name==="MetaMask Wallet",approvedCaipNetworkIds:this.getChainsFromNamespaces(s)}}return{supportsAllNetworks:!0,approvedCaipNetworkIds:[]}}async switchCaipNetwork(e){if(!e)return;const s=e.chainNamespace;if(this.getAddressByChainNamespace(e.chainNamespace)){const i=Se.getProvider(s),n=Se.getProviderId(s);if(e.chainNamespace===g.state.activeChain)await this.getAdapter(s)?.switchNetwork({caipNetwork:e,provider:i,providerType:n});else if(this.setCaipNetwork(e),n===ms.CONNECTOR_TYPE_WALLET_CONNECT)this.syncWalletConnectAccount();else{const o=this.getAddressByChainNamespace(s);o&&this.syncAccount({address:o,chainId:e.id,chainNamespace:s})}}else this.setCaipNetwork(e)}getChainsFromNamespaces(e={}){return Object.values(e).flatMap(s=>{const r=s.chains||[],i=s.accounts.map(n=>{const{chainId:o,chainNamespace:a}=hs.parseCaipAddress(n);return`${a}:${o}`});return Array.from(new Set([...r,...i]))})}createAdapters(e){return this.createClients(),this.chainNamespaces.reduce((s,r)=>{const i=e?.find(n=>n.namespace===r);return i?(i.construct({namespace:r,projectId:this.options?.projectId,networks:this.getCaipNetworks()}),s[r]=i):s[r]=new MI({namespace:r,networks:this.getCaipNetworks()}),s},{})}async initChainAdapter(e){this.onConnectors(e),this.listenAdapter(e),await this.chainAdapters?.[e].syncConnectors(this.options,this),await this.createUniversalProviderForAdapter(e)}async initChainAdapters(){await Promise.all(this.chainNamespaces.map(async e=>{await this.initChainAdapter(e)}))}onConnectors(e){this.getAdapter(e)?.on("connectors",this.setConnectors.bind(this))}listenAdapter(e){const s=this.getAdapter(e);if(!s)return;const r=F.getConnectionStatus();r==="connected"?this.setStatus("connecting",e):r==="disconnected"?(F.clearAddressCache(),this.setStatus(r,e)):this.setStatus(r,e),s.on("switchNetwork",({address:i,chainId:n})=>{const o=this.getCaipNetworks().find(l=>l.id===n||l.caipNetworkId===n),a=g.state.activeChain===e,c=g.getAccountProp("address",e);if(o){const l=a&&i?i:c;l&&this.syncAccount({address:l,chainId:o.id,chainNamespace:e})}else this.setUnsupportedNetwork(n)}),s.on("disconnect",this.disconnect.bind(this,e)),s.on("connections",i=>{this.setConnections(i,e)}),s.on("pendingTransactions",()=>{const i=z.state.address,n=g.state.activeCaipNetwork;!i||!n?.id||this.updateNativeBalance(i,n.id,n.chainNamespace)}),s.on("accountChanged",({address:i,chainId:n})=>{const o=g.state.activeChain===e;o&&n?this.syncAccount({address:i,chainId:n,chainNamespace:e}):o&&g.state.activeCaipNetwork?.id?this.syncAccount({address:i,chainId:g.state.activeCaipNetwork?.id,chainNamespace:e}):this.syncAccountInfo(i,n,e),this.syncAllAccounts(e)})}async createUniversalProviderForAdapter(e){await this.getUniversalProvider(),this.universalProvider&&this.chainAdapters?.[e]?.setUniversalProvider?.(this.universalProvider)}async syncExistingConnection(){await Promise.allSettled(this.chainNamespaces.map(e=>this.syncNamespaceConnection(e)))}async syncNamespaceConnection(e){try{e===W.CHAIN.EVM&&X.isSafeApp()&&j.setConnectorId(W.CONNECTOR_ID.SAFE,e);const s=j.getConnectorId(e);switch(this.setStatus("connecting",e),s){case W.CONNECTOR_ID.WALLET_CONNECT:await this.syncWalletConnectAccount();break;case W.CONNECTOR_ID.AUTH:break;default:await this.syncAdapterConnection(e)}}catch(s){console.warn("AppKit couldn't sync existing connection",s),this.setStatus("disconnected",e)}}async syncAdapterConnection(e){const s=this.getAdapter(e),r=j.getConnectorId(e),i=this.getCaipNetwork(e),o=j.getConnectors(e).find(a=>a.id===r);try{if(!s||!o)throw new Error(`Adapter or connector not found for namespace ${e}`);if(!i?.id)throw new Error("CaipNetwork not found");const a=await s?.syncConnection({namespace:e,id:o.id,chainId:i.id,rpcUrl:i?.rpcUrls?.default?.http?.[0]});if(a){const c=await s?.getAccounts({namespace:e,id:o.id});c&&c.accounts.length>0?this.setAllAccounts(c.accounts,e):this.setAllAccounts([X.createAccount(e,a.address,"eoa")],e),this.syncProvider({...a,chainNamespace:e}),await this.syncAccount({...a,chainNamespace:e}),this.setStatus("connected",e)}else this.setStatus("disconnected",e)}catch{this.setStatus("disconnected",e)}}async syncWalletConnectAccount(){const e=this.chainNamespaces.map(async s=>{const r=this.getAdapter(s),i=this.universalProvider?.session?.namespaces?.[s]?.accounts||[],n=g.state.activeCaipNetwork?.id,o=i.find(a=>{const{chainId:c}=hs.parseCaipAddress(a);return c===n?.toString()})||i[0];if(o){const a=hs.validateCaipAddress(o),{chainId:c,address:l}=hs.parseCaipAddress(a);if(Se.setProviderId(s,ms.CONNECTOR_TYPE_WALLET_CONNECT),this.caipNetworks&&g.state.activeCaipNetwork&&r?.namespace!==W.CHAIN.EVM){const u=r?.getWalletConnectProvider({caipNetworks:this.getCaipNetworks(),provider:this.universalProvider,activeCaipNetwork:g.state.activeCaipNetwork});Se.setProvider(s,u)}else Se.setProvider(s,this.universalProvider);j.setConnectorId(W.CONNECTOR_ID.WALLET_CONNECT,s),F.addConnectedNamespace(s),this.syncWalletConnectAccounts(s),await this.syncAccount({address:l,chainId:c,chainNamespace:s})}else this.setStatus("disconnected",s);this.syncConnectedWalletInfo(s),await g.setApprovedCaipNetworksData(s)});await Promise.all(e)}syncWalletConnectAccounts(e){const s=this.universalProvider?.session?.namespaces?.[e]?.accounts?.map(r=>{const{address:i}=hs.parseCaipAddress(r);return i}).filter((r,i,n)=>n.indexOf(r)===i);s&&this.setAllAccounts(s.map(r=>X.createAccount(e,r,e==="bip122"?"payment":"eoa")),e)}syncProvider({type:e,provider:s,id:r,chainNamespace:i}){Se.setProviderId(i,e),Se.setProvider(i,s),j.setConnectorId(r,i)}async syncAllAccounts(e){const s=j.getConnectorId(e);if(!s)return;const i=await this.getAdapter(e)?.getAccounts({namespace:e,id:s});i&&i.accounts.length>0&&this.setAllAccounts(i.accounts,e)}async syncAccount(e){const s=e.chainNamespace===g.state.activeChain,r=g.getCaipNetworkByNamespace(e.chainNamespace,e.chainId),{address:i,chainId:n,chainNamespace:o}=e,{chainId:a}=F.getActiveNetworkProps(),c=n||a,l=g.state.activeCaipNetwork?.name===W.UNSUPPORTED_NETWORK_NAME,u=g.getNetworkProp("supportsAllNetworks",o);if(this.setStatus("connected",o),!(l&&!u)&&c){let h=this.getCaipNetworks().find(w=>w.id.toString()===c.toString()),d=this.getCaipNetworks().find(w=>w.chainNamespace===o);if(!u&&!h&&!d){const w=this.getApprovedCaipNetworkIds()||[],m=w.find(y=>hs.parseCaipNetworkId(y)?.chainId===c.toString()),f=w.find(y=>hs.parseCaipNetworkId(y)?.chainNamespace===o);h=this.getCaipNetworks().find(y=>y.caipNetworkId===m),d=this.getCaipNetworks().find(y=>y.caipNetworkId===f||"deprecatedCaipNetworkId"in y&&y.deprecatedCaipNetworkId===f)}const p=h||d;p?.chainNamespace===g.state.activeChain?O.state.enableNetworkSwitch&&!O.state.allowUnsupportedChain&&g.state.activeCaipNetwork?.name===W.UNSUPPORTED_NETWORK_NAME?g.showUnsupportedChainUI():this.setCaipNetwork(p):s||r&&this.setCaipNetworkOfNamespace(r,o),this.syncConnectedWalletInfo(o),Ca.isLowerCaseMatch(i,z.state.address)||this.syncAccountInfo(i,p?.id,o),s?await this.syncBalance({address:i,chainId:p?.id,chainNamespace:o}):await this.syncBalance({address:i,chainId:r?.id,chainNamespace:o})}}async syncAccountInfo(e,s,r){const i=this.getCaipAddress(r),n=s||i?.split(":")[1];if(!n)return;const o=`${r}:${n}:${e}`;this.setCaipAddress(o,r),await this.syncIdentity({address:e,chainId:n,chainNamespace:r})}async syncReownName(e,s){try{const r=await this.getReownName(e);if(r[0]){const i=r[0];this.setProfileName(i.name,s)}else this.setProfileName(null,s)}catch{this.setProfileName(null,s)}}syncConnectedWalletInfo(e){const s=j.getConnectorId(e),r=Se.getProviderId(e);if(r===ms.CONNECTOR_TYPE_ANNOUNCED||r===ms.CONNECTOR_TYPE_INJECTED){if(s){const i=this.getConnectors().find(n=>n.id===s);if(i){const{info:n,name:o,imageUrl:a}=i,c=a||this.getConnectorImage(i);this.setConnectedWalletInfo({name:o,icon:c,...n},e)}}}else if(r===ms.CONNECTOR_TYPE_WALLET_CONNECT){const i=Se.getProvider(e);i?.session&&this.setConnectedWalletInfo({...i.session.peer.metadata,name:i.session.peer.metadata.name,icon:i.session.peer.metadata.icons?.[0]},e)}else if(s&&s===W.CONNECTOR_ID.COINBASE){const i=this.getConnectors().find(n=>n.id===W.CONNECTOR_ID.COINBASE);this.setConnectedWalletInfo({name:"Coinbase Wallet",icon:this.getConnectorImage(i)},e)}}async syncBalance(e){!Jl.getNetworksByNamespace(this.getCaipNetworks(),e.chainNamespace).find(r=>r.id.toString()===e.chainId?.toString())||!e.chainId||await this.updateNativeBalance(e.address,e.chainId,e.chainNamespace)}async ready(){await this.readyPromise}async updateNativeBalance(e,s,r){const i=this.getAdapter(r),n=g.getCaipNetworkByNamespace(r,s);if(i){const o=await i.getBalance({address:e,chainId:s,caipNetwork:n,tokens:this.options.tokens});return this.setBalance(o.balance,o.symbol,r),o}}async initializeUniversalAdapter(){const e=hI.createLogger((r,...i)=>{r&&this.handleAlertError(r),console.error(...i)}),s={projectId:this.options?.projectId,metadata:{name:this.options?.metadata?this.options?.metadata.name:"",description:this.options?.metadata?this.options?.metadata.description:"",url:this.options?.metadata?this.options?.metadata.url:"",icons:this.options?.metadata?this.options?.metadata.icons:[""]},logger:e};O.setManualWCControl(!!this.options?.manualWCControl),this.universalProvider=this.options.universalProvider??await cI.init(s),this.listenWalletConnect()}listenWalletConnect(){this.universalProvider&&(this.universalProvider.on("display_uri",e=>{Y.setUri(e)}),this.universalProvider.on("connect",Y.finalizeWcConnection),this.universalProvider.on("disconnect",()=>{this.chainNamespaces.forEach(e=>{this.resetAccount(e)}),Y.resetWcConnection()}),this.universalProvider.on("chainChanged",e=>{const s=this.getCaipNetworks().find(i=>i.id==e),r=this.getCaipNetwork();if(!s){this.setUnsupportedNetwork(e);return}r?.id!==s?.id&&this.setCaipNetwork(s)}),this.universalProvider.on("session_event",e=>{if(yn.isSessionEventData(e)){const{name:s,data:r}=e.params.event;s==="accountsChanged"&&Array.isArray(r)&&X.isCaipAddress(r[0])&&this.syncAccount(hs.parseCaipAddress(r[0]))}}))}createUniversalProvider(){return!this.universalProviderInitPromise&&X.isClient()&&this.options?.projectId&&(this.universalProviderInitPromise=this.initializeUniversalAdapter()),this.universalProviderInitPromise}async getUniversalProvider(){if(!this.universalProvider)try{await this.createUniversalProvider()}catch(e){Pe.sendEvent({type:"error",event:"INTERNAL_SDK_ERROR",properties:{errorType:"UniversalProviderInitError",errorMessage:e instanceof Error?e.message:"Unknown",uncaught:!1}}),console.error("AppKit:getUniversalProvider - Cannot create provider",e)}return this.universalProvider}handleAlertError(e){const s=Object.entries(Cr.UniversalProviderErrors).find(([,{message:a}])=>e.message.includes(a)),[r,i]=s??[],{message:n,alertErrorKey:o}=i??{};if(r&&n&&!this.reportedAlertErrors[r]){const a=Cr.ALERT_ERRORS[o];a&&(Ls.open(a,"error"),this.reportedAlertErrors[r]=!0)}}getAdapter(e){if(e)return this.chainAdapters?.[e]}createAdapter(e){if(!e)return;const s=e.namespace;if(!s)return;this.createClients();const r=e;r.namespace=s,r.construct({namespace:s,projectId:this.options?.projectId,networks:this.getCaipNetworks()}),this.chainNamespaces.includes(s)||this.chainNamespaces.push(s),this.chainAdapters&&(this.chainAdapters[s]=r)}async open(e){if(await this.injectModalUi(),e?.uri&&Y.setUri(e.uri),e?.arguments)switch(e?.view){case"Swap":return We.open({...e,data:{swap:e.arguments}})}return We.open(e)}async close(){await this.injectModalUi(),We.close()}setLoading(e,s){We.setLoading(e,s)}async disconnect(e){await Y.disconnect(e)}getSIWX(){return O.state.siwx}getError(){return""}getChainId(){return g.state.activeCaipNetwork?.id}async switchNetwork(e){const s=this.getCaipNetworks().find(r=>r.id===e.id);if(!s){Ls.open(Cr.ALERT_ERRORS.SWITCH_NETWORK_NOT_FOUND,"error");return}await g.switchActiveNetwork(s)}getWalletProvider(){return g.state.activeChain?Se.state.providers[g.state.activeChain]:null}getWalletProviderType(){return Se.getProviderId(g.state.activeChain)}subscribeProviders(e){return Se.subscribeProviders(e)}getThemeMode(){return mt.state.themeMode}getThemeVariables(){return mt.state.themeVariables}setThemeMode(e){mt.setThemeMode(e),Mh(mt.state.themeMode)}setTermsConditionsUrl(e){O.setTermsConditionsUrl(e)}setPrivacyPolicyUrl(e){O.setPrivacyPolicyUrl(e)}setThemeVariables(e){mt.setThemeVariables(e),RI(mt.state.themeVariables)}subscribeTheme(e){return mt.subscribe(e)}getWalletInfo(){return z.state.connectedWalletInfo}getAccount(e){const s=j.getAuthConnector(e),r=g.getAccountData(e),i=g.state.activeChain,n=F.getConnectedConnectorId(e||i);if(r)return{allAccounts:r.allAccounts,caipAddress:r.caipAddress,address:X.getPlainAddress(r.caipAddress),isConnected:!!r.caipAddress,status:r.status,embeddedWalletInfo:s&&n===W.CONNECTOR_ID.AUTH?{user:r.user?{...r.user,username:F.getConnectedSocialUsername()}:void 0,authProvider:r.socialProvider||"email",accountType:r.preferredAccountTypes?.[e||i],isSmartAccountDeployed:!!r.smartAccountDeployed}:void 0}}subscribeAccount(e,s){const r=()=>{const i=this.getAccount(s);i&&e(i)};s?g.subscribeChainProp("accountState",r,s):g.subscribe(r),j.subscribe(r)}subscribeNetwork(e){return g.subscribe(({activeCaipNetwork:s})=>{e({caipNetwork:s,chainId:s?.id,caipNetworkId:s?.caipNetworkId})})}subscribeWalletInfo(e){return z.subscribeKey("connectedWalletInfo",e)}subscribeShouldUpdateToAddress(e){z.subscribeKey("shouldUpdateToAddress",e)}subscribeCaipNetworkChange(e){g.subscribeKey("activeCaipNetwork",e)}getState(){return Is.state}subscribeState(e){return Is.subscribe(e)}showErrorMessage(e){Lt.showError(e)}showSuccessMessage(e){Lt.showSuccess(e)}getEvent(){return{...Pe.state}}subscribeEvents(e){return Pe.subscribe(e)}replace(e){re.replace(e)}redirect(e){re.push(e)}popTransactionStack(e){re.popTransactionStack(e)}isOpen(){return We.state.open}isTransactionStackEmpty(){return re.state.transactionStack.length===0}static getInstance(){return this.instance}updateFeatures(e){O.setFeatures(e)}updateRemoteFeatures(e){O.setRemoteFeatures(e)}updateOptions(e){const r={...O.state||{},...e};O.setOptions(r)}setConnectMethodsOrder(e){O.setConnectMethodsOrder(e)}setWalletFeaturesOrder(e){O.setWalletFeaturesOrder(e)}setCollapseWallets(e){O.setCollapseWallets(e)}setSocialsOrder(e){O.setSocialsOrder(e)}getConnectMethodsOrder(){return ra.getConnectOrderMethod(O.state.features,j.getConnectors())}addNetwork(e,s){if(this.chainAdapters&&!this.chainAdapters[e])throw new Error(`Adapter for namespace ${e} doesn't exist`);const r=this.extendCaipNetwork(s,this.options);this.getCaipNetworks().find(i=>i.id===r.id)||g.addNetwork(r)}removeNetwork(e,s){if(this.chainAdapters&&!this.chainAdapters[e])throw new Error(`Adapter for namespace ${e} doesn't exist`);this.getCaipNetworks().find(i=>i.id===s)&&g.removeNetwork(e,s)}}let Vl=!1;class jh extends qI{async open(e){j.isConnected()||await super.open(e)}async close(){await super.close(),this.options.manualWCControl&&Y.finalizeWcConnection()}async syncIdentity(e){return Promise.resolve()}async syncBalance(e){return Promise.resolve()}async injectModalUi(){if(!Vl&&X.isClient()){if(await Eo(()=>import("./basic-CrTlCsjy.js"),__vite__mapDeps([6,7,1,2,3,4,5])),await Eo(()=>import("./w3m-modal-DsvQ9IuK.js"),__vite__mapDeps([8,7,1,2,3,4,5])),!document.querySelector("w3m-modal")){const s=document.createElement("w3m-modal");!O.state.disableAppend&&!O.state.enableEmbedded&&document.body.insertAdjacentElement("beforeend",s)}Vl=!0}}}const FI="1.7.8";function zI(t){return new jh({...t,basic:!0,sdkVersion:`html-core-${FI}`})}const _1=Object.freeze(Object.defineProperty({__proto__:null,AppKit:jh,createAppKit:zI},Symbol.toStringTag,{value:"Module"}));export{Ls as A,Lt as B,g as C,V as D,Pe as E,C1 as F,X as G,bf as H,W as I,xh as J,ia as K,ze as L,We as M,qr as N,O,gn as P,Y as Q,re as R,wi as S,mt as T,F as U,ve as V,ra as W,_1 as X,Ka as a,E1 as b,u1 as c,lf as d,l1 as e,Tn as f,p1 as g,d1 as h,Ct as i,Qe as j,Tr as k,I1 as l,wn as m,N1 as n,A1 as o,_e as p,Ql as q,h1 as r,et as s,lu as t,Dt as u,pI as v,vf as w,v1 as x,j as y,z}; diff --git a/client2/build/assets/create-FASO7PVG-D_rvSpre.js b/client2/build/assets/create-FASO7PVG-D_rvSpre.js deleted file mode 100644 index 727abb697..000000000 --- a/client2/build/assets/create-FASO7PVG-D_rvSpre.js +++ /dev/null @@ -1 +0,0 @@ -var a="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2048%2048%22%3E%3Cpath%20fill%3D%22url(%23a)%22%20d%3D%22M0%2016c0-5.6%200-8.4%201.09-10.54a10%2010%200%200%201%204.37-4.37C7.6%200%2010.4%200%2016%200h16c5.6%200%208.4%200%2010.54%201.09a10%2010%200%200%201%204.37%204.37C48%207.6%2048%2010.4%2048%2016v16c0%205.6%200%208.4-1.09%2010.54a10.001%2010.001%200%200%201-4.37%204.37C40.4%2048%2037.6%2048%2032%2048H16c-5.6%200-8.4%200-10.54-1.09a10%2010%200%200%201-4.37-4.37C0%2040.4%200%2037.6%200%2032V16Z%22%2F%3E%3Cpath%20fill%3D%22url(%23b)%22%20fill-opacity%3D%22.7%22%20d%3D%22M0%2016c0-5.6%200-8.4%201.09-10.54a10%2010%200%200%201%204.37-4.37C7.6%200%2010.4%200%2016%200h16c5.6%200%208.4%200%2010.54%201.09a10%2010%200%200%201%204.37%204.37C48%207.6%2048%2010.4%2048%2016v16c0%205.6%200%208.4-1.09%2010.54a10.001%2010.001%200%200%201-4.37%204.37C40.4%2048%2037.6%2048%2032%2048H16c-5.6%200-8.4%200-10.54-1.09a10%2010%200%200%201-4.37-4.37C0%2040.4%200%2037.6%200%2032V16Z%22%20style%3D%22mix-blend-mode%3Ascreen%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.04%22%20fill-rule%3D%22evenodd%22%20d%3D%22M32%201H16c-2.817%200-4.87%200-6.487.133-1.605.131-2.694.387-3.599.848a9%209%200%200%200-3.933%203.933c-.461.905-.717%201.994-.848%203.6C1%2011.13%201%2013.183%201%2016v16c0%202.817%200%204.87.133%206.486.131%201.606.387%202.695.848%203.6a9%209%200%200%200%203.933%203.933c.905.461%201.994.717%203.6.848C11.13%2047%2013.183%2047%2016%2047h16c2.817%200%204.87%200%206.486-.133%201.606-.131%202.695-.387%203.6-.848a9%209%200%200%200%203.933-3.933c.461-.905.717-1.994.848-3.6C47%2036.87%2047%2034.816%2047%2032V16c0-2.817%200-4.87-.133-6.487-.131-1.605-.387-2.694-.848-3.599a9%209%200%200%200-3.933-3.933c-.905-.461-1.994-.717-3.6-.848C36.87%201%2034.816%201%2032%201ZM1.09%205.46C0%207.6%200%2010.4%200%2016v16c0%205.6%200%208.4%201.09%2010.54a10%2010%200%200%200%204.37%204.37C7.6%2048%2010.4%2048%2016%2048h16c5.6%200%208.4%200%2010.54-1.09a10.001%2010.001%200%200%200%204.37-4.37C48%2040.4%2048%2037.6%2048%2032V16c0-5.6%200-8.4-1.09-10.54a10%2010%200%200%200-4.37-4.37C40.4%200%2037.6%200%2032%200H16C10.4%200%207.6%200%205.46%201.09a10%2010%200%200%200-4.37%204.37Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.12%22%20d%3D%22M24%2013a1.5%201.5%200%200%200-1.5%201.5v8.2c0%20.28%200%20.42-.055.527a.5.5%200%200%201-.218.218c-.107.055-.247.055-.527.055h-8.2a1.5%201.5%200%200%200%200%203h8.2c.28%200%20.42%200%20.527.055a.5.5%200%200%201%20.218.218c.055.107.055.247.055.527v8.2a1.5%201.5%200%200%200%203%200v-8.2c0-.28%200-.42.055-.527a.5.5%200%200%201%20.218-.218c.107-.055.247-.055.527-.055h8.2a1.5%201.5%200%200%200%200-3h-8.2c-.28%200-.42%200-.527-.055a.5.5%200%200%201-.218-.218c-.055-.107-.055-.247-.055-.527v-8.2A1.5%201.5%200%200%200%2024%2013Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M24%2012a1.5%201.5%200%200%200-1.5%201.5v8.2c0%20.28%200%20.42-.055.527a.5.5%200%200%201-.218.218c-.107.055-.247.055-.527.055h-8.2a1.5%201.5%200%200%200%200%203h8.2c.28%200%20.42%200%20.527.055a.5.5%200%200%201%20.218.218c.055.107.055.247.055.527v8.2a1.5%201.5%200%200%200%203%200v-8.2c0-.28%200-.42.055-.527a.5.5%200%200%201%20.218-.218c.107-.055.247-.055.527-.055h8.2a1.5%201.5%200%200%200%200-3h-8.2c-.28%200-.42%200-.527-.055a.5.5%200%200%201-.218-.218c-.055-.107-.055-.247-.055-.527v-8.2A1.5%201.5%200%200%200%2024%2012Z%22%2F%3E%3Cdefs%3E%3CradialGradient%20id%3D%22a%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22rotate(-40.077%2073.374%2058.603)%20scale(94.7484)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%22.276%22%20stop-color%3D%22%2320FF4D%22%2F%3E%3Cstop%20offset%3D%22.464%22%20stop-color%3D%22%231499FF%22%2F%3E%3Cstop%20offset%3D%22.755%22%20stop-color%3D%22%23FF6FC5%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23BC67FF%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22b%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22rotate(45%205.303%20-12.803)%20scale(78.4889)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22red%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%2300A3FF%22%2F%3E%3C%2FradialGradient%3E%3C%2Fdefs%3E%3C%2Fsvg%3E";export{a as default}; diff --git a/client2/build/assets/cronos-HJPAQTAE-BEOvlOC4.js b/client2/build/assets/cronos-HJPAQTAE-BEOvlOC4.js deleted file mode 100644 index d6cb23827..000000000 --- a/client2/build/assets/cronos-HJPAQTAE-BEOvlOC4.js +++ /dev/null @@ -1 +0,0 @@ -var l="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20width%3D%2228%22%20height%3D%2228%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22A%22%20x1%3D%22-18.275%25%22%20x2%3D%2284.959%25%22%20y1%3D%228.219%25%22%20y2%3D%2271.393%25%22%3E%3Cstop%20offset%3D%220%25%22%20stop-color%3D%22%23002d74%22%2F%3E%3Cstop%20offset%3D%22100%25%22%20stop-color%3D%22%23001246%22%2F%3E%3C%2FlinearGradient%3E%3Ccircle%20id%3D%22B%22%20cx%3D%2214%22%20cy%3D%2214%22%20r%3D%2214%22%2F%3E%3C%2Fdefs%3E%3Cg%20fill-rule%3D%22evenodd%22%3E%3Cmask%20id%3D%22C%22%20fill%3D%22%23fff%22%3E%3Cuse%20xlink%3Ahref%3D%22%23B%22%2F%3E%3C%2Fmask%3E%3Cg%20fill-rule%3D%22nonzero%22%3E%3Cpath%20fill%3D%22url(%23A)%22%20d%3D%22M-1.326-1.326h30.651v30.651H-1.326z%22%20mask%3D%22url(%23C)%22%2F%3E%3Cg%20fill%3D%22%23fff%22%3E%3Cpath%20d%3D%22M14.187%206L7%2010.175v8.35l7.187%204.175%207.175-4.175v-8.35L14.187%206zm5.046%2011.286l-5.058%202.936-5.046-2.936v-5.871l5.058-2.936%205.046%202.936v5.871z%22%2F%3E%3Cpath%20d%3D%22M14.187%2022.7l7.175-4.175v-8.35L14.187%206v2.479l5.046%202.936v5.883l-5.058%202.936V22.7h.012z%22%2F%3E%3Cpath%20d%3D%22M14.175%206L7%2010.175v8.35l7.175%204.175v-2.479l-5.046-2.936v-5.883l5.046-2.924V6zm3.36%2010.299l-3.348%201.949-3.36-1.949v-3.898l3.36-1.949%203.348%201.949-1.399.818-1.961-1.143-1.949%201.143v2.274l1.961%201.143%201.961-1.143%201.387.806z%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E";export{l as default}; diff --git a/client2/build/assets/cursor-B4Vj3oX6.js b/client2/build/assets/cursor-B4Vj3oX6.js deleted file mode 100644 index e03f2cbab..000000000 --- a/client2/build/assets/cursor-B4Vj3oX6.js +++ /dev/null @@ -1,3 +0,0 @@ -import{b as o}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const l=o` - -`;export{l as cursorSvg}; diff --git a/client2/build/assets/cursor-transparent-DmXjqIE-.js b/client2/build/assets/cursor-transparent-DmXjqIE-.js deleted file mode 100644 index 02b324b6d..000000000 --- a/client2/build/assets/cursor-transparent-DmXjqIE-.js +++ /dev/null @@ -1,12 +0,0 @@ -import{b as o}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const e=o` - - - - `;export{e as cursorTransparentSvg}; diff --git a/client2/build/assets/d9960bdb814135603341883999ea9dc547d831b8-De6R2HxP.png b/client2/build/assets/d9960bdb814135603341883999ea9dc547d831b8-De6R2HxP.png deleted file mode 100644 index c71293e14..000000000 Binary files a/client2/build/assets/d9960bdb814135603341883999ea9dc547d831b8-De6R2HxP.png and /dev/null differ diff --git a/client2/build/assets/de_DE-P43L3PR7-pJRS3eyz.js b/client2/build/assets/de_DE-P43L3PR7-pJRS3eyz.js deleted file mode 100644 index cb6862648..000000000 --- a/client2/build/assets/de_DE-P43L3PR7-pJRS3eyz.js +++ /dev/null @@ -1,1427 +0,0 @@ -var e=`{ - "connect_wallet": { - "label": "Wallet verbinden", - "wrong_network": { - "label": "Falsches Netzwerk" - } - }, - "intro": { - "title": "Was ist ein Wallet?", - "description": "Ein Wallet wird verwendet, um digitale Assets zu senden, empfangen, speichern und anzeigen. Es ist auch eine neue Möglichkeit, sich anzumelden, ohne auf jeder Website neue Konten und Passwörter erstellen zu müssen.", - "digital_asset": { - "title": "Ein Zuhause für Ihre digitalen Vermögenswerte", - "description": "Wallets werden verwendet, um digitale Assets wie Ethereum und NFTs zu senden, empfangen, speichern und anzeigen." - }, - "login": { - "title": "Eine neue Möglichkeit, sich anzumelden", - "description": "Anstatt auf jeder Website neue Konten und Passwörter zu erstellen, verbinden Sie einfach Ihr Wallet." - }, - "get": { - "label": "Ein Wallet holen" - }, - "learn_more": { - "label": "Mehr erfahren" - } - }, - "sign_in": { - "label": "Verifizieren Sie Ihr Konto", - "description": "Um die Verbindung abzuschließen, müssen Sie eine Nachricht in Ihrem Wallet signieren, um zu verifizieren, dass Sie der Inhaber dieses Kontos sind.", - "message": { - "send": "Nachricht signieren", - "preparing": "Nachricht wird vorbereitet...", - "cancel": "Abbrechen", - "preparing_error": "Fehler beim Vorbereiten der Nachricht, bitte erneut versuchen!" - }, - "signature": { - "waiting": "Warten auf Signatur...", - "verifying": "Signatur wird überprüft...", - "signing_error": "Fehler beim Signieren der Nachricht, bitte erneut versuchen!", - "verifying_error": "Fehler bei der Überprüfung der Signatur, bitte erneut versuchen!", - "oops_error": "Oops, etwas ist schiefgelaufen!" - } - }, - "connect": { - "label": "Verbinden", - "title": "Ein Wallet verbinden", - "new_to_ethereum": { - "description": "Neu bei Ethereum-Wallets?", - "learn_more": { - "label": "Mehr erfahren" - } - }, - "learn_more": { - "label": "Mehr erfahren" - }, - "recent": "Zuletzt", - "status": { - "opening": "%{wallet} wird geöffnet...", - "connecting": "Verbinden", - "connect_mobile": "Fahren Sie in %{wallet} fort", - "not_installed": "%{wallet} ist nicht installiert", - "not_available": "%{wallet} ist nicht verfügbar", - "confirm": "Bestätigen Sie die Verbindung in der Erweiterung", - "confirm_mobile": "Akzeptieren Sie die Verbindungsanfrage im Wallet" - }, - "secondary_action": { - "get": { - "description": "Haben Sie kein %{wallet}?", - "label": "HOLEN" - }, - "install": { - "label": "INSTALLIEREN" - }, - "retry": { - "label": "ERNEUT VERSUCHEN" - } - }, - "walletconnect": { - "description": { - "full": "Benötigen Sie das offizielle WalletConnect-Modul?", - "compact": "Benötigen Sie das WalletConnect-Modul?" - }, - "open": { - "label": "ÖFFNEN" - } - } - }, - "connect_scan": { - "title": "Mit %{wallet} scannen", - "fallback_title": "Mit Ihrem Telefon scannen" - }, - "connector_group": { - "installed": "Installiert", - "recommended": "Empfohlen", - "other": "Andere", - "popular": "Beliebt", - "more": "Mehr", - "others": "Andere" - }, - "get": { - "title": "Ein Wallet holen", - "action": { - "label": "HOLEN" - }, - "mobile": { - "description": "Mobiles Wallet" - }, - "extension": { - "description": "Browser-Erweiterung" - }, - "mobile_and_extension": { - "description": "Mobiles Wallet und Erweiterung" - }, - "mobile_and_desktop": { - "description": "Mobile und Desktop Wallet" - }, - "looking_for": { - "title": "Nicht das, wonach Sie suchen?", - "mobile": { - "description": "Wählen Sie auf dem Hauptbildschirm ein Wallet aus, um mit einem anderen Wallet-Anbieter zu beginnen." - }, - "desktop": { - "compact_description": "Wählen Sie auf dem Hauptbildschirm ein Wallet aus, um mit einem anderen Wallet-Anbieter zu beginnen.", - "wide_description": "Wählen Sie links ein Wallet aus, um mit einem anderen Wallet-Anbieter zu beginnen." - } - } - }, - "get_options": { - "title": "Beginnen Sie mit %{wallet}", - "short_title": "%{wallet} besorgen", - "mobile": { - "title": "%{wallet} für Mobilgeräte", - "description": "Verwenden Sie das mobile Wallet, um die Welt von Ethereum zu erkunden.", - "download": { - "label": "App herunterladen" - } - }, - "extension": { - "title": "%{wallet} für %{browser}", - "description": "Greifen Sie direkt von Ihrem bevorzugten Webbrowser auf Ihr Wallet zu.", - "download": { - "label": "Zu %{browser} hinzufügen" - } - }, - "desktop": { - "title": "%{wallet} für %{platform}", - "description": "Greifen Sie nativ von Ihrem leistungsstarken Desktop auf Ihr Wallet zu.", - "download": { - "label": "Hinzufügen zu %{platform}" - } - } - }, - "get_mobile": { - "title": "%{wallet} installieren", - "description": "Scannen Sie mit Ihrem Telefon, um auf iOS oder Android herunterzuladen", - "continue": { - "label": "Fortfahren" - } - }, - "get_instructions": { - "mobile": { - "connect": { - "label": "Verbinden" - }, - "learn_more": { - "label": "Mehr erfahren" - } - }, - "extension": { - "refresh": { - "label": "Aktualisieren" - }, - "learn_more": { - "label": "Mehr erfahren" - } - }, - "desktop": { - "connect": { - "label": "Verbinden" - }, - "learn_more": { - "label": "Mehr erfahren" - } - } - }, - "chains": { - "title": "Netzwerke wechseln", - "wrong_network": "Falsches Netzwerk erkannt, wechseln oder trennen Sie die Verbindung, um fortzufahren.", - "confirm": "Im Wallet bestätigen", - "switching_not_supported": "Ihr Wallet unterstützt das Wechseln von Netzwerken von %{appName} aus nicht. Versuchen Sie stattdessen, innerhalb Ihres Wallets die Netzwerke zu wechseln.", - "switching_not_supported_fallback": "Ihr Wallet unterstützt das Wechseln von Netzwerken von dieser App aus nicht. Versuchen Sie stattdessen, innerhalb Ihres Wallets die Netzwerke zu wechseln.", - "disconnect": "Trennen", - "connected": "Verbunden" - }, - "profile": { - "disconnect": { - "label": "Trennen" - }, - "copy_address": { - "label": "Adresse kopieren", - "copied": "Kopiert!" - }, - "explorer": { - "label": "Mehr im Explorer ansehen" - }, - "transactions": { - "description": "%{appName}-Transaktionen werden hier angezeigt...", - "description_fallback": "Ihre Transaktionen werden hier angezeigt...", - "recent": { - "title": "Neueste Transaktionen" - }, - "clear": { - "label": "Alles löschen" - } - } - }, - "wallet_connectors": { - "argent": { - "qr_code": { - "step1": { - "description": "Fügen Sie Argent zu Ihrem Startbildschirm hinzu, um schneller auf Ihr Wallet zuzugreifen.", - "title": "Öffnen Sie die Argent-App" - }, - "step2": { - "description": "Erstellen Sie ein Wallet und einen Benutzernamen oder importieren Sie ein bestehendes Wallet.", - "title": "Erstellen oder importieren Sie ein Wallet" - }, - "step3": { - "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden.", - "title": "Tippen Sie auf die Schaltfläche QR-Scan" - } - } - }, - "berasig": { - "extension": { - "step1": { - "title": "Installieren Sie die BeraSig-Erweiterung", - "description": "Wir empfehlen, BeraSig an die Taskleiste anzuheften, um leichter auf Ihre Brieftasche zuzugreifen." - }, - "step2": { - "title": "Erstellen Sie eine Wallet", - "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." - }, - "step3": { - "title": "Aktualisieren Sie Ihren Browser", - "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." - } - } - }, - "best": { - "qr_code": { - "step1": { - "title": "Öffnen Sie die Best Wallet-App", - "description": "Fügen Sie die Best Wallet zu Ihrem Startbildschirm hinzu, um schneller auf Ihre Wallet zuzugreifen." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes." - }, - "step3": { - "title": "Tippen Sie auf das QR-Symbol und scannen Sie", - "description": "Tippen Sie auf das QR-Symbol auf Ihrem Startbildschirm, scannen Sie den Code und bestätigen Sie die Eingabeaufforderung, um die Verbindung herzustellen." - } - } - }, - "bifrost": { - "qr_code": { - "step1": { - "description": "Wir empfehlen, die Bifrost Wallet auf Ihren Startbildschirm zu legen, um schneller darauf zugreifen zu können.", - "title": "Öffnen Sie die Bifrost Wallet-App" - }, - "step2": { - "description": "Erstellen oder importieren Sie ein Wallet mit Ihrer Wiederherstellungsphrase.", - "title": "Erstellen oder importieren Sie ein Wallet" - }, - "step3": { - "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden.", - "title": "Tippen Sie auf die Scan-Schaltfläche" - } - } - }, - "bitget": { - "qr_code": { - "step1": { - "description": "Wir empfehlen, die Bitget Wallet auf Ihren Startbildschirm zu legen, um schneller darauf zugreifen zu können.", - "title": "Öffnen Sie die Bitget Wallet-App" - }, - "step2": { - "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem.", - "title": "Erstellen oder importieren Sie ein Wallet" - }, - "step3": { - "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden.", - "title": "Tippen Sie auf die Scan-Schaltfläche" - } - }, - "extension": { - "step1": { - "description": "Wir empfehlen, die Bitget Wallet in Ihre Taskleiste zu heften, um schneller auf Ihr Wallet zugreifen zu können.", - "title": "Installieren Sie die Bitget Wallet-Erweiterung" - }, - "step2": { - "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem.", - "title": "Erstellen oder importieren Sie ein Wallet" - }, - "step3": { - "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden.", - "title": "Aktualisieren Sie Ihren Browser" - } - } - }, - "bitski": { - "extension": { - "step1": { - "description": "Wir empfehlen, Bitski in Ihre Taskleiste zu heften, um schneller auf Ihr Wallet zugreifen zu können.", - "title": "Installieren Sie die Bitski-Erweiterung" - }, - "step2": { - "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem.", - "title": "Erstellen oder importieren Sie ein Wallet" - }, - "step3": { - "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden.", - "title": "Aktualisieren Sie Ihren Browser" - } - } - }, - "bitverse": { - "qr_code": { - "step1": { - "title": "Öffnen Sie die Bitverse Wallet App", - "description": "Fügen Sie die Bitverse Wallet Ihrem Startbildschirm hinzu, um schneller auf Ihr Wallet zuzugreifen." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes." - }, - "step3": { - "title": "Tippen Sie auf das QR-Symbol und scannen Sie", - "description": "Tippen Sie auf das QR-Symbol auf Ihrem Startbildschirm, scannen Sie den Code und bestätigen Sie die Eingabeaufforderung, um die Verbindung herzustellen." - } - } - }, - "bloom": { - "desktop": { - "step1": { - "title": "Öffnen Sie die Bloom Wallet-App", - "description": "Wir empfehlen, Bloom Wallet auf Ihrem Startbildschirm abzulegen, um schneller darauf zugreifen zu können." - }, - "step2": { - "description": "Erstellen oder importieren Sie ein Wallet mit Ihrer Wiederherstellungsphrase.", - "title": "Erstellen oder importieren Sie ein Wallet" - }, - "step3": { - "description": "Nachdem Sie ein Wallet haben, klicken Sie auf „Verbinden“, um über Bloom eine Verbindung herzustellen. Eine Verbindungsmeldung in der App wird angezeigt, um die Verbindung zu bestätigen.", - "title": "Klicken Sie auf Verbinden" - } - } - }, - "bybit": { - "qr_code": { - "step1": { - "description": "Wir empfehlen, Bybit auf Ihrem Startbildschirm abzulegen, um schneller darauf zuzugreifen.", - "title": "Öffnen Sie die Bybit App" - }, - "step2": { - "description": "Sie können Ihr Wallet ganz einfach mit unserer Backup-Funktion auf Ihrem Telefon sichern.", - "title": "Erstellen oder importieren Sie ein Wallet" - }, - "step3": { - "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden.", - "title": "Tippen Sie auf die Scan-Schaltfläche" - } - }, - "extension": { - "step1": { - "description": "Klicken Sie oben rechts in Ihrem Browser und heften Sie Bybit Wallet für einfachen Zugriff an.", - "title": "Installieren Sie die Bybit Wallet Erweiterung" - }, - "step2": { - "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes.", - "title": "Erstellen oder importieren Sie ein Wallet" - }, - "step3": { - "description": "Sobald Sie das Bybit Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden.", - "title": "Aktualisieren Sie Ihren Browser" - } - } - }, - "binance": { - "qr_code": { - "step1": { - "description": "Wir empfehlen, Binance auf Ihrem Startbildschirm abzulegen, um schneller darauf zuzugreifen.", - "title": "Öffnen Sie die Binance App" - }, - "step2": { - "description": "Sie können Ihr Wallet ganz einfach mit unserer Backup-Funktion auf Ihrem Telefon sichern.", - "title": "Erstellen oder importieren Sie ein Wallet" - }, - "step3": { - "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden.", - "title": "Tippen Sie auf die WalletConnect-Schaltfläche" - } - } - }, - "coin98": { - "qr_code": { - "step1": { - "description": "Wir empfehlen, die Coin98 Wallet auf Ihren Startbildschirm zu legen, um schneller darauf zugreifen zu können.", - "title": "Öffnen Sie die Coin98 Wallet-App" - }, - "step2": { - "description": "Sie können Ihr Wallet ganz einfach mit unserer Backup-Funktion auf Ihrem Telefon sichern.", - "title": "Erstellen oder importieren Sie ein Wallet" - }, - "step3": { - "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden.", - "title": "Tippen Sie auf die WalletConnect-Schaltfläche" - } - }, - "extension": { - "step1": { - "description": "Klicken Sie oben rechts in Ihrem Browser und heften Sie die Coin98 Wallet an, um einen einfachen Zugriff zu ermöglichen.", - "title": "Installieren Sie die Coin98 Wallet-Erweiterung" - }, - "step2": { - "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes.", - "title": "Erstellen oder importieren Sie ein Wallet" - }, - "step3": { - "description": "Sobald Sie die Coin98 Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden.", - "title": "Aktualisieren Sie Ihren Browser" - } - } - }, - "coinbase": { - "qr_code": { - "step1": { - "description": "Wir empfehlen, die Coinbase Wallet auf Ihren Startbildschirm zu legen, um schneller darauf zugreifen zu können.", - "title": "Öffnen Sie die Coinbase Wallet-App" - }, - "step2": { - "description": "Sie können Ihr Wallet problemlos mit der Cloud-Backup-Funktion sichern.", - "title": "Erstellen oder importieren Sie ein Wallet" - }, - "step3": { - "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden.", - "title": "Tippen Sie auf die Scan-Schaltfläche" - } - }, - "extension": { - "step1": { - "description": "Wir empfehlen, die Coinbase Wallet in Ihre Taskleiste zu heften, um schneller auf Ihr Wallet zugreifen zu können.", - "title": "Installieren Sie die Coinbase Wallet-Erweiterung" - }, - "step2": { - "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem.", - "title": "Erstellen oder importieren Sie ein Wallet" - }, - "step3": { - "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden.", - "title": "Aktualisieren Sie Ihren Browser" - } - } - }, - "compass": { - "extension": { - "step1": { - "description": "Wir empfehlen, die Compass Wallet an Ihre Taskleiste zu heften, um schneller auf Ihr Wallet zuzugreifen.", - "title": "Installieren Sie die Compass Wallet Erweiterung" - }, - "step2": { - "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem.", - "title": "Erstellen oder importieren Sie ein Wallet" - }, - "step3": { - "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden.", - "title": "Aktualisieren Sie Ihren Browser" - } - } - }, - "core": { - "qr_code": { - "step1": { - "description": "Wir empfehlen, Core auf Ihren Startbildschirm zu legen, um schneller auf Ihr Wallet zuzugreifen.", - "title": "Öffnen Sie die Core-App" - }, - "step2": { - "description": "Sie können Ihr Wallet ganz einfach mit unserer Backup-Funktion auf Ihrem Telefon sichern.", - "title": "Erstellen oder importieren Sie ein Wallet" - }, - "step3": { - "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden.", - "title": "Tippen Sie auf die WalletConnect-Schaltfläche" - } - }, - "extension": { - "step1": { - "description": "Wir empfehlen, Core an Ihre Taskleiste anzuheften, um schneller auf Ihr Wallet zugreifen zu können.", - "title": "Installieren Sie die Core-Erweiterung" - }, - "step2": { - "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem.", - "title": "Erstellen oder importieren Sie ein Wallet" - }, - "step3": { - "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden.", - "title": "Aktualisieren Sie Ihren Browser" - } - } - }, - "fox": { - "qr_code": { - "step1": { - "description": "Wir empfehlen, FoxWallet auf Ihrem Startbildschirm zu platzieren, um schnelleren Zugriff zu erhalten.", - "title": "Öffnen Sie die FoxWallet-App" - }, - "step2": { - "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem.", - "title": "Erstellen oder importieren Sie ein Wallet" - }, - "step3": { - "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden.", - "title": "Tippen Sie auf die Scan-Schaltfläche" - } - } - }, - "frontier": { - "qr_code": { - "step1": { - "description": "Wir empfehlen, Frontier Wallet auf Ihrem Startbildschirm zu platzieren, um schnelleren Zugriff zu erhalten.", - "title": "Öffnen Sie die Frontier Wallet-App" - }, - "step2": { - "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem.", - "title": "Erstellen oder importieren Sie ein Wallet" - }, - "step3": { - "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden.", - "title": "Tippen Sie auf die Scan-Schaltfläche" - } - }, - "extension": { - "step1": { - "description": "Wir empfehlen, Frontier Wallet an Ihre Taskleiste anzuheften, um schneller auf Ihr Wallet zugreifen zu können.", - "title": "Installieren Sie die Frontier Wallet-Erweiterung" - }, - "step2": { - "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem.", - "title": "Erstellen oder importieren Sie ein Wallet" - }, - "step3": { - "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden.", - "title": "Aktualisieren Sie Ihren Browser" - } - } - }, - "im_token": { - "qr_code": { - "step1": { - "title": "Öffnen Sie die imToken-App", - "description": "Platzieren Sie die imToken-App auf Ihrem Startbildschirm für schnelleren Zugriff auf Ihr Wallet." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes." - }, - "step3": { - "title": "Tippen Sie auf das Scanner-Symbol in der oberen rechten Ecke", - "description": "Wählen Sie Neue Verbindung, dann scannen Sie den QR-Code und bestätigen Sie die Eingabeaufforderung, um die Verbindung herzustellen." - } - } - }, - "iopay": { - "qr_code": { - "step1": { - "description": "Wir empfehlen, ioPay auf Ihrem Startbildschirm abzulegen, um schneller darauf zuzugreifen.", - "title": "Öffnen Sie die ioPay App" - }, - "step2": { - "description": "Sie können Ihr Wallet ganz einfach mit unserer Backup-Funktion auf Ihrem Telefon sichern.", - "title": "Erstellen oder importieren Sie ein Wallet" - }, - "step3": { - "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden.", - "title": "Tippen Sie auf die WalletConnect-Schaltfläche" - } - } - }, - "kaikas": { - "extension": { - "step1": { - "description": "Wir empfehlen, Kaikas an Ihre Taskleiste zu heften, um schneller auf Ihr Wallet zuzugreifen.", - "title": "Installieren Sie die Kaikas Erweiterung" - }, - "step2": { - "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem.", - "title": "Erstellen oder importieren Sie ein Wallet" - }, - "step3": { - "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden.", - "title": "Aktualisieren Sie Ihren Browser" - } - }, - "qr_code": { - "step1": { - "title": "Öffnen Sie die Kaikas App", - "description": "Legen Sie die Kaikas App auf Ihrem Startbildschirm ab, um schneller auf Ihr Wallet zuzugreifen." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes." - }, - "step3": { - "title": "Tippen Sie auf das Scanner-Symbol in der oberen rechten Ecke", - "description": "Wählen Sie Neue Verbindung, dann scannen Sie den QR-Code und bestätigen Sie die Eingabeaufforderung, um die Verbindung herzustellen." - } - } - }, - "kaia": { - "extension": { - "step1": { - "description": "Wir empfehlen, Kaia an Ihre Taskleiste zu heften, um schneller auf Ihr Wallet zuzugreifen.", - "title": "Installieren Sie die Kaia Erweiterung" - }, - "step2": { - "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem.", - "title": "Erstellen oder importieren Sie ein Wallet" - }, - "step3": { - "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden.", - "title": "Aktualisieren Sie Ihren Browser" - } - }, - "qr_code": { - "step1": { - "title": "Öffnen Sie die Kaia-App", - "description": "Legen Sie die Kaia-App auf Ihren Startbildschirm für schnelleren Zugriff auf Ihre Wallet." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes." - }, - "step3": { - "title": "Tippen Sie auf das Scanner-Symbol in der oberen rechten Ecke", - "description": "Wählen Sie Neue Verbindung, dann scannen Sie den QR-Code und bestätigen Sie die Eingabeaufforderung, um die Verbindung herzustellen." - } - } - }, - "kraken": { - "qr_code": { - "step1": { - "title": "Öffnen Sie die Kraken Wallet App", - "description": "Fügen Sie die Kraken Wallet Ihrem Startbildschirm hinzu, um schneller auf Ihr Wallet zuzugreifen." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes." - }, - "step3": { - "title": "Tippen Sie auf das QR-Symbol und scannen Sie", - "description": "Tippen Sie auf das QR-Symbol auf Ihrem Startbildschirm, scannen Sie den Code und bestätigen Sie die Eingabeaufforderung, um die Verbindung herzustellen." - } - } - }, - "kresus": { - "qr_code": { - "step1": { - "title": "Öffnen Sie die Kresus Wallet App", - "description": "Fügen Sie die Kresus Wallet Ihrem Startbildschirm hinzu, um schneller auf Ihr Wallet zuzugreifen." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes." - }, - "step3": { - "title": "Tippen Sie auf das QR-Symbol und scannen Sie", - "description": "Tippen Sie auf das QR-Symbol auf Ihrem Startbildschirm, scannen Sie den Code und bestätigen Sie die Eingabeaufforderung, um die Verbindung herzustellen." - } - } - }, - "magicEden": { - "extension": { - "step1": { - "title": "Installieren Sie die Magic Eden Erweiterung", - "description": "Wir empfehlen, Magic Eden an Ihre Taskleiste zu heften, um einfacher auf Ihr Wallet zuzugreifen." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Stellen Sie sicher, dass Sie Ihre Wallet auf sichere Weise sichern. Teilen Sie niemals Ihren geheimen Wiederherstellungssatz mit anderen." - }, - "step3": { - "title": "Aktualisieren Sie Ihren Browser", - "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." - } - } - }, - "metamask": { - "qr_code": { - "step1": { - "title": "Öffnen Sie die MetaMask-App", - "description": "Wir empfehlen, MetaMask auf Ihrem Startbildschirm zu platzieren, um schnelleren Zugriff zu erhalten." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." - }, - "step3": { - "title": "Tippen Sie auf die Scan-Schaltfläche", - "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden." - } - }, - "extension": { - "step1": { - "title": "Installieren Sie die MetaMask-Erweiterung", - "description": "Wir empfehlen, MetaMask an Ihre Taskleiste anzuheften, um schneller auf Ihr Wallet zugreifen zu können." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." - }, - "step3": { - "title": "Aktualisieren Sie Ihren Browser", - "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." - } - } - }, - "nestwallet": { - "extension": { - "step1": { - "title": "Installieren Sie die NestWallet Erweiterung", - "description": "Wir empfehlen, die NestWallet an Ihre Taskleiste zu heften, um schneller auf Ihr Wallet zuzugreifen." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." - }, - "step3": { - "title": "Aktualisieren Sie Ihren Browser", - "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." - } - } - }, - "okx": { - "qr_code": { - "step1": { - "title": "Öffnen Sie die OKX Wallet-App", - "description": "Wir empfehlen, OKX Wallet auf Ihrem Startbildschirm zu platzieren, um schnelleren Zugriff zu erhalten." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." - }, - "step3": { - "title": "Tippen Sie auf die Scan-Schaltfläche", - "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden." - } - }, - "extension": { - "step1": { - "title": "Installieren Sie die OKX Wallet-Erweiterung", - "description": "Wir empfehlen, OKX Wallet an Ihre Taskleiste anzuheften, um schneller auf Ihr Wallet zugreifen zu können." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." - }, - "step3": { - "title": "Aktualisieren Sie Ihren Browser", - "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." - } - } - }, - "omni": { - "qr_code": { - "step1": { - "title": "Öffnen Sie die Omni-App", - "description": "Fügen Sie Omni Ihrem Startbildschirm hinzu, um schneller auf Ihr Wallet zuzugreifen." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes." - }, - "step3": { - "title": "Tippen Sie auf das QR-Symbol und scannen Sie", - "description": "Tippen Sie auf das QR-Symbol auf Ihrem Startbildschirm, scannen Sie den Code und bestätigen Sie die Eingabeaufforderung, um die Verbindung herzustellen." - } - } - }, - "1inch": { - "qr_code": { - "step1": { - "description": "Legen Sie die 1inch Wallet auf Ihrem Startbildschirm ab, um schneller auf Ihr Wallet zuzugreifen.", - "title": "Öffnen Sie die 1inch Wallet App" - }, - "step2": { - "description": "Erstellen Sie ein Wallet und einen Benutzernamen oder importieren Sie ein bestehendes Wallet.", - "title": "Erstellen oder importieren Sie ein Wallet" - }, - "step3": { - "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden.", - "title": "Tippen Sie auf die Schaltfläche QR-Scan" - } - } - }, - "token_pocket": { - "qr_code": { - "step1": { - "title": "Öffnen Sie die TokenPocket-App", - "description": "Wir empfehlen, TokenPocket auf Ihrem Startbildschirm zu platzieren, um schnelleren Zugriff zu erhalten." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." - }, - "step3": { - "title": "Tippen Sie auf die Scan-Schaltfläche", - "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden." - } - }, - "extension": { - "step1": { - "title": "Installieren Sie die TokenPocket-Erweiterung", - "description": "Wir empfehlen, TokenPocket an Ihre Taskleiste anzuheften, um schneller auf Ihr Wallet zugreifen zu können." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." - }, - "step3": { - "title": "Aktualisieren Sie Ihren Browser", - "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." - } - } - }, - "trust": { - "qr_code": { - "step1": { - "title": "Öffnen Sie die Trust Wallet-App", - "description": "Platzieren Sie Trust Wallet auf Ihrem Startbildschirm für schnelleren Zugriff auf Ihr Wallet." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes." - }, - "step3": { - "title": "Tippen Sie auf WalletConnect in den Einstellungen", - "description": "Wählen Sie Neue Verbindung, dann scannen Sie den QR-Code und bestätigen Sie die Eingabeaufforderung, um die Verbindung herzustellen." - } - }, - "extension": { - "step1": { - "title": "Installieren Sie die Trust Wallet-Erweiterung", - "description": "Klicken Sie oben rechts in Ihrem Browser und pinnen Sie Trust Wallet für einfachen Zugriff." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes." - }, - "step3": { - "title": "Aktualisieren Sie Ihren Browser", - "description": "Sobald Sie Trust Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." - } - } - }, - "uniswap": { - "qr_code": { - "step1": { - "title": "Öffnen Sie die Uniswap-App", - "description": "Fügen Sie Uniswap Wallet Ihrem Startbildschirm hinzu, um schneller auf Ihr Wallet zuzugreifen." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes." - }, - "step3": { - "title": "Tippen Sie auf das QR-Symbol und scannen Sie", - "description": "Tippen Sie auf das QR-Symbol auf Ihrem Startbildschirm, scannen Sie den Code und bestätigen Sie die Eingabeaufforderung, um die Verbindung herzustellen." - } - } - }, - "zerion": { - "qr_code": { - "step1": { - "title": "Öffnen Sie die Zerion-App", - "description": "Wir empfehlen, Zerion auf Ihrem Startbildschirm zu platzieren, um schnelleren Zugriff zu haben." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." - }, - "step3": { - "title": "Tippen Sie auf die Scan-Schaltfläche", - "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden." - } - }, - "extension": { - "step1": { - "title": "Installieren Sie die Zerion-Erweiterung", - "description": "Wir empfehlen, Zerion an Ihre Taskleiste anzuheften, um schnelleren Zugriff auf Ihre Wallet zu haben." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." - }, - "step3": { - "title": "Aktualisieren Sie Ihren Browser", - "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." - } - } - }, - "rainbow": { - "qr_code": { - "step1": { - "title": "Öffnen Sie die Rainbow-App", - "description": "Wir empfehlen, Rainbow auf Ihrem Startbildschirm zu platzieren, um schnelleren Zugriff auf Ihre Wallet zu haben." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Sie können Ihr Wallet ganz einfach mit unserer Backup-Funktion auf Ihrem Telefon sichern." - }, - "step3": { - "title": "Tippen Sie auf die Scan-Schaltfläche", - "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden." - } - } - }, - "enkrypt": { - "extension": { - "step1": { - "description": "Wir empfehlen, die Enkrypt Wallet an Ihre Taskleiste anzuheften, um schnelleren Zugriff auf Ihre Wallet zu haben.", - "title": "Installieren Sie die Enkrypt Wallet-Erweiterung" - }, - "step2": { - "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem.", - "title": "Erstellen oder importieren Sie ein Wallet" - }, - "step3": { - "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden.", - "title": "Aktualisieren Sie Ihren Browser" - } - } - }, - "frame": { - "extension": { - "step1": { - "description": "Wir empfehlen, Frame an Ihre Taskleiste anzuheften, um schnelleren Zugriff auf Ihre Wallet zu haben.", - "title": "Installieren Sie Frame und die zugehörige Erweiterung" - }, - "step2": { - "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem.", - "title": "Erstellen oder importieren Sie ein Wallet" - }, - "step3": { - "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden.", - "title": "Aktualisieren Sie Ihren Browser" - } - } - }, - "one_key": { - "extension": { - "step1": { - "title": "Installieren Sie die OneKey Wallet-Erweiterung", - "description": "Wir empfehlen, die OneKey Wallet an Ihre Taskleiste anzuheften, um schnelleren Zugriff auf Ihre Wallet zu haben." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." - }, - "step3": { - "title": "Aktualisieren Sie Ihren Browser", - "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." - } - } - }, - "paraswap": { - "qr_code": { - "step1": { - "title": "Öffnen Sie die ParaSwap-App", - "description": "Fügen Sie die ParaSwap Wallet zu Ihrem Startbildschirm hinzu, um schneller auf Ihre Wallet zuzugreifen." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes." - }, - "step3": { - "title": "Tippen Sie auf das QR-Symbol und scannen Sie", - "description": "Tippen Sie auf das QR-Symbol auf Ihrem Startbildschirm, scannen Sie den Code und bestätigen Sie die Eingabeaufforderung, um die Verbindung herzustellen." - } - } - }, - "phantom": { - "extension": { - "step1": { - "title": "Installieren Sie die Phantom-Erweiterung", - "description": "Wir empfehlen, Phantom an Ihre Taskleiste anzuheften, um leichteren Zugriff auf Ihre Wallet zu haben." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Stellen Sie sicher, dass Sie Ihre Wallet auf sichere Weise sichern. Teilen Sie niemals Ihren geheimen Wiederherstellungssatz mit anderen." - }, - "step3": { - "title": "Aktualisieren Sie Ihren Browser", - "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." - } - } - }, - "rabby": { - "extension": { - "step1": { - "title": "Installieren Sie die Rabby-Erweiterung", - "description": "Wir empfehlen, Rabby an Ihre Taskleiste anzuheften, um schnelleren Zugriff auf Ihre Wallet zu haben." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." - }, - "step3": { - "title": "Aktualisieren Sie Ihren Browser", - "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." - } - } - }, - "ronin": { - "qr_code": { - "step1": { - "description": "Wir empfehlen, die Ronin Wallet Ihrem Startbildschirm hinzuzufügen, um schneller darauf zuzugreifen.", - "title": "Öffnen Sie die Ronin Wallet App" - }, - "step2": { - "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem.", - "title": "Erstellen oder importieren Sie ein Wallet" - }, - "step3": { - "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden.", - "title": "Tippen Sie auf die Scan-Schaltfläche" - } - }, - "extension": { - "step1": { - "description": "Wir empfehlen, die Ronin Wallet an Ihre Taskleiste zu heften, um schneller darauf zuzugreifen.", - "title": "Installieren Sie die Ronin Wallet Erweiterung" - }, - "step2": { - "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem.", - "title": "Erstellen oder importieren Sie ein Wallet" - }, - "step3": { - "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden.", - "title": "Aktualisieren Sie Ihren Browser" - } - } - }, - "ramper": { - "extension": { - "step1": { - "title": "Installieren Sie die Ramper Erweiterung", - "description": "Wir empfehlen, Ramper an Ihre Taskleiste zu heften, um einfacher darauf zugreifen zu können." - }, - "step2": { - "title": "Erstellen Sie eine Wallet", - "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." - }, - "step3": { - "title": "Aktualisieren Sie Ihren Browser", - "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." - } - } - }, - "safeheron": { - "extension": { - "step1": { - "title": "Installieren Sie die Core-Erweiterung", - "description": "Wir empfehlen, Safeheron an Ihre Taskleiste anzuheften, um schnelleren Zugriff auf Ihre Wallet zu haben." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." - }, - "step3": { - "title": "Aktualisieren Sie Ihren Browser", - "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." - } - } - }, - "taho": { - "extension": { - "step1": { - "title": "Installieren Sie die Taho-Erweiterung", - "description": "Wir empfehlen, Taho an Ihre Taskleiste anzuheften, um schnelleren Zugriff auf Ihre Wallet zu haben." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." - }, - "step3": { - "title": "Aktualisieren Sie Ihren Browser", - "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." - } - } - }, - "wigwam": { - "extension": { - "step1": { - "title": "Installieren Sie die Wigwam-Erweiterung", - "description": "Wir empfehlen, Wigwam an Ihre Taskleiste anzuheften, um einen schnelleren Zugriff auf Ihr Wallet zu ermöglichen." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." - }, - "step3": { - "title": "Aktualisieren Sie Ihren Browser", - "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." - } - } - }, - "talisman": { - "extension": { - "step1": { - "title": "Installieren Sie die Talisman-Erweiterung", - "description": "Wir empfehlen, Talisman an Ihre Taskleiste anzuheften, um schnelleren Zugriff auf Ihre Wallet zu haben." - }, - "step2": { - "title": "Erstellen oder Importieren Sie eine Ethereum-Wallet", - "description": "Stellen Sie sicher, dass Sie Ihre Wallet auf sichere Weise sichern. Teilen Sie niemals Ihre Wiederherstellungsphrase mit anderen." - }, - "step3": { - "title": "Aktualisieren Sie Ihren Browser", - "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." - } - } - }, - "xdefi": { - "extension": { - "step1": { - "title": "Installieren Sie die XDEFI Wallet-Erweiterung", - "description": "Wir empfehlen, die XDEFI Wallet an Ihre Taskleiste anzuheften, um schnelleren Zugriff auf Ihre Wallet zu haben." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." - }, - "step3": { - "title": "Aktualisieren Sie Ihren Browser", - "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." - } - } - }, - "zeal": { - "qr_code": { - "step1": { - "title": "Öffnen Sie die Zeal App", - "description": "Fügen Sie die Zeal Wallet Ihrem Startbildschirm hinzu, um schneller auf Ihr Wallet zuzugreifen." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes." - }, - "step3": { - "title": "Tippen Sie auf das QR-Symbol und scannen Sie", - "description": "Tippen Sie auf das QR-Symbol auf Ihrem Startbildschirm, scannen Sie den Code und bestätigen Sie die Eingabeaufforderung, um die Verbindung herzustellen." - } - }, - "extension": { - "step1": { - "title": "Installieren Sie die Zeal-Erweiterung", - "description": "Wir empfehlen, Zeal an Ihre Taskleiste anzuheften, um schnelleren Zugriff auf Ihre Wallet zu haben." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." - }, - "step3": { - "title": "Aktualisieren Sie Ihren Browser", - "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." - } - } - }, - "safepal": { - "extension": { - "step1": { - "title": "Installieren Sie die SafePal Wallet-Erweiterung", - "description": "Klicken Sie oben rechts in Ihrem Browser und heften Sie SafePal Wallet für einfachen Zugriff an." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes." - }, - "step3": { - "title": "Aktualisieren Sie Ihren Browser", - "description": "Sobald Sie die SafePal Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." - } - }, - "qr_code": { - "step1": { - "title": "Öffnen Sie die SafePal Wallet-App", - "description": "Platzieren Sie SafePal Wallet auf Ihrem Startbildschirm, um schnelleren Zugriff auf Ihre Wallet zu haben." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes." - }, - "step3": { - "title": "Tippen Sie auf WalletConnect in den Einstellungen", - "description": "Wählen Sie Neue Verbindung, dann scannen Sie den QR-Code und bestätigen Sie die Eingabeaufforderung, um die Verbindung herzustellen." - } - } - }, - "desig": { - "extension": { - "step1": { - "title": "Installieren Sie die Desig-Erweiterung", - "description": "Wir empfehlen, Desig an Ihre Taskleiste anzuheften, um leichteren Zugriff auf Ihre Wallet zu haben." - }, - "step2": { - "title": "Erstellen Sie eine Wallet", - "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." - }, - "step3": { - "title": "Aktualisieren Sie Ihren Browser", - "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." - } - } - }, - "subwallet": { - "extension": { - "step1": { - "title": "Installieren Sie die SubWallet-Erweiterung", - "description": "Wir empfehlen, SubWallet an Ihre Taskleiste zu heften, um schneller auf Ihr Wallet zugreifen zu können." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Stellen Sie sicher, dass Sie Ihre Wallet auf sichere Weise sichern. Teilen Sie niemals Ihre Wiederherstellungsphrase mit anderen." - }, - "step3": { - "title": "Aktualisieren Sie Ihren Browser", - "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." - } - }, - "qr_code": { - "step1": { - "title": "Öffnen Sie die SubWallet-App", - "description": "Wir empfehlen, SubWallet auf Ihrem Startbildschirm abzulegen, um schneller darauf zugreifen zu können." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." - }, - "step3": { - "title": "Tippen Sie auf die Scan-Schaltfläche", - "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden." - } - } - }, - "clv": { - "extension": { - "step1": { - "title": "Installieren Sie die CLV Wallet-Erweiterung", - "description": "Wir empfehlen, CLV Wallet an Ihre Taskleiste zu heften, um schneller auf Ihr Wallet zugreifen zu können." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." - }, - "step3": { - "title": "Aktualisieren Sie Ihren Browser", - "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." - } - }, - "qr_code": { - "step1": { - "title": "Öffnen Sie die CLV Wallet-App", - "description": "Wir empfehlen, CLV Wallet auf Ihrem Startbildschirm abzulegen, um schneller darauf zugreifen zu können." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Stellen Sie sicher, dass Sie Ihr Wallet mit einer sicheren Methode sichern. Teilen Sie niemals Ihre geheime Phrase mit jemandem." - }, - "step3": { - "title": "Tippen Sie auf die Scan-Schaltfläche", - "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden." - } - } - }, - "okto": { - "qr_code": { - "step1": { - "title": "Öffnen Sie die Okto-App", - "description": "Fügen Sie Okto Ihrem Startbildschirm hinzu, um schnellen Zugriff zu erhalten" - }, - "step2": { - "title": "Erstellen Sie ein MPC-Wallet", - "description": "Erstellen Sie ein Konto und generieren Sie ein Wallet" - }, - "step3": { - "title": "Tippen Sie auf WalletConnect in den Einstellungen", - "description": "Tippen Sie auf das QR-Scan-Symbol oben rechts und bestätigen Sie die Aufforderung zum Verbinden." - } - } - }, - "ledger": { - "desktop": { - "step1": { - "title": "Öffnen Sie die Ledger Live-App", - "description": "Wir empfehlen, Ledger Live auf Ihrem Startbildschirm abzulegen, um schneller darauf zugreifen zu können." - }, - "step2": { - "title": "Richten Sie Ihr Ledger ein", - "description": "Richten Sie ein neues Ledger ein oder verbinden Sie sich mit einem bestehenden." - }, - "step3": { - "title": "Verbinden", - "description": "Eine Verbindungsmeldung erscheint, um Ihr Wallet zu verbinden." - } - }, - "qr_code": { - "step1": { - "title": "Öffnen Sie die Ledger Live-App", - "description": "Wir empfehlen, Ledger Live auf Ihrem Startbildschirm abzulegen, um schneller darauf zugreifen zu können." - }, - "step2": { - "title": "Richten Sie Ihr Ledger ein", - "description": "Sie können entweder mit der Desktop-App synchronisieren oder Ihr Ledger verbinden." - }, - "step3": { - "title": "Code scannen", - "description": "Tippen Sie auf WalletConnect und wechseln Sie dann zum Scanner. Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden." - } - } - }, - "valora": { - "qr_code": { - "step1": { - "title": "Öffnen Sie die Valora-App", - "description": "Wir empfehlen, Valora für einen schnelleren Zugriff auf Ihrem Startbildschirm zu platzieren." - }, - "step2": { - "title": "Erstellen oder importieren Sie eine Wallet", - "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes." - }, - "step3": { - "title": "Tippen Sie auf die Scan-Schaltfläche", - "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden." - } - } - }, - "gate": { - "qr_code": { - "step1": { - "title": "Öffnen Sie die Gate-App", - "description": "Wir empfehlen, Gate auf Ihrem Startbildschirm abzulegen, um schnellen Zugriff zu erhalten." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes." - }, - "step3": { - "title": "Tippen Sie auf die Scan-Schaltfläche", - "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden." - } - }, - "extension": { - "step1": { - "title": "Installieren Sie die Gate-Erweiterung", - "description": "Wir empfehlen, Gate in Ihre Taskleiste zu heften, um leichteren Zugriff auf Ihr Wallet zu haben." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Stellen Sie sicher, dass Sie Ihre Wallet auf sichere Weise sichern. Teilen Sie niemals Ihren geheimen Wiederherstellungssatz mit anderen." - }, - "step3": { - "title": "Aktualisieren Sie Ihren Browser", - "description": "Sobald Sie Ihr Wallet eingerichtet haben, klicken Sie unten, um den Browser zu aktualisieren und die Erweiterung zu laden." - } - } - }, - "xportal": { - "qr_code": { - "step1": { - "description": "Legen Sie xPortal auf Ihrem Startbildschirm ab, um schneller auf Ihr Wallet zuzugreifen.", - "title": "Öffnen Sie die xPortal-App" - }, - "step2": { - "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes.", - "title": "Erstellen oder importieren Sie ein Wallet" - }, - "step3": { - "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden.", - "title": "Tippen Sie auf die Schaltfläche QR-Scan" - } - } - }, - "mew": { - "qr_code": { - "step1": { - "description": "Wir empfehlen, MEW Wallet auf Ihrem Startbildschirm abzulegen, um schneller darauf zugreifen zu können.", - "title": "Öffnen Sie die MEW Wallet-App" - }, - "step2": { - "description": "Sie können Ihr Wallet problemlos mit der Cloud-Backup-Funktion sichern.", - "title": "Erstellen oder importieren Sie ein Wallet" - }, - "step3": { - "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden.", - "title": "Tippen Sie auf die Scan-Schaltfläche" - } - } - } - }, - "zilpay": { - "qr_code": { - "step1": { - "title": "Öffne die ZilPay-App", - "description": "Füge ZilPay zu deinem Startbildschirm hinzu, um schneller auf dein Wallet zuzugreifen." - }, - "step2": { - "title": "Erstellen oder importieren Sie ein Wallet", - "description": "Erstellen Sie ein neues Wallet oder importieren Sie ein bestehendes." - }, - "step3": { - "title": "Tippen Sie auf die Scan-Schaltfläche", - "description": "Nach dem Scannen erscheint eine Verbindungsmeldung, um Ihr Wallet zu verbinden." - } - } - } -} -`;export{e as default}; diff --git a/client2/build/assets/degen-FQQ4XGHB-CeHTs88l.js b/client2/build/assets/degen-FQQ4XGHB-CeHTs88l.js deleted file mode 100644 index 0b4d6dbfd..000000000 --- a/client2/build/assets/degen-FQQ4XGHB-CeHTs88l.js +++ /dev/null @@ -1 +0,0 @@ -var a="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2028%2028%22%3E%3Cg%20transform%3D%22translate(0%2C0)%20scale(0.7)%22%3E%3Cg%20clip-path%3D%22url(%23a)%22%3E%3Cpath%20fill%3D%22%23A36EFD%22%20d%3D%22M0%200h40v40H0z%22%2F%3E%3Cpath%20fill%3D%22%234C2897%22%20d%3D%22m11.494%2022.367.097%201.764c.006.12.051.233.127.326.531.643%202.913%202.887%208.28%202.887%205.368%200%207.721-2.215%208.272-2.875.083-.1.13-.224.139-.354l.096-1.747a44.59%2044.59%200%200%200%201.298-.747c1.037-.562%202.195.245%202.197%201.43.004%201.915-1.493%203.883-3.512%205.124-2.276%201.398-5.674%201.979-8.488%201.979-2.814%200-6.212-.58-8.488-1.98C9.493%2026.935%207.996%2024.967%208%2023.05c.002-1.184%201.16-1.99%202.197-1.429%200%200%20.658.395%201.297.746Z%22%2F%3E%3Cpath%20fill%3D%22%234C2897%22%20d%3D%22M20%209.846c4.388%200%205.578.103%207.362.308.822.095%201.482.707%201.42%201.536l-.657%208.954c-.206.06-.43.135-.682.22-1.318.442-3.385%201.135-7.444%201.135s-6.125-.693-7.444-1.136c-.252-.084-.476-.16-.682-.22l-.657-8.953c-.06-.83.596-1.456%201.42-1.536%201.763-.171%203.598-.308%207.363-.308Zm-7.812%2015.088.002.032.046.01a7.876%207.876%200%200%201-.048-.042Zm15.579.041.04-.01.003-.028a6.056%206.056%200%200%201-.043.038Z%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3CclipPath%20id%3D%22a%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M0%200h40v40H0z%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fg%3E%3C%2Fsvg%3E";export{a as default}; diff --git a/client2/build/assets/desktop-CjxZzngH.js b/client2/build/assets/desktop-CjxZzngH.js deleted file mode 100644 index df321a90b..000000000 --- a/client2/build/assets/desktop-CjxZzngH.js +++ /dev/null @@ -1,9 +0,0 @@ -import{b as c}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const t=c` - - -`;export{t as desktopSvg}; diff --git a/client2/build/assets/disconnect-BjPBJH2l.js b/client2/build/assets/disconnect-BjPBJH2l.js deleted file mode 100644 index c2a0f2667..000000000 --- a/client2/build/assets/disconnect-BjPBJH2l.js +++ /dev/null @@ -1,8 +0,0 @@ -import{b as o}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const l=o` - -`;export{l as disconnectSvg}; diff --git a/client2/build/assets/discord-v3STQ10H.js b/client2/build/assets/discord-v3STQ10H.js deleted file mode 100644 index 84a083be4..000000000 --- a/client2/build/assets/discord-v3STQ10H.js +++ /dev/null @@ -1,17 +0,0 @@ -import{b as l}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const r=l` - - - - - - - - - - -`;export{r as discordSvg}; diff --git a/client2/build/assets/es_419-JBX5FS3Q-Bk-MlIq_.js b/client2/build/assets/es_419-JBX5FS3Q-Bk-MlIq_.js deleted file mode 100644 index b93c3bd7a..000000000 --- a/client2/build/assets/es_419-JBX5FS3Q-Bk-MlIq_.js +++ /dev/null @@ -1,1427 +0,0 @@ -var e=`{ - "connect_wallet": { - "label": "Conectar la billetera", - "wrong_network": { - "label": "Red incorrecta" - } - }, - "intro": { - "title": "¿Qué es una billetera?", - "description": "Una billetera se usa para enviar, recibir, almacenar y mostrar activos digitales. También es una nueva forma de iniciar sesión, sin necesidad de crear nuevas cuentas y contraseñas en cada sitio web.", - "digital_asset": { - "title": "Un hogar para tus Activos Digitales", - "description": "Las carteras se utilizan para enviar, recibir, almacenar y mostrar activos digitales como Ethereum y NFTs." - }, - "login": { - "title": "Una nueva forma de iniciar sesión", - "description": "En lugar de crear nuevas cuentas y contraseñas en cada sitio web, simplemente conecta tu cartera." - }, - "get": { - "label": "Obtener una billetera" - }, - "learn_more": { - "label": "Obtener más información" - } - }, - "sign_in": { - "label": "Verifica tu cuenta", - "description": "Para terminar de conectar, debes firmar un mensaje en tu billetera para verificar que eres el propietario de esta cuenta.", - "message": { - "send": "Enviar mensaje", - "preparing": "Preparando mensaje...", - "cancel": "Cancelar", - "preparing_error": "Error al preparar el mensaje, ¡intenta de nuevo!" - }, - "signature": { - "waiting": "Esperando firma...", - "verifying": "Verificando firma...", - "signing_error": "Error al firmar el mensaje, ¡intenta de nuevo!", - "verifying_error": "Error al verificar la firma, ¡intenta de nuevo!", - "oops_error": "¡Ups! Algo salió mal." - } - }, - "connect": { - "label": "Conectar", - "title": "Conectar una billetera", - "new_to_ethereum": { - "description": "¿Eres nuevo en las billeteras Ethereum?", - "learn_more": { - "label": "Obtener más información" - } - }, - "learn_more": { - "label": "Obtener más información" - }, - "recent": "Reciente", - "status": { - "opening": "Abriendo %{wallet}...", - "connecting": "Conectando", - "connect_mobile": "Continuar en %{wallet}", - "not_installed": "%{wallet} no está instalado", - "not_available": "%{wallet} no está disponible", - "confirm": "Confirma la conexión en la extensión", - "confirm_mobile": "Aceptar la solicitud de conexión en la cartera" - }, - "secondary_action": { - "get": { - "description": "¿No tienes %{wallet}?", - "label": "OBTENER" - }, - "install": { - "label": "INSTALAR" - }, - "retry": { - "label": "REINTENTAR" - } - }, - "walletconnect": { - "description": { - "full": "¿Necesitas el modal oficial de WalletConnect?", - "compact": "¿Necesitas el modal de WalletConnect?" - }, - "open": { - "label": "ABRIR" - } - } - }, - "connect_scan": { - "title": "Escanea con %{wallet}", - "fallback_title": "Escanea con tu teléfono" - }, - "connector_group": { - "installed": "Instalado", - "recommended": "Recomendado", - "other": "Otro", - "popular": "Popular", - "more": "Más", - "others": "Otros" - }, - "get": { - "title": "Obtener una billetera", - "action": { - "label": "OBTENER" - }, - "mobile": { - "description": "Billetera Móvil" - }, - "extension": { - "description": "Extensión de navegador" - }, - "mobile_and_extension": { - "description": "Billetera móvil y extensión" - }, - "mobile_and_desktop": { - "description": "Billetera Móvil y de Escritorio" - }, - "looking_for": { - "title": "¿No es lo que estás buscando?", - "mobile": { - "description": "Seleccione una billetera en la pantalla principal para comenzar con un proveedor de billetera diferente." - }, - "desktop": { - "compact_description": "Seleccione una cartera en la pantalla principal para comenzar con un proveedor de cartera diferente.", - "wide_description": "Seleccione una cartera a la izquierda para comenzar con un proveedor de cartera diferente." - } - } - }, - "get_options": { - "title": "Comienza con %{wallet}", - "short_title": "Obtener %{wallet}", - "mobile": { - "title": "%{wallet} para móvil", - "description": "Use la billetera móvil para explorar el mundo de Ethereum.", - "download": { - "label": "Obtener la aplicación" - } - }, - "extension": { - "title": "%{wallet} para %{browser}", - "description": "Acceda a su billetera directamente desde su navegador web favorito.", - "download": { - "label": "Añadir a %{browser}" - } - }, - "desktop": { - "title": "%{wallet} para %{platform}", - "description": "Acceda a su billetera de forma nativa desde su potente escritorio.", - "download": { - "label": "Añadir a %{platform}" - } - } - }, - "get_mobile": { - "title": "Instalar %{wallet}", - "description": "Escanee con su teléfono para descargar en iOS o Android", - "continue": { - "label": "Continuar" - } - }, - "get_instructions": { - "mobile": { - "connect": { - "label": "Conectar" - }, - "learn_more": { - "label": "Obtener más información" - } - }, - "extension": { - "refresh": { - "label": "Actualizar" - }, - "learn_more": { - "label": "Obtener más información" - } - }, - "desktop": { - "connect": { - "label": "Conectar" - }, - "learn_more": { - "label": "Obtener más información" - } - } - }, - "chains": { - "title": "Cambiar redes", - "wrong_network": "Se detectó la red incorrecta, cambia o desconéctate para continuar.", - "confirm": "Confirmar en la cartera", - "switching_not_supported": "Tu cartera no admite cambiar las redes desde %{appName}. Intenta cambiar las redes desde tu cartera.", - "switching_not_supported_fallback": "Su billetera no admite el cambio de redes desde esta aplicación. Intente cambiar de red desde dentro de su billetera en su lugar.", - "disconnect": "Desconectar", - "connected": "Conectado" - }, - "profile": { - "disconnect": { - "label": "Desconectar" - }, - "copy_address": { - "label": "Copiar dirección", - "copied": "¡Copiado!" - }, - "explorer": { - "label": "Ver más en el explorador" - }, - "transactions": { - "description": "%{appName} transacciones aparecerán aquí...", - "description_fallback": "Tus transacciones aparecerán aquí...", - "recent": { - "title": "Transacciones recientes" - }, - "clear": { - "label": "Borrar Todo" - } - } - }, - "wallet_connectors": { - "argent": { - "qr_code": { - "step1": { - "description": "Coloque Argent en su pantalla de inicio para un acceso más rápido a su billetera.", - "title": "Abra la aplicación Argent" - }, - "step2": { - "description": "Cree una billetera y un nombre de usuario, o importe una billetera existente.", - "title": "Crear o Importar una Billetera" - }, - "step3": { - "description": "Después de escanear, aparecerá un mensaje de conexión para que conecte su billetera.", - "title": "Toque el botón Escanear QR" - } - } - }, - "berasig": { - "extension": { - "step1": { - "title": "Instala la extensión BeraSig", - "description": "Recomendamos anclar BeraSig a tu barra de tareas para acceder más fácilmente a tu cartera." - }, - "step2": { - "title": "Crea una Cartera", - "description": "Asegúrese de respaldar su billetera utilizando un método seguro. Nunca comparta su frase secreta con nadie." - }, - "step3": { - "title": "Refrescar tu navegador", - "description": "Una vez que configures tu billetera, haz clic a continuación para refrescar el navegador y cargar la extensión." - } - } - }, - "best": { - "qr_code": { - "step1": { - "title": "Abre la aplicación Best Wallet", - "description": "Agrega Best Wallet a tu pantalla de inicio para un acceso más rápido a tu billetera." - }, - "step2": { - "title": "Crear o Importar una Billetera", - "description": "Crea una nueva billetera o importa una existente." - }, - "step3": { - "title": "Toque el icono de QR y escanee", - "description": "Toca el icono QR en tu pantalla de inicio, escanea el código y confirma el prompt para conectar." - } - } - }, - "bifrost": { - "qr_code": { - "step1": { - "description": "Recomendamos poner Bifrost Wallet en su pantalla de inicio para un acceso más rápido.", - "title": "Abra la aplicación Bifrost Wallet" - }, - "step2": { - "description": "Cree o importe una billetera usando su frase de recuperación.", - "title": "Crear o Importar una Billetera" - }, - "step3": { - "description": "Después de escanear, aparecerá un aviso de conexión para que conecte su billetera.", - "title": "Toque el botón de escaneo" - } - } - }, - "bitget": { - "qr_code": { - "step1": { - "description": "Recomendamos colocar Bitget Wallet en su pantalla de inicio para un acceso más rápido.", - "title": "Abra la aplicación Bitget Wallet" - }, - "step2": { - "description": "Asegúrese de respaldar su billetera utilizando un método seguro. Nunca comparta su frase secreta con nadie.", - "title": "Crear o Importar una Billetera" - }, - "step3": { - "description": "Después de escanear, aparecerá un aviso de conexión para que pueda conectar su billetera.", - "title": "Toque el botón de escanear" - } - }, - "extension": { - "step1": { - "description": "Recomendamos anclar Bitget Wallet a su barra de tareas para un acceso más rápido a su billetera.", - "title": "Instale la extensión de la Billetera Bitget" - }, - "step2": { - "description": "Asegúrate de respaldar tu billetera utilizando un método seguro. Nunca compartas tu frase secreta con nadie.", - "title": "Crear o Importar una Billetera" - }, - "step3": { - "description": "Una vez que configures tu billetera, haz clic a continuación para refrescar el navegador y cargar la extensión.", - "title": "Refrescar tu navegador" - } - } - }, - "bitski": { - "extension": { - "step1": { - "description": "Recomendamos anclar Bitski a tu barra de tareas para un acceso más rápido a tu billetera.", - "title": "Instala la extensión Bitski" - }, - "step2": { - "description": "Asegúrate de respaldar tu billetera utilizando un método seguro. Nunca compartas tu frase secreta con nadie.", - "title": "Crear o Importar una Billetera" - }, - "step3": { - "description": "Una vez que configure su billetera, haga clic abajo para actualizar el navegador y cargar la extensión.", - "title": "Actualiza tu navegador" - } - } - }, - "bitverse": { - "qr_code": { - "step1": { - "title": "Abra la aplicación Bitverse Wallet", - "description": "Agregue Bitverse Wallet a su pantalla de inicio para un acceso más rápido a su billetera." - }, - "step2": { - "title": "Crear o Importar una Billetera", - "description": "Crea una nueva billetera o importa una existente." - }, - "step3": { - "title": "Toque el icono de QR y escanee", - "description": "Toca el icono QR en tu pantalla de inicio, escanea el código y confirma el prompt para conectar." - } - } - }, - "bloom": { - "desktop": { - "step1": { - "title": "Abra la aplicación Bloom Wallet", - "description": "Recomendamos colocar Bloom Wallet en su pantalla de inicio para un acceso más rápido." - }, - "step2": { - "description": "Cree o importe una billetera usando su frase de recuperación.", - "title": "Crear o Importar una Billetera" - }, - "step3": { - "description": "Después de tener una billetera, haga clic en Conectar para conectarse a través de Bloom. Aparecerá un aviso de conexión en la aplicación para que confirme la conexión.", - "title": "Haga clic en Conectar" - } - } - }, - "bybit": { - "qr_code": { - "step1": { - "description": "Recomendamos poner Bybit en su pantalla de inicio para un acceso más rápido a su billetera.", - "title": "Abra la aplicación Bybit" - }, - "step2": { - "description": "Puede respaldar fácilmente su billetera utilizando nuestra función de respaldo en su teléfono.", - "title": "Crear o Importar una Billetera" - }, - "step3": { - "description": "Después de escanear, aparecerá un mensaje de conexión para que conecte su billetera.", - "title": "Toque el botón de escaneo" - } - }, - "extension": { - "step1": { - "description": "Haga clic en la parte superior derecha de su navegador y ancle Bybit Wallet para un acceso fácil.", - "title": "Instale la extensión Bybit Wallet" - }, - "step2": { - "description": "Crea una nueva billetera o importa una existente.", - "title": "Crear o Importar una billetera" - }, - "step3": { - "description": "Una vez que haya configurado Bybit Wallet, haga clic a continuación para actualizar el navegador y cargar la extensión.", - "title": "Refrescar tu navegador" - } - } - }, - "binance": { - "qr_code": { - "step1": { - "description": "Recomendamos poner Binance en tu pantalla de inicio para un acceso más rápido a tu billetera.", - "title": "Abre la aplicación Binance" - }, - "step2": { - "description": "Puede respaldar fácilmente su billetera utilizando nuestra función de respaldo en su teléfono.", - "title": "Crear o Importar una Billetera" - }, - "step3": { - "description": "Después de escanear, aparecerá un mensaje de conexión para que conecte su billetera.", - "title": "Toque el botón WalletConnect" - } - } - }, - "coin98": { - "qr_code": { - "step1": { - "description": "Recomendamos poner Coin98 Wallet en la pantalla de inicio para un acceso más rápido a su billetera.", - "title": "Abra la aplicación Coin98 Wallet" - }, - "step2": { - "description": "Puede respaldar fácilmente su billetera utilizando nuestra función de respaldo en su teléfono.", - "title": "Crear o Importar una Billetera" - }, - "step3": { - "description": "Después de escanear, aparecerá un aviso de conexión para que conecte su billetera.", - "title": "Toque el botón WalletConnect" - } - }, - "extension": { - "step1": { - "description": "Haga clic en la parte superior derecha de su navegador y fije Coin98 Wallet para un fácil acceso.", - "title": "Instale la extensión Coin98 Wallet" - }, - "step2": { - "description": "Crea una nueva billetera o importa una existente.", - "title": "Crear o Importar una billetera" - }, - "step3": { - "description": "Una vez que configures Coin98 Wallet, haz clic a continuación para refrescar el navegador y cargar la extensión.", - "title": "Refresca tu navegador" - } - } - }, - "coinbase": { - "qr_code": { - "step1": { - "description": "Recomendamos poner Coinbase Wallet en tu pantalla de inicio para un acceso más rápido.", - "title": "Abre la aplicación de la Billetera Coinbase" - }, - "step2": { - "description": "Puedes respaldar tu billetera fácilmente utilizando la función de respaldo en la nube.", - "title": "Crear o Importar una Billetera" - }, - "step3": { - "description": "Después de escanear, aparecerá un aviso de conexión para que conectes tu billetera.", - "title": "Pulsa el botón de escanear" - } - }, - "extension": { - "step1": { - "description": "Te recomendamos anclar la Billetera Coinbase a tu barra de tareas para un acceso más rápido a tu billetera.", - "title": "Instala la extensión de la Billetera Coinbase" - }, - "step2": { - "description": "Asegúrate de respaldar tu billetera utilizando un método seguro. Nunca compartas tu frase secreta con nadie.", - "title": "Crear o Importar una Billetera" - }, - "step3": { - "description": "Una vez que configure su billetera, haga clic abajo para refrescar el navegador y cargar la extensión.", - "title": "Refresca tu navegador" - } - } - }, - "compass": { - "extension": { - "step1": { - "description": "Recomendamos anclar la Billetera Compass a tu barra de tareas para un acceso más rápido a tu billetera.", - "title": "Instala la extensión de la Billetera Compass" - }, - "step2": { - "description": "Asegúrese de respaldar su billetera utilizando un método seguro. Nunca comparta su frase secreta con nadie.", - "title": "Crear o Importar una Billetera" - }, - "step3": { - "description": "Una vez que configures tu billetera, haz clic a continuación para refrescar el navegador y cargar la extensión.", - "title": "Refrescar tu navegador" - } - } - }, - "core": { - "qr_code": { - "step1": { - "description": "Recomendamos poner Core en su pantalla de inicio para un acceso más rápido a su billetera.", - "title": "Abra la aplicación Core" - }, - "step2": { - "description": "Puedes respaldar fácilmente tu billetera utilizando nuestra función de respaldo en tu teléfono.", - "title": "Crear o Importar una Billetera" - }, - "step3": { - "description": "Después de escanear, aparecerá un aviso de conexión para que conectes tu billetera.", - "title": "Toque el botón WalletConnect" - } - }, - "extension": { - "step1": { - "description": "Recomendamos fijar Core a tu barra de tareas para acceder más rápido a tu billetera.", - "title": "Instala la extensión Core" - }, - "step2": { - "description": "Asegúrate de hacer una copia de seguridad de tu billetera utilizando un método seguro. Nunca compartas tu frase secreta con nadie.", - "title": "Crear o Importar una Billetera" - }, - "step3": { - "description": "Una vez que configures tu billetera, haz clic a continuación para refrescar el navegador y cargar la extensión.", - "title": "Refresca tu navegador" - } - } - }, - "fox": { - "qr_code": { - "step1": { - "description": "Recomendamos poner FoxWallet en tu pantalla de inicio para un acceso más rápido.", - "title": "Abre la aplicación FoxWallet" - }, - "step2": { - "description": "Asegúrate de respaldar tu billetera utilizando un método seguro. Nunca compartas tu frase secreta con nadie.", - "title": "Crear o Importar una Billetera" - }, - "step3": { - "description": "Después de escanear, aparecerá una solicitud de conexión para que conectes tu billetera.", - "title": "Toca el botón de escanear" - } - } - }, - "frontier": { - "qr_code": { - "step1": { - "description": "Recomendamos poner la Billetera Frontier en tu pantalla principal para un acceso más rápido.", - "title": "Abre la aplicación de la Billetera Frontier" - }, - "step2": { - "description": "Asegúrate de respaldar tu billetera utilizando un método seguro. Nunca compartas tu frase secreta con nadie.", - "title": "Crear o Importar una Billetera" - }, - "step3": { - "description": "Después de escanear, aparecerá un mensaje para que conectes tu billetera.", - "title": "Haz clic en el botón de escaneo" - } - }, - "extension": { - "step1": { - "description": "Recomendamos anclar la billetera Frontier a tu barra de tareas para un acceso más rápido a tu billetera.", - "title": "Instala la extensión de la billetera Frontier" - }, - "step2": { - "description": "Asegúrese de hacer una copia de seguridad de su billetera utilizando un método seguro. Nunca comparta su frase secreta con nadie.", - "title": "Crear o Importar una Billetera" - }, - "step3": { - "description": "Una vez que configure su billetera, haga clic a continuación para actualizar el navegador y cargar la extensión.", - "title": "Actualizar tu navegador" - } - } - }, - "im_token": { - "qr_code": { - "step1": { - "title": "Abrir la aplicación imToken", - "description": "Pon la aplicación imToken en tu pantalla de inicio para un acceso más rápido a tu billetera." - }, - "step2": { - "title": "Crear o Importar una Billetera", - "description": "Crea una nueva billetera o importa una existente." - }, - "step3": { - "title": "Toca el Icono del Escáner en la esquina superior derecha", - "description": "Elija Nueva Conexión, luego escanee el código QR y confirme el aviso para conectar." - } - } - }, - "iopay": { - "qr_code": { - "step1": { - "description": "Recomendamos poner ioPay en tu pantalla de inicio para un acceso más rápido a tu billetera.", - "title": "Abre la aplicación ioPay" - }, - "step2": { - "description": "Puede respaldar fácilmente su billetera utilizando nuestra función de respaldo en su teléfono.", - "title": "Crear o Importar una Billetera" - }, - "step3": { - "description": "Después de escanear, aparecerá un mensaje de conexión para que conecte su billetera.", - "title": "Toque el botón WalletConnect" - } - } - }, - "kaikas": { - "extension": { - "step1": { - "description": "Recomendamos anclar Kaikas a su barra de tareas para un acceso más rápido a su billetera.", - "title": "Instale la extensión Kaikas" - }, - "step2": { - "description": "Asegúrese de respaldar su billetera utilizando un método seguro. Nunca comparta su frase secreta con nadie.", - "title": "Crear o Importar una Billetera" - }, - "step3": { - "description": "Una vez que configures tu billetera, haz clic a continuación para refrescar el navegador y cargar la extensión.", - "title": "Refrescar tu navegador" - } - }, - "qr_code": { - "step1": { - "title": "Abra la aplicación Kaikas", - "description": "Ponga la aplicación Kaikas en su pantalla de inicio para un acceso más rápido a su billetera." - }, - "step2": { - "title": "Crear o Importar una Billetera", - "description": "Crea una nueva billetera o importa una existente." - }, - "step3": { - "title": "Toca el Icono del Escáner en la esquina superior derecha", - "description": "Elija Nueva Conexión, luego escanee el código QR y confirme el aviso para conectar." - } - } - }, - "kaia": { - "extension": { - "step1": { - "description": "Recomendamos anclar Kaia a tu barra de tareas para un acceso más rápido a tu billetera.", - "title": "Instala la extensión Kaia" - }, - "step2": { - "description": "Asegúrese de respaldar su billetera utilizando un método seguro. Nunca comparta su frase secreta con nadie.", - "title": "Crear o Importar una Billetera" - }, - "step3": { - "description": "Una vez que configures tu billetera, haz clic a continuación para refrescar el navegador y cargar la extensión.", - "title": "Refrescar tu navegador" - } - }, - "qr_code": { - "step1": { - "title": "Abre la aplicación Kaia", - "description": "Pon la aplicación Kaia en tu pantalla de inicio para un acceso más rápido a tu billetera." - }, - "step2": { - "title": "Crear o Importar una Billetera", - "description": "Crea una nueva billetera o importa una existente." - }, - "step3": { - "title": "Toca el Icono del Escáner en la esquina superior derecha", - "description": "Elija Nueva Conexión, luego escanee el código QR y confirme el aviso para conectar." - } - } - }, - "kraken": { - "qr_code": { - "step1": { - "title": "Abre la aplicación Kraken Wallet", - "description": "Agrega la Billetera Kraken a tu pantalla de inicio para un acceso más rápido a tu billetera." - }, - "step2": { - "title": "Crear o Importar una Billetera", - "description": "Crea una nueva billetera o importa una existente." - }, - "step3": { - "title": "Toque el icono de QR y escanee", - "description": "Toca el icono QR en tu pantalla de inicio, escanea el código y confirma el prompt para conectar." - } - } - }, - "kresus": { - "qr_code": { - "step1": { - "title": "Abra la aplicación Kresus Wallet", - "description": "Agregue Kresus Wallet a su pantalla de inicio para un acceso más rápido a su billetera." - }, - "step2": { - "title": "Crear o Importar una Billetera", - "description": "Crea una nueva billetera o importa una existente." - }, - "step3": { - "title": "Toque el icono de QR y escanee", - "description": "Toca el icono QR en tu pantalla de inicio, escanea el código y confirma el prompt para conectar." - } - } - }, - "magicEden": { - "extension": { - "step1": { - "title": "Instala la extensión de Magic Eden", - "description": "Recomendamos anclar Magic Eden a tu barra de tareas para acceder más fácilmente a tu billetera." - }, - "step2": { - "title": "Crear o Importar una Billetera", - "description": "Asegúrese de respaldar su billetera usando un método seguro. Nunca comparta su frase secreta de recuperación con nadie." - }, - "step3": { - "title": "Refrescar tu navegador", - "description": "Una vez que configures tu billetera, haz clic a continuación para refrescar el navegador y cargar la extensión." - } - } - }, - "metamask": { - "qr_code": { - "step1": { - "title": "Abre la aplicación MetaMask", - "description": "Recomendamos colocar MetaMask en tu pantalla de inicio para un acceso más rápido." - }, - "step2": { - "title": "Crear o Importar una Billetera", - "description": "Asegúrate de respaldar tu billetera utilizando un método seguro. Nunca compartas tu frase secreta con nadie." - }, - "step3": { - "title": "Toca el botón de escanear", - "description": "Después de escanear, aparecerá un aviso de conexión para que conectes tu billetera." - } - }, - "extension": { - "step1": { - "title": "Instala la extensión MetaMask", - "description": "Recomendamos anclar MetaMask a tu barra de tareas para un acceso más rápido a tu billetera." - }, - "step2": { - "title": "Crear o Importar una Billetera", - "description": "Asegúrate de hacer una copia de seguridad de tu billetera usando un método seguro. Nunca compartas tu frase secreta con nadie." - }, - "step3": { - "title": "Refresca tu navegador", - "description": "Una vez que configures tu billetera, haz clic abajo para refrescar el navegador y cargar la extensión." - } - } - }, - "nestwallet": { - "extension": { - "step1": { - "title": "Instala la extensión NestWallet", - "description": "Recomendamos fijar NestWallet a tu barra de tareas para un acceso más rápido a tu billetera." - }, - "step2": { - "title": "Crear o Importar una Billetera", - "description": "Asegúrese de respaldar su billetera utilizando un método seguro. Nunca comparta su frase secreta con nadie." - }, - "step3": { - "title": "Refrescar tu navegador", - "description": "Una vez que configures tu billetera, haz clic a continuación para refrescar el navegador y cargar la extensión." - } - } - }, - "okx": { - "qr_code": { - "step1": { - "title": "Abre la aplicación OKX Wallet", - "description": "Recomendamos colocar OKX Wallet en tu pantalla de inicio para un acceso más rápido." - }, - "step2": { - "title": "Crear o Importar una Billetera", - "description": "Asegúrate de respaldar tu billetera usando un método seguro. Nunca compartas tu frase secreta con nadie." - }, - "step3": { - "title": "Toca el botón de escanear", - "description": "Después de escanear, aparecerá un aviso de conexión para que conectes tu billetera." - } - }, - "extension": { - "step1": { - "title": "Instala la extensión de Billetera OKX", - "description": "Recomendamos anclar la Billetera OKX a tu barra de tareas para un acceso más rápido a tu billetera." - }, - "step2": { - "title": "Crear o Importar una Billetera", - "description": "Asegúrate de respaldar tu billetera usando un método seguro. Nunca compartas tu frase secreta con nadie." - }, - "step3": { - "title": "Refresca tu navegador", - "description": "Una vez que configure su billetera, haga clic abajo para actualizar el navegador y cargar la extensión." - } - } - }, - "omni": { - "qr_code": { - "step1": { - "title": "Abra la aplicación Omni", - "description": "Agregue Omni a su pantalla de inicio para un acceso más rápido a su billetera." - }, - "step2": { - "title": "Crear o Importar una Billetera", - "description": "Crear una nueva billetera o importar una existente." - }, - "step3": { - "title": "Toque el icono de QR y escanee", - "description": "Toca el icono QR en tu pantalla principal, escanea el código y confirma el aviso para conectar." - } - } - }, - "1inch": { - "qr_code": { - "step1": { - "description": "Ponga 1inch Wallet en su pantalla de inicio para un acceso más rápido a su billetera.", - "title": "Abra la aplicación 1inch Wallet" - }, - "step2": { - "description": "Cree una billetera y un nombre de usuario, o importe una billetera existente.", - "title": "Crear o Importar una Billetera" - }, - "step3": { - "description": "Después de escanear, aparecerá un mensaje de conexión para que conecte su billetera.", - "title": "Toque el botón Escanear QR" - } - } - }, - "token_pocket": { - "qr_code": { - "step1": { - "title": "Abre la aplicación TokenPocket", - "description": "Recomendamos colocar TokenPocket en tu pantalla principal para un acceso más rápido." - }, - "step2": { - "title": "Crear o importar una Billetera", - "description": "Asegúrate de respaldar tu billetera utilizando un método seguro. Nunca compartas tu frase secreta con nadie." - }, - "step3": { - "title": "Toca el botón de escaneo", - "description": "Después de escanear, aparecerá una solicitud de conexión para que puedas conectar tu billetera." - } - }, - "extension": { - "step1": { - "title": "Instala la extensión TokenPocket", - "description": "Recomendamos anclar TokenPocket a tu barra de tareas para un acceso más rápido a tu billetera." - }, - "step2": { - "title": "Crear o Importar una Billetera", - "description": "Asegúrate de respaldar tu billetera utilizando un método seguro. Nunca compartas tu frase secreta con nadie." - }, - "step3": { - "title": "Actualiza tu navegador", - "description": "Una vez que configures tu billetera, haz clic a continuación para actualizar el navegador y cargar la extensión." - } - } - }, - "trust": { - "qr_code": { - "step1": { - "title": "Abre la aplicación Trust Wallet", - "description": "Ubica Trust Wallet en tu pantalla de inicio para un acceso más rápido a tu billetera." - }, - "step2": { - "title": "Crear o Importar una Billetera", - "description": "Crea una nueva billetera o importa una existente." - }, - "step3": { - "title": "Toca WalletConnect en Configuraciones", - "description": "Elige Nueva Conexión, luego escanea el código QR y confirma el aviso para conectar." - } - }, - "extension": { - "step1": { - "title": "Instala la extensión de Trust Wallet", - "description": "Haz clic en la parte superior derecha de tu navegador y fija Trust Wallet para un fácil acceso." - }, - "step2": { - "title": "Crea o Importa una billetera", - "description": "Crea una nueva billetera o importa una existente." - }, - "step3": { - "title": "Refresca tu navegador", - "description": "Una vez que configures Trust Wallet, haz clic abajo para refrescar el navegador y cargar la extensión." - } - } - }, - "uniswap": { - "qr_code": { - "step1": { - "title": "Abre la aplicación Uniswap", - "description": "Agrega la billetera Uniswap a tu pantalla de inicio para un acceso más rápido a tu billetera." - }, - "step2": { - "title": "Crear o Importar una Billetera", - "description": "Crea una nueva billetera o importa una existente." - }, - "step3": { - "title": "Toca el icono QR y escanea", - "description": "Toca el icono QR en tu pantalla de inicio, escanea el código y confirma el prompt para conectar." - } - } - }, - "zerion": { - "qr_code": { - "step1": { - "title": "Abre la aplicación Zerion", - "description": "Recomendamos poner Zerion en tu pantalla de inicio para un acceso más rápido." - }, - "step2": { - "title": "Crear o Importar una Billetera", - "description": "Asegúrate de hacer una copia de seguridad de tu billetera utilizando un método seguro. Nunca compartas tu frase secreta con nadie." - }, - "step3": { - "title": "Toca el botón de escanear", - "description": "Después de escanear, aparecerá un aviso de conexión para que conectes tu billetera." - } - }, - "extension": { - "step1": { - "title": "Instala la extensión Zerion", - "description": "Recomendamos anclar Zerion a tu barra de tareas para un acceso más rápido a tu billetera." - }, - "step2": { - "title": "Crear o Importar una Billetera", - "description": "Asegúrese de respaldar su billetera usando un método seguro. Nunca comparta su frase secreta con nadie." - }, - "step3": { - "title": "Actualiza tu navegador", - "description": "Una vez que configures tu billetera, haz clic a continuación para actualizar el navegador y cargar la extensión." - } - } - }, - "rainbow": { - "qr_code": { - "step1": { - "title": "Abre la aplicación Rainbow", - "description": "Recomendamos poner Rainbow en tu pantalla de inicio para un acceso más rápido a tu billetera." - }, - "step2": { - "title": "Crear o Importar una Billetera", - "description": "Puedes respaldar fácilmente tu billetera usando nuestra función de respaldo en tu teléfono." - }, - "step3": { - "title": "Toca el botón de escanear", - "description": "Después de escanear, aparecerá una solicitud de conexión para que conectes tu billetera." - } - } - }, - "enkrypt": { - "extension": { - "step1": { - "description": "Recomendamos anclar la Billetera Enkrypt a tu barra de tareas para un acceso más rápido a tu billetera.", - "title": "Instala la extensión de Billetera Enkrypt" - }, - "step2": { - "description": "Asegúrate de respaldar tu billetera utilizando un método seguro. Nunca compartas tu frase secreta con nadie.", - "title": "Crear o Importar una Billetera" - }, - "step3": { - "description": "Una vez que configures tu billetera, haz clic abajo para refrescar el navegador y cargar la extensión.", - "title": "Refresca tu navegador" - } - } - }, - "frame": { - "extension": { - "step1": { - "description": "Recomendamos anclar Frame a tu barra de tareas para un acceso más rápido a tu billetera.", - "title": "Instala Frame y la extensión complementaria" - }, - "step2": { - "description": "Asegúrate de respaldar tu billetera utilizando un método seguro. Nunca compartas tu frase secreta con nadie.", - "title": "Crear o Importar una Billetera" - }, - "step3": { - "description": "Una vez que configures tu billetera, haz clic a continuación para refrescar el navegador y cargar la extensión.", - "title": "Refresca tu navegador" - } - } - }, - "one_key": { - "extension": { - "step1": { - "title": "Instale la extensión de Billetera OneKey", - "description": "Recomendamos anclar la Billetera OneKey a tu barra de tareas para un acceso más rápido a tu billetera." - }, - "step2": { - "title": "Crear o Importar una Billetera", - "description": "Asegúrese de respaldar su billetera usando un método seguro. Nunca comparta su frase secreta con nadie." - }, - "step3": { - "title": "Actualiza tu navegador", - "description": "Una vez que configures tu billetera, haz clic a continuación para actualizar el navegador y cargar la extensión." - } - } - }, - "paraswap": { - "qr_code": { - "step1": { - "title": "Abre la aplicación ParaSwap", - "description": "Agrega ParaSwap Wallet a tu pantalla de inicio para un acceso más rápido a tu billetera." - }, - "step2": { - "title": "Crear o Importar una Billetera", - "description": "Crea una nueva billetera o importa una existente." - }, - "step3": { - "title": "Toque el icono de QR y escanee", - "description": "Toca el icono QR en tu pantalla de inicio, escanea el código y confirma el prompt para conectar." - } - } - }, - "phantom": { - "extension": { - "step1": { - "title": "Instala la extensión Phantom", - "description": "Recomendamos fijar Phantom a tu barra de tareas para un acceso más fácil a tu billetera." - }, - "step2": { - "title": "Crear o Importar una Billetera", - "description": "Asegúrese de respaldar su billetera usando un método seguro. Nunca comparta su frase secreta de recuperación con nadie." - }, - "step3": { - "title": "Actualiza tu navegador", - "description": "Una vez que configures tu billetera, haz clic abajo para refrescar el navegador y cargar la extensión." - } - } - }, - "rabby": { - "extension": { - "step1": { - "title": "Instala la extensión Rabby", - "description": "Recomendamos anclar Rabby a tu barra de tareas para un acceso más rápido a tu billetera." - }, - "step2": { - "title": "Crear o Importar una Billetera", - "description": "Asegúrate de hacer una copia de seguridad de tu billetera utilizando un método seguro. Nunca compartas tu frase secreta con nadie." - }, - "step3": { - "title": "Actualiza tu navegador", - "description": "Una vez que configures tu billetera, haz clic abajo para actualizar el navegador y cargar la extensión." - } - } - }, - "ronin": { - "qr_code": { - "step1": { - "description": "Recomendamos poner Ronin Wallet en su pantalla de inicio para un acceso más rápido.", - "title": "Abra la aplicación Ronin Wallet" - }, - "step2": { - "description": "Asegúrese de respaldar su billetera utilizando un método seguro. Nunca comparta su frase secreta con nadie.", - "title": "Crear o Importar una Billetera" - }, - "step3": { - "description": "Después de escanear, aparecerá un mensaje de conexión para que conecte su billetera.", - "title": "Toque el botón de escaneo" - } - }, - "extension": { - "step1": { - "description": "Recomendamos anclar Ronin Wallet a su barra de tareas para un acceso más rápido a su billetera.", - "title": "Instale la extensión Ronin Wallet" - }, - "step2": { - "description": "Asegúrese de respaldar su billetera utilizando un método seguro. Nunca comparta su frase secreta con nadie.", - "title": "Crear o Importar una Billetera" - }, - "step3": { - "description": "Una vez que configures tu billetera, haz clic a continuación para refrescar el navegador y cargar la extensión.", - "title": "Refrescar tu navegador" - } - } - }, - "ramper": { - "extension": { - "step1": { - "title": "Instale la extensión Ramper", - "description": "Recomendamos anclar Ramper a su barra de tareas para un acceso más fácil a su billetera." - }, - "step2": { - "title": "Crea una Cartera", - "description": "Asegúrese de respaldar su billetera utilizando un método seguro. Nunca comparta su frase secreta con nadie." - }, - "step3": { - "title": "Refrescar tu navegador", - "description": "Una vez que configures tu billetera, haz clic a continuación para refrescar el navegador y cargar la extensión." - } - } - }, - "safeheron": { - "extension": { - "step1": { - "title": "Instala la extensión Core", - "description": "Recomendamos anclar Safeheron a tu barra de tareas para un acceso más rápido a tu billetera." - }, - "step2": { - "title": "Crear o Importar una Billetera", - "description": "Asegúrate de respaldar tu billetera utilizando un método seguro. Nunca compartas tu frase secreta con nadie." - }, - "step3": { - "title": "Refresca tu navegador", - "description": "Una vez que configures tu billetera, haz clic abajo para refrescar el navegador y cargar la extensión." - } - } - }, - "taho": { - "extension": { - "step1": { - "title": "Instala la extensión de Taho", - "description": "Recomendamos anclar Taho a tu barra de tareas para un acceso más rápido a tu billetera." - }, - "step2": { - "title": "Crea o Importa una Billetera", - "description": "Asegúrate de respaldar tu billetera utilizando un método seguro. Nunca compartas tu frase secreta con nadie." - }, - "step3": { - "title": "Refresca tu navegador", - "description": "Una vez que configures tu billetera, haz clic abajo para refrescar el navegador y cargar la extensión." - } - } - }, - "wigwam": { - "extension": { - "step1": { - "title": "Instale la extensión Wigwam", - "description": "Recomendamos anclar Wigwam a tu barra de tareas para un acceso más rápido a tu billetera." - }, - "step2": { - "title": "Crear o Importar una Billetera", - "description": "Asegúrese de respaldar su billetera utilizando un método seguro. Nunca comparta su frase secreta con nadie." - }, - "step3": { - "title": "Refrescar tu navegador", - "description": "Una vez que configures tu billetera, haz clic a continuación para refrescar el navegador y cargar la extensión." - } - } - }, - "talisman": { - "extension": { - "step1": { - "title": "Instala la extensión de Talisman", - "description": "Recomendamos anclar Talisman a tu barra de tareas para un acceso más rápido a tu billetera." - }, - "step2": { - "title": "Crea o importa una billetera Ethereum", - "description": "Asegúrate de respaldar tu billetera usando un método seguro. Nunca compartas tu frase de recuperación con nadie." - }, - "step3": { - "title": "Recarga tu navegador", - "description": "Una vez que configures tu billetera, haz clic abajo para refrescar el navegador y cargar la extensión." - } - } - }, - "xdefi": { - "extension": { - "step1": { - "title": "Instala la extensión de la billetera XDEFI", - "description": "Recomendamos anclar XDEFI Wallet a su barra de tareas para un acceso más rápido a su billetera." - }, - "step2": { - "title": "Crear o Importar una Billetera", - "description": "Asegúrese de respaldar su billetera utilizando un método seguro. Nunca comparta su frase secreta con nadie." - }, - "step3": { - "title": "Actualice su navegador", - "description": "Una vez que configure su billetera, haga clic abajo para actualizar el navegador y cargar la extensión." - } - } - }, - "zeal": { - "qr_code": { - "step1": { - "title": "Abre la aplicación Zeal", - "description": "Agrega Zeal Wallet a tu pantalla de inicio para un acceso más rápido a tu billetera." - }, - "step2": { - "title": "Crear o Importar una Billetera", - "description": "Crea una nueva billetera o importa una existente." - }, - "step3": { - "title": "Toque el icono de QR y escanee", - "description": "Toca el icono QR en tu pantalla de inicio, escanea el código y confirma el prompt para conectar." - } - }, - "extension": { - "step1": { - "title": "Instale la extensión Zeal", - "description": "Recomendamos anclar Zeal a su barra de tareas para un acceso más rápido a su billetera." - }, - "step2": { - "title": "Crear o Importar una Billetera", - "description": "Asegúrese de respaldar su billetera utilizando un método seguro. Nunca comparta su frase secreta con nadie." - }, - "step3": { - "title": "Refrescar tu navegador", - "description": "Una vez que configures tu billetera, haz clic a continuación para refrescar el navegador y cargar la extensión." - } - } - }, - "safepal": { - "extension": { - "step1": { - "title": "Instale la extensión de la billetera SafePal", - "description": "Haga clic en la esquina superior derecha de su navegador y ancle SafePal Wallet para un fácil acceso." - }, - "step2": { - "title": "Crear o Importar una billetera", - "description": "Crea una nueva billetera o importa una existente." - }, - "step3": { - "title": "Refrescar tu navegador", - "description": "Una vez que configure la Billetera SafePal, haga clic abajo para refrescar el navegador y cargar la extensión." - } - }, - "qr_code": { - "step1": { - "title": "Abra la aplicación Billetera SafePal", - "description": "Coloque la Billetera SafePal en su pantalla de inicio para un acceso más rápido a su billetera." - }, - "step2": { - "title": "Crear o Importar una Billetera", - "description": "Crea una nueva billetera o importa una existente." - }, - "step3": { - "title": "Toca WalletConnect en Configuraciones", - "description": "Elija Nueva Conexión, luego escanee el código QR y confirme el aviso para conectar." - } - } - }, - "desig": { - "extension": { - "step1": { - "title": "Instala la extensión Desig", - "description": "Recomendamos anclar Desig a tu barra de tareas para acceder más fácilmente a tu cartera." - }, - "step2": { - "title": "Crea una Cartera", - "description": "Asegúrese de respaldar su billetera utilizando un método seguro. Nunca comparta su frase secreta con nadie." - }, - "step3": { - "title": "Refrescar tu navegador", - "description": "Una vez que configures tu billetera, haz clic a continuación para refrescar el navegador y cargar la extensión." - } - } - }, - "subwallet": { - "extension": { - "step1": { - "title": "Instala la extensión SubWallet", - "description": "Recomendamos anclar SubWallet a tu barra de tareas para acceder a tu cartera más rápidamente." - }, - "step2": { - "title": "Crear o Importar una Billetera", - "description": "Asegúrate de respaldar tu billetera usando un método seguro. Nunca compartas tu frase de recuperación con nadie." - }, - "step3": { - "title": "Refrescar tu navegador", - "description": "Una vez que configures tu billetera, haz clic a continuación para refrescar el navegador y cargar la extensión." - } - }, - "qr_code": { - "step1": { - "title": "Abre la aplicación SubWallet", - "description": "Recomendamos colocar SubWallet en tu pantalla principal para un acceso más rápido." - }, - "step2": { - "title": "Crear o Importar una Billetera", - "description": "Asegúrese de respaldar su billetera utilizando un método seguro. Nunca comparta su frase secreta con nadie." - }, - "step3": { - "title": "Toque el botón de escaneo", - "description": "Después de escanear, aparecerá un mensaje de conexión para que conecte su billetera." - } - } - }, - "clv": { - "extension": { - "step1": { - "title": "Instala la extensión CLV Wallet", - "description": "Recomendamos anclar la billetera CLV a tu barra de tareas para un acceso más rápido a tu billetera." - }, - "step2": { - "title": "Crear o Importar una Billetera", - "description": "Asegúrese de respaldar su billetera utilizando un método seguro. Nunca comparta su frase secreta con nadie." - }, - "step3": { - "title": "Refrescar tu navegador", - "description": "Una vez que configures tu billetera, haz clic a continuación para refrescar el navegador y cargar la extensión." - } - }, - "qr_code": { - "step1": { - "title": "Abra la aplicación CLV Wallet", - "description": "Recomendamos colocar la billetera CLV en tu pantalla de inicio para un acceso más rápido." - }, - "step2": { - "title": "Crear o Importar una Billetera", - "description": "Asegúrese de respaldar su billetera utilizando un método seguro. Nunca comparta su frase secreta con nadie." - }, - "step3": { - "title": "Toque el botón de escaneo", - "description": "Después de escanear, aparecerá un mensaje de conexión para que conecte su billetera." - } - } - }, - "okto": { - "qr_code": { - "step1": { - "title": "Abra la aplicación Okto", - "description": "Agrega Okto a tu pantalla de inicio para un acceso rápido" - }, - "step2": { - "title": "Crea una billetera MPC", - "description": "Crea una cuenta y genera una billetera" - }, - "step3": { - "title": "Toca WalletConnect en Configuraciones", - "description": "Toca el icono de Escanear QR en la parte superior derecha y confirma el mensaje para conectar." - } - } - }, - "ledger": { - "desktop": { - "step1": { - "title": "Abra la aplicación Ledger Live", - "description": "Recomendamos poner Ledger Live en su pantalla de inicio para un acceso más rápido." - }, - "step2": { - "title": "Configure su Ledger", - "description": "Configure un nuevo Ledger o conéctese a uno existente." - }, - "step3": { - "title": "Conectar", - "description": "Después de escanear, aparecerá un aviso de conexión para que conectes tu billetera." - } - }, - "qr_code": { - "step1": { - "title": "Abra la aplicación Ledger Live", - "description": "Recomendamos poner Ledger Live en su pantalla de inicio para un acceso más rápido." - }, - "step2": { - "title": "Configure su Ledger", - "description": "Puedes sincronizar con la aplicación de escritorio o conectar tu Ledger." - }, - "step3": { - "title": "Escanea el código", - "description": "Toca WalletConnect y luego cambia a Scanner. Después de escanear, aparecerá un aviso de conexión para que conectes tu billetera." - } - } - }, - "valora": { - "qr_code": { - "step1": { - "title": "Abre la aplicación Valora", - "description": "Recomendamos poner Valora en tu pantalla de inicio para un acceso más rápido." - }, - "step2": { - "title": "Crear o Importar una billetera", - "description": "Crea una nueva billetera o importa una existente." - }, - "step3": { - "title": "Toque el botón de escaneo", - "description": "Después de escanear, aparecerá un mensaje de conexión para que conecte su billetera." - } - } - }, - "gate": { - "qr_code": { - "step1": { - "title": "Abra la aplicación Gate", - "description": "Recomendamos poner Gate en tu pantalla de inicio para un acceso más rápido." - }, - "step2": { - "title": "Crear o Importar una Billetera", - "description": "Crea una nueva billetera o importa una existente." - }, - "step3": { - "title": "Toque el botón de escaneo", - "description": "Después de escanear, aparecerá un mensaje de conexión para que conecte su billetera." - } - }, - "extension": { - "step1": { - "title": "Instala la extensión de Gate", - "description": "Recomendamos fijar Gate a tu barra de tareas para un acceso más fácil a tu billetera." - }, - "step2": { - "title": "Crear o Importar una Billetera", - "description": "Asegúrese de respaldar su billetera usando un método seguro. Nunca comparta su frase secreta de recuperación con nadie." - }, - "step3": { - "title": "Refrescar tu navegador", - "description": "Una vez que configures tu billetera, haz clic a continuación para refrescar el navegador y cargar la extensión." - } - } - }, - "xportal": { - "qr_code": { - "step1": { - "description": "Coloque xPortal en su pantalla de inicio a su billetera para un acceso más rápido.", - "title": "Abra la aplicación xPortal" - }, - "step2": { - "description": "Crea una billetera o importa una existente.", - "title": "Crear o Importar una Billetera" - }, - "step3": { - "description": "Después de escanear, aparecerá un mensaje de conexión para que conecte su billetera.", - "title": "Toque el botón Escanear QR" - } - } - }, - "mew": { - "qr_code": { - "step1": { - "description": "Recomendamos colocar la billetera MEW en tu pantalla de inicio para un acceso más rápido.", - "title": "Abre la aplicación MEW Wallet" - }, - "step2": { - "description": "Puedes respaldar tu billetera fácilmente utilizando la función de respaldo en la nube.", - "title": "Crear o Importar una Billetera" - }, - "step3": { - "description": "Después de escanear, aparecerá un mensaje de conexión para que conecte su billetera.", - "title": "Toque el botón de escaneo" - } - } - } - }, - "zilpay": { - "qr_code": { - "step1": { - "title": "Abre la aplicación ZilPay", - "description": "Agrega ZilPay a tu pantalla de inicio para un acceso más rápido a tu billetera." - }, - "step2": { - "title": "Crear o Importar una Billetera", - "description": "Crea una nueva billetera o importa una existente." - }, - "step3": { - "title": "Toque el botón de escaneo", - "description": "Después de escanear, aparecerá un mensaje de conexión para que conecte su billetera." - } - } - } -} -`;export{e as default}; diff --git a/client2/build/assets/ethereum-RGGVA4PY-SWGOlkuk.js b/client2/build/assets/ethereum-RGGVA4PY-SWGOlkuk.js deleted file mode 100644 index 63d865ae3..000000000 --- a/client2/build/assets/ethereum-RGGVA4PY-SWGOlkuk.js +++ /dev/null @@ -1 +0,0 @@ -var e="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2228%22%20height%3D%2228%22%20fill%3D%22none%22%3E%3Cpath%20fill%3D%22%2325292E%22%20fill-rule%3D%22evenodd%22%20d%3D%22M14%2028a14%2014%200%201%200%200-28%2014%2014%200%200%200%200%2028Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22url(%23a)%22%20fill-opacity%3D%22.3%22%20fill-rule%3D%22evenodd%22%20d%3D%22M14%2028a14%2014%200%201%200%200-28%2014%2014%200%200%200%200%2028Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3Cpath%20fill%3D%22url(%23b)%22%20d%3D%22M8.19%2014.77%2014%2018.21l5.8-3.44-5.8%208.19-5.81-8.19Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22m14%2016.93-5.81-3.44L14%204.34l5.81%209.15L14%2016.93Z%22%2F%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22a%22%20x1%3D%220%22%20x2%3D%2214%22%20y1%3D%220%22%20y2%3D%2228%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23fff%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23fff%22%20stop-opacity%3D%220%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22b%22%20x1%3D%2214%22%20x2%3D%2214%22%20y1%3D%2214.77%22%20y2%3D%2222.96%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23fff%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23fff%22%20stop-opacity%3D%22.9%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3C%2Fsvg%3E%0A";export{e as default}; diff --git a/client2/build/assets/etherscan-DSiRCote.js b/client2/build/assets/etherscan-DSiRCote.js deleted file mode 100644 index f6b44e4d8..000000000 --- a/client2/build/assets/etherscan-DSiRCote.js +++ /dev/null @@ -1,6 +0,0 @@ -import{b as c}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const i=c` - -`;export{i as etherscanSvg}; diff --git a/client2/build/assets/events-DQ172AOg.js b/client2/build/assets/events-DQ172AOg.js deleted file mode 100644 index 565c01c07..000000000 --- a/client2/build/assets/events-DQ172AOg.js +++ /dev/null @@ -1 +0,0 @@ -var p={exports:{}},x;function T(){if(x)return p.exports;x=1;var a=typeof Reflect=="object"?Reflect:null,h=a&&typeof a.apply=="function"?a.apply:function(e,n,r){return Function.prototype.apply.call(e,n,r)},v;a&&typeof a.ownKeys=="function"?v=a.ownKeys:Object.getOwnPropertySymbols?v=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:v=function(e){return Object.getOwnPropertyNames(e)};function C(t){console&&console.warn&&console.warn(t)}var d=Number.isNaN||function(e){return e!==e};function o(){o.init.call(this)}p.exports=o,p.exports.once=M,o.EventEmitter=o,o.prototype._events=void 0,o.prototype._eventsCount=0,o.prototype._maxListeners=void 0;var L=10;function l(t){if(typeof t!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}Object.defineProperty(o,"defaultMaxListeners",{enumerable:!0,get:function(){return L},set:function(t){if(typeof t!="number"||t<0||d(t))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+t+".");L=t}}),o.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},o.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||d(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function m(t){return t._maxListeners===void 0?o.defaultMaxListeners:t._maxListeners}o.prototype.getMaxListeners=function(){return m(this)},o.prototype.emit=function(e){for(var n=[],r=1;r0&&(s=n[0]),s instanceof Error)throw s;var u=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw u.context=s,u}var c=f[e];if(c===void 0)return!1;if(typeof c=="function")h(c,this,n);else for(var O=c.length,P=b(c,O),r=0;r0&&s.length>i&&!s.warned){s.warned=!0;var u=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");u.name="MaxListenersExceededWarning",u.emitter=t,u.type=e,u.count=s.length,C(u)}return t}o.prototype.addListener=function(e,n){return y(this,e,n,!1)},o.prototype.on=o.prototype.addListener,o.prototype.prependListener=function(e,n){return y(this,e,n,!0)};function R(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function g(t,e,n){var r={fired:!1,wrapFn:void 0,target:t,type:e,listener:n},i=R.bind(r);return i.listener=n,r.wrapFn=i,i}o.prototype.once=function(e,n){return l(n),this.on(e,g(this,e,n)),this},o.prototype.prependOnceListener=function(e,n){return l(n),this.prependListener(e,g(this,e,n)),this},o.prototype.removeListener=function(e,n){var r,i,f,s,u;if(l(n),i=this._events,i===void 0)return this;if(r=i[e],r===void 0)return this;if(r===n||r.listener===n)--this._eventsCount===0?this._events=Object.create(null):(delete i[e],i.removeListener&&this.emit("removeListener",e,r.listener||n));else if(typeof r!="function"){for(f=-1,s=r.length-1;s>=0;s--)if(r[s]===n||r[s].listener===n){u=r[s].listener,f=s;break}if(f<0)return this;f===0?r.shift():j(r,f),r.length===1&&(i[e]=r[0]),i.removeListener!==void 0&&this.emit("removeListener",e,u||n)}return this},o.prototype.off=o.prototype.removeListener,o.prototype.removeAllListeners=function(e){var n,r,i;if(r=this._events,r===void 0)return this;if(r.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):r[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete r[e]),this;if(arguments.length===0){var f=Object.keys(r),s;for(i=0;i=0;i--)this.removeListener(e,n[i]);return this};function _(t,e,n){var r=t._events;if(r===void 0)return[];var i=r[e];return i===void 0?[]:typeof i=="function"?n?[i.listener||i]:[i]:n?N(i):b(i,i.length)}o.prototype.listeners=function(e){return _(this,e,!0)},o.prototype.rawListeners=function(e){return _(this,e,!1)},o.listenerCount=function(t,e){return typeof t.listenerCount=="function"?t.listenerCount(e):w.call(t,e)},o.prototype.listenerCount=w;function w(t){var e=this._events;if(e!==void 0){var n=e[t];if(typeof n=="function")return 1;if(n!==void 0)return n.length}return 0}o.prototype.eventNames=function(){return this._eventsCount>0?v(this._events):[]};function b(t,e){for(var n=new Array(e),r=0;r - - -`;export{m as exclamationTriangleSvg}; diff --git a/client2/build/assets/extension-J_aXqB0y.js b/client2/build/assets/extension-J_aXqB0y.js deleted file mode 100644 index 6208e7635..000000000 --- a/client2/build/assets/extension-J_aXqB0y.js +++ /dev/null @@ -1,8 +0,0 @@ -import{b as a}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const l=a` - -`;export{l as extensionSvg}; diff --git a/client2/build/assets/external-link-2oDLjUyE.js b/client2/build/assets/external-link-2oDLjUyE.js deleted file mode 100644 index 95eb12f89..000000000 --- a/client2/build/assets/external-link-2oDLjUyE.js +++ /dev/null @@ -1,8 +0,0 @@ -import{b as o}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const n=o` - -`;export{n as externalLinkSvg}; diff --git a/client2/build/assets/facebook-B-haw1QZ.js b/client2/build/assets/facebook-B-haw1QZ.js deleted file mode 100644 index 37354151e..000000000 --- a/client2/build/assets/facebook-B-haw1QZ.js +++ /dev/null @@ -1,26 +0,0 @@ -import{b as l}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const p=l` - - - - - - - - - - - - - - - -`;export{p as facebookSvg}; diff --git a/client2/build/assets/farcaster-kmU5_tW-.js b/client2/build/assets/farcaster-kmU5_tW-.js deleted file mode 100644 index b4653c21d..000000000 --- a/client2/build/assets/farcaster-kmU5_tW-.js +++ /dev/null @@ -1,12 +0,0 @@ -import{b as h}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const f=h` - - - - -`;export{f as farcasterSvg}; diff --git a/client2/build/assets/filters-VN7Rz8PT.js b/client2/build/assets/filters-VN7Rz8PT.js deleted file mode 100644 index eafc6f87a..000000000 --- a/client2/build/assets/filters-VN7Rz8PT.js +++ /dev/null @@ -1,8 +0,0 @@ -import{b as o}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const t=o` - -`;export{t as filtersSvg}; diff --git a/client2/build/assets/flow-5FQJFCTK-CUie2reO.js b/client2/build/assets/flow-5FQJFCTK-CUie2reO.js deleted file mode 100644 index 3d20a4d5d..000000000 --- a/client2/build/assets/flow-5FQJFCTK-CUie2reO.js +++ /dev/null @@ -1 +0,0 @@ -var C="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20100%20100%22%3E%3Ccircle%20fill%3D%22%2300ef8b%22%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%2F%3E%3Crect%20fill%3D%22%23fff%22%20x%3D%2257.82%22%20y%3D%2242.18%22%20width%3D%2214.12%22%20height%3D%2214.12%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M43.71%2C61.59a5.3%2C5.3%2C0%2C1%2C1-5.3-5.3h5.3V42.18h-5.3A19.41%2C19.41%2C0%2C1%2C0%2C57.82%2C61.59v-5.3H43.71Z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M63.12%2C35.12H79V21H63.12A19.43%2C19.43%2C0%2C0%2C0%2C43.71%2C40.41v1.77H57.82V40.41A5.3%2C5.3%2C0%2C0%2C1%2C63.12%2C35.12Z%22%2F%3E%3Cpolygon%20fill%3D%22%2316ff99%22%20points%3D%2243.71%2056.29%2057.82%2056.29%2057.82%2056.29%2057.82%2042.18%2057.82%2042.18%2043.71%2042.18%2043.71%2056.29%22%2F%3E%3C%2Fsvg%3E";export{C as default}; diff --git a/client2/build/assets/fr_FR-CM2EDAQC-DvlCXiU9.js b/client2/build/assets/fr_FR-CM2EDAQC-DvlCXiU9.js deleted file mode 100644 index 05229c79e..000000000 --- a/client2/build/assets/fr_FR-CM2EDAQC-DvlCXiU9.js +++ /dev/null @@ -1,1427 +0,0 @@ -var e=`{ - "connect_wallet": { - "label": "Connecter le portefeuille", - "wrong_network": { - "label": "Réseau incorrect" - } - }, - "intro": { - "title": "Qu'est-ce qu'un portefeuille?", - "description": "Un portefeuille est utilisé pour envoyer, recevoir, stocker et afficher des actifs numériques. C'est aussi une nouvelle façon de se connecter, sans avoir besoin de créer de nouveaux comptes et mots de passe sur chaque site.", - "digital_asset": { - "title": "Un foyer pour vos actifs numériques", - "description": "Les portefeuilles sont utilisés pour envoyer, recevoir, stocker et afficher des actifs numériques comme Ethereum et les NFTs." - }, - "login": { - "title": "Une nouvelle façon de se connecter", - "description": "Au lieu de créer de nouveaux comptes et mots de passe sur chaque site Web, connectez simplement votre portefeuille." - }, - "get": { - "label": "Obtenir un portefeuille" - }, - "learn_more": { - "label": "En savoir plus" - } - }, - "sign_in": { - "label": "Vérifiez votre compte", - "description": "Pour terminer la connexion, vous devez signer un message dans votre portefeuille pour vérifier que vous êtes le propriétaire de ce compte.", - "message": { - "send": "Envoyer le message", - "preparing": "Préparation du message...", - "cancel": "Annuler", - "preparing_error": "Erreur lors de la préparation du message, veuillez réessayer!" - }, - "signature": { - "waiting": "En attente de la signature...", - "verifying": "Vérification de la signature...", - "signing_error": "Erreur lors de la signature du message, veuillez réessayer!", - "verifying_error": "Erreur lors de la vérification de la signature, veuillez réessayer!", - "oops_error": "Oups, quelque chose a mal tourné!" - } - }, - "connect": { - "label": "Connecter", - "title": "Connecter un portefeuille", - "new_to_ethereum": { - "description": "Nouveau aux portefeuilles Ethereum?", - "learn_more": { - "label": "En savoir plus" - } - }, - "learn_more": { - "label": "En savoir plus" - }, - "recent": "Récents", - "status": { - "opening": "Ouverture %{wallet}...", - "connecting": "Connect :)ing", - "connect_mobile": "Continuer dans %{wallet}", - "not_installed": "%{wallet} n'est pas installé", - "not_available": "%{wallet} n'est pas disponible", - "confirm": "Confirmez la connexion dans l'extension", - "confirm_mobile": "Accepter la demande de connexion dans le portefeuille" - }, - "secondary_action": { - "get": { - "description": "Vous n'avez pas de %{wallet}?", - "label": "OBTENIR" - }, - "install": { - "label": "INSTALLER" - }, - "retry": { - "label": "RÉESSAYER" - } - }, - "walletconnect": { - "description": { - "full": "Vous avez besoin du modal officiel de WalletConnect ?", - "compact": "Besoin du modal de WalletConnect ?" - }, - "open": { - "label": "OUVRIR" - } - } - }, - "connect_scan": { - "title": "Scannez avec %{wallet}", - "fallback_title": "Scannez avec votre téléphone" - }, - "connector_group": { - "installed": "Installé", - "recommended": "Recommandé", - "other": "Autre", - "popular": "Populaire", - "more": "Plus", - "others": "Autres" - }, - "get": { - "title": "Obtenez un portefeuille", - "action": { - "label": "OBTENIR" - }, - "mobile": { - "description": "Portefeuille mobile" - }, - "extension": { - "description": "Extension de navigateur" - }, - "mobile_and_extension": { - "description": "Portefeuille mobile et extension" - }, - "mobile_and_desktop": { - "description": "Portefeuille mobile et de bureau" - }, - "looking_for": { - "title": "Ce n'est pas ce que vous cherchez ?", - "mobile": { - "description": "Sélectionnez un portefeuille sur l'écran principal pour commencer avec un autre fournisseur de portefeuille." - }, - "desktop": { - "compact_description": "Sélectionnez un portefeuille sur l'écran principal pour commencer avec un autre fournisseur de portefeuille.", - "wide_description": "Sélectionnez un portefeuille sur la gauche pour commencer avec un autre fournisseur de portefeuille." - } - } - }, - "get_options": { - "title": "Commencez avec %{wallet}", - "short_title": "Obtenez %{wallet}", - "mobile": { - "title": "%{wallet} pour mobile", - "description": "Utilisez le portefeuille mobile pour explorer le monde d'Ethereum.", - "download": { - "label": "Obtenez l'application" - } - }, - "extension": { - "title": "%{wallet} pour %{browser}", - "description": "Accédez à votre portefeuille directement depuis votre navigateur web préféré.", - "download": { - "label": "Ajouter à %{browser}" - } - }, - "desktop": { - "title": "%{wallet} pour %{platform}", - "description": "Accédez à votre portefeuille nativement depuis votre puissant ordinateur de bureau.", - "download": { - "label": "Ajouter à %{platform}" - } - } - }, - "get_mobile": { - "title": "Installer %{wallet}", - "description": "Scannez avec votre téléphone pour télécharger sur iOS ou Android", - "continue": { - "label": "Continuer" - } - }, - "get_instructions": { - "mobile": { - "connect": { - "label": "Connecter" - }, - "learn_more": { - "label": "En savoir plus" - } - }, - "extension": { - "refresh": { - "label": "Rafraîchir" - }, - "learn_more": { - "label": "En savoir plus" - } - }, - "desktop": { - "connect": { - "label": "Connecter" - }, - "learn_more": { - "label": "En savoir plus" - } - } - }, - "chains": { - "title": "Changer de réseau", - "wrong_network": "Mauvais réseau détecté, changez ou déconnectez-vous pour continuer.", - "confirm": "Confirmer dans le portefeuille", - "switching_not_supported": "Votre portefeuille ne supporte pas le changement de réseau depuis %{appName}. Essayez de changer de réseau depuis votre portefeuille.", - "switching_not_supported_fallback": "Votre portefeuille ne prend pas en charge le changement de réseau à partir de cette application. Essayez de changer de réseau à partir de votre portefeuille à la place.", - "disconnect": "Déconnecter", - "connected": "Connecté" - }, - "profile": { - "disconnect": { - "label": "Déconnecter" - }, - "copy_address": { - "label": "Copier l'adresse", - "copied": "Copié !" - }, - "explorer": { - "label": "Voir plus sur l'explorateur" - }, - "transactions": { - "description": "%{appName} transactions apparaîtront ici...", - "description_fallback": "Vos transactions apparaîtront ici...", - "recent": { - "title": "Transactions Récentes" - }, - "clear": { - "label": "Tout supprimer" - } - } - }, - "wallet_connectors": { - "argent": { - "qr_code": { - "step1": { - "description": "Mettez Argent sur votre écran d'accueil pour un accès plus rapide à votre portefeuille.", - "title": "Ouvrez l'application Argent" - }, - "step2": { - "description": "Créez un portefeuille et un nom d'utilisateur, ou importez un portefeuille existant.", - "title": "Créer ou Importer un Portefeuille" - }, - "step3": { - "description": "Après avoir numérisé, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille.", - "title": "Appuyez sur le bouton Scan QR" - } - } - }, - "berasig": { - "extension": { - "step1": { - "title": "Installez l'extension BeraSig", - "description": "Nous vous recommandons d'épingler BeraSig à votre barre des tâches pour un accès plus facile à votre portefeuille." - }, - "step2": { - "title": "Créer un Portefeuille", - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque." - }, - "step3": { - "title": "Rafraîchissez votre navigateur", - "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension." - } - } - }, - "best": { - "qr_code": { - "step1": { - "title": "Ouvrez l'application Best Wallet", - "description": "Ajoutez Best Wallet à votre écran d'accueil pour un accès plus rapide à votre portefeuille." - }, - "step2": { - "title": "Créer ou Importer un Portefeuille", - "description": "Créez un nouveau portefeuille ou importez-en un existant." - }, - "step3": { - "title": "Touchez l'icône QR et scannez", - "description": "Touchez l'icône QR sur votre écran d'accueil, scannez le code et confirmez l'invite pour vous connecter." - } - } - }, - "bifrost": { - "qr_code": { - "step1": { - "description": "Nous vous recommandons de mettre le portefeuille Bifrost sur votre écran d'accueil pour un accès plus rapide.", - "title": "Ouvrez l'application Bifrost Wallet" - }, - "step2": { - "description": "Créez ou importez un portefeuille en utilisant votre phrase de récupération.", - "title": "Créer ou Importer un portefeuille" - }, - "step3": { - "description": "Après votre scan, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille.", - "title": "Appuyez sur le bouton de scan" - } - } - }, - "bitget": { - "qr_code": { - "step1": { - "description": "Nous vous recommandons de placer Bitget Wallet sur votre écran d'accueil pour un accès plus rapide.", - "title": "Ouvrez l'application Bitget Wallet" - }, - "step2": { - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque.", - "title": "Créer ou Importer un portefeuille" - }, - "step3": { - "description": "Après le scan, une incitation de connexion apparaîtra pour vous permettre de connecter votre portefeuille.", - "title": "Appuyez sur le bouton de scan" - } - }, - "extension": { - "step1": { - "description": "Nous vous recommandons d'épingler Bitget Wallet à votre barre des tâches pour un accès plus rapide à votre portefeuille.", - "title": "Installez l'extension de portefeuille Bitget" - }, - "step2": { - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec personne.", - "title": "Créez ou Importez un portefeuille" - }, - "step3": { - "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension.", - "title": "Rafraîchissez votre navigateur" - } - } - }, - "bitski": { - "extension": { - "step1": { - "description": "Nous recommandons d'épingler Bitski à votre barre des tâches pour un accès plus rapide à votre portefeuille.", - "title": "Installez l'extension Bitski" - }, - "step2": { - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec qui que ce soit.", - "title": "Créer ou Importer un portefeuille" - }, - "step3": { - "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour rafraîchir le navigateur et charger l'extension.", - "title": "Rafraîchissez votre navigateur" - } - } - }, - "bitverse": { - "qr_code": { - "step1": { - "title": "Ouvrez l'application Bitverse Wallet", - "description": "Ajoutez Bitverse Wallet à votre écran d'accueil pour un accès plus rapide à votre portefeuille." - }, - "step2": { - "title": "Créer ou Importer un Portefeuille", - "description": "Créez un nouveau portefeuille ou importez-en un existant." - }, - "step3": { - "title": "Touchez l'icône QR et scannez", - "description": "Touchez l'icône QR sur votre écran d'accueil, scannez le code et confirmez l'invite pour vous connecter." - } - } - }, - "bloom": { - "desktop": { - "step1": { - "title": "Ouvrez l'application Bloom Wallet", - "description": "Nous recommandons de placer Bloom Wallet sur votre écran d'accueil pour un accès plus rapide." - }, - "step2": { - "description": "Créez ou importez un portefeuille en utilisant votre phrase de récupération.", - "title": "Créer ou Importer un Portefeuille" - }, - "step3": { - "description": "Après avoir obtenu un portefeuille, cliquez sur Connecter pour vous connecter via Bloom. Une invite de connexion apparaîtra dans l'application pour que vous confirmiez la connexion.", - "title": "Cliquez sur Connecter" - } - } - }, - "bybit": { - "qr_code": { - "step1": { - "description": "Nous recommandons de placer Bybit sur votre écran d'accueil pour un accès plus rapide à votre portefeuille.", - "title": "Ouvrez l'application Bybit" - }, - "step2": { - "description": "Vous pouvez facilement sauvegarder votre portefeuille en utilisant notre fonction de sauvegarde sur votre téléphone.", - "title": "Créer ou Importer un Portefeuille" - }, - "step3": { - "description": "Après avoir numérisé, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille.", - "title": "Appuyez sur le bouton de scan" - } - }, - "extension": { - "step1": { - "description": "Cliquez en haut à droite de votre navigateur et épinglez le portefeuille Bybit pour un accès facile.", - "title": "Installez l'extension Bybit Wallet" - }, - "step2": { - "description": "Créez un nouveau portefeuille ou importez-en un existant.", - "title": "Créer ou Importer un portefeuille" - }, - "step3": { - "description": "Une fois que vous avez configuré Bybit Wallet, cliquez ci-dessous pour rafraîchir le navigateur et charger l'extension.", - "title": "Rafraîchissez votre navigateur" - } - } - }, - "binance": { - "qr_code": { - "step1": { - "description": "Nous vous recommandons de mettre Binance sur votre écran d'accueil pour un accès plus rapide à votre portefeuille.", - "title": "Ouvrez l'application Binance" - }, - "step2": { - "description": "Vous pouvez facilement sauvegarder votre portefeuille en utilisant notre fonction de sauvegarde sur votre téléphone.", - "title": "Créer ou Importer un Portefeuille" - }, - "step3": { - "description": "Après avoir numérisé, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille.", - "title": "Appuyez sur le bouton WalletConnect" - } - } - }, - "coin98": { - "qr_code": { - "step1": { - "description": "Nous vous recommandons de placer Coin98 Wallet sur votre écran d'accueil pour un accès plus rapide à votre portefeuille.", - "title": "Ouvrez l'application Coin98 Wallet" - }, - "step2": { - "description": "Vous pouvez facilement sauvegarder votre portefeuille en utilisant notre fonction de sauvegarde sur votre téléphone.", - "title": "Créer ou Importer un portefeuille" - }, - "step3": { - "description": "Après que vous ayez scanné, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille.", - "title": "Appuyez sur le bouton WalletConnect" - } - }, - "extension": { - "step1": { - "description": "Cliquez en haut à droite de votre navigateur et épinglez Coin98 Wallet pour un accès facile.", - "title": "Installez l'extension Coin98 Wallet" - }, - "step2": { - "description": "Créez un nouveau portefeuille ou importez-en un existant.", - "title": "Créer ou Importer un portefeuille" - }, - "step3": { - "description": "Une fois que vous avez configuré Coin98 Wallet, cliquez ci-dessous pour actualiser le navigateur et charger l'extension.", - "title": "Rafraîchissez votre navigateur" - } - } - }, - "coinbase": { - "qr_code": { - "step1": { - "description": "Nous recommandons de placer Coinbase Wallet sur votre écran d'accueil pour un accès plus rapide.", - "title": "Ouvrez l'application Coinbase Wallet" - }, - "step2": { - "description": "Vous pouvez facilement sauvegarder votre portefeuille en utilisant la fonction de sauvegarde cloud.", - "title": "Créer ou Importer un portefeuille" - }, - "step3": { - "description": "Après avoir scanné, une invite de connexion s'affichera pour que vous puissiez connecter votre portefeuille.", - "title": "Appuyez sur le bouton de scan" - } - }, - "extension": { - "step1": { - "description": "Nous recommandons d'épingler Coinbase Wallet à votre barre des tâches pour un accès plus rapide à votre portefeuille.", - "title": "Installez l'extension Coinbase Wallet" - }, - "step2": { - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sûre. Ne partagez jamais votre phrase secrète avec quiconque.", - "title": "Créer ou Importer un portefeuille" - }, - "step3": { - "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension.", - "title": "Actualisez votre navigateur" - } - } - }, - "compass": { - "extension": { - "step1": { - "description": "Nous vous recommandons d'épingler Compass Wallet à votre barre des tâches pour un accès plus rapide à votre portefeuille.", - "title": "Installez l'extension Compass Wallet" - }, - "step2": { - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque.", - "title": "Créer ou Importer un Portefeuille" - }, - "step3": { - "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension.", - "title": "Rafraîchissez votre navigateur" - } - } - }, - "core": { - "qr_code": { - "step1": { - "description": "Nous recommandons de placer Core sur votre écran d'accueil pour un accès plus rapide à votre portefeuille.", - "title": "Ouvrez l'application Core" - }, - "step2": { - "description": "Vous pouvez facilement sauvegarder votre portefeuille en utilisant notre fonction de sauvegarde sur votre téléphone.", - "title": "Créer ou Importer un portefeuille" - }, - "step3": { - "description": "Après avoir scanné, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille.", - "title": "Appuyez sur le bouton WalletConnect" - } - }, - "extension": { - "step1": { - "description": "Nous recommandons d'épingler Core à votre barre des tâches pour un accès plus rapide à votre portefeuille.", - "title": "Installez l'extension Core" - }, - "step2": { - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque.", - "title": "Créez ou Importer un Portefeuille" - }, - "step3": { - "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour rafraîchir le navigateur et charger l'extension.", - "title": "Rafraîchissez votre navigateur" - } - } - }, - "fox": { - "qr_code": { - "step1": { - "description": "Nous recommandons de mettre FoxWallet sur votre écran d'accueil pour un accès plus rapide.", - "title": "Ouvrez l'application FoxWallet" - }, - "step2": { - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec personne.", - "title": "Créer ou Importer un portefeuille" - }, - "step3": { - "description": "Après avoir scanné, une invitation à la connexion apparaîtra pour vous permettre de connecter votre portefeuille.", - "title": "Appuyez sur le bouton de scan" - } - } - }, - "frontier": { - "qr_code": { - "step1": { - "description": "Nous vous recommandons de placer le portefeuille Frontier sur votre écran d'accueil pour un accès plus rapide.", - "title": "Ouvrez l'application Frontier Wallet" - }, - "step2": { - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec personne.", - "title": "Créer ou Importer un portefeuille" - }, - "step3": { - "description": "Après avoir scanné, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille.", - "title": "Appuyez sur le bouton de scan" - } - }, - "extension": { - "step1": { - "description": "Nous recommandons d'épingler Frontier Wallet à votre barre des tâches pour un accès plus rapide à votre portefeuille.", - "title": "Installez l'extension Frontier Wallet" - }, - "step2": { - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec personne.", - "title": "Créez ou importez un portefeuille" - }, - "step3": { - "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension.", - "title": "Rafraîchissez votre navigateur" - } - } - }, - "im_token": { - "qr_code": { - "step1": { - "title": "Ouvrez l'application imToken", - "description": "Placez l'application imToken sur votre écran d'accueil pour un accès plus rapide à votre portefeuille." - }, - "step2": { - "title": "Créez ou importez un portefeuille", - "description": "Créez un nouveau portefeuille ou importez-en un existant ." - }, - "step3": { - "title": "Appuyez sur l'icône du scanner dans le coin supérieur droit", - "description": "Choisissez Nouvelle Connexion, puis scannez le code QR et confirmez l'invite pour vous connecter." - } - } - }, - "iopay": { - "qr_code": { - "step1": { - "description": "Nous recommandons de placer ioPay sur votre écran d'accueil pour un accès plus rapide à votre portefeuille.", - "title": "Ouvrez l'application ioPay" - }, - "step2": { - "description": "Vous pouvez facilement sauvegarder votre portefeuille en utilisant notre fonction de sauvegarde sur votre téléphone.", - "title": "Créer ou Importer un Portefeuille" - }, - "step3": { - "description": "Après avoir numérisé, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille.", - "title": "Appuyez sur le bouton WalletConnect" - } - } - }, - "kaikas": { - "extension": { - "step1": { - "description": "Nous recommandons d'épingler Kaikas à votre barre des tâches pour un accès plus rapide à votre portefeuille.", - "title": "Installez l'extension Kaikas" - }, - "step2": { - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque.", - "title": "Créer ou Importer un Portefeuille" - }, - "step3": { - "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension.", - "title": "Rafraîchissez votre navigateur" - } - }, - "qr_code": { - "step1": { - "title": "Ouvrez l'application Kaikas", - "description": "Placez l'application Kaikas sur votre écran d'accueil pour un accès plus rapide à votre portefeuille." - }, - "step2": { - "title": "Créer ou Importer un Portefeuille", - "description": "Créez un nouveau portefeuille ou importez-en un existant." - }, - "step3": { - "title": "Appuyez sur l'icône du scanner dans le coin supérieur droit", - "description": "Choisissez Nouvelle Connexion, puis scannez le code QR et confirmez l'invite pour vous connecter." - } - } - }, - "kaia": { - "extension": { - "step1": { - "description": "Nous vous recommandons d'épingler Kaia à votre barre des tâches pour un accès plus rapide à votre portefeuille.", - "title": "Installez l'extension Kaia" - }, - "step2": { - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque.", - "title": "Créer ou Importer un Portefeuille" - }, - "step3": { - "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension.", - "title": "Rafraîchissez votre navigateur" - } - }, - "qr_code": { - "step1": { - "title": "Ouvrez l'application Kaia", - "description": "Mettez l'application Kaia sur votre écran d'accueil pour un accès plus rapide à votre portefeuille." - }, - "step2": { - "title": "Créer ou Importer un Portefeuille", - "description": "Créez un nouveau portefeuille ou importez-en un existant." - }, - "step3": { - "title": "Appuyez sur l'icône du scanner dans le coin supérieur droit", - "description": "Choisissez Nouvelle Connexion, puis scannez le code QR et confirmez l'invite pour vous connecter." - } - } - }, - "kraken": { - "qr_code": { - "step1": { - "title": "Ouvrez l'application Kraken Wallet", - "description": "Ajoutez Kraken Wallet à votre écran d'accueil pour un accès plus rapide à votre portefeuille." - }, - "step2": { - "title": "Créer ou Importer un Portefeuille", - "description": "Créez un nouveau portefeuille ou importez-en un existant." - }, - "step3": { - "title": "Touchez l'icône QR et scannez", - "description": "Touchez l'icône QR sur votre écran d'accueil, scannez le code et confirmez l'invite pour vous connecter." - } - } - }, - "kresus": { - "qr_code": { - "step1": { - "title": "Ouvrez l'application Kresus Wallet", - "description": "Ajoutez Kresus Wallet sur votre écran d'accueil pour un accès plus rapide à votre portefeuille." - }, - "step2": { - "title": "Créer ou Importer un Portefeuille", - "description": "Créez un nouveau portefeuille ou importez-en un existant." - }, - "step3": { - "title": "Touchez l'icône QR et scannez", - "description": "Touchez l'icône QR sur votre écran d'accueil, scannez le code et confirmez l'invite pour vous connecter." - } - } - }, - "magicEden": { - "extension": { - "step1": { - "title": "Installez l'extension Magic Eden", - "description": "Nous vous recommandons d'épingler Magic Eden à votre barre des tâches pour un accès plus facile à votre portefeuille." - }, - "step2": { - "title": "Créer ou Importer un Portefeuille", - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase de récupération secrète avec personne." - }, - "step3": { - "title": "Rafraîchissez votre navigateur", - "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension." - } - } - }, - "metamask": { - "qr_code": { - "step1": { - "title": "Ouvrez l'application MetaMask", - "description": "Nous vous recommandons de mettre MetaMask sur votre écran d'accueil pour un accès plus rapide." - }, - "step2": { - "title": "Créer ou Importer un Portefeuille", - "description": "Veillez à sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec qui que ce soit." - }, - "step3": { - "title": "Appuyez sur le bouton de scan", - "description": "Après avoir scanné, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille." - } - }, - "extension": { - "step1": { - "title": "Installez l’extension de MetaMask", - "description": "Nous recommandons d'épingler MetaMask à votre barre des tâches pour un accès plus rapide à votre portefeuille." - }, - "step2": { - "title": "Créer ou Importer un portefeuille", - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque." - }, - "step3": { - "title": "Rafraîchissez votre navigateur", - "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour rafraîchir le navigateur et charger l'extension." - } - } - }, - "nestwallet": { - "extension": { - "step1": { - "title": "Installez l'extension NestWallet", - "description": "Nous vous recommandons d'épingler NestWallet à votre barre des tâches pour un accès plus rapide à votre portefeuille." - }, - "step2": { - "title": "Créer ou Importer un Portefeuille", - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque." - }, - "step3": { - "title": "Rafraîchissez votre navigateur", - "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension." - } - } - }, - "okx": { - "qr_code": { - "step1": { - "title": "Ouvrez l'application OKX Wallet", - "description": "Nous recommandons de mettre OKX Wallet sur votre écran d'accueil pour un accès plus rapide." - }, - "step2": { - "title": "Créer ou Importer un portefeuille", - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque." - }, - "step3": { - "title": "Appuyez sur le bouton de numérisation", - "description": "Après avoir numérisé, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille." - } - }, - "extension": { - "step1": { - "title": "Installez l'extension de portefeuille OKX", - "description": "Nous vous recommandons d'épingler le portefeuille OKX à votre barre des tâches pour un accès plus rapide à votre portefeuille." - }, - "step2": { - "title": "Créer ou Importer un portefeuille", - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque." - }, - "step3": { - "title": "Rafraîchissez votre navigateur", - "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension." - } - } - }, - "omni": { - "qr_code": { - "step1": { - "title": "Ouvrez l'application Omni", - "description": "Ajoutez Omni à votre écran d'accueil pour un accès plus rapide à votre portefeuille." - }, - "step2": { - "title": "Créer ou Importer un Portefeuille", - "description": "Créez un nouveau portefeuille ou importez-en un existant." - }, - "step3": { - "title": "Touchez l'icône QR et scannez", - "description": "Appuyez sur l'icône QR sur votre écran d'accueil, scannez le code et confirmez l'invite pour vous connecter." - } - } - }, - "1inch": { - "qr_code": { - "step1": { - "description": "Placez 1inch Wallet sur votre écran d'accueil pour un accès plus rapide à votre portefeuille.", - "title": "Ouvrez l'application 1inch Wallet" - }, - "step2": { - "description": "Créez un portefeuille et un nom d'utilisateur, ou importez un portefeuille existant.", - "title": "Créer ou Importer un Portefeuille" - }, - "step3": { - "description": "Après avoir numérisé, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille.", - "title": "Appuyez sur le bouton Scan QR" - } - } - }, - "token_pocket": { - "qr_code": { - "step1": { - "title": "Ouvrez l'application TokenPocket", - "description": "Nous vous recommandons de mettre TokenPocket sur votre écran d'accueil pour un accès plus rapide." - }, - "step2": { - "title": "Créez ou Importer un portefeuille", - "description": "Assurez-vous de sauvegarder votre portefeuille à l'aide d'une méthode sécurisée. Ne partagez jamais votre phrase secrète avec qui que ce soit." - }, - "step3": { - "title": "Appuyez sur le bouton de scan", - "description": "Après votre scan, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille." - } - }, - "extension": { - "step1": { - "title": "Installez l'extension TokenPocket", - "description": "Nous recommandons d'épingler TokenPocket à votre barre des tâches pour un accès plus rapide à votre portefeuille." - }, - "step2": { - "title": "Créer ou Importer un portefeuille", - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec qui que ce soit." - }, - "step3": { - "title": "Rafraîchissez votre navigateur", - "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour rafraîchir le navigateur et charger l'extension." - } - } - }, - "trust": { - "qr_code": { - "step1": { - "title": "Ouvrez l'application Trust Wallet", - "description": "Placez Trust Wallet sur votre écran d'accueil pour un accès plus rapide à votre portefeuille." - }, - "step2": { - "title": "Créer ou Importer un portefeuille", - "description": "Créer un nouveau portefeuille ou en importer un existant." - }, - "step3": { - "title": "Appuyez sur WalletConnect dans les paramètres", - "description": "Choisissez Nouvelle Connexion, puis scannez le code QR et confirmez l'invite pour vous connecter." - } - }, - "extension": { - "step1": { - "title": "Installez l'extension Trust Wallet", - "description": "Cliquez en haut à droite de votre navigateur et épinglez Trust Wallet pour un accès facile." - }, - "step2": { - "title": "Créer ou importer un portefeuille", - "description": "Créer un nouveau portefeuille ou en importer un existant." - }, - "step3": { - "title": "Rafraîchissez votre navigateur", - "description": "Une fois que vous avez configuré Trust Wallet, cliquez ci-dessous pour rafraîchir le navigateur et charger l'extension." - } - } - }, - "uniswap": { - "qr_code": { - "step1": { - "title": "Ouvrez l'application Uniswap", - "description": "Ajoutez Uniswap Wallet à votre écran d'accueil pour un accès plus rapide à votre portefeuille." - }, - "step2": { - "title": "Créez ou importez un portefeuille", - "description": "Créez un nouveau portefeuille ou importez-en un existant." - }, - "step3": { - "title": "Tapez sur l'icône QR et scannez", - "description": "Touchez l'icône QR sur votre écran d'accueil, scannez le code et confirmez l'invite pour vous connecter." - } - } - }, - "zerion": { - "qr_code": { - "step1": { - "title": "Ouvrez l'application Zerion", - "description": "Nous vous recommandons de mettre Zerion sur votre écran d'accueil pour un accès plus rapide." - }, - "step2": { - "title": "Créer ou Importer un portefeuille", - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec personne." - }, - "step3": { - "title": "Appuyez sur le bouton de scan", - "description": "Une fois que vous avez scanné, une invite de connexion apparaîtra pour que vous puissiez connecter votre portefeuille." - } - }, - "extension": { - "step1": { - "title": "Installer l'extension Zerion", - "description": "Nous recommandons d'épingler Zerion à votre barre des tâches pour un accès plus rapide à votre portefeuille." - }, - "step2": { - "title": "Créez ou Importez un portefeuille", - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque." - }, - "step3": { - "title": "Rafraîchissez votre navigateur", - "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour rafraîchir le navigateur et charger l'extension." - } - } - }, - "rainbow": { - "qr_code": { - "step1": { - "title": "Ouvre l'application Rainbow", - "description": "Nous vous recommandons de mettre Rainbow sur votre écran d'accueil pour un accès plus rapide à votre portefeuille." - }, - "step2": { - "title": "Créez ou Importez un portefeuille", - "description": "Vous pouvez facilement sauvegarder votre portefeuille en utilisant notre fonction de sauvegarde sur votre téléphone." - }, - "step3": { - "title": "Appuyez sur le bouton de scan", - "description": "Après avoir scanné, une invite de connexion apparaîtra pour que vous connectiez votre portefeuille." - } - } - }, - "enkrypt": { - "extension": { - "step1": { - "description": "Nous vous recommandons d'épingler Enkrypt Wallet à votre barre des tâches pour un accès plus rapide à votre portefeuille.", - "title": "Installez l'extension Enkrypt Wallet" - }, - "step2": { - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quelqu'un.", - "title": "Créer ou Importer un portefeuille" - }, - "step3": { - "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour rafraîchir le navigateur et charger l’extension.", - "title": "Rafraîchissez votre navigateur" - } - } - }, - "frame": { - "extension": { - "step1": { - "description": "Nous vous recommandons d'épingler Frame à votre barre des tâches pour un accès plus rapide à votre portefeuille.", - "title": "Installez Frame & l'extension complémentaire" - }, - "step2": { - "description": "Assurez-vous de sauvegarder votre portefeuille à l'aide d'une méthode sécurisée. Ne partagez jamais votre phrase secrète avec personne.", - "title": "Créer ou Importer un portefeuille" - }, - "step3": { - "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour rafraîchir le navigateur et charger l'extension.", - "title": "Rafraîchissez votre navigateur" - } - } - }, - "one_key": { - "extension": { - "step1": { - "title": "Installez l'extension OneKey Wallet", - "description": "Nous vous recommandons d'épingler OneKey Wallet à votre barre des tâches pour un accès plus rapide à votre portefeuille." - }, - "step2": { - "title": "Créer ou Importer un portefeuille", - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec personne." - }, - "step3": { - "title": "Rafraîchissez votre navigateur", - "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour rafraîchir le navigateur et charger l'extension." - } - } - }, - "paraswap": { - "qr_code": { - "step1": { - "title": "Ouvrez l'application ParaSwap", - "description": "Ajoutez ParaSwap Wallet à votre écran d'accueil pour un accès plus rapide à votre portefeuille." - }, - "step2": { - "title": "Créer ou Importer un Portefeuille", - "description": "Créez un nouveau portefeuille ou importez-en un existant." - }, - "step3": { - "title": "Touchez l'icône QR et scannez", - "description": "Touchez l'icône QR sur votre écran d'accueil, scannez le code et confirmez l'invite pour vous connecter." - } - } - }, - "phantom": { - "extension": { - "step1": { - "title": "Installez l'extension Phantom", - "description": "Nous vous recommandons d'épingler Phantom à votre barre des tâches pour un accès plus facile à votre portefeuille." - }, - "step2": { - "title": "Créer ou Importer un portefeuille", - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase de récupération secrète avec personne." - }, - "step3": { - "title": "Rafraîchissez votre navigateur", - "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour rafraîchir le navigateur et charger l'extension." - } - } - }, - "rabby": { - "extension": { - "step1": { - "title": "Installez l'extension Rabby", - "description": "Nous recommandons d'épingler Rabby à votre barre des tâches pour un accès plus rapide à votre portefeuille." - }, - "step2": { - "title": "Créer ou Importer un portefeuille", - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec qui que ce soit." - }, - "step3": { - "title": "Actualisez votre navigateur", - "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension." - } - } - }, - "ronin": { - "qr_code": { - "step1": { - "description": "Nous recommandons de placer Ronin Wallet sur votre écran d'accueil pour un accès plus rapide.", - "title": "Ouvrez l'application Ronin Wallet" - }, - "step2": { - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque.", - "title": "Créer ou Importer un Portefeuille" - }, - "step3": { - "description": "Après avoir numérisé, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille.", - "title": "Appuyez sur le bouton de scan" - } - }, - "extension": { - "step1": { - "description": "Nous recommandons d'épingler Ronin Wallet à votre barre des tâches pour un accès plus rapide à votre portefeuille.", - "title": "Installez l'extension Ronin Wallet" - }, - "step2": { - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque.", - "title": "Créer ou Importer un Portefeuille" - }, - "step3": { - "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension.", - "title": "Rafraîchissez votre navigateur" - } - } - }, - "ramper": { - "extension": { - "step1": { - "title": "Installez l'extension Ramper", - "description": "Nous recommandons d'épingler Ramper à votre barre des tâches pour un accès plus facile à votre portefeuille." - }, - "step2": { - "title": "Créer un Portefeuille", - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque." - }, - "step3": { - "title": "Rafraîchissez votre navigateur", - "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension." - } - } - }, - "safeheron": { - "extension": { - "step1": { - "title": "Installez l'extension Core", - "description": "Nous recommandons d'épingler Safeheron à votre barre des tâches pour un accès plus rapide à votre portefeuille." - }, - "step2": { - "title": "Créer ou Importer un portefeuille", - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quelqu'un." - }, - "step3": { - "title": "Rafraîchissez votre navigateur", - "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour rafraîchir le navigateur et charger l'extension." - } - } - }, - "taho": { - "extension": { - "step1": { - "title": "Installez l'extension Taho", - "description": "Nous vous recommandons d'épingler Taho à votre barre des tâches pour un accès plus rapide à votre portefeuille." - }, - "step2": { - "title": "Créez ou Importez un portefeuille", - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quelqu'un." - }, - "step3": { - "title": "Rafraîchissez votre navigateur", - "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour rafraîchir le navigateur et charger l'extension." - } - } - }, - "wigwam": { - "extension": { - "step1": { - "title": "Installez l'extension Wigwam", - "description": "Nous vous recommandons d'épingler Wigwam à votre barre des tâches pour un accès plus rapide à votre portefeuille." - }, - "step2": { - "title": "Créer ou Importer un Portefeuille", - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque." - }, - "step3": { - "title": "Rafraîchissez votre navigateur", - "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension." - } - } - }, - "talisman": { - "extension": { - "step1": { - "title": "Installez l'extension Talisman", - "description": "Nous vous recommandons d'épingler Talisman à votre barre des tâches pour un accès plus rapide à votre portefeuille." - }, - "step2": { - "title": "Créer ou importer un portefeuille Ethereum", - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase de récupération avec personne." - }, - "step3": { - "title": "Rafraîchissez votre navigateur", - "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour rafraîchir le navigateur et charger l'extension." - } - } - }, - "xdefi": { - "extension": { - "step1": { - "title": "Installez l'extension du portefeuille XDEFI", - "description": "Nous vous recommandons d'épingler XDEFI Wallet à votre barre des tâches pour un accès plus rapide à votre portefeuille." - }, - "step2": { - "title": "Créer ou Importer un portefeuille", - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec qui que ce soit." - }, - "step3": { - "title": "Rafraîchissez votre navigateur", - "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour rafraîchir le navigateur et charger l'extension." - } - } - }, - "zeal": { - "qr_code": { - "step1": { - "title": "Ouvrez l'application Zeal", - "description": "Ajoutez Zeal Wallet à votre écran d'accueil pour un accès plus rapide à votre portefeuille." - }, - "step2": { - "title": "Créer ou Importer un Portefeuille", - "description": "Créez un nouveau portefeuille ou importez-en un existant." - }, - "step3": { - "title": "Touchez l'icône QR et scannez", - "description": "Touchez l'icône QR sur votre écran d'accueil, scannez le code et confirmez l'invite pour vous connecter." - } - }, - "extension": { - "step1": { - "title": "Installez l'extension Zeal", - "description": "Nous vous recommandons d'épingler Zeal à votre barre des tâches pour un accès plus rapide à votre portefeuille." - }, - "step2": { - "title": "Créer ou Importer un Portefeuille", - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque." - }, - "step3": { - "title": "Rafraîchissez votre navigateur", - "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension." - } - } - }, - "safepal": { - "extension": { - "step1": { - "title": "Installez l'extension SafePal Wallet", - "description": "Cliquez en haut à droite de votre navigateur et épinglez SafePal Wallet pour un accès facile." - }, - "step2": { - "title": "Créer ou Importer un portefeuille", - "description": "Créez un nouveau portefeuille ou importez-en un existant." - }, - "step3": { - "title": "Rafraîchissez votre navigateur", - "description": "Une fois que vous avez configuré SafePal Wallet, cliquez ci-dessous pour rafraîchir le navigateur et charger l'extension." - } - }, - "qr_code": { - "step1": { - "title": "Ouvrez l'application SafePal Wallet", - "description": "Mettez SafePal Wallet sur votre écran d'accueil pour un accès plus rapide à votre portefeuille." - }, - "step2": { - "title": "Créer ou Importer un Portefeuille", - "description": "Créez un nouveau portefeuille ou importez-en un existant." - }, - "step3": { - "title": "Appuyez sur WalletConnect dans les paramètres", - "description": "Choisissez Nouvelle Connexion, puis scannez le code QR et confirmez l'invite pour vous connecter." - } - } - }, - "desig": { - "extension": { - "step1": { - "title": "Installez l'extension Desig", - "description": "Nous vous recommandons d'épingler Desig à votre barre des tâches pour un accès plus facile à votre portefeuille." - }, - "step2": { - "title": "Créer un Portefeuille", - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque." - }, - "step3": { - "title": "Rafraîchissez votre navigateur", - "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension." - } - } - }, - "subwallet": { - "extension": { - "step1": { - "title": "Installez l'extension SubWallet", - "description": "Nous vous recommandons d'épingler SubWallet à votre barre des tâches pour un accès plus rapide à votre portefeuille." - }, - "step2": { - "title": "Créer ou Importer un Portefeuille", - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase de récupération avec personne." - }, - "step3": { - "title": "Rafraîchissez votre navigateur", - "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension." - } - }, - "qr_code": { - "step1": { - "title": "Ouvrez l'application SubWallet", - "description": "Nous vous recommandons de mettre SubWallet sur votre écran d'accueil pour un accès plus rapide." - }, - "step2": { - "title": "Créer ou Importer un Portefeuille", - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque." - }, - "step3": { - "title": "Appuyez sur le bouton de scan", - "description": "Après avoir numérisé, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille." - } - } - }, - "clv": { - "extension": { - "step1": { - "title": "Installez l'extension CLV Wallet", - "description": "Nous vous recommandons d'épingler CLV Wallet à votre barre des tâches pour un accès plus rapide à votre portefeuille." - }, - "step2": { - "title": "Créer ou Importer un Portefeuille", - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque." - }, - "step3": { - "title": "Rafraîchissez votre navigateur", - "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension." - } - }, - "qr_code": { - "step1": { - "title": "Ouvrez l'application CLV Wallet", - "description": "Nous vous recommandons de mettre CLV Wallet sur votre écran d'accueil pour un accès plus rapide." - }, - "step2": { - "title": "Créer ou Importer un Portefeuille", - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase secrète avec quiconque." - }, - "step3": { - "title": "Appuyez sur le bouton de scan", - "description": "Après avoir numérisé, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille." - } - } - }, - "okto": { - "qr_code": { - "step1": { - "title": "Ouvrez l'application Okto", - "description": "Ajoutez Okto à votre écran d'accueil pour un accès rapide" - }, - "step2": { - "title": "Créer un portefeuille MPC", - "description": "Créez un compte et générez un portefeuille" - }, - "step3": { - "title": "Appuyez sur WalletConnect dans les paramètres", - "description": "Touchez l'icône 'Scan QR' en haut à droite et confirmez l'invite pour vous connecter." - } - } - }, - "ledger": { - "desktop": { - "step1": { - "title": "Ouvrez l'application Ledger Live", - "description": "Nous vous recommandons de mettre Ledger Live sur votre écran d'accueil pour un accès plus rapide." - }, - "step2": { - "title": "Configurez votre Ledger", - "description": "Configurez un nouveau Ledger ou connectez-vous à un existant." - }, - "step3": { - "title": "Connecter", - "description": "Une fois que vous avez scanné, une invite de connexion apparaîtra pour que vous puissiez connecter votre portefeuille." - } - }, - "qr_code": { - "step1": { - "title": "Ouvrez l'application Ledger Live", - "description": "Nous vous recommandons de mettre Ledger Live sur votre écran d'accueil pour un accès plus rapide." - }, - "step2": { - "title": "Configurez votre Ledger", - "description": "Vous pouvez soit synchroniser avec l'application de bureau, soit connecter votre Ledger." - }, - "step3": { - "title": "Scannez le code", - "description": "Appuyez sur WalletConnect puis passez au Scanner. Une fois que vous avez scanné, une invite de connexion apparaîtra pour que vous puissiez connecter votre portefeuille." - } - } - }, - "valora": { - "qr_code": { - "step1": { - "title": "Ouvrez l'application Valora", - "description": "Nous vous recommandons de mettre Valora sur votre écran d'accueil pour un accès plus rapide." - }, - "step2": { - "title": "Créer ou importer un portefeuille", - "description": "Créez un nouveau portefeuille ou importez-en un existant." - }, - "step3": { - "title": "Appuyez sur le bouton de scan", - "description": "Après avoir numérisé, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille." - } - } - }, - "gate": { - "qr_code": { - "step1": { - "title": "Ouvrez l'application Gate", - "description": "Nous vous recommandons de mettre Gate sur votre écran d'accueil pour un accès plus rapide." - }, - "step2": { - "title": "Créer ou Importer un Portefeuille", - "description": "Créez un nouveau portefeuille ou importez-en un existant." - }, - "step3": { - "title": "Appuyez sur le bouton de scan", - "description": "Après avoir numérisé, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille." - } - }, - "extension": { - "step1": { - "title": "Installez l'extension Gate", - "description": "Nous vous recommandons d'épingler Gate à votre barre des tâches pour un accès plus facile à votre portefeuille." - }, - "step2": { - "title": "Créer ou Importer un Portefeuille", - "description": "Assurez-vous de sauvegarder votre portefeuille en utilisant une méthode sécurisée. Ne partagez jamais votre phrase de récupération secrète avec personne." - }, - "step3": { - "title": "Rafraîchissez votre navigateur", - "description": "Une fois que vous avez configuré votre portefeuille, cliquez ci-dessous pour actualiser le navigateur et charger l'extension." - } - } - }, - "xportal": { - "qr_code": { - "step1": { - "description": "Mettez xPortal sur votre écran d'accueil pour un accès plus rapide à votre portefeuille.", - "title": "Ouvrez l'application xPortal" - }, - "step2": { - "description": "Créez un portefeuille ou importez-en un existant.", - "title": "Créer ou Importer un Portefeuille" - }, - "step3": { - "description": "Après avoir numérisé, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille.", - "title": "Appuyez sur le bouton Scan QR" - } - } - }, - "mew": { - "qr_code": { - "step1": { - "description": "Nous vous recommandons de mettre MEW Wallet sur votre écran d'accueil pour un accès plus rapide.", - "title": "Ouvrez l'application MEW Wallet" - }, - "step2": { - "description": "Vous pouvez facilement sauvegarder votre portefeuille en utilisant la fonction de sauvegarde cloud.", - "title": "Créer ou Importer un Portefeuille" - }, - "step3": { - "description": "Après avoir numérisé, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille.", - "title": "Appuyez sur le bouton de scan" - } - } - } - }, - "zilpay": { - "qr_code": { - "step1": { - "title": "Ouvrez l'application ZilPay", - "description": "Ajoutez ZilPay à votre écran d'accueil pour un accès plus rapide à votre portefeuille." - }, - "step2": { - "title": "Créer ou Importer un Portefeuille", - "description": "Créez un nouveau portefeuille ou importez-en un existant." - }, - "step3": { - "title": "Appuyez sur le bouton de scan", - "description": "Après avoir numérisé, une invite de connexion apparaîtra pour vous permettre de connecter votre portefeuille." - } - } - } -} -`;export{e as default}; diff --git a/client2/build/assets/github-BxTJgXcz.js b/client2/build/assets/github-BxTJgXcz.js deleted file mode 100644 index 71c63ed71..000000000 --- a/client2/build/assets/github-BxTJgXcz.js +++ /dev/null @@ -1,18 +0,0 @@ -import{b as i}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const h=i` - - - - - - - - - - - - - -`;export{h as githubSvg}; diff --git a/client2/build/assets/gnosis-37ZC4RBL-B137OtHZ.js b/client2/build/assets/gnosis-37ZC4RBL-B137OtHZ.js deleted file mode 100644 index b839bfa27..000000000 --- a/client2/build/assets/gnosis-37ZC4RBL-B137OtHZ.js +++ /dev/null @@ -1 +0,0 @@ -var a="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2028%2028%22%3E%3Cg%20transform%3D%22translate(0%2C0)%20scale(0.7)%22%3E%3Cg%20clip-path%3D%22url(%23a)%22%3E%3Cpath%20fill%3D%22%23133629%22%20d%3D%22M0%200h40v40H0z%22%2F%3E%3Cpath%20fill%3D%22%23F0EBDE%22%20d%3D%22M8.26%2017.907a4.468%204.468%200%200%201%20.935-2.806l6.377%206.38a4.52%204.52%200%200%201-2.805.935%204.525%204.525%200%200%201-4.507-4.51ZM27.233%2022.411a4.522%204.522%200%200%200%204.202-2.8%204.528%204.528%200%200%200%20.342-1.742%204.528%204.528%200%200%200-.935-2.806l-6.396%206.399a4.469%204.469%200%200%200%202.787.95Z%22%2F%3E%3Cpath%20fill%3D%22%23F0EBDE%22%20d%3D%22M32.165%2013.768a6.39%206.39%200%200%201%201.524%204.139%206.437%206.437%200%200%201-6.433%206.431%206.394%206.394%200%200%201-4.124-1.501l-3.095%203.096-3.095-3.096a6.385%206.385%200%200%201-4.128%201.501%206.434%206.434%200%200%201-4.956-10.561l-1.445-1.445-1.38-1.404a17.414%2017.414%200%200%200-2.533%209.07A17.503%2017.503%200%200%200%2013.302%2036.17a17.501%2017.501%200%200%200%2019.064-3.793A17.515%2017.515%200%200%200%2037.5%2020.013c.029-3.198-.84-6.34-2.506-9.07l-2.829%202.825Z%22%2F%3E%3Cpath%20fill%3D%22%23F0EBDE%22%20d%3D%22M32.675%207.926A17.448%2017.448%200%200%200%2020.014%202.5%2017.475%2017.475%200%200%200%207.348%207.926c-.425.467-.841.935-1.23%201.436L20%2023.244%2033.88%209.348c-.366-.504-.769-.979-1.205-1.422ZM20.014%2020.002%209.26%209.245a15.036%2015.036%200%200%201%2010.754-4.462%2014.989%2014.989%200%200%201%2010.753%204.462L20.014%2020.002Z%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3CclipPath%20id%3D%22a%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M0%200h40v40H0z%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fg%3E%3C%2Fsvg%3E";export{a as default}; diff --git a/client2/build/assets/google-7Ltvkps4.js b/client2/build/assets/google-7Ltvkps4.js deleted file mode 100644 index a251354d4..000000000 --- a/client2/build/assets/google-7Ltvkps4.js +++ /dev/null @@ -1,18 +0,0 @@ -import{b as l}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const v=l` - - - - -`;export{v as googleSvg}; diff --git a/client2/build/assets/gravity-J5YQHTYH-Bj6B0uod.js b/client2/build/assets/gravity-J5YQHTYH-Bj6B0uod.js deleted file mode 100644 index 022d1f094..000000000 --- a/client2/build/assets/gravity-J5YQHTYH-Bj6B0uod.js +++ /dev/null @@ -1 +0,0 @@ -var a="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2028%2028%22%3E%3Cg%20transform%3D%22translate(0%2C0)%20scale(0.7)%22%3E%3Cg%20clip-path%3D%22url(%23a)%22%3E%3Cpath%20fill%3D%22url(%23b)%22%20d%3D%22M0%200h40v40H0z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M34.027%2011.935a.723.723%200%200%200-1.001-.256L14.436%2022.97a6.317%206.317%200%200%201%205.578-9.283c1.499%200%202.875.522%203.958%201.393l-3.955%202.712%2010.278-5.928a.461.461%200%201%200-.493-.78l-2.517%201.725a10.205%2010.205%200%200%200-7.271-3.03C14.362%209.779%209.78%2014.355%209.78%2020c0%201.818.476%203.524%201.308%205.003l-5.212%203.166%205.351-2.927a10.23%2010.23%200%200%200%208.787%204.98c5.652%200%2010.233-4.577%2010.233-10.222v-1.22c0-.957.389-2.18%201.765-2.917a.237.237%200%201%200-.23-.413L19.58%2022.487c1.362-.578%202.404-.93%203.784-1.207%202.876-.577%202.949.793%201.838%202.337-.743%201.034-2.423%202.695-5.186%202.695a6.318%206.318%200%200%201-5.35-2.95L33.748%2012.93a.721.721%200%200%200%20.279-.994Z%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22b%22%20x1%3D%223.995%22%20x2%3D%2229.453%22%20y1%3D%2240%22%20y2%3D%220%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%22.023%22%20stop-color%3D%22%23E57536%22%2F%3E%3Cstop%20offset%3D%22.605%22%2F%3E%3C%2FlinearGradient%3E%3CclipPath%20id%3D%22a%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M0%200h40v40H0z%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fg%3E%3C%2Fsvg%3E";export{a as default}; diff --git a/client2/build/assets/hardhat-TX56IT5N-CV1FY-wE.js b/client2/build/assets/hardhat-TX56IT5N-CV1FY-wE.js deleted file mode 100644 index 258b219e4..000000000 --- a/client2/build/assets/hardhat-TX56IT5N-CV1FY-wE.js +++ /dev/null @@ -1 +0,0 @@ -var D="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2228%22%20height%3D%2228%22%20fill%3D%22none%22%3E%3Crect%20width%3D%2228%22%20height%3D%2228%22%20fill%3D%22url(%23a)%22%20rx%3D%2214%22%2F%3E%3Cg%20clip-path%3D%22url(%23b)%22%3E%3Cpath%20fill%3D%22%23FFF100%22%20d%3D%22M22.458%2018.409v-.875c0-.162-.258-.317-.72-.457l.011-1.088c0-1.676-.49-3.312-1.402-4.685a7.833%207.833%200%200%200-3.702-2.994l-.033-.218a.639.639%200%200%200-.138-.315.592.592%200%200%200-.277-.188%207.429%207.429%200%200%200-4.395%200%20.592.592%200%200%200-.278.188.64.64%200%200%200-.14.315l-.031.203a7.83%207.83%200%200%200-3.727%202.991%208.474%208.474%200%200%200-1.414%204.703v1.093c-.456.139-.71.292-.71.454v.874a.224.224%200%200%200%20.03.147c.227-.178.487-.303.764-.366.704-.181%201.42-.307%202.143-.378.202-.024.407-.003.601.063s.372.174.523.318a2.945%202.945%200%200%200%202.043.836h4.748c.756%200%201.485-.299%202.043-.836a1.42%201.42%200%200%201%20.522-.32c.194-.067.4-.09.602-.066a14.2%2014.2%200%200%201%202.143.376c.262.053.51.167.724.334.012.013.027.024.037.036a.227.227%200%200%200%20.033-.145Z%22%2F%3E%3Cpath%20fill%3D%22url(%23c)%22%20d%3D%22M9.574%2016.569c-.006-.2-.01-.402-.01-.604.003-3.04.677-5.765%201.79-7.668a7.83%207.83%200%200%200-3.728%202.99%208.474%208.474%200%200%200-1.414%204.702v1.093a17.98%2017.98%200%200%201%203.362-.513Z%22%2F%3E%3Cpath%20fill%3D%22url(%23d)%22%20d%3D%22M21.749%2015.989a8.409%208.409%200%200%200-1.773-5.199c.498%201.674.746%203.42.735%205.173%200%20.296-.008.59-.02.88a9.2%209.2%200%200%201%201.045.234l.013-1.088Z%22%2F%3E%3Cpath%20fill%3D%22url(%23e)%22%20d%3D%22M21.664%2018.187c-.705-.18-1.42-.306-2.143-.377a1.365%201.365%200%200%200-.602.064%201.416%201.416%200%200%200-.523.32%202.943%202.943%200%200%201-2.043.835h-4.745a2.945%202.945%200%200%201-2.043-.835%201.417%201.417%200%200%200-.522-.322%201.366%201.366%200%200%200-.602-.065%2014.18%2014.18%200%200%200-2.143.377%201.962%201.962%200%200%200-.764.367c.36.58%204.006%201.19%208.448%201.19s8.086-.612%208.447-1.19c-.013-.012-.027-.023-.037-.035a1.8%201.8%200%200%200-.728-.329Z%22%2F%3E%3Cpath%20fill%3D%22%230A0A0A%22%20d%3D%22m13.98%209.823-1.818%203.258%201.817%201.188V9.824Z%22%2F%3E%3Cpath%20fill%3D%22%234B4D4D%22%20d%3D%22M13.98%209.824v4.444l1.817-1.186-1.817-3.258Zm0%205.09v1.55c.034-.052%201.817-2.738%201.817-2.74l-1.817%201.19Z%22%2F%3E%3Cpath%20fill%3D%22%230A0A0A%22%20d%3D%22m13.98%2014.914-1.818-1.187%201.818%202.737v-1.55Z%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22a%22%20x1%3D%2214%22%20x2%3D%2214%22%20y1%3D%220%22%20y2%3D%2228%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23F7F1FD%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23FBFCDC%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22c%22%20x1%3D%228.783%22%20x2%3D%228.783%22%20y1%3D%2217.082%22%20y2%3D%228.297%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23EDCF00%22%2F%3E%3Cstop%20offset%3D%22.33%22%20stop-color%3D%22%23F0D500%22%2F%3E%3Cstop%20offset%3D%22.77%22%20stop-color%3D%22%23F9E500%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23FFF100%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22d%22%20x1%3D%2220.862%22%20x2%3D%2220.862%22%20y1%3D%2217.146%22%20y2%3D%2210.79%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23EDCF00%22%2F%3E%3Cstop%20offset%3D%22.59%22%20stop-color%3D%22%23F7E100%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23FFF100%22%2F%3E%3C%2FlinearGradient%3E%3CradialGradient%20id%3D%22e%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(6.30353%200%200%206.64935%206.45%2023.084)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23FFF100%22%2F%3E%3Cstop%20offset%3D%22.23%22%20stop-color%3D%22%23F9E500%22%2F%3E%3Cstop%20offset%3D%22.67%22%20stop-color%3D%22%23F0D500%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23EDCF00%22%2F%3E%3C%2FradialGradient%3E%3CclipPath%20id%3D%22b%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M0%200h17v13H0z%22%20transform%3D%22translate(5.5%207)%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fsvg%3E%0A";export{D as default}; diff --git a/client2/build/assets/help-circle-CEbjHEWd.js b/client2/build/assets/help-circle-CEbjHEWd.js deleted file mode 100644 index 2a5669795..000000000 --- a/client2/build/assets/help-circle-CEbjHEWd.js +++ /dev/null @@ -1,12 +0,0 @@ -import{b as l}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const c=l` - - -`;export{c as helpCircleSvg}; diff --git a/client2/build/assets/hi_IN-GYVCUYRD-CQnOa8U_.js b/client2/build/assets/hi_IN-GYVCUYRD-CQnOa8U_.js deleted file mode 100644 index 8146df114..000000000 --- a/client2/build/assets/hi_IN-GYVCUYRD-CQnOa8U_.js +++ /dev/null @@ -1,1427 +0,0 @@ -var u=`{ - "connect_wallet": { - "label": "वॉलेट को कनेक्ट करें", - "wrong_network": { - "label": "गलत नेटवर्क" - } - }, - "intro": { - "title": "वॉलेट क्या है?", - "description": "एक वॉलेट का उपयोग डिजिटल संपत्तियों को भेजने, प्राप्त करने, संग्रहित करने और प्रदर्शित करने के लिए किया जाता है। यह एक नया तरीका भी है लॉग इन करने का, हर वेबसाइट पर नए खाते और पासवर्ड बनाने की जरूरत के बिना।", - "digital_asset": { - "title": "अपने डिजिटल संपत्तियों के लिए एक घर", - "description": "वॉलेट का उपयोग Ethereum और NFTs जैसी डिजिटल संपत्तियों को भेजने, प्राप्त करने, संग्रहित करने और प्रदर्शित करने के लिए किया जाता है." - }, - "login": { - "title": "लॉग इन करने का एक नया तरीका", - "description": "हर वेबसाइट पर नए खाते और पासवर्ड बनाने की बजाय, बस अपना वॉलेट कनेक्ट करें." - }, - "get": { - "label": "एक वॉलेट प्राप्त करें" - }, - "learn_more": { - "label": "और जानें" - } - }, - "sign_in": { - "label": "अपने खाते की पुष्टि करें", - "description": "जुड़ने को पूरा करने के लिए, आपको अपने बटुए में एक संदेश पर हस्ताक्षर करना होगा ताकि पुष्टि हो सके कि आप इस खाते के मालिक हैं।", - "message": { - "send": "संदेश भेजें", - "preparing": "संदेश तैयार कर रहा है...", - "cancel": "रद्द करें", - "preparing_error": "संदेश तैयार करते समय त्रुटि, कृपया पुनः प्रयास करें!" - }, - "signature": { - "waiting": "हस्ताक्षर का इंतजार कर रहा है...", - "verifying": "हस्ताक्षर की पुष्टि की जा रही है...", - "signing_error": "संदेश पर हस्ताक्षर करते समय त्रुटि, कृपया पुनः प्रयास करें!", - "verifying_error": "हस्ताक्षर की पुष्टि में त्रुटि, कृपया पुनः प्रयास करें!", - "oops_error": "ओह, कुछ गलत हो गया!" - } - }, - "connect": { - "label": "कनेक्ट करें", - "title": "वॉलेट को कनेक्ट करें", - "new_to_ethereum": { - "description": "Ethereum वॉलेट्स में नए हैं?", - "learn_more": { - "label": "और जानें" - } - }, - "learn_more": { - "label": "और जानें।" - }, - "recent": "हाल ही में", - "status": { - "opening": "%{wallet}खोल रहा है...", - "connecting": "जोड़ रहा है", - "connect_mobile": "जारी रखें %{wallet}", - "not_installed": "%{wallet} स्थापित नहीं है", - "not_available": "%{wallet} उपलब्ध नहीं है", - "confirm": "एक्सटेंशन में कनेक्शन की पुष्टि करें", - "confirm_mobile": "वॉलेट में कनेक्शन अनुरोध स्वीकार करें" - }, - "secondary_action": { - "get": { - "description": "क्या आपके पास %{wallet}नहीं है ?", - "label": "प्राप्त करें" - }, - "install": { - "label": "स्थापित करें" - }, - "retry": { - "label": "पुनः प्रयास करें" - } - }, - "walletconnect": { - "description": { - "full": "क्या आपको आधिकारिक WalletConnect मोडल की आवश्यकता है?", - "compact": "क्या आपको WalletConnect मोडल की आवश्यकता है?" - }, - "open": { - "label": "खोलें" - } - } - }, - "connect_scan": { - "title": "स्कैन करें विथ %{wallet}", - "fallback_title": "अपने फोन से स्कैन करें" - }, - "connector_group": { - "installed": "स्थापित", - "recommended": "अनुशंसित", - "other": "अन्य", - "popular": "लोकप्रिय", - "more": "अधिक", - "others": "अन्य लोग" - }, - "get": { - "title": "एक वॉलेट प्राप्त करें", - "action": { - "label": "प्राप्त करें" - }, - "mobile": { - "description": "मोबाइल वॉलेट" - }, - "extension": { - "description": "ब्राउज़र एक्सटेंशन" - }, - "mobile_and_extension": { - "description": "मोबाइल वॉलेट और एक्सटेंशन" - }, - "mobile_and_desktop": { - "description": "मोबाइल और डेस्कटॉप वॉलेट" - }, - "looking_for": { - "title": "क्या आपको जो चाहिए वह नहीं मिल रहा है?", - "mobile": { - "description": "मुख्य स्क्रीन पर एक बटुआ चुनें ताकि आप एक अलग बटुआ प्रदाता के साथ शुरू कर सकें।" - }, - "desktop": { - "compact_description": "मुख्य स्क्रीन पर एक बटुआ चुनें ताकि आप एक अलग बटुआ प्रदाता के साथ शुरू कर सकें।", - "wide_description": "बाएं एक बटुआ चुनें ताकि आप एक अलग बटुआ प्रदाता के साथ शुरू कर सकें।" - } - } - }, - "get_options": { - "title": "%{wallet}के साथ शुरू करें", - "short_title": "%{wallet}प्राप्त करें", - "mobile": { - "title": "मोबाइल के लिए %{wallet}", - "description": "मोबाइल वॉलेट का उपयोग करके Ethereum की दुनिया का अन्वेषण करें।", - "download": { - "label": "ऐप प्राप्त करें" - } - }, - "extension": { - "title": "%{wallet} के लिए %{browser}", - "description": "अपने पसंदीदा वेब ब्राउज़र से अपने वॉलेट तक पहुंचें।", - "download": { - "label": "करें जोड़ें %{browser}" - } - }, - "desktop": { - "title": "%{wallet} के लिए %{platform}", - "description": "अपने शक्तिशाली डेस्कटॉप से आपके वॉलेट की स्वतंत्रता द्वारा पहुंच।", - "download": { - "label": "को जोड़ें %{platform}" - } - } - }, - "get_mobile": { - "title": "स्थापित करें %{wallet}", - "description": "iOS या Android पर डाउनलोड करने के लिए अपने फोन से स्कैन करें", - "continue": { - "label": "जारी रखें" - } - }, - "get_instructions": { - "mobile": { - "connect": { - "label": "जोड़ें" - }, - "learn_more": { - "label": "और जानें" - } - }, - "extension": { - "refresh": { - "label": "ताज़ा करें" - }, - "learn_more": { - "label": "और जानें" - } - }, - "desktop": { - "connect": { - "label": "कनेक्ट करें" - }, - "learn_more": { - "label": "और जानें" - } - } - }, - "chains": { - "title": "नेटवर्क स्विच करें", - "wrong_network": "गलत नेटवर्क का पता चला, जारी रखने के लिए स्विच करें या कनेक्ट करें।", - "confirm": "वॉलेट में पुष्टि करें", - "switching_not_supported": "आपका वॉलेट नेटवर्क्स को %{appName}से स्विच करना समर्थन नहीं करता . बजाय अपने वॉलेट के भीतर से नेटवर्क स्विच करने का प्रयास करें।", - "switching_not_supported_fallback": "आपका वॉलेट इस एप से नेटवर्क्स स्विच करने का समर्थन नहीं करता। बजाय उसके, अपना वॉलेट द्वारा नेटवर्क्स स्विच करने की कोशिश करें।", - "disconnect": "डिकनेक्ट", - "connected": "कनेक्ट किया गया" - }, - "profile": { - "disconnect": { - "label": "डिकनेक्ट" - }, - "copy_address": { - "label": "पता कॉपी करें", - "copied": "कॉपी कर दिया गया!" - }, - "explorer": { - "label": "एक्सप्लोरर पर अधिक देखें" - }, - "transactions": { - "description": "%{appName} लेन - देन यहां दिखाई देंगे...", - "description_fallback": "आपके लेन-देन यहां दिखाई देंगे...", - "recent": { - "title": "हाल के लेन - देन" - }, - "clear": { - "label": "सभी को हटाएं" - } - } - }, - "wallet_connectors": { - "argent": { - "qr_code": { - "step1": { - "description": "अपने वॉलेट को जल्दी से एक्सेस करने के लिए आपके होम स्क्रीन पर Argent डालें।", - "title": "Argent ऐप खोलें" - }, - "step2": { - "description": "वॉलेट और उपयोगकर्ता नाम बनाएं, या मौजूदा वॉलेट को आयात करें।", - "title": "वॉलेट बनाएं या आयात करें" - }, - "step3": { - "description": "जैसे ही आप स्कैन करेंगे, एक कनेक्शन संकेत आपके वॉलेट को कनेक्ट करने के लिए प्रकट होगा।", - "title": "QR स्कैन बटन को टैप करें" - } - } - }, - "berasig": { - "extension": { - "step1": { - "title": "BeraSig एक्सटेंशन स्थापित करें", - "description": "हम आपको अपने वॉलेट के लिए आसानी से पहुंच पाने के लिए BeraSig को अपने टास्कबार में पिन करने की सलाह देते हैं।" - }, - "step2": { - "title": "एक वॉलेट बनाएँ", - "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेने के लिए सुनिश्चित करें। किसी के साथ भी अपना गुप्त वाक्यांश साझा न करें।" - }, - "step3": { - "title": "अपने ब्राउज़र को ताज़ा करें", - "description": "एक बार जब आप अपना वॉलेट सेटअप कर लेते हैं, तो नीचे क्लिक करें ताकि ब्राउज़र को ताज़ा करें और एक्सटेंशन लोड करें।" - } - } - }, - "best": { - "qr_code": { - "step1": { - "title": "Best Wallet ऐप खोलें", - "description": "अपने होम स्क्रीन पर Best Wallet जोड़ें, इससे आपके वॉलेट तक तेजी से पहुंचने की सुविधा होगी।" - }, - "step2": { - "title": "वॉलेट बनाएं या आयात करें", - "description": "नया बटुआ बनाएं या मौजूदा को आयात करें।" - }, - "step3": { - "title": "QR आइकन पर टैप करें और स्कैन करें", - "description": "अपने होमस्क्रीन पर QR आइकन पर टैप करें, कोड स्कैन करें और प्रम्प्ट को कनेक्ट करने की पुष्टि करें।" - } - } - }, - "bifrost": { - "qr_code": { - "step1": { - "description": "हम आपको सलाह देते हैं कि Bifrost Wallet को अपने होम स्क्रीन पर लगाएं, ताकि त्वरित एक्सेस को सुनिश्चित किया जा सके।", - "title": "Bifrost Wallet ऐप को खोलें" - }, - "step2": { - "description": "अपने रिकवरी फ़्रेज़ का उपयोग करके एक वॉलेट बनाएं या इंपोर्ट करें।", - "title": "वॉलेट बनाएं या इंपोर्ट करें" - }, - "step3": { - "description": "स्कैन करने के बाद, आपके वॉलेट को कनेक्ट करने के लिए एक कनेक्शन संकेत दिखाई देगा।", - "title": "स्कैन बटन को टैप करें" - } - } - }, - "bitget": { - "qr_code": { - "step1": { - "description": "हम इसे सुझाव देते हैं कि आप अपने होम स्क्रीन पर Bitget वॉलेट को रखें ताकि जल्दी एक्सेस कर सकें।", - "title": "Bitget वॉलेट एप को खोलें" - }, - "step2": { - "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेने के लिए सुनिश्चित करें। किसी के साथ भी अपना गुप्त वाक्यांश साझा न करें।", - "title": "वॉलेट बनाएं या आयात करें" - }, - "step3": { - "description": "स्कैन करने के बाद, आपके वॉलेट को कनेक्ट करने का एक संकेत दिखाई देगा।", - "title": "स्कैन बटन पर टैप करें" - } - }, - "extension": { - "step1": { - "description": "हम इसे सुझाव देते हैं कि आप Bitget वॉलेट को आपके टास्कबार में पिन करें ताकि आपके वॉलेट तक जल्दी पहुंच सकें।", - "title": "Bitget Wallet एक्सटेंशन स्थापित करें" - }, - "step2": { - "description": "सुनिश्चित करें कि आप अपने वॉलेट का बैकअप किसी सुरक्षित तरीके से ले रहे हैं। अपनी गुप्त वाक्यांश को कभी किसी के साथ साझा न करें।", - "title": "एक वॉलेट बनाएं या आयात करें" - }, - "step3": { - "description": "एक बार जब आप अपना वॉलेट सेटअप कर लेते हैं, तो नीचे क्लिक करें ताकि ब्राउज़र को ताज़ा करें और एक्सटेंशन लोड करें।", - "title": "अपने ब्राउज़र को ताज़ा करें" - } - } - }, - "bitski": { - "extension": { - "step1": { - "description": "हम आपको अपने वॉलेट तक जल्दी पहुंचने के लिए Bitski को अपने टास्कबार में पिन करने की सलाह देते हैं।", - "title": "Bitski एक्सटेंशन स्थापित करें" - }, - "step2": { - "description": "सुनिश्चित करें कि आप एक सुरक्षित तरीके से अपने वॉलेट का बैकअप बना रहे हैं। कभी भी किसी के साथ अपने गोपनीय वाक्यांश को साझा न करें।", - "title": "एक वॉलेट बनाएं या आयात करें" - }, - "step3": { - "description": "एक बार जब आप अपना वॉलेट सेट कर लेते हैं, तो ब्राउज़र को ताज़ा करने और एक्सटेंशन को लोड करने के लिए नीचे क्लिक करें।", - "title": "अपने ब्राउज़र को ताज़ा करें" - } - } - }, - "bitverse": { - "qr_code": { - "step1": { - "title": "Bitverse Wallet ऐप को खोलें", - "description": "अपने वॉलेट तक तेजी से पहुँचने के लिए Bitverse Wallet को अपनी होम स्क्रीन पर जोड़ें।" - }, - "step2": { - "title": "वॉलेट बनाएं या आयात करें", - "description": "नया बटुआ बनाएं या मौजूदा को आयात करें।" - }, - "step3": { - "title": "QR आइकन पर टैप करें और स्कैन करें", - "description": "अपने होमस्क्रीन पर QR आइकन पर टैप करें, कोड स्कैन करें और प्रम्प्ट को कनेक्ट करने की पुष्टि करें।" - } - } - }, - "bloom": { - "desktop": { - "step1": { - "title": "Bloom वॉलेट ऐप खोलें", - "description": "आपकी सुविधा के लिए हम Bloom वॉलेट को होम स्क्रीन पर रखने की सलाह देते हैं।" - }, - "step2": { - "description": "अपने रिकवरी फ़्रेज़ का उपयोग करके एक वॉलेट बनाएं या इंपोर्ट करें।", - "title": "वॉलेट बनाएं या आयात करें" - }, - "step3": { - "description": "जब आपके पास वॉलेट हो, तो Bloom के माध्यम से जुड़ने के लिए Connect पर क्लिक करें। ऐप में एक कनेक्शन प्रॉम्प्ट दिखाई देगा जिसे आपको कनेक्शन की पुष्टि करनी होगी।", - "title": "Connect पर क्लिक करें" - } - } - }, - "bybit": { - "qr_code": { - "step1": { - "description": "हम आपके वॉलेट तक तेजी से पहुँचने के लिए Bybit को आपकी होम स्क्रीन पर रखने की सलाह देते हैं।", - "title": "Bybit ऐप को खोलें" - }, - "step2": { - "description": "आप अपने फोन पर हमारे बैकअप फीचर का उपयोग करके आसानी से अपने वॉलेट का बैकअप कर सकते हैं।", - "title": "वॉलेट बनाएं या आयात करें" - }, - "step3": { - "description": "जैसे ही आप स्कैन करेंगे, एक कनेक्शन संकेत आपके वॉलेट को कनेक्ट करने के लिए प्रकट होगा।", - "title": "स्कैन बटन को टैप करें" - } - }, - "extension": { - "step1": { - "description": "अपने ब्राउज़र के ऊपरी दाएँ कोने पर क्लिक करें और आसान पहुँच के लिए Bybit Wallet को पिन करें।", - "title": "Bybit Wallet एक्सटेंशन को इंस्टॉल करें" - }, - "step2": { - "description": "नया बटुआ बनाएं या मौजूदा को आयात करें।", - "title": "एक बटुआ बनाएं या आयात करें" - }, - "step3": { - "description": "Bybit Wallet सेट अप करने के बाद, ब्राउज़र को रिफ्रेश करने के लिए नीचे क्लिक करें और एक्सटेंशन को लोड करें।", - "title": "अपने ब्राउज़र को ताज़ा करें" - } - } - }, - "binance": { - "qr_code": { - "step1": { - "description": "हम अपने वॉलेट के तेज एक्सेस के लिए Binance को अपने होम स्क्रीन पर रखने की सलाह देते हैं।", - "title": "Binance ऐप को खोलें" - }, - "step2": { - "description": "आप अपने फोन पर हमारे बैकअप फीचर का उपयोग करके आसानी से अपने वॉलेट का बैकअप कर सकते हैं।", - "title": "वॉलेट बनाएं या आयात करें" - }, - "step3": { - "description": "जैसे ही आप स्कैन करेंगे, एक कनेक्शन संकेत आपके वॉलेट को कनेक्ट करने के लिए प्रकट होगा।", - "title": "WalletConnect बटन पर टैप करें" - } - } - }, - "coin98": { - "qr_code": { - "step1": { - "description": "हम आपके वॉलेट तक तेजी से पहुंचने के लिए अपने होम स्क्रीन पर Coin98 वॉलेट रखने की सलाह देते हैं।", - "title": "Coin98 वॉलेट ऐप को खोलें" - }, - "step2": { - "description": "आप अपने फोन पर हमारे बैकअप फीचर का उपयोग करके आसानी से अपने वॉलेट का बैकअप कर सकते हैं।", - "title": "वॉलेट बनाएं या आयात करें" - }, - "step3": { - "description": "स्कैन करने के बाद, आपके वॉलेट को कनेक्ट करने के लिए एक कनेक्शन प्रांप्ट दिखाई देगा।", - "title": "WalletConnect बटन पर टैप करें" - } - }, - "extension": { - "step1": { - "description": "अपने ब्राउज़र के ऊपरी दाएं हिस्से पर क्लिक करें और आसानी से पहुंच के लिए Coin98 वॉलेट को पिन करें।", - "title": "Coin98 वॉलेट एक्सटेंशन स्थापित करें" - }, - "step2": { - "description": "नया बटुआ बनाएं या मौजूदा को आयात करें।", - "title": "एक बटुआ बनाएं या आयात करें" - }, - "step3": { - "description": "एक बार जब आप Coin98 वॉलेट सेट करते हैं, तो नीचे क्लिक करके ब्राउजर को ताजा करें और एक्सटेंशन को लोड करें।", - "title": "अपने ब्राउज़र को ताज़ा करें" - } - } - }, - "coinbase": { - "qr_code": { - "step1": { - "description": "हम आपको सलाह देते हैं कि आपकी मुख्य बिल्ड स्क्रीन पर Coinbase वॉलेट को रखें जिससे आपकी पहुंच तेज हो।", - "title": "Coinbase वॉलेट ऐप खोलें" - }, - "step2": { - "description": "आप बादल बैकअप सुविधा का उपयोग करके आसानी से अपने वॉलेट का बैकअप ले सकते हैं।", - "title": "एक वॉलेट बनाएं या आयात करें" - }, - "step3": { - "description": "जैसे ही आप स्कैन करते हैं, आपको अपने वॉलेट से कनेक्ट करने के लिए एक कनेक्शन संकेत दिखाई देगा।", - "title": "स्कैन बटन को छूना" - } - }, - "extension": { - "step1": { - "description": "हमारा सिफारिश है कि आप अपने वॉलेट तक जल्दी पहुंचने के लिए Coinbase वॉलेट को अपने टास्कबार पर पिन पर रखें।", - "title": "Coinbase वॉलेट एक्सटेंशन स्थापित करें" - }, - "step2": { - "description": "सुरक्षित विधि का उपयोग करके अपने बटुए का बैकअप लेना सुनिश्चित करें। अपना गुप्त पुनर्प्राप्ति वाक्यांश कभी भी किसी के साथ साझा न करें।", - "title": "वॉलेट बनाएं या आयात करें" - }, - "step3": { - "description": "एक बार जब आप अपना वॉलेट सेट अप करते हैं, तो ब्राउज़र को ताजगी देने और एक्सटेंशन को लोड करने के लिए नीचे क्लिक करें.", - "title": "अपना ब्राउज़र ताजा करें" - } - } - }, - "compass": { - "extension": { - "step1": { - "description": "हम अपने वॉलेट तक त्वरित पहुंच के लिए Compass Wallet को अपने कार्यपट्टी में पिन करने की सलाह देते हैं।", - "title": "Compass Wallet एक्सटेंशन स्थापित करें" - }, - "step2": { - "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेने के लिए सुनिश्चित करें। किसी के साथ भी अपना गुप्त वाक्यांश साझा न करें।", - "title": "वॉलेट बनाएं या आयात करें" - }, - "step3": { - "description": "एक बार जब आप अपना वॉलेट सेटअप कर लेते हैं, तो नीचे क्लिक करें ताकि ब्राउज़र को ताज़ा करें और एक्सटेंशन लोड करें।", - "title": "अपने ब्राउज़र को ताज़ा करें" - } - } - }, - "core": { - "qr_code": { - "step1": { - "description": "हम आपकी वॉलेट के तेज एक्सेस के लिए Core को आपके होम स्क्रीन पर डालने की सलाह देते हैं.", - "title": "Core एप खोलें" - }, - "step2": { - "description": "आप आसानी से अपने फ़ोन पर हमारे बैकअप फीचर का उपयोग करके अपना वॉलेट बैकअप कर सकते हैं.", - "title": "वॉलेट बनाएं या आयात करें" - }, - "step3": { - "description": "स्कैन करने के बाद, आपके वॉलेट को कनेक्ट करने के लिए आपके लिए कनेक्शन प्राम्प्ट प्रकट होगा.", - "title": "WalletConnect बटन को छूने के साथ" - } - }, - "extension": { - "step1": { - "description": "हम अपने वॉलेट के लिए तेज एक्सेस के लिए कोर को अपने टास्कबार में पिन करने की सिफारिश करते हैं।", - "title": "कोर एक्सटेंशन स्थापित करें" - }, - "step2": { - "description": "सुनिश्चित करें कि आप अपने वॉलेट का बैकअप एक सुरक्षित तरीके से ले। कभी भी किसी के साथ अपनी गुप्त वाक्यांश साझा न करें।", - "title": "एक वॉलेट बनाएं या आयात करें" - }, - "step3": { - "description": "एक बार जब आप अपने वॉलेट की स्थापना कर लें, तो नीचे क्लिक करें ताकि ब्राउज़र को ताज़ा कर सकें और एक्सटेंशन को लोड कर सकें।", - "title": "अपने ब्राउज़र को ताज़ा करें" - } - } - }, - "fox": { - "qr_code": { - "step1": { - "description": "हम FoxWallet को अपने होम स्क्रीन पर रखने की सिफारिश करते हैं ताकि त्वरित एक्सेस मिल सके।", - "title": "FoxWallet ऐप खोलें" - }, - "step2": { - "description": "सुनिश्चित करें कि आप एक सुरक्षित तरीके का उपयोग करके अपने वॉलेट का बैकअप ले रहे हैं। कभी भी किसी के साथ अपना गुप्त वाक्यांश साझा न करें।", - "title": "वॉलेट बनाएं या आयात करें" - }, - "step3": { - "description": "जब आप स्कैन करेंगे, तो आपके वॉलेट को कनेक्ट करने के लिए एक कनेक्शन संकेत प्रकट होगा।", - "title": "स्कैन बटन पर टैप करें" - } - } - }, - "frontier": { - "qr_code": { - "step1": { - "description": "हमारी सिफारिश है कि आप अपने होम स्क्रीन पर फ्रंटियर वॉलेट रखें जिससे कि आपको त्वरित पहुंच मिले।", - "title": "फ्रंटियर वॉलेट ऐप को खोलें" - }, - "step2": { - "description": "सुनिश्चित करें कि आप एक सुरक्षित तरीके का उपयोग करके अपने वॉलेट का बैकअप ले रहे हैं। कभी भी किसी के साथ अपना गुप्त वाक्यांश साझा न करें।", - "title": "वॉलेट बनाएं या आयात करें" - }, - "step3": { - "description": "जब आप स्कैन करते हैं, तो आपके वॉलेट को कनेक्ट करने के लिए एक कनेक्शन संकेत प्रकट होगा।", - "title": "स्कैन बटन को टैप करें" - } - }, - "extension": { - "step1": { - "description": "हम आपके वॉलेट की तेजी से पहुंच के लिए Frontier Wallet को अपने टास्कबार में पिन करने की सिफारिश करते हैं।", - "title": "Frontier Wallet एक्सटेंशन इंस्टॉल करें" - }, - "step2": { - "description": "सुनिश्चित करें कि आप एक सुरक्षित तरीके से अपना वॉलेट बैकअप कर रहे हैं। कभी भी किसी के साथ अपना गुप्त वाक्यांश साझा न करें।", - "title": "वॉलेट बनाएं या आयात करें" - }, - "step3": { - "description": "वॉलेट सेटअप होने के बाद, ब्राउज़र को रिफ्रेश करने के लिए नीचे क्लिक करें और एक्सटेंशन लोड करें।", - "title": "अपना ब्राउज़र रिफ्रेश करें" - } - } - }, - "im_token": { - "qr_code": { - "step1": { - "title": "imToken ऐप खोलें", - "description": "अपने वॉलेट के तेजी से पहुँच के लिए imToken एप्लीकेशन को अपने होम स्क्रीन पर रखें।" - }, - "step2": { - "title": "वॉलेट बनाएं या आयात करें", - "description": "एक नया वॉलेट बनाएं या मौजूदा एक को आयात करें।" - }, - "step3": { - "title": "ऊपरी दाएं कोने में स्कैनर आइकॉन पर टैप करें", - "description": "नया कनेक्शन चुनें, फिर QR कोड स्कैन करें और कनेक्ट करने के लिए प्रॉम्प्ट की पुष्टि करें।" - } - } - }, - "iopay": { - "qr_code": { - "step1": { - "description": "हम आपकी वॉलेट के तेज एक्सेस के लिए ioPay को आपके होम स्क्रीन पर डालने की सलाह देते हैं.", - "title": "ioPay ऐप खोलें" - }, - "step2": { - "description": "आप अपने फोन पर हमारे बैकअप फीचर का उपयोग करके आसानी से अपने वॉलेट का बैकअप कर सकते हैं।", - "title": "वॉलेट बनाएं या आयात करें" - }, - "step3": { - "description": "जैसे ही आप स्कैन करेंगे, एक कनेक्शन संकेत आपके वॉलेट को कनेक्ट करने के लिए प्रकट होगा।", - "title": "WalletConnect बटन पर टैप करें" - } - } - }, - "kaikas": { - "extension": { - "step1": { - "description": "हम आपके वॉलेट तक जल्दी पहुँचने के लिए Kaikas को आपके टास्कबार पर पिन करने की सलाह देते हैं।", - "title": "Kaikas एक्सटेंशन को इंस्टॉल करें" - }, - "step2": { - "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेने के लिए सुनिश्चित करें। किसी के साथ भी अपना गुप्त वाक्यांश साझा न करें।", - "title": "वॉलेट बनाएं या आयात करें" - }, - "step3": { - "description": "एक बार जब आप अपना वॉलेट सेटअप कर लेते हैं, तो नीचे क्लिक करें ताकि ब्राउज़र को ताज़ा करें और एक्सटेंशन लोड करें।", - "title": "अपने ब्राउज़र को ताज़ा करें" - } - }, - "qr_code": { - "step1": { - "title": "Kaikas ऐप को खोलें", - "description": "अपने वॉलेट तक तेजी से पहुँचने के लिए Kaikas ऐप को अपनी होम स्क्रीन पर रखें।" - }, - "step2": { - "title": "वॉलेट बनाएं या आयात करें", - "description": "नया बटुआ बनाएं या मौजूदा को आयात करें।" - }, - "step3": { - "title": "ऊपरी दाएं कोने में स्कैनर आइकॉन पर टैप करें", - "description": "नया कनेक्शन चुनें, फिर QR कोड स्कैन करें और कनेक्ट करने के लिए प्रॉम्प्ट की पुष्टि करें।" - } - } - }, - "kaia": { - "extension": { - "step1": { - "description": "हम आपके वॉलेट तक त्वरित पहुँच के लिए Kaia को अपने टास्कबार में पिन करने की सलाह देते हैं।", - "title": "Kaia एक्सटेंशन स्थापित करें" - }, - "step2": { - "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेने के लिए सुनिश्चित करें। किसी के साथ भी अपना गुप्त वाक्यांश साझा न करें।", - "title": "वॉलेट बनाएं या आयात करें" - }, - "step3": { - "description": "एक बार जब आप अपना वॉलेट सेटअप कर लेते हैं, तो नीचे क्लिक करें ताकि ब्राउज़र को ताज़ा करें और एक्सटेंशन लोड करें।", - "title": "अपने ब्राउज़र को ताज़ा करें" - } - }, - "qr_code": { - "step1": { - "title": "Kaia ऐप को खोलें", - "description": "अपने वॉलेट के तेज एक्सेस के लिए Kaia ऐप को अपने होम स्क्रीन पर रखें।" - }, - "step2": { - "title": "वॉलेट बनाएं या आयात करें", - "description": "नया बटुआ बनाएं या मौजूदा को आयात करें।" - }, - "step3": { - "title": "ऊपरी दाएं कोने में स्कैनर आइकॉन पर टैप करें", - "description": "नया कनेक्शन चुनें, फिर QR कोड स्कैन करें और कनेक्ट करने के लिए प्रॉम्प्ट की पुष्टि करें।" - } - } - }, - "kraken": { - "qr_code": { - "step1": { - "title": "Kraken Wallet ऐप खोलें", - "description": "हम आपके वॉलेट तक तेजी से पहुंचने के लिए अपने होम स्क्रीन पर Kraken Wallet रखने की सलाह देते हैं।" - }, - "step2": { - "title": "वॉलेट बनाएं या आयात करें", - "description": "नया बटुआ बनाएं या मौजूदा को आयात करें।" - }, - "step3": { - "title": "QR आइकन पर टैप करें और स्कैन करें", - "description": "अपने होमस्क्रीन पर QR आइकन पर टैप करें, कोड स्कैन करें और प्रम्प्ट को कनेक्ट करने की पुष्टि करें।" - } - } - }, - "kresus": { - "qr_code": { - "step1": { - "title": "Kresus वॉलेट ऐप खोलें", - "description": "अपने वॉलेट तक तेज़ी से पहुँचने के लिए Kresus Wallet को अपने होम स्क्रीन पर जोड़ें।" - }, - "step2": { - "title": "वॉलेट बनाएं या आयात करें", - "description": "नया बटुआ बनाएं या मौजूदा को आयात करें।" - }, - "step3": { - "title": "QR आइकन पर टैप करें और स्कैन करें", - "description": "अपने होमस्क्रीन पर QR आइकन पर टैप करें, कोड स्कैन करें और प्रम्प्ट को कनेक्ट करने की पुष्टि करें।" - } - } - }, - "magicEden": { - "extension": { - "step1": { - "title": "Magic Eden एक्सटेंशन स्थापित करें", - "description": "हम आपके वॉलेट के आसान उपयोग के लिए Magic Eden को अपने टास्कबार में पिन करने की सलाह देते हैं।" - }, - "step2": { - "title": "वॉलेट बनाएं या आयात करें", - "description": "सुनिश्चित करें कि आप अपने वॉलेट का बैकअप एक सुरक्षित तरीके से ले रहे हैं। अपना गुप्त वसूली वाक्यांश किसी के साथ भी साझा न करें।" - }, - "step3": { - "title": "अपने ब्राउज़र को ताज़ा करें", - "description": "एक बार जब आप अपना वॉलेट सेटअप कर लेते हैं, तो नीचे क्लिक करें ताकि ब्राउज़र को ताज़ा करें और एक्सटेंशन लोड करें।" - } - } - }, - "metamask": { - "qr_code": { - "step1": { - "title": "MetaMask ऐप को खोलें", - "description": "हम आपको MetaMask को आपकी होम स्क्रीन पर रखने की सलाह देते हैं, इससे आपको त्वरित पहुँच मिलेगी।" - }, - "step2": { - "title": "एक वॉलेट बनाएं या इम्पोर्ट करें", - "description": "सुरक्षित विधि का उपयोग करके अपने बटुए का बैकअप लेना सुनिश्चित करें। अपना गुप्त वाक्यांश कभी भी किसी के साथ साझा न करें।" - }, - "step3": { - "title": "स्कैन बटन पर टैप करें", - "description": "स्कैन करने के बाद, आपके वॉलेट को कनेक्ट करने के लिए एक कनेक्शन प्रॉम्प्ट दिखाई देगा।" - } - }, - "extension": { - "step1": { - "title": "MetaMask एक्सटेंशन स्थापित करें", - "description": "हम अपने वॉलेट तक जल्दी से पहुँचने के लिए MetaMask को अपने टास्कबार में पिन करने की सलाह देते हैं।" - }, - "step2": { - "title": "वॉलेट बनाएं या आयात करें", - "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेना सुनिश्चित करें। अपनी गुप्त वाक्यांश को किसी के साथ शेयर न करें।" - }, - "step3": { - "title": "अपना ब्राउज़र ताज़ा करें", - "description": "एक बार जब आप अपना वॉलेट सेट अप करते हैं, तो ब्राउजर को ताज़ा करने और एक्सटेंशन को लोड करने के लिए नीचे क्लिक करें।" - } - } - }, - "nestwallet": { - "extension": { - "step1": { - "title": "NestWallet एक्सटेंशन स्थापित करें", - "description": "हम आपके वॉलेट के तेज एक्सेस के लिए NestWallet को आपके टास्कबार में पिन करने की सलाह देते हैं।" - }, - "step2": { - "title": "वॉलेट बनाएं या आयात करें", - "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेने के लिए सुनिश्चित करें। किसी के साथ भी अपना गुप्त वाक्यांश साझा न करें।" - }, - "step3": { - "title": "अपने ब्राउज़र को ताज़ा करें", - "description": "एक बार जब आप अपना वॉलेट सेटअप कर लेते हैं, तो नीचे क्लिक करें ताकि ब्राउज़र को ताज़ा करें और एक्सटेंशन लोड करें।" - } - } - }, - "okx": { - "qr_code": { - "step1": { - "title": "OKX Wallet ऐप खोलें", - "description": "हम आपको OKX Wallet को अपने होम स्क्रीन पर रखने की सलाह देते हैं, जिससे आप जल्दी से पहुंच सकें।" - }, - "step2": { - "title": "वॉलेट बनाएं या आयात करें", - "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेने का यकीन करें। कभी भी किसी के साथ अपने गुप्त वाक्यांश साझा न करें।" - }, - "step3": { - "title": "स्कैन बटन पर टैप करें", - "description": "जब आप स्कैन करते हैं, तो आपके वॉलेट को कनेक्ट करने के लिए एक कनेक्शन संकेत प्रकट होगा।" - } - }, - "extension": { - "step1": { - "title": "OKX वॉलेट एक्सटेंशन स्थापित करें", - "description": "हम अपने वॉलेट तक तेज़ी से पहुंचने के लिए आपको OKX वॉलेट को अपने कार्यपट्टी में पिन करने की सलाह देते हैं।" - }, - "step2": { - "title": "वॉलेट बनाएं या आयात करें", - "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेने का यकीन करें। कभी भी किसी के साथ अपने गुप्त वाक्यांश साझा न करें।" - }, - "step3": { - "title": "अपने ब्राउज़र को ताज़ा करें", - "description": "जब आप अपना वॉलेट सेट अप कर लेते हैं, तो नीचे क्लिक करके ब्राउज़र को ताजा करें और एक्सटेंशन को लोड करें।" - } - } - }, - "omni": { - "qr_code": { - "step1": { - "title": "Omni ऐप को खोलें", - "description": "अपने वॉलेट तक अधिक जल्दी पहुंचने के लिए Omni को अपने होम स्क्रीन पर जोड़ें।" - }, - "step2": { - "title": "वॉलेट बनाएं या आयात करें", - "description": "एक नया वॉलेट बनाएं या मौजूदा एक को आयात करें।" - }, - "step3": { - "title": "QR आइकन पर टैप करें और स्कैन करें", - "description": "अपने होम स्क्रीन पर QR आइकन पर टैप करें, कोड स्कैन करें और कनेक्ट करने के लिए प्रॉम्प्ट की पुष्टि करें।" - } - } - }, - "1inch": { - "qr_code": { - "step1": { - "description": "अपने वॉलेट तक तेजी से पहुँचने के लिए 1inch Wallet को अपनी होम स्क्रीन पर रखें।", - "title": "1inch Wallet ऐप को खोलें" - }, - "step2": { - "description": "वॉलेट और उपयोगकर्ता नाम बनाएं, या मौजूदा वॉलेट को आयात करें।", - "title": "वॉलेट बनाएं या आयात करें" - }, - "step3": { - "description": "जैसे ही आप स्कैन करेंगे, एक कनेक्शन संकेत आपके वॉलेट को कनेक्ट करने के लिए प्रकट होगा।", - "title": "QR स्कैन बटन को टैप करें" - } - } - }, - "token_pocket": { - "qr_code": { - "step1": { - "title": "TokenPocket ऐप को खोलें", - "description": "हम आपको TokenPocket को अपने होम स्क्रीन पर रखने की सलाह देते हैं ताकि आपको तेज एक्सेस मिल सके।" - }, - "step2": { - "title": "एक वॉलेट बनाएँ या आयात करें", - "description": "सुरक्षित विधि का उपयोग करके अपने बटुए का बैकअप लेना सुनिश्चित करें। अपना गुप्त वाक्यांश कभी भी किसी के साथ साझा न करें।" - }, - "step3": { - "title": "स्कैन बटन पर टैप करें", - "description": "एक बार स्कैन करने के बाद, आपके लिए एक कनेक्शन प्रॉम्प्ट प्रकट होगा ताकि आप अपने वॉलेट को कनेक्ट कर सकें।" - } - }, - "extension": { - "step1": { - "title": "TokenPocket एक्सटेंशन स्थापित करें", - "description": "हम अपने वॉलेट तक त्वरित पहुंच के लिए TokenPocket को अपने taskbar पर pin करने की सिफारिश करते हैं।" - }, - "step2": { - "title": "वॉलेट बनाएं या आयात करें", - "description": "सुनिश्चित करें कि आप अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेते हैं। कभी किसी के साथ अपना गुप्त वाक्यांश साझा न करें।" - }, - "step3": { - "title": "अपना ब्राउज़र ताज़ा करें", - "description": "एक बार जब आप अपना वॉलेट सेटअप कर लेते हैं, तो नीचे क्लिक करें ताज़ा ब्राउज़र लोड करें और एक्सटेंशन अप करें।" - } - } - }, - "trust": { - "qr_code": { - "step1": { - "title": "Trust Wallet ऐप खोलें", - "description": "अपने वॉलेट तक तेज़ी से पहुंचने के लिए Trust Wallet को अपने होम स्क्रीन पर रखें।" - }, - "step2": { - "title": "वॉलेट बनाएं या आयात करें", - "description": "एक नया वॉलेट बनाएं या मौजूदा वॉलेट आयात करें।" - }, - "step3": { - "title": "सेटिंग्स में WalletConnect को टैप करें", - "description": "नया कनेक्शन चुनें, फिर QR कोड स्कैन करें और प्रम्प्ट की पुष्टि करें।" - } - }, - "extension": { - "step1": { - "title": "Trust Wallet एक्सटेंशन को इंस्टॉल करें", - "description": "अपने ब्राउज़र के ऊपरी दाएं कोने पर क्लिक करें और Trust Wallet को आसानी से प्रवेश के लिए पिन करें।" - }, - "step2": { - "title": "एक वॉलेट बनाएं या आयात करें", - "description": "एक नया वॉलेट बनाएं या मौजूदा वॉलेट आयात करें।" - }, - "step3": { - "title": "अपने ब्राउज़र को ताज़ा करें", - "description": "एक बार Trust Wallet सेट अप करने के बाद, नीचे क्लिक करें ब्राउज़र को ताज़ा करने और एक्सटेंशन लोड करने के लिए।" - } - } - }, - "uniswap": { - "qr_code": { - "step1": { - "title": "Uniswap ऐप को खोलें", - "description": "अपने होम स्क्रीन पर Uniswap वॉलेट जोड़ें, इससे आपके वॉलेट तक तेजी से पहुंचने की सुविधा होगी।" - }, - "step2": { - "title": "वॉलेट बनाएं या आयात करें", - "description": "एक नया वॉलेट बनाएं या मौजूदा वॉलेट को आयात करें।" - }, - "step3": { - "title": "QR आइकन पर टैप करें और स्कैन करें", - "description": "अपने होमस्क्रीन पर QR आइकन पर टैप करें, कोड स्कैन करें और प्रम्प्ट को कनेक्ट करने की पुष्टि करें।" - } - } - }, - "zerion": { - "qr_code": { - "step1": { - "title": "Zerion ऐप को खोलें", - "description": "हम सलाह देते हैं कि आप Zerion को अपने होम स्क्रीन पर रखें, इससे तेजी से एक्सेस करने में आसानी होगी।" - }, - "step2": { - "title": "एक वॉलेट बनाएं या आयात करें", - "description": "सुरक्षित विधि का उपयोग करके अपने बटुए का बैकअप लेना सुनिश्चित करें। अपना गुप्त वाक्यांश कभी भी किसी के साथ साझा न करें।" - }, - "step3": { - "title": "स्कैन बटन को टैप करें", - "description": "आप स्कैन करने के बाद, एक कनेक्शन प्रोम्प्ट आपके बटुए को कनेक्ट करने के लिए प्रकट होगा।" - } - }, - "extension": { - "step1": { - "title": "Zerion एक्सटेंशन स्थापित करें", - "description": "हमारी सिफारिश है कि आप अपने वॉलेट तक जल्दी पहुँचने के लिए Zerion को अपने टास्कबार में पिन करें।" - }, - "step2": { - "title": "वॉलेट बनाएं या आयात करें", - "description": "सुनिश्चित करें कि आप एक सुरक्षित विधि का उपयोग करके अपने वॉलेट का बैकअप ले रहे हैं। अपना गुप्त वाक्य कभी किसी के साथ साझा न करें।" - }, - "step3": { - "title": "अपना ब्राउज़र ताज़ा करें", - "description": "एक बार जब आप अपने वॉलेट की स्थापना कर लें, तो ब्राउज़र को ताज़ा करने और एक्सटेंशन को लोड करने के लिए नीचे क्लिक करें।" - } - } - }, - "rainbow": { - "qr_code": { - "step1": { - "title": "Rainbow ऐप को खोलें", - "description": "हम अपने वॉलेट के तेज एक्सेस के लिए Rainbow को अपने होम स्क्रीन पर रखने की सलाह देते हैं।" - }, - "step2": { - "title": "वॉलेट बनाएं या आयात करें", - "description": "आप अपने फ़ोन पर हमारे बैकअप फीचर का उपयोग करके अपने वॉलेट का बैकअप आसानी से ले सकते हैं।" - }, - "step3": { - "title": "स्कैन बटन पर टैप करें", - "description": "जब आप स्कैन करते हैं, तो आपकी वॉलेट से कनेक्ट करने के लिए एक कनेक्शन संकेत दिखाई देगा।" - } - } - }, - "enkrypt": { - "extension": { - "step1": { - "description": "हम अपनी वॉलेट तक तेज़ी से पहुँच के लिए Enkrypt वॉलेट को अपने टास्कबार में पिन करने की सलाह देते हैं।", - "title": "Enkrypt वॉलेट एक्सटेंशन स्थापित करें" - }, - "step2": { - "description": "सुनिश्चित करें कि आप अपनी वॉलेट का बैकअप एक सुरक्षित तरीके से ले। अपनी गुप्त वाक्यांश को कभी भी किसी के साथ साझा न करें।", - "title": "एक वॉलेट बनाएं या आयात करें" - }, - "step3": { - "description": "एक बार जब आप अपनी वॉलेट सेट कर लें, तो नीचे क्लिक करें ब्राउज़र को ताज़ा करने और एक्सटेंशन लोड करने के लिए।", - "title": "अपने ब्राउज़र को ताज़ा करें" - } - } - }, - "frame": { - "extension": { - "step1": { - "description": "हम अपनी वॉलेट तक तेज़ी से पहुँच के लिए Frame को अपने टास्कबार में पिन करने की सलाह देते हैं।", - "title": "Frame और साथी एक्सटेंशन स्थापित करें" - }, - "step2": { - "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेना सुनिश्चित करें। कभी भी अपनी गुप्त वाक्यांश को किसी के साथ साझा न करें।", - "title": "वॉलेट बनाएं या आयात करें" - }, - "step3": { - "description": "एक बार जब आप अपने वॉलेट की सेटअप कर लेते हैं, तो नीचे क्लिक करके ब्राउज़र को ताज़ा करें और एक्सटेंशन को लोड करें।", - "title": "अपना ब्राउज़र ताज़ा करें" - } - } - }, - "one_key": { - "extension": { - "step1": { - "title": "OneKey Wallet एक्सटेंशन स्थापित करें", - "description": "हम आपको अपने वॉलेट की तेज एक्सेस के लिए OneKey Wallet को अपने टास्कबार में पिन करने की सलाह देते हैं।" - }, - "step2": { - "title": "वॉलेट बनाएं या आयात करें", - "description": "सुनिश्चित करें कि आप अपने वॉलेट का बैकअप एक सुरक्षित तरीके से ले रहे हैं। अपना गुप्त वाक्यांश किसी के साथ भी साझा न करें।" - }, - "step3": { - "title": "अपने ब्राउज़र को ताज़ा करें", - "description": "एक बार जब आप अपना वॉलेट सेट अप कर लेते हैं, तो ब्राउज़र को ताज़ा करने और एक्सटेंशन को लोड करने के लिए नीचे क्लिक करें।" - } - } - }, - "paraswap": { - "qr_code": { - "step1": { - "title": "ParaSwap ऐप खोलें", - "description": "अपने होम स्क्रीन पर ParaSwap Wallet जोड़ें, इससे आपके वॉलेट तक तेजी से पहुंचने की सुविधा होगी।" - }, - "step2": { - "title": "वॉलेट बनाएं या आयात करें", - "description": "नया बटुआ बनाएं या मौजूदा को आयात करें।" - }, - "step3": { - "title": "QR आइकन पर टैप करें और स्कैन करें", - "description": "अपने होमस्क्रीन पर QR आइकन पर टैप करें, कोड स्कैन करें और प्रम्प्ट को कनेक्ट करने की पुष्टि करें।" - } - } - }, - "phantom": { - "extension": { - "step1": { - "title": "फैंटम एक्सटेंशन स्थापित करें", - "description": "हम आपके वॉलेट के आसान उपयोग के लिए फैंटम को अपने टास्कबार में पिन करने की सलाह देते हैं।" - }, - "step2": { - "title": "एक वॉलेट बनाएं या आयात करें", - "description": "सुनिश्चित करें कि आप अपने वॉलेट का बैकअप एक सुरक्षित तरीके से ले रहे हैं। अपना गुप्त वसूली वाक्यांश किसी के साथ भी साझा न करें।" - }, - "step3": { - "title": "अपने ब्राउज़र को ताज़ा करें", - "description": "एक बार जब आप अपना वॉलेट सेट कर लें, तो ब्राउज़र को ताजगी देने और एक्सटेंशन को लोड करने के लिए नीचे क्लिक करें।" - } - } - }, - "rabby": { - "extension": { - "step1": { - "title": "Rabby एक्सटेंशन स्थापित करें", - "description": "हम आपको सलाह देते हैं कि अपने वॉलेट की जल्दी से पहुँच के लिए Rabby को अपने टास्कबार में पिन करें।" - }, - "step2": { - "title": "वॉलेट बनाएं या आयात करें", - "description": "सुनिश्चित करें कि आप अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेते हैं। कभी भी किसी के साथ अपना गुप्त वाक्यांश साझा न करें।" - }, - "step3": { - "title": "अपना ब्राउज़र ताज़ा करें", - "description": "जब आप अपना वॉलेट सेट अप कर लेते हैं, तो ब्राउज़र को ताज़ा करने और एक्सटेंशन लोड करने के लिए नीचे क्लिक करें।" - } - } - }, - "ronin": { - "qr_code": { - "step1": { - "description": "हम आपके वॉलेट तक जल्दी पहुँच के लिए Ronin Wallet को आपके होम स्क्रीन पर डालने की सलाह देते हैं।", - "title": "Ronin Wallet ऐप खोलें" - }, - "step2": { - "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेने के लिए सुनिश्चित करें। किसी के साथ भी अपना गुप्त वाक्यांश साझा न करें।", - "title": "वॉलेट बनाएं या आयात करें" - }, - "step3": { - "description": "जैसे ही आप स्कैन करेंगे, एक कनेक्शन संकेत आपके वॉलेट को कनेक्ट करने के लिए प्रकट होगा।", - "title": "स्कैन बटन को टैप करें" - } - }, - "extension": { - "step1": { - "description": "अपने वॉलेट तक जल्दी पहुँच के लिए हम Ronin Wallet को आपके टास्कबार पर पिन करने की सलाह देते हैं।", - "title": "Ronin Wallet एक्सटेंशन इंस्टॉल करें" - }, - "step2": { - "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेने के लिए सुनिश्चित करें। किसी के साथ भी अपना गुप्त वाक्यांश साझा न करें।", - "title": "वॉलेट बनाएं या आयात करें" - }, - "step3": { - "description": "एक बार जब आप अपना वॉलेट सेटअप कर लेते हैं, तो नीचे क्लिक करें ताकि ब्राउज़र को ताज़ा करें और एक्सटेंशन लोड करें।", - "title": "अपने ब्राउज़र को ताज़ा करें" - } - } - }, - "ramper": { - "extension": { - "step1": { - "title": "Ramper एक्सटेंशन इंस्टॉल करें", - "description": "अपने वॉलेट तक आसान पहुँच के लिए हम Ramper को आपके टास्कबार पर पिन करने की सलाह देते हैं।" - }, - "step2": { - "title": "एक वॉलेट बनाएँ", - "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेने के लिए सुनिश्चित करें। किसी के साथ भी अपना गुप्त वाक्यांश साझा न करें।" - }, - "step3": { - "title": "अपने ब्राउज़र को ताज़ा करें", - "description": "एक बार जब आप अपना वॉलेट सेटअप कर लेते हैं, तो नीचे क्लिक करें ताकि ब्राउज़र को ताज़ा करें और एक्सटेंशन लोड करें।" - } - } - }, - "safeheron": { - "extension": { - "step1": { - "title": "कोर एक्सटेंशन स्थापित करें", - "description": "हम आपको सलाह देते हैं कि अपने वॉलेट की जल्दी से पहुँच के लिए Safeheron को अपने टास्कबार में पिन करें।" - }, - "step2": { - "title": "वॉलेट बनाएं या आयात करें", - "description": "सुनिश्चित करें कि आप एक सुरक्षित तरीके से अपना वॉलेट बैकअप कर रहे हैं। कभी भी किसी के साथ अपने गुप्त वाक्यांश को साझा न करें।" - }, - "step3": { - "title": "अपने ब्राउज़र को ताज़ा करें", - "description": "एक बार जब आप अपने वॉलेट को सेट अप करते हैं, तो नीचे क्लिक करें ताकि ब्राउज़र को ताज़ा करें और एक्सटेंशन को लोड करें।" - } - } - }, - "taho": { - "extension": { - "step1": { - "title": "ताहो एक्सटेंशन स्थापित करें", - "description": "हम आपके वॉलेट तक त्वरित पहुँच के लिए ताहो को अपने टास्कबार में पिन करने की सलाह देते हैं।" - }, - "step2": { - "title": "एक वॉलेट बनाएँ या आयात करें", - "description": "सुनिश्चित करें कि आप एक सुरक्षित तरीके से अपना वॉलेट बैकअप कर रहे हैं। कभी भी किसी के साथ अपने गुप्त वाक्यांश को साझा न करें।" - }, - "step3": { - "title": "अपने ब्राउज़र को ताज़ा करें", - "description": "एक बार जब आप अपना बटुआ सेट कर लेते हैं, तो नीचे क्लिक करके ब्राउज़र को ताज़ा करें और एक्सटेंशन को लोड करें।" - } - } - }, - "wigwam": { - "extension": { - "step1": { - "title": "Wigwam एक्सटेंशन स्थापित करें", - "description": "हम अपनी वॉलेट तक तेज़ी से पहुँच के लिए Wigwam को अपने टास्कबार में पिन करने की सलाह देते हैं।" - }, - "step2": { - "title": "वॉलेट बनाएं या आयात करें", - "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेने के लिए सुनिश्चित करें। किसी के साथ भी अपना गुप्त वाक्यांश साझा न करें।" - }, - "step3": { - "title": "अपने ब्राउज़र को ताज़ा करें", - "description": "एक बार जब आप अपना वॉलेट सेटअप कर लेते हैं, तो नीचे क्लिक करें ताकि ब्राउज़र को ताज़ा करें और एक्सटेंशन लोड करें।" - } - } - }, - "talisman": { - "extension": { - "step1": { - "title": "तालिसमान एक्सटेंशन स्थापित करें", - "description": "हम आपके बटुए के त्वरित पहुँच के लिए तालिसमान को अपने टास्कबार में पिन करने की सिफारिश करते हैं।" - }, - "step2": { - "title": "एक ईथेरियम बटुए बनाएं या आयात करें", - "description": "अपने बटुए का बैकअप एक सुरक्षित तरीके से लेने का ध्यान रखें। कभी भी अपनी वसूली वाक्यांश को किसी के साथ साझा न करें।" - }, - "step3": { - "title": "अपने ब्राउज़र को ताज़ा करें", - "description": "एक बार जब आप अपना बटुआ सेट कर लेते हैं, तो नीचे क्लिक करके ब्राउज़र को ताज़ा करें और एक्सटेंशन को लोड करें।" - } - } - }, - "xdefi": { - "extension": { - "step1": { - "title": "XDEFI वॉलेट एक्सटेंशन स्थापित करें", - "description": "हम आपकी वॉलेट की जल्दी से पहुँच के लिए XDEFI Wallet को अपने टास्कबार में पिन करने की सलाह देते हैं।" - }, - "step2": { - "title": "एक वॉलेट बनाएं या आयात करें", - "description": "निश्चित रूप से अपने वॉलेट का बैकअप किसी सुरक्षित तरीके से लें। अपनी गोपनीय वाक्यांश को किसी के साथ शेयर ना करें।" - }, - "step3": { - "title": "अपने ब्राउज़र को ताज़ा करें", - "description": "एक बार जब आपने अपनी वॉलेट सेट अप कर ली हो, तो ब्राउज़र को ताज़ा करने और एक्सटेंशन को लोड करने के लिए नीचे क्लिक करें।" - } - } - }, - "zeal": { - "qr_code": { - "step1": { - "title": "Zeal ऐप को खोलें", - "description": "अपने वॉलेट तक तेजी से पहुंचने के लिए अपने होम स्क्रीन पर Zeal वॉलेट जोड़ें।" - }, - "step2": { - "title": "वॉलेट बनाएं या आयात करें", - "description": "नया बटुआ बनाएं या मौजूदा को आयात करें।" - }, - "step3": { - "title": "QR आइकन पर टैप करें और स्कैन करें", - "description": "अपने होमस्क्रीन पर QR आइकन पर टैप करें, कोड स्कैन करें और प्रम्प्ट को कनेक्ट करने की पुष्टि करें।" - } - }, - "extension": { - "step1": { - "title": "Zeal एक्सटेंशन स्थापित करें", - "description": "हम आपको अपने वॉलेट तक जल्दी पहुँचने के लिए Zeal को अपने टास्कबार में पिन करने की सलाह देते हैं।" - }, - "step2": { - "title": "वॉलेट बनाएं या आयात करें", - "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेने के लिए सुनिश्चित करें। किसी के साथ भी अपना गुप्त वाक्यांश साझा न करें।" - }, - "step3": { - "title": "अपने ब्राउज़र को ताज़ा करें", - "description": "एक बार जब आप अपना वॉलेट सेटअप कर लेते हैं, तो नीचे क्लिक करें ताकि ब्राउज़र को ताज़ा करें और एक्सटेंशन लोड करें।" - } - } - }, - "safepal": { - "extension": { - "step1": { - "title": "SafePal Wallet एक्सटेंशन स्थापित करें", - "description": "अपने ब्राउज़र के शीर्ष दाएं में क्लिक करें और SafePal Wallet को आसानी से पहुंच के लिए पिन करें।" - }, - "step2": { - "title": "एक बटुआ बनाएं या आयात करें", - "description": "नया बटुआ बनाएं या मौजूदा को आयात करें।" - }, - "step3": { - "title": "अपने ब्राउज़र को ताज़ा करें", - "description": "एक बार जब आप SafePal वॉलेट सेट अप कर लेते हैं, तो नीचे क्लिक करें ताकि ब्राउज़र को रिफ्रेश करें और एक्सटेंशन लोड करें।" - } - }, - "qr_code": { - "step1": { - "title": "SafePal वॉलेट ऐप खोलें", - "description": "अपने वॉलेट तक जल्दी पहुंचने के लिए SafePal वॉलेट को अपनी होम स्क्रीन पर रखें।" - }, - "step2": { - "title": "वॉलेट बनाएं या आयात करें", - "description": "नया बटुआ बनाएं या मौजूदा को आयात करें।" - }, - "step3": { - "title": "सेटिंग्स में WalletConnect को टैप करें", - "description": "नया कनेक्शन चुनें, फिर QR कोड स्कैन करें और कनेक्ट करने के लिए प्रॉम्प्ट की पुष्टि करें।" - } - } - }, - "desig": { - "extension": { - "step1": { - "title": "Desig एक्सटेंशन स्थापित करें", - "description": "हम आपको अपने वॉलेट के लिए आसानी से पहुंच पाने के लिए Desig को अपने टास्कबार में पिन करने की सलाह देते हैं।" - }, - "step2": { - "title": "एक वॉलेट बनाएँ", - "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेने के लिए सुनिश्चित करें। किसी के साथ भी अपना गुप्त वाक्यांश साझा न करें।" - }, - "step3": { - "title": "अपने ब्राउज़र को ताज़ा करें", - "description": "एक बार जब आप अपना वॉलेट सेटअप कर लेते हैं, तो नीचे क्लिक करें ताकि ब्राउज़र को ताज़ा करें और एक्सटेंशन लोड करें।" - } - } - }, - "subwallet": { - "extension": { - "step1": { - "title": "SubWallet एक्सटेंशन स्थापित करें", - "description": "हम आपको अपने वॉलेट तक तेजी से पहुंचने के लिए SubWallet को अपने टास्कबार में पिन करने की सलाह देते हैं।" - }, - "step2": { - "title": "वॉलेट बनाएं या आयात करें", - "description": "अपने बटुए का बैकअप एक सुरक्षित तरीके से लेने का ध्यान रखें। कभी भी अपनी वसूली वाक्यांश को किसी के साथ साझा न करें।" - }, - "step3": { - "title": "अपने ब्राउज़र को ताज़ा करें", - "description": "एक बार जब आप अपना वॉलेट सेटअप कर लेते हैं, तो नीचे क्लिक करें ताकि ब्राउज़र को ताज़ा करें और एक्सटेंशन लोड करें।" - } - }, - "qr_code": { - "step1": { - "title": "SubWallet ऐप खोलें", - "description": "हम आपको तेजी से पहुंचने के लिए SubWallet को अपने होम स्क्रीन पर रखने की सलाह देते हैं।" - }, - "step2": { - "title": "वॉलेट बनाएं या आयात करें", - "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेने के लिए सुनिश्चित करें। किसी के साथ भी अपना गुप्त वाक्यांश साझा न करें।" - }, - "step3": { - "title": "स्कैन बटन को टैप करें", - "description": "जैसे ही आप स्कैन करेंगे, एक कनेक्शन संकेत आपके वॉलेट को कनेक्ट करने के लिए प्रकट होगा।" - } - } - }, - "clv": { - "extension": { - "step1": { - "title": "CLV Wallet एक्सटेंशन स्थापित करें", - "description": "हम आपको अपने वॉलेट तक तेजी से पहुंचने के लिए CLV Wallet को अपने टास्कबार में पिन करने की सलाह देते हैं।" - }, - "step2": { - "title": "वॉलेट बनाएं या आयात करें", - "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेने के लिए सुनिश्चित करें। किसी के साथ भी अपना गुप्त वाक्यांश साझा न करें।" - }, - "step3": { - "title": "अपने ब्राउज़र को ताज़ा करें", - "description": "एक बार जब आप अपना वॉलेट सेटअप कर लेते हैं, तो नीचे क्लिक करें ताकि ब्राउज़र को ताज़ा करें और एक्सटेंशन लोड करें।" - } - }, - "qr_code": { - "step1": { - "title": "CLV वॉलेट ऐप खोलें", - "description": "हम तीव्र पहुंच के लिए आपके होम स्क्रीन पर CLV वॉलेट रखने की सलाह देते हैं।" - }, - "step2": { - "title": "वॉलेट बनाएं या आयात करें", - "description": "अपने वॉलेट का बैकअप एक सुरक्षित तरीके से लेने के लिए सुनिश्चित करें। किसी के साथ भी अपना गुप्त वाक्यांश साझा न करें।" - }, - "step3": { - "title": "स्कैन बटन को टैप करें", - "description": "जैसे ही आप स्कैन करेंगे, एक कनेक्शन संकेत आपके वॉलेट को कनेक्ट करने के लिए प्रकट होगा।" - } - } - }, - "okto": { - "qr_code": { - "step1": { - "title": "Okto ऐप को खोलें", - "description": "त्वरित पहुंच के लिए अपने होम स्क्रीन पर Okto जोड़ें" - }, - "step2": { - "title": "एक MPC वॉलेट बनाएं", - "description": "एक खाता बनाएं और वॉलेट उत्पन्न करें" - }, - "step3": { - "title": "सेटिंग्स में WalletConnect को टैप करें", - "description": "ऊपरी दाएँ में स्कैन QR आइकन को टैप करें और कनेक्ट करने के लिए संकेत दें।" - } - } - }, - "ledger": { - "desktop": { - "step1": { - "title": "लेजर लाइव ऐप खोलें", - "description": "हम तेज एक्सेस के लिए अपने होम स्क्रीन पर Ledger Live डालने की सिफारिश करते हैं।" - }, - "step2": { - "title": "अपना लेजर सेट करें", - "description": "एक नया लेजर सेट अप करें या मौजूदा वाले से कनेक्ट करें।" - }, - "step3": { - "title": "कनेक्ट करें", - "description": "स्कैन करने के बाद, आपके वॉलेट को कनेक्ट करने के लिए एक कनेक्शन प्रॉम्प्ट दिखाई देगा।" - } - }, - "qr_code": { - "step1": { - "title": "लेजर लाइव ऐप खोलें", - "description": "हम तेज एक्सेस के लिए अपने होम स्क्रीन पर Ledger Live डालने की सिफारिश करते हैं।" - }, - "step2": { - "title": "अपना लेजर सेट करें", - "description": "आप डेस्कटॉप ऐप के साथ सिंक कर सकते हैं या अपने Ledger को कनेक्ट कर सकते हैं।" - }, - "step3": { - "title": "कोड स्कैन करें", - "description": "WalletConnect पर टैप करें फिर स्कैनर पर स्विच करें। जब आप स्कैन करेंगे, तो आपके वॉलेट को कनेक्ट करने के लिए एक कनेक्शन संकेत प्रकट होगा।" - } - } - }, - "valora": { - "qr_code": { - "step1": { - "title": "Valora ऐप खोलें", - "description": "हम सलाह देते हैं कि आप Valora को अपने होम स्क्रीन पर रखें, इससे तेजी से एक्सेस करने में आसानी होगी।" - }, - "step2": { - "title": "एक वॉलेट बनाएं या आयात करें", - "description": "नया बटुआ बनाएं या मौजूदा को आयात करें।" - }, - "step3": { - "title": "स्कैन बटन को टैप करें", - "description": "जैसे ही आप स्कैन करेंगे, एक कनेक्शन संकेत आपके वॉलेट को कनेक्ट करने के लिए प्रकट होगा।" - } - } - }, - "gate": { - "qr_code": { - "step1": { - "title": "गेट ऐप खोलें", - "description": "हम आपको गेट को अपने होम स्क्रीन पर रखने की सलाह देते हैं ताकि तेज़ी से एक्सेस मिल सके।" - }, - "step2": { - "title": "वॉलेट बनाएं या आयात करें", - "description": "नया बटुआ बनाएं या मौजूदा को आयात करें।" - }, - "step3": { - "title": "स्कैन बटन को टैप करें", - "description": "जैसे ही आप स्कैन करेंगे, एक कनेक्शन संकेत आपके वॉलेट को कनेक्ट करने के लिए प्रकट होगा।" - } - }, - "extension": { - "step1": { - "title": "गेट एक्सटेंशन स्थापित करें", - "description": "हम आपको अपने वॉलेट के आसान उपयोग के लिए गेट को अपने टास्कबार में पिन करने की सलाह देते हैं।" - }, - "step2": { - "title": "वॉलेट बनाएं या आयात करें", - "description": "सुनिश्चित करें कि आप अपने वॉलेट का बैकअप एक सुरक्षित तरीके से ले रहे हैं। अपना गुप्त वसूली वाक्यांश किसी के साथ भी साझा न करें।" - }, - "step3": { - "title": "अपने ब्राउज़र को ताज़ा करें", - "description": "एक बार जब आप अपना वॉलेट सेटअप कर लेते हैं, तो नीचे क्लिक करें ताकि ब्राउज़र को ताज़ा करें और एक्सटेंशन लोड करें।" - } - } - }, - "xportal": { - "qr_code": { - "step1": { - "description": "तेजी से अपने वॉलेट को खोलने के लिए xPortal को अपने होम स्क्रीन पर रखें।", - "title": "xPortal ऐप खोलें" - }, - "step2": { - "description": "नया बटुआ बनाएं या मौजूदा को आयात करें।", - "title": "वॉलेट बनाएं या आयात करें" - }, - "step3": { - "description": "जैसे ही आप स्कैन करेंगे, एक कनेक्शन संकेत आपके वॉलेट को कनेक्ट करने के लिए प्रकट होगा।", - "title": "QR स्कैन बटन को टैप करें" - } - } - }, - "mew": { - "qr_code": { - "step1": { - "description": "हम तीव्र पहुंच के लिए आपके होम स्क्रीन पर MEW वॉलेट रखने की सलाह देते हैं।", - "title": "MEW वॉलेट ऐप खोलें" - }, - "step2": { - "description": "आप बादल बैकअप सुविधा का उपयोग करके आसानी से अपने वॉलेट का बैकअप ले सकते हैं।", - "title": "वॉलेट बनाएं या आयात करें" - }, - "step3": { - "description": "जैसे ही आप स्कैन करेंगे, एक कनेक्शन संकेत आपके वॉलेट को कनेक्ट करने के लिए प्रकट होगा।", - "title": "स्कैन बटन को टैप करें" - } - } - } - }, - "zilpay": { - "qr_code": { - "step1": { - "title": "ZilPay ऐप को खोलें", - "description": "अपने वॉलेट तक अधिक जल्दी पहुंचने के लिए ZilPay को अपने होम स्क्रीन पर जोड़ें।" - }, - "step2": { - "title": "वॉलेट बनाएं या आयात करें", - "description": "नया बटुआ बनाएं या मौजूदा को आयात करें।" - }, - "step3": { - "title": "स्कैन बटन को टैप करें", - "description": "जैसे ही आप स्कैन करेंगे, एक कनेक्शन संकेत आपके वॉलेट को कनेक्ट करने के लिए प्रकट होगा।" - } - } - } -} -`;export{u as default}; diff --git a/client2/build/assets/hyperevm-VKPAA4SA-CHwraEsx.js b/client2/build/assets/hyperevm-VKPAA4SA-CHwraEsx.js deleted file mode 100644 index 60befc014..000000000 --- a/client2/build/assets/hyperevm-VKPAA4SA-CHwraEsx.js +++ /dev/null @@ -1 +0,0 @@ -var C="data:image/svg+xml,%3Csvg%20width%3D%22144%22%20height%3D%22144%22%20viewBox%3D%220%200%20144%20144%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Cpath%20d%3D%22M144%2071.6991C144%20119.306%20114.866%20134.582%2099.5156%20120.98C86.8804%20109.889%2083.1211%2086.4521%2064.116%2084.0456C39.9942%2081.0113%2037.9057%20113.133%2022.0334%20113.133C3.5504%20113.133%200%2086.2428%200%2072.4315C0%2058.3063%203.96809%2039.0542%2019.736%2039.0542C38.1146%2039.0542%2039.1588%2066.5722%2062.132%2065.1073C85.0007%2063.5379%2085.4184%2034.8689%20100.247%2022.6271C113.195%2012.0593%20144%2023.4641%20144%2071.6991Z%22%20fill%3D%22%2397FCE4%22%2F%3E%0A%3C%2Fsvg%3E%0A";export{C as default}; diff --git a/client2/build/assets/id-K6pABLYK.js b/client2/build/assets/id-K6pABLYK.js deleted file mode 100644 index be2de2d66..000000000 --- a/client2/build/assets/id-K6pABLYK.js +++ /dev/null @@ -1,12 +0,0 @@ -import{b as c}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const e=c` - -`;export{e as idSvg}; diff --git a/client2/build/assets/id_ID-7ZWSMOOE-ZzIoBaiI.js b/client2/build/assets/id_ID-7ZWSMOOE-ZzIoBaiI.js deleted file mode 100644 index c49942fca..000000000 --- a/client2/build/assets/id_ID-7ZWSMOOE-ZzIoBaiI.js +++ /dev/null @@ -1,1427 +0,0 @@ -var n=`{ - "connect_wallet": { - "label": "Hubungkan Dompet", - "wrong_network": { - "label": "Jaringan yang salah" - } - }, - "intro": { - "title": "Apa itu Dompet?", - "description": "Sebuah dompet digunakan untuk mengirim, menerima, menyimpan, dan menampilkan aset digital. Ini juga cara baru untuk masuk, tanpa perlu membuat akun dan kata sandi baru di setiap situs web.", - "digital_asset": { - "title": "Sebuah Rumah untuk Aset Digital Anda", - "description": "Dompet digunakan untuk mengirim, menerima, menyimpan, dan menampilkan aset digital seperti Ethereum dan NFTs." - }, - "login": { - "title": "Cara Baru untuk Masuk", - "description": "Alih-alih membuat akun dan kata sandi baru di setiap situs web, cukup hubungkan dompet Anda." - }, - "get": { - "label": "Dapatkan Dompet" - }, - "learn_more": { - "label": "Pelajari lebih lanjut" - } - }, - "sign_in": { - "label": "Verifikasi akun Anda", - "description": "Untuk menyelesaikan koneksi, Anda harus menandatangani sebuah pesan di dompet Anda untuk memastikan bahwa Anda adalah pemilik dari akun ini.", - "message": { - "send": "Kirim pesan", - "preparing": "Mempersiapkan pesan...", - "cancel": "Batal", - "preparing_error": "Kesalahan dalam mempersiapkan pesan, silakan coba lagi!" - }, - "signature": { - "waiting": "Menunggu tanda tangan...", - "verifying": "Memverifikasi tanda tangan...", - "signing_error": "Kesalahan dalam menandatangani pesan, silakan coba lagi!", - "verifying_error": "Kesalahan dalam memverifikasi tanda tangan, silakan coba lagi!", - "oops_error": "Ups, ada yang salah!" - } - }, - "connect": { - "label": "Hubungkan", - "title": "Hubungkan Dompet", - "new_to_ethereum": { - "description": "Baru dalam dompet Ethereum?", - "learn_more": { - "label": "Pelajari lebih lanjut" - } - }, - "learn_more": { - "label": "Pelajari lebih lanjut" - }, - "recent": "Terkini", - "status": { - "opening": "Membuka %{wallet}...", - "connecting": "Menghubungkan", - "connect_mobile": "Lanjutkan di %{wallet}", - "not_installed": "%{wallet} tidak terpasang", - "not_available": "%{wallet} tidak tersedia", - "confirm": "Konfirmasikan koneksi di ekstensi", - "confirm_mobile": "Terima permintaan koneksi di dompet" - }, - "secondary_action": { - "get": { - "description": "Tidak memiliki %{wallet}?", - "label": "DAPATKAN" - }, - "install": { - "label": "PASANG" - }, - "retry": { - "label": "COBA LAGI" - } - }, - "walletconnect": { - "description": { - "full": "Perlu modal resmi WalletConnect?", - "compact": "Perlu modal WalletConnect?" - }, - "open": { - "label": "BUKA" - } - } - }, - "connect_scan": { - "title": "Pindai dengan %{wallet}", - "fallback_title": "Pindai dengan ponsel Anda" - }, - "connector_group": { - "installed": "Terinstal", - "recommended": "Direkomendasikan", - "other": "Lainnya", - "popular": "Populer", - "more": "Lebih Banyak", - "others": "Lainnya" - }, - "get": { - "title": "Dapatkan Dompet", - "action": { - "label": "DAPATKAN" - }, - "mobile": { - "description": "Dompet Mobile" - }, - "extension": { - "description": "Ekstensi Browser" - }, - "mobile_and_extension": { - "description": "Dompet Mobile dan Ekstensi" - }, - "mobile_and_desktop": { - "description": "Dompet Seluler dan Desktop" - }, - "looking_for": { - "title": "Bukan yang Anda cari?", - "mobile": { - "description": "Pilih dompet di layar utama untuk memulai dengan penyedia dompet yang berbeda." - }, - "desktop": { - "compact_description": "Pilih dompet di layar utama untuk memulai dengan penyedia dompet yang berbeda.", - "wide_description": "Pilih dompet di sebelah kiri untuk memulai dengan penyedia dompet yang berbeda." - } - } - }, - "get_options": { - "title": "Mulai dengan %{wallet}", - "short_title": "Dapatkan %{wallet}", - "mobile": { - "title": "%{wallet} untuk Mobile", - "description": "Gunakan dompet mobile untuk menjelajahi dunia Ethereum.", - "download": { - "label": "Dapatkan aplikasinya" - } - }, - "extension": { - "title": "%{wallet} untuk %{browser}", - "description": "Akses dompet Anda langsung dari browser web favorit Anda.", - "download": { - "label": "Tambahkan ke %{browser}" - } - }, - "desktop": { - "title": "%{wallet} untuk %{platform}", - "description": "Akses dompet Anda secara native dari desktop yang kuat Anda.", - "download": { - "label": "Tambahkan ke %{platform}" - } - } - }, - "get_mobile": { - "title": "Instal %{wallet}", - "description": "Pindai dengan ponsel Anda untuk mengunduh di iOS atau Android", - "continue": { - "label": "Lanjutkan" - } - }, - "get_instructions": { - "mobile": { - "connect": { - "label": "Hubungkan" - }, - "learn_more": { - "label": "Pelajari lebih lanjut" - } - }, - "extension": { - "refresh": { - "label": "Segarkan" - }, - "learn_more": { - "label": "Pelajari lebih lanjut" - } - }, - "desktop": { - "connect": { - "label": "Hubungkan" - }, - "learn_more": { - "label": "Pelajari lebih lanjut" - } - } - }, - "chains": { - "title": "Alihkan Jaringan", - "wrong_network": "Jaringan yang salah terdeteksi, alihkan atau diskonek untuk melanjutkan.", - "confirm": "Konfirmasi di Dompet", - "switching_not_supported": "Dompet Anda tidak mendukung pengalihan jaringan dari %{appName}. Coba alihkan jaringan dari dalam dompet Anda.", - "switching_not_supported_fallback": "Wallet Anda tidak mendukung penggantian jaringan dari aplikasi ini. Cobalah ganti jaringan dari dalam wallet Anda.", - "disconnect": "Putuskan koneksi", - "connected": "Terkoneksi" - }, - "profile": { - "disconnect": { - "label": "Putuskan koneksi" - }, - "copy_address": { - "label": "Salin Alamat", - "copied": "Tersalin!" - }, - "explorer": { - "label": "Lihat lebih banyak di penjelajah" - }, - "transactions": { - "description": "%{appName} transaksi akan muncul di sini...", - "description_fallback": "Transaksi Anda akan muncul di sini...", - "recent": { - "title": "Transaksi Terbaru" - }, - "clear": { - "label": "Hapus Semua" - } - } - }, - "wallet_connectors": { - "argent": { - "qr_code": { - "step1": { - "description": "Letakkan Argent di layar utama Anda untuk akses lebih cepat ke dompet Anda.", - "title": "Buka aplikasi Argent" - }, - "step2": { - "description": "Buat dompet dan nama pengguna, atau impor dompet yang ada.", - "title": "Buat atau Impor Dompet" - }, - "step3": { - "description": "Setelah Anda memindai, akan muncul petunjuk koneksi untuk Anda menghubungkan dompet Anda.", - "title": "Tekan tombol Scan QR" - } - } - }, - "berasig": { - "extension": { - "step1": { - "title": "Instal ekstensi BeraSig", - "description": "Kami merekomendasikan menempelkan BeraSig ke taskbar Anda untuk akses dompet Anda lebih mudah." - }, - "step2": { - "title": "Buat Dompet", - "description": "Pastikan untuk mencadangkan wallet Anda menggunakan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun." - }, - "step3": { - "title": "Segarkan browser Anda", - "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." - } - } - }, - "best": { - "qr_code": { - "step1": { - "title": "Buka aplikasi Best Wallet", - "description": "Tambahkan Best Wallet ke layar utama Anda untuk akses ke wallet Anda lebih cepat." - }, - "step2": { - "title": "Buat atau Impor Dompet", - "description": "Buat dompet baru atau impor yang sudah ada." - }, - "step3": { - "title": "Ketuk ikon QR dan scan", - "description": "Ketuk ikon QR di layar utama Anda, pindai kode dan konfirmasi prompt untuk terhubung." - } - } - }, - "bifrost": { - "qr_code": { - "step1": { - "description": "Kami merekomendasikan untuk menempatkan Bifrost Wallet di layar utama anda untuk akses yang lebih cepat.", - "title": "Buka aplikasi Bifrost Wallet" - }, - "step2": { - "description": "Buat atau impor sebuah dompet menggunakan frasa pemulihan Anda.", - "title": "Buat atau Impor sebuah Wallet" - }, - "step3": { - "description": "Setelah Anda memindai, sebuah pesan akan muncul untuk menghubungkan dompet Anda.", - "title": "Tekan tombol scan" - } - } - }, - "bitget": { - "qr_code": { - "step1": { - "description": "Kami menyarankan untuk meletakkan Bitget Wallet di layar depan Anda untuk akses yang lebih cepat.", - "title": "Buka aplikasi Bitget Wallet" - }, - "step2": { - "description": "Pastikan untuk mencadangkan wallet Anda menggunakan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun.", - "title": "Buat atau Impor Wallet" - }, - "step3": { - "description": "Setelah Anda pindai, akan muncul petunjuk untuk menghubungkan wallet Anda.", - "title": "Tekan tombol pindai" - } - }, - "extension": { - "step1": { - "description": "Kami menyarankan untuk memasang Bitget Wallet ke taskbar Anda untuk akses yang lebih cepat ke wallet Anda.", - "title": "Instal ekstensi Dompet Bitget" - }, - "step2": { - "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah membagikan frasa rahasia Anda kepada siapa pun.", - "title": "Buat atau Impor Dompet" - }, - "step3": { - "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi.", - "title": "Segarkan browser Anda" - } - } - }, - "bitski": { - "extension": { - "step1": { - "description": "Kami merekomendasikan untuk memasang Bitski ke taskbar Anda untuk akses dompet Anda yang lebih cepat.", - "title": "Pasang ekstensi Bitski" - }, - "step2": { - "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun.", - "title": "Buat atau Impor Dompet" - }, - "step3": { - "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi.", - "title": "Segarkan browser Anda" - } - } - }, - "bitverse": { - "qr_code": { - "step1": { - "title": "Buka aplikasi Bitverse Wallet", - "description": "Tambahkan Bitverse Wallet ke layar utama Anda untuk akses yang lebih cepat ke dompet Anda." - }, - "step2": { - "title": "Buat atau Impor Dompet", - "description": "Buat dompet baru atau impor yang sudah ada." - }, - "step3": { - "title": "Ketuk ikon QR dan scan", - "description": "Ketuk ikon QR di layar utama Anda, pindai kode dan konfirmasi prompt untuk terhubung." - } - } - }, - "bloom": { - "desktop": { - "step1": { - "title": "Buka aplikasi Bloom Wallet", - "description": "Kami merekomendasikan untuk meletakkan Bloom Wallet di layar utama Anda untuk akses yang lebih cepat." - }, - "step2": { - "description": "Buat atau impor sebuah dompet menggunakan frasa pemulihan Anda.", - "title": "Buat atau Impor Dompet" - }, - "step3": { - "description": "Setelah Anda memiliki dompet, klik pada Sambungkan untuk terhubung melalui Bloom. Sebuah permintaan sambungan akan muncul di aplikasi untuk Anda konfirmasi.", - "title": "Klik pada Sambungkan" - } - } - }, - "bybit": { - "qr_code": { - "step1": { - "description": "Kami menyarankan menempatkan Bybit di layar utama Anda untuk akses yang lebih cepat ke dompet Anda.", - "title": "Buka aplikasi Bybit" - }, - "step2": { - "description": "Anda dapat dengan mudah mencadangkan wallet Anda menggunakan fitur cadangan kami di telepon Anda.", - "title": "Buat atau Impor Dompet" - }, - "step3": { - "description": "Setelah Anda memindai, akan muncul petunjuk koneksi untuk Anda menghubungkan dompet Anda.", - "title": "Tekan tombol scan" - } - }, - "extension": { - "step1": { - "description": "Klik di pojok kanan atas browser Anda dan sematkan Wallet Bybit untuk akses yang mudah.", - "title": "Pasang ekstensi Wallet Bybit" - }, - "step2": { - "description": "Buat dompet baru atau impor yang sudah ada.", - "title": "Buat atau Impor sebuah dompet" - }, - "step3": { - "description": "Setelah Anda mengatur Wallet Bybit, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi.", - "title": "Segarkan browser Anda" - } - } - }, - "binance": { - "qr_code": { - "step1": { - "description": "Kami merekomendasikan untuk meletakkan Binance di layar utama Anda untuk akses lebih cepat ke wallet Anda.", - "title": "Buka aplikasi Binance" - }, - "step2": { - "description": "Anda dapat dengan mudah mencadangkan wallet Anda menggunakan fitur cadangan kami di telepon Anda.", - "title": "Buat atau Impor Dompet" - }, - "step3": { - "description": "Setelah Anda memindai, akan muncul petunjuk koneksi untuk Anda menghubungkan dompet Anda.", - "title": "Ketuk tombol WalletConnect" - } - } - }, - "coin98": { - "qr_code": { - "step1": { - "description": "Kami merekomendasikan untuk menaruh Coin98 Wallet di layar utama Anda untuk akses wallet Anda lebih cepat.", - "title": "Buka aplikasi Coin98 Wallet" - }, - "step2": { - "description": "Anda dapat dengan mudah mencadangkan wallet Anda menggunakan fitur cadangan kami di telepon Anda.", - "title": "Buat atau Impor Wallet" - }, - "step3": { - "description": "Setelah Anda melakukan pemindaian, akan muncul prompt koneksi untuk Anda menghubungkan wallet Anda.", - "title": "Ketuk tombol WalletConnect" - } - }, - "extension": { - "step1": { - "description": "Klik di pojok kanan atas browser Anda dan sematkan Coin98 Wallet untuk akses mudah.", - "title": "Pasang ekstensi Coin98 Wallet" - }, - "step2": { - "description": "Buat dompet baru atau impor yang sudah ada.", - "title": "Buat atau Impor sebuah dompet" - }, - "step3": { - "description": "Setelah Anda menyiapkan Coin98 Wallet, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi.", - "title": "Segarkan browser Anda" - } - } - }, - "coinbase": { - "qr_code": { - "step1": { - "description": "Kami merekomendasikan memasang Coinbase Wallet di layar utama Anda untuk akses yang lebih cepat.", - "title": "Buka aplikasi Coinbase Wallet" - }, - "step2": { - "description": "Anda dapat dengan mudah mencadangkan dompet Anda menggunakan fitur cadangan awan.", - "title": "Buat atau Impor sebuah Dompet" - }, - "step3": { - "description": "Setelah Anda memindai, akan muncul sebuah petunjuk koneksi untuk Anda menyambungkan dompet Anda.", - "title": "Ketuk tombol pindai" - } - }, - "extension": { - "step1": { - "description": "Kami merekomendasikan untuk menempel Coinbase Wallet ke taskbar Anda untuk akses lebih cepat ke dompet Anda.", - "title": "Instal ekstensi Coinbase Wallet" - }, - "step2": { - "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah membagikan frase pemulihan rahasia Anda kepada siapa pun.", - "title": "Buat atau Import Wallet" - }, - "step3": { - "description": "Setelah Anda menyiapkan wallet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi.", - "title": "Segarkan browser Anda" - } - } - }, - "compass": { - "extension": { - "step1": { - "description": "Kami merekomendasikan untuk menempelkan Compass Wallet ke taskbar Anda untuk akses lebih cepat ke dompet Anda.", - "title": "Instal ekstensi Compass Wallet" - }, - "step2": { - "description": "Pastikan untuk mencadangkan wallet Anda menggunakan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun.", - "title": "Buat atau Impor Dompet" - }, - "step3": { - "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi.", - "title": "Segarkan browser Anda" - } - } - }, - "core": { - "qr_code": { - "step1": { - "description": "Kami merekomendasikan untuk meletakkan Core di layar utama Anda untuk akses lebih cepat ke wallet Anda.", - "title": "Buka aplikasi Core" - }, - "step2": { - "description": "Anda dapat dengan mudah mencadangkan wallet Anda dengan menggunakan fitur cadangan kami di telepon Anda.", - "title": "Buat atau Import Wallet" - }, - "step3": { - "description": "Setelah Anda memindai, akan muncul petunjuk koneksi untuk Anda menyambungkan wallet Anda.", - "title": "Ketuk tombol WalletConnect" - } - }, - "extension": { - "step1": { - "description": "Kami merekomendasikan untuk menempelkan Core pada taskbar Anda untuk akses ke dompet Anda lebih cepat.", - "title": "Pasang ekstensi Core" - }, - "step2": { - "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah membagikan frase rahasia Anda kepada siapa pun.", - "title": "Buat atau Impor Dompet" - }, - "step3": { - "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi.", - "title": "Segarkan browser Anda" - } - } - }, - "fox": { - "qr_code": { - "step1": { - "description": "Kami merekomendasikan untuk menaruh FoxWallet pada layar utama Anda untuk akses lebih cepat.", - "title": "Buka aplikasi FoxWallet" - }, - "step2": { - "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah membagikan frase rahasia Anda kepada siapa pun.", - "title": "Buat atau Impor Wallet" - }, - "step3": { - "description": "Setelah Anda memindai, prompt koneksi akan muncul untuk Anda hubungkan dompet Anda.", - "title": "Ketuk tombol pindai" - } - } - }, - "frontier": { - "qr_code": { - "step1": { - "description": "Kami merekomendasikan untuk meletakkan Frontier Wallet di layar awal Anda untuk akses yang lebih cepat.", - "title": "Buka aplikasi Frontier Wallet" - }, - "step2": { - "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah membagikan frase rahasia Anda kepada siapa pun.", - "title": "Buat atau Impor Wallet" - }, - "step3": { - "description": "Setelah Anda memindai, prompt koneksi akan muncul untuk Anda menghubungkan dompet Anda.", - "title": "Ketuk tombol pindai" - } - }, - "extension": { - "step1": { - "description": "Kami menyarankan menempelkan Frontier Wallet ke taskbar Anda untuk akses yang lebih cepat ke dompet Anda.", - "title": "Instal ekstensi Frontier Wallet" - }, - "step2": { - "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun.", - "title": "Buat atau Impor Dompet" - }, - "step3": { - "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi.", - "title": "Segarkan browser Anda" - } - } - }, - "im_token": { - "qr_code": { - "step1": { - "title": "Buka aplikasi imToken", - "description": "Letakkan aplikasi imToken di layar utama Anda untuk akses yang lebih cepat ke dompet Anda." - }, - "step2": { - "title": "Buat atau Impor Dompet", - "description": "Buat dompet baru atau impor yang sudah ada." - }, - "step3": { - "title": "Ketuk Ikon Scanner di pojok kanan atas", - "description": "Pilih Koneksi Baru, lalu pindai kode QR dan konfirmasi petunjuk untuk terhubung." - } - } - }, - "iopay": { - "qr_code": { - "step1": { - "description": "Kami merekomendasikan untuk menaruh ioPay di layar utama Anda untuk akses wallet Anda lebih cepat.", - "title": "Buka aplikasi ioPay" - }, - "step2": { - "description": "Anda dapat dengan mudah mencadangkan wallet Anda menggunakan fitur cadangan kami di telepon Anda.", - "title": "Buat atau Impor Dompet" - }, - "step3": { - "description": "Setelah Anda memindai, akan muncul petunjuk koneksi untuk Anda menghubungkan dompet Anda.", - "title": "Ketuk tombol WalletConnect" - } - } - }, - "kaikas": { - "extension": { - "step1": { - "description": "Kami menyarankan memasang Kaikas di taskbar Anda untuk akses yang lebih cepat ke dompet Anda.", - "title": "Pasang ekstensi Kaikas" - }, - "step2": { - "description": "Pastikan untuk mencadangkan wallet Anda menggunakan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun.", - "title": "Buat atau Impor Dompet" - }, - "step3": { - "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi.", - "title": "Segarkan browser Anda" - } - }, - "qr_code": { - "step1": { - "title": "Buka aplikasi Kaikas", - "description": "Letakkan aplikasi Kaikas di layar utama Anda untuk akses yang lebih cepat ke dompet Anda." - }, - "step2": { - "title": "Buat atau Impor Dompet", - "description": "Buat dompet baru atau impor yang sudah ada." - }, - "step3": { - "title": "Ketuk Ikon Scanner di pojok kanan atas", - "description": "Pilih Koneksi Baru, lalu pindai kode QR dan konfirmasi petunjuk untuk terhubung." - } - } - }, - "kaia": { - "extension": { - "step1": { - "description": "Kami merekomendasikan menempelkan Kaia ke taskbar Anda untuk akses dompet Anda lebih cepat.", - "title": "Instal ekstensi Kaia" - }, - "step2": { - "description": "Pastikan untuk mencadangkan wallet Anda menggunakan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun.", - "title": "Buat atau Impor Dompet" - }, - "step3": { - "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi.", - "title": "Segarkan browser Anda" - } - }, - "qr_code": { - "step1": { - "title": "Buka aplikasi Kaia", - "description": "Letakkan aplikasi Kaia di layar utama Anda untuk akses yang lebih cepat ke dompet Anda." - }, - "step2": { - "title": "Buat atau Impor Dompet", - "description": "Buat dompet baru atau impor yang sudah ada." - }, - "step3": { - "title": "Ketuk Ikon Scanner di pojok kanan atas", - "description": "Pilih Koneksi Baru, lalu pindai kode QR dan konfirmasi petunjuk untuk terhubung." - } - } - }, - "kraken": { - "qr_code": { - "step1": { - "title": "Buka aplikasi Kraken Wallet", - "description": "Tambahkan Kraken Wallet ke layar utama Anda untuk akses lebih cepat ke dompet Anda." - }, - "step2": { - "title": "Buat atau Impor Dompet", - "description": "Buat dompet baru atau impor yang sudah ada." - }, - "step3": { - "title": "Ketuk ikon QR dan scan", - "description": "Ketuk ikon QR di layar utama Anda, pindai kode dan konfirmasi prompt untuk terhubung." - } - } - }, - "kresus": { - "qr_code": { - "step1": { - "title": "Buka aplikasi Kresus Wallet", - "description": "Tambahkan Kresus Wallet ke layar utama Anda untuk akses yang lebih cepat ke wallet Anda." - }, - "step2": { - "title": "Buat atau Impor Dompet", - "description": "Buat dompet baru atau impor yang sudah ada." - }, - "step3": { - "title": "Ketuk ikon QR dan scan", - "description": "Ketuk ikon QR di layar utama Anda, pindai kode dan konfirmasi prompt untuk terhubung." - } - } - }, - "magicEden": { - "extension": { - "step1": { - "title": "Instal ekstensi Magic Eden", - "description": "Kami menyarankan untuk menempelkan Magic Eden ke taskbar Anda untuk akses lebih cepat ke dompet Anda." - }, - "step2": { - "title": "Buat atau Impor Dompet", - "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah membagikan frase pemulihan rahasia Anda kepada siapa pun." - }, - "step3": { - "title": "Segarkan browser Anda", - "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." - } - } - }, - "metamask": { - "qr_code": { - "step1": { - "title": "Buka aplikasi MetaMask", - "description": "Kami merekomendasikan untuk meletakkan MetaMask di layar beranda Anda untuk akses yang lebih cepat." - }, - "step2": { - "title": "Buat atau Impor Dompet", - "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah membagikan frase rahasia Anda kepada siapa pun." - }, - "step3": { - "title": "Ketuk tombol pindai", - "description": "Setelah Anda memindai, petunjuk koneksi akan muncul untuk Anda menyambungkan dompet Anda." - } - }, - "extension": { - "step1": { - "title": "Pasang ekstensi MetaMask", - "description": "Kami menyarankan untuk memasang MetaMask pada taskbar Anda untuk akses wallet lebih cepat." - }, - "step2": { - "title": "Buat atau Impor Wallet", - "description": "Pastikan untuk mencadangkan wallet Anda menggunakan metode yang aman. Jangan pernah membagikan frase rahasia Anda kepada siapa pun." - }, - "step3": { - "title": "Segarkan browser Anda", - "description": "Setelah Anda menyiapkan wallet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." - } - } - }, - "nestwallet": { - "extension": { - "step1": { - "title": "Instal ekstensi NestWallet", - "description": "Kami menyarankan untuk memasang NestWallet ke taskbar Anda untuk akses dompet yang lebih cepat." - }, - "step2": { - "title": "Buat atau Impor Dompet", - "description": "Pastikan untuk mencadangkan wallet Anda menggunakan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun." - }, - "step3": { - "title": "Segarkan browser Anda", - "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." - } - } - }, - "okx": { - "qr_code": { - "step1": { - "title": "Buka aplikasi OKX Wallet", - "description": "Kami menyarankan untuk menaruh OKX Wallet di layar utama Anda untuk akses lebih cepat." - }, - "step2": { - "title": "Buat atau Impor Wallet", - "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah membagikan frasa rahasia Anda kepada siapa pun." - }, - "step3": { - "title": "Ketuk tombol scan", - "description": "Setelah Anda memindai, prompt koneksi akan muncul untuk Anda hubungkan dompet Anda." - } - }, - "extension": { - "step1": { - "title": "Instal ekstensi OKX Wallet", - "description": "Kami menyarankan untuk menempelkan OKX Wallet ke taskbar Anda untuk akses lebih cepat ke dompet Anda." - }, - "step2": { - "title": "Buat atau Impor Dompet", - "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah membagikan frasa rahasia Anda kepada siapa pun." - }, - "step3": { - "title": "Segarkan browser Anda", - "description": "Setelah Anda mengatur wallet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." - } - } - }, - "omni": { - "qr_code": { - "step1": { - "title": "Buka aplikasi Omni", - "description": "Tambahkan Omni ke layar utama Anda untuk akses yang lebih cepat ke wallet Anda." - }, - "step2": { - "title": "Buat atau Impor Wallet", - "description": "Buat wallet baru atau impor yang sudah ada." - }, - "step3": { - "title": "Ketuk ikon QR dan scan", - "description": "Ketuk ikon QR di layar utama Anda, pindai kode dan konfirmasi petunjuk untuk terhubung." - } - } - }, - "1inch": { - "qr_code": { - "step1": { - "description": "Letakkan Wallet 1inch di layar utama Anda untuk akses yang lebih cepat ke dompet Anda.", - "title": "Buka aplikasi Wallet 1inch" - }, - "step2": { - "description": "Buat dompet dan nama pengguna, atau impor dompet yang ada.", - "title": "Buat atau Impor Dompet" - }, - "step3": { - "description": "Setelah Anda memindai, akan muncul petunjuk koneksi untuk Anda menghubungkan dompet Anda.", - "title": "Tekan tombol Scan QR" - } - } - }, - "token_pocket": { - "qr_code": { - "step1": { - "title": "Buka aplikasi TokenPocket", - "description": "Kami sarankan meletakkan TokenPocket di layar utama Anda untuk akses yang lebih cepat." - }, - "step2": { - "title": "Buat atau impor Dompet", - "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah membagikan frase pemulihan rahasia Anda kepada siapa pun." - }, - "step3": { - "title": "Ketuk tombol pindai", - "description": "Setelah Anda memindai, Indikasi sambungan akan muncul untuk Anda menghubungkan dompet Anda." - } - }, - "extension": { - "step1": { - "title": "Instal ekstensi TokenPocket", - "description": "Kami merekomendasikan penambatan TokenPocket ke taskbar Anda untuk akses dompet Anda lebih cepat." - }, - "step2": { - "title": "Buat atau Impor Wallet", - "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah membagi frasa rahasia Anda dengan siapa pun." - }, - "step3": { - "title": "Segarkan browser Anda", - "description": "Setelah Anda mengatur dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." - } - } - }, - "trust": { - "qr_code": { - "step1": { - "title": "Buka aplikasi Trust Wallet", - "description": "Pasang Trust Wallet di layar utama Anda untuk akses dompet Anda lebih cepat." - }, - "step2": { - "title": "Buat atau Impor Wallet", - "description": "Buat dompet baru atau impor yang sudah ada." - }, - "step3": { - "title": "Ketuk WalletConnect di Pengaturan", - "description": "Pilih Koneksi Baru, kemudian pindai kode QR dan konfirmasi perintah untuk terhubung." - } - }, - "extension": { - "step1": { - "title": "Instal ekstensi Trust Wallet", - "description": "Klik di pojok kanan atas browser Anda dan sematkan Trust Wallet untuk akses mudah." - }, - "step2": { - "title": "Buat atau Impor dompet", - "description": "Buat dompet baru atau impor yang sudah ada." - }, - "step3": { - "title": "Segarkan browser Anda", - "description": "Setelah Anda mengatur Trust Wallet, klik di bawah untuk menyegarkan browser dan memuat ekstensi." - } - } - }, - "uniswap": { - "qr_code": { - "step1": { - "title": "Buka aplikasi Uniswap", - "description": "Tambahkan Uniswap Wallet ke layar utama Anda untuk akses ke wallet Anda lebih cepat." - }, - "step2": { - "title": "Buat atau Impor Wallet", - "description": "Buat wallet baru atau impor yang sudah ada." - }, - "step3": { - "title": "Ketuk ikon QR dan pindai", - "description": "Ketuk ikon QR di layar utama Anda, pindai kode dan konfirmasi prompt untuk terhubung." - } - } - }, - "zerion": { - "qr_code": { - "step1": { - "title": "Buka aplikasi Zerion", - "description": "Kami merekomendasikan untuk meletakkan Zerion di layar utama Anda untuk akses lebih cepat." - }, - "step2": { - "title": "Buat atau Impor Dompet", - "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah membagikan frase pemulihan rahasia Anda kepada siapa pun." - }, - "step3": { - "title": "Ketuk tombol scan", - "description": "Setelah Anda scan, muncul prompt koneksi untuk Anda menghubungkan dompet Anda." - } - }, - "extension": { - "step1": { - "title": "Instal ekstensi Zerion", - "description": "Kami menyarankan untuk menempelkan Zerion ke taskbar Anda untuk akses lebih cepat ke dompet Anda." - }, - "step2": { - "title": "Buat atau Impor Wallet", - "description": "Pastikan untuk mencadangkan wallet Anda menggunakan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun." - }, - "step3": { - "title": "Segarkan browser Anda", - "description": "Setelah Anda mengatur wallet Anda, klik di bawah untuk menyegarkan browser dan memuat ekstensi." - } - } - }, - "rainbow": { - "qr_code": { - "step1": { - "title": "Buka aplikasi Rainbow", - "description": "Kami menyarankan menempatkan Rainbow di layar home Anda untuk akses yang lebih cepat ke wallet Anda." - }, - "step2": { - "title": "Buat atau Impor Wallet", - "description": "Anda dapat dengan mudah mencadangkan wallet Anda menggunakan fitur cadangan kami di telepon Anda." - }, - "step3": { - "title": "Tekan tombol scan", - "description": "Setelah Anda memindai, akan muncul pesan untuk menghubungkan dompet Anda." - } - } - }, - "enkrypt": { - "extension": { - "step1": { - "description": "Kami menyarankan untuk memasang Enkrypt Wallet ke taskbar Anda untuk akses dompet yang lebih cepat.", - "title": "Instal ekstensi Enkrypt Wallet" - }, - "step2": { - "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah berbagi frase rahasia Anda dengan siapa pun.", - "title": "Buat atau Impor Dompet" - }, - "step3": { - "description": "Setelah Anda menyiapkan dompet, klik di bawah ini untuk memuat ulang peramban dan meload ekstensi.", - "title": "Segarkan browser Anda" - } - } - }, - "frame": { - "extension": { - "step1": { - "description": "Kami menyarankan untuk memasang Frame ke taskbar Anda untuk akses dompet yang lebih cepat.", - "title": "Instal Frame & ekstensi pendamping" - }, - "step2": { - "description": "Pastikan untuk mencadangkan wallet Anda menggunakan metode yang aman. Jangan pernah membagikan frase rahasia Anda kepada siapa pun.", - "title": "Buat atau Impor Wallet" - }, - "step3": { - "description": "Setelah Anda menyetel wallet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi.", - "title": "Segarkan browser Anda" - } - } - }, - "one_key": { - "extension": { - "step1": { - "title": "Instal ekstensi OneKey Wallet", - "description": "Kami menyarankan untuk menempelkan OneKey Wallet ke taskbar Anda untuk akses wallet yang lebih cepat." - }, - "step2": { - "title": "Buat atau Impor Wallet", - "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah membagikan frase rahasia Anda kepada siapa pun." - }, - "step3": { - "title": "Segarkan browser Anda", - "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." - } - } - }, - "paraswap": { - "qr_code": { - "step1": { - "title": "Buka aplikasi ParaSwap", - "description": "Tambahkan ParaSwap Wallet ke layar utama Anda untuk akses ke wallet Anda lebih cepat." - }, - "step2": { - "title": "Buat atau Impor Dompet", - "description": "Buat dompet baru atau impor yang sudah ada." - }, - "step3": { - "title": "Ketuk ikon QR dan scan", - "description": "Ketuk ikon QR di layar utama Anda, pindai kode dan konfirmasi prompt untuk terhubung." - } - } - }, - "phantom": { - "extension": { - "step1": { - "title": "Instal ekstensi Phantom", - "description": "Kami menyarankan untuk mem-pin Phantom ke taskbar Anda untuk akses dompet yang lebih mudah." - }, - "step2": { - "title": "Buat atau Impor Dompet", - "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah membagikan frase pemulihan rahasia Anda kepada siapa pun." - }, - "step3": { - "title": "Segarkan browser Anda", - "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." - } - } - }, - "rabby": { - "extension": { - "step1": { - "title": "Instal ekstensi Rabby", - "description": "Kami merekomendasikan menempelkan Rabby ke taskbar Anda untuk akses lebih cepat ke wallet Anda." - }, - "step2": { - "title": "Buat atau Impor Wallet", - "description": "Pastikan untuk mencadangkan wallet Anda dengan metode yang aman. Jangan pernah berbagi frase rahasia Anda dengan siapa pun." - }, - "step3": { - "title": "Segarkan browser Anda", - "description": "Setelah Anda menyiapkan wallet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." - } - } - }, - "ronin": { - "qr_code": { - "step1": { - "description": "Kami merekomendasikan untuk meletakkan Ronin Wallet di layar utama Anda untuk akses yang lebih cepat.", - "title": "Buka aplikasi Ronin Wallet" - }, - "step2": { - "description": "Pastikan untuk mencadangkan wallet Anda menggunakan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun.", - "title": "Buat atau Impor Dompet" - }, - "step3": { - "description": "Setelah Anda memindai, akan muncul petunjuk koneksi untuk Anda menghubungkan dompet Anda.", - "title": "Tekan tombol scan" - } - }, - "extension": { - "step1": { - "description": "Kami merekomendasikan untuk memasang Ronin Wallet di taskbar Anda untuk akses yang lebih cepat ke wallet Anda.", - "title": "Pasang ekstensi Ronin Wallet" - }, - "step2": { - "description": "Pastikan untuk mencadangkan wallet Anda menggunakan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun.", - "title": "Buat atau Impor Dompet" - }, - "step3": { - "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi.", - "title": "Segarkan browser Anda" - } - } - }, - "ramper": { - "extension": { - "step1": { - "title": "Pasang ekstensi Ramper", - "description": "Kami merekomendasikan untuk memasang Ramper di taskbar Anda untuk akses yang lebih mudah ke wallet Anda." - }, - "step2": { - "title": "Buat Dompet", - "description": "Pastikan untuk mencadangkan wallet Anda menggunakan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun." - }, - "step3": { - "title": "Segarkan browser Anda", - "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." - } - } - }, - "safeheron": { - "extension": { - "step1": { - "title": "Instal ekstensi Core", - "description": "Kami merekomendasikan menempelkan Safeheron ke taskbar Anda untuk akses lebih cepat ke wallet Anda." - }, - "step2": { - "title": "Buat atau Impor Wallet", - "description": "Pastikan untuk mencadangkan dompet Anda dengan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun." - }, - "step3": { - "title": "Segarkan browser Anda", - "description": "Setelah Anda mengatur dompet Anda, klik di bawah untuk menyegarkan browser dan memuat ekstensi." - } - } - }, - "taho": { - "extension": { - "step1": { - "title": "Instal ekstensi Taho", - "description": "Kami merekomendasikan pengepinan Taho ke taskbar Anda untuk akses yang lebih cepat ke dompet Anda." - }, - "step2": { - "title": "Buat atau Impor Dompet", - "description": "Pastikan untuk mencadangkan dompet Anda dengan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun." - }, - "step3": { - "title": "Segarkan browser Anda", - "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." - } - } - }, - "wigwam": { - "extension": { - "step1": { - "title": "Instal ekstensi Wigwam", - "description": "Kami menyarankan untuk memasang Wigwam ke taskbar Anda untuk akses dompet yang lebih cepat." - }, - "step2": { - "title": "Buat atau Impor Dompet", - "description": "Pastikan untuk mencadangkan wallet Anda menggunakan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun." - }, - "step3": { - "title": "Segarkan browser Anda", - "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." - } - } - }, - "talisman": { - "extension": { - "step1": { - "title": "Instal ekstensi Talisman", - "description": "Kami merekomendasikan menempelkan Talisman ke taskbar Anda untuk akses dompet Anda lebih cepat." - }, - "step2": { - "title": "Buat atau Impor Dompet Ethereum", - "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah berbagi frase pemulihan Anda dengan siapa pun." - }, - "step3": { - "title": "Segarkan browser Anda", - "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." - } - } - }, - "xdefi": { - "extension": { - "step1": { - "title": "Instal ekstensi Dompet XDEFI", - "description": "Kami merekomendasikan menempelkan XDEFI Wallet ke taskbar Anda untuk akses lebih cepat ke dompet Anda." - }, - "step2": { - "title": "Buat atau Impor Dompet", - "description": "Pastikan untuk mencadangkan dompet Anda dengan metode yang aman. Jangan pernah berbagi frase rahasia Anda dengan siapa pun." - }, - "step3": { - "title": "Segarkan browser Anda", - "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." - } - } - }, - "zeal": { - "qr_code": { - "step1": { - "title": "Buka aplikasi Zeal", - "description": "Tambahkan Zeal Wallet ke layar utama Anda untuk akses yang lebih cepat ke wallet Anda." - }, - "step2": { - "title": "Buat atau Impor Dompet", - "description": "Buat dompet baru atau impor yang sudah ada." - }, - "step3": { - "title": "Ketuk ikon QR dan scan", - "description": "Ketuk ikon QR di layar utama Anda, pindai kode dan konfirmasi prompt untuk terhubung." - } - }, - "extension": { - "step1": { - "title": "Instal ekstensi Zeal", - "description": "Kami merekomendasikan untuk mem-pin Zeal ke taskbar Anda untuk akses wallet lebih cepat." - }, - "step2": { - "title": "Buat atau Impor Dompet", - "description": "Pastikan untuk mencadangkan wallet Anda menggunakan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun." - }, - "step3": { - "title": "Segarkan browser Anda", - "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." - } - } - }, - "safepal": { - "extension": { - "step1": { - "title": "Pasang ekstensi SafePal Wallet", - "description": "Klik di pojok kanan atas browser Anda dan pin SafePal Wallet untuk akses mudah." - }, - "step2": { - "title": "Buat atau Impor sebuah dompet", - "description": "Buat dompet baru atau impor yang sudah ada." - }, - "step3": { - "title": "Segarkan browser Anda", - "description": "Setelah Anda menyiapkan SafePal Wallet, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." - } - }, - "qr_code": { - "step1": { - "title": "Buka aplikasi SafePal Wallet", - "description": "Letakkan SafePal Wallet di layar utama Anda untuk akses yang lebih cepat ke wallet Anda." - }, - "step2": { - "title": "Buat atau Impor Dompet", - "description": "Buat dompet baru atau impor yang sudah ada." - }, - "step3": { - "title": "Ketuk WalletConnect di Pengaturan", - "description": "Pilih Koneksi Baru, lalu pindai kode QR dan konfirmasi petunjuk untuk terhubung." - } - } - }, - "desig": { - "extension": { - "step1": { - "title": "Instal ekstensi Desig", - "description": "Kami merekomendasikan menempelkan Desig ke taskbar Anda untuk akses dompet Anda lebih mudah." - }, - "step2": { - "title": "Buat Dompet", - "description": "Pastikan untuk mencadangkan wallet Anda menggunakan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun." - }, - "step3": { - "title": "Segarkan browser Anda", - "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." - } - } - }, - "subwallet": { - "extension": { - "step1": { - "title": "Instal ekstensi SubWallet", - "description": "Kami merekomendasikan menempelkan SubWallet ke taskbar Anda untuk akses dompet Anda lebih cepat." - }, - "step2": { - "title": "Buat atau Impor Dompet", - "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah berbagi frase pemulihan Anda dengan siapa pun." - }, - "step3": { - "title": "Segarkan browser Anda", - "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." - } - }, - "qr_code": { - "step1": { - "title": "Buka aplikasi SubWallet", - "description": "Kami merekomendasikan menaruh SubWallet di layar utama Anda untuk akses lebih cepat." - }, - "step2": { - "title": "Buat atau Impor Dompet", - "description": "Pastikan untuk mencadangkan wallet Anda menggunakan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun." - }, - "step3": { - "title": "Tekan tombol scan", - "description": "Setelah Anda memindai, akan muncul petunjuk koneksi untuk Anda menghubungkan dompet Anda." - } - } - }, - "clv": { - "extension": { - "step1": { - "title": "Instal ekstensi CLV Wallet", - "description": "Kami merekomendasikan menempelkan CLV Wallet ke taskbar Anda untuk akses dompet Anda lebih cepat." - }, - "step2": { - "title": "Buat atau Impor Dompet", - "description": "Pastikan untuk mencadangkan wallet Anda menggunakan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun." - }, - "step3": { - "title": "Segarkan browser Anda", - "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." - } - }, - "qr_code": { - "step1": { - "title": "Buka aplikasi CLV Wallet", - "description": "Kami sarankan untuk menempatkan CLV Wallet di layar utama Anda untuk akses yang lebih cepat." - }, - "step2": { - "title": "Buat atau Impor Dompet", - "description": "Pastikan untuk mencadangkan wallet Anda menggunakan metode yang aman. Jangan pernah berbagi frasa rahasia Anda dengan siapa pun." - }, - "step3": { - "title": "Tekan tombol scan", - "description": "Setelah Anda memindai, akan muncul petunjuk koneksi untuk Anda menghubungkan dompet Anda." - } - } - }, - "okto": { - "qr_code": { - "step1": { - "title": "Buka aplikasi Okto", - "description": "Tambahkan Okto ke layar utama Anda untuk akses cepat" - }, - "step2": { - "title": "Buat Wallet MPC", - "description": "Buat akun dan generate wallet" - }, - "step3": { - "title": "Ketuk WalletConnect di Pengaturan", - "description": "Ketuk ikon Scan QR di pojok kanan atas dan konfirmasi prompt untuk terhubung." - } - } - }, - "ledger": { - "desktop": { - "step1": { - "title": "Buka aplikasi Ledger Live", - "description": "Kami merekomendasikan menempatkan Ledger Live di layar utama Anda untuk akses lebih cepat." - }, - "step2": { - "title": "Atur Ledger Anda", - "description": "Atur Ledger baru atau hubungkan ke Ledger yang sudah ada." - }, - "step3": { - "title": "Hubungkan", - "description": "Setelah Anda scan, muncul prompt koneksi untuk Anda menghubungkan dompet Anda." - } - }, - "qr_code": { - "step1": { - "title": "Buka aplikasi Ledger Live", - "description": "Kami merekomendasikan menempatkan Ledger Live di layar utama Anda untuk akses lebih cepat." - }, - "step2": { - "title": "Atur Ledger Anda", - "description": "Anda dapat melakukan sinkronisasi dengan aplikasi desktop atau menghubungkan Ledger Anda." - }, - "step3": { - "title": "Pindai kode", - "description": "Ketuk WalletConnect lalu Beralih ke Scanner. Setelah Anda scan, muncul prompt koneksi untuk Anda menghubungkan dompet Anda." - } - } - }, - "valora": { - "qr_code": { - "step1": { - "title": "Buka aplikasi Valora", - "description": "Kami merekomendasikan untuk meletakkan Valora di layar utama Anda untuk akses lebih cepat." - }, - "step2": { - "title": "Buat atau Impor dompet", - "description": "Buat dompet baru atau impor yang sudah ada." - }, - "step3": { - "title": "Tekan tombol scan", - "description": "Setelah Anda memindai, akan muncul petunjuk koneksi untuk Anda menghubungkan dompet Anda." - } - } - }, - "gate": { - "qr_code": { - "step1": { - "title": "Buka aplikasi Gate", - "description": "Kami merekomendasikan untuk meletakkan Gate di layar utama Anda untuk akses lebih cepat." - }, - "step2": { - "title": "Buat atau Impor Dompet", - "description": "Buat dompet baru atau impor yang sudah ada." - }, - "step3": { - "title": "Tekan tombol scan", - "description": "Setelah Anda memindai, akan muncul petunjuk koneksi untuk Anda menghubungkan dompet Anda." - } - }, - "extension": { - "step1": { - "title": "Instal ekstensi Gate", - "description": "Kami menyarankan untuk mem-pin Gate ke taskbar Anda untuk akses dompet yang lebih mudah." - }, - "step2": { - "title": "Buat atau Impor Dompet", - "description": "Pastikan untuk mencadangkan dompet Anda menggunakan metode yang aman. Jangan pernah membagikan frase pemulihan rahasia Anda kepada siapa pun." - }, - "step3": { - "title": "Segarkan browser Anda", - "description": "Setelah Anda menyiapkan dompet Anda, klik di bawah ini untuk menyegarkan browser dan memuat ekstensi." - } - } - }, - "xportal": { - "qr_code": { - "step1": { - "description": "Letakkan xPortal di layar utama Anda untuk akses lebih cepat ke dompet Anda.", - "title": "Buka aplikasi xPortal" - }, - "step2": { - "description": "Buat dompet baru atau impor yang sudah ada.", - "title": "Buat atau Impor Dompet" - }, - "step3": { - "description": "Setelah Anda memindai, akan muncul petunjuk koneksi untuk Anda menghubungkan dompet Anda.", - "title": "Tekan tombol Scan QR" - } - } - }, - "mew": { - "qr_code": { - "step1": { - "description": "Kami sarankan untuk menempatkan MEW Wallet di layar utama Anda untuk akses yang lebih cepat.", - "title": "Buka aplikasi MEW Wallet" - }, - "step2": { - "description": "Anda dapat dengan mudah mencadangkan dompet Anda menggunakan fitur cadangan awan.", - "title": "Buat atau Impor Dompet" - }, - "step3": { - "description": "Setelah Anda memindai, akan muncul petunjuk koneksi untuk Anda menghubungkan dompet Anda.", - "title": "Tekan tombol scan" - } - } - } - }, - "zilpay": { - "qr_code": { - "step1": { - "title": "Buka aplikasi ZilPay", - "description": "Tambahkan ZilPay ke layar utama Anda untuk akses yang lebih cepat ke dompet Anda." - }, - "step2": { - "title": "Buat atau Impor Dompet", - "description": "Buat dompet baru atau impor yang sudah ada." - }, - "step3": { - "title": "Tekan tombol scan", - "description": "Setelah Anda memindai, akan muncul petunjuk koneksi untuk Anda menghubungkan dompet Anda." - } - } - } -} -`;export{n as default}; diff --git a/client2/build/assets/image-Bi_3R81v.js b/client2/build/assets/image-Bi_3R81v.js deleted file mode 100644 index 5b4f33cb7..000000000 --- a/client2/build/assets/image-Bi_3R81v.js +++ /dev/null @@ -1,4 +0,0 @@ -import{b as C}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const t=C` - - -`;export{t as imageSvg}; diff --git a/client2/build/assets/index-B6P9GsMd.js b/client2/build/assets/index-B6P9GsMd.js deleted file mode 100644 index 177e20b2d..000000000 --- a/client2/build/assets/index-B6P9GsMd.js +++ /dev/null @@ -1,2035 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-Dhl4lD2b.js","assets/index-nibyPLVP.js","assets/index-DNwHMjm8.js","assets/index-My90LZL7.js","assets/index-xRRZdoqR.js","assets/events-DQ172AOg.js","assets/index.es-MB-v37Rm.js"])))=>i.map(i=>d[i]); -function NA(e,t){for(var n=0;nr[i]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const a of i)if(a.type==="childList")for(const l of a.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&r(l)}).observe(document,{childList:!0,subtree:!0});function n(i){const a={};return i.integrity&&(a.integrity=i.integrity),i.referrerPolicy&&(a.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?a.credentials="include":i.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function r(i){if(i.ep)return;i.ep=!0;const a=n(i);fetch(i.href,a)}})();var tV=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Em(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function nV(e){if(Object.prototype.hasOwnProperty.call(e,"__esModule"))return e;var t=e.default;if(typeof t=="function"){var n=function r(){return this instanceof r?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(r){var i=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(n,r,i.get?i:{enumerable:!0,get:function(){return e[r]}})}),n}var tp={exports:{}},Vs={},np={exports:{}},Qe={};/** - * @license React - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var eb;function RA(){if(eb)return Qe;eb=1;var e=Symbol.for("react.element"),t=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),a=Symbol.for("react.provider"),l=Symbol.for("react.context"),c=Symbol.for("react.forward_ref"),d=Symbol.for("react.suspense"),f=Symbol.for("react.memo"),h=Symbol.for("react.lazy"),g=Symbol.iterator;function p(T){return T===null||typeof T!="object"?null:(T=g&&T[g]||T["@@iterator"],typeof T=="function"?T:null)}var y={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},x=Object.assign,v={};function w(T,H,ie){this.props=T,this.context=H,this.refs=v,this.updater=ie||y}w.prototype.isReactComponent={},w.prototype.setState=function(T,H){if(typeof T!="object"&&typeof T!="function"&&T!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,T,H,"setState")},w.prototype.forceUpdate=function(T){this.updater.enqueueForceUpdate(this,T,"forceUpdate")};function I(){}I.prototype=w.prototype;function P(T,H,ie){this.props=T,this.context=H,this.refs=v,this.updater=ie||y}var j=P.prototype=new I;j.constructor=P,x(j,w.prototype),j.isPureReactComponent=!0;var S=Array.isArray,_=Object.prototype.hasOwnProperty,R={current:null},N={key:!0,ref:!0,__self:!0,__source:!0};function O(T,H,ie){var X,se={},fe=null,oe=null;if(H!=null)for(X in H.ref!==void 0&&(oe=H.ref),H.key!==void 0&&(fe=""+H.key),H)_.call(H,X)&&!N.hasOwnProperty(X)&&(se[X]=H[X]);var be=arguments.length-2;if(be===1)se.children=ie;else if(1>>1,H=L[T];if(0>>1;Ti(se,M))fei(oe,se)?(L[T]=oe,L[fe]=M,T=fe):(L[T]=se,L[X]=M,T=X);else if(fei(oe,M))L[T]=oe,L[fe]=M,T=fe;else break e}}return ne}function i(L,ne){var M=L.sortIndex-ne.sortIndex;return M!==0?M:L.id-ne.id}if(typeof performance=="object"&&typeof performance.now=="function"){var a=performance;e.unstable_now=function(){return a.now()}}else{var l=Date,c=l.now();e.unstable_now=function(){return l.now()-c}}var d=[],f=[],h=1,g=null,p=3,y=!1,x=!1,v=!1,w=typeof setTimeout=="function"?setTimeout:null,I=typeof clearTimeout=="function"?clearTimeout:null,P=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function j(L){for(var ne=n(f);ne!==null;){if(ne.callback===null)r(f);else if(ne.startTime<=L)r(f),ne.sortIndex=ne.expirationTime,t(d,ne);else break;ne=n(f)}}function S(L){if(v=!1,j(L),!x)if(n(d)!==null)x=!0,Z(_);else{var ne=n(f);ne!==null&&ae(S,ne.startTime-L)}}function _(L,ne){x=!1,v&&(v=!1,I(O),O=-1),y=!0;var M=p;try{for(j(ne),g=n(d);g!==null&&(!(g.expirationTime>ne)||L&&!Y());){var T=g.callback;if(typeof T=="function"){g.callback=null,p=g.priorityLevel;var H=T(g.expirationTime<=ne);ne=e.unstable_now(),typeof H=="function"?g.callback=H:g===n(d)&&r(d),j(ne)}else r(d);g=n(d)}if(g!==null)var ie=!0;else{var X=n(f);X!==null&&ae(S,X.startTime-ne),ie=!1}return ie}finally{g=null,p=M,y=!1}}var R=!1,N=null,O=-1,U=5,$=-1;function Y(){return!(e.unstable_now()-$L||125T?(L.sortIndex=M,t(f,L),n(d)===null&&L===n(f)&&(v?(I(O),O=-1):v=!0,ae(S,M-T))):(L.sortIndex=H,t(d,L),x||y||(x=!0,Z(_))),L},e.unstable_shouldYield=Y,e.unstable_wrapCallback=function(L){var ne=p;return function(){var M=p;p=ne;try{return L.apply(this,arguments)}finally{p=M}}}})(ip)),ip}var ib;function DA(){return ib||(ib=1,op.exports=LA()),op.exports}/** - * @license React - * react-dom.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var ab;function FA(){if(ab)return Cn;ab=1;var e=Vl(),t=DA();function n(o){for(var s="https://reactjs.org/docs/error-decoder.html?invariant="+o,u=1;u"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),d=Object.prototype.hasOwnProperty,f=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,h={},g={};function p(o){return d.call(g,o)?!0:d.call(h,o)?!1:f.test(o)?g[o]=!0:(h[o]=!0,!1)}function y(o,s,u,m){if(u!==null&&u.type===0)return!1;switch(typeof s){case"function":case"symbol":return!0;case"boolean":return m?!1:u!==null?!u.acceptsBooleans:(o=o.toLowerCase().slice(0,5),o!=="data-"&&o!=="aria-");default:return!1}}function x(o,s,u,m){if(s===null||typeof s>"u"||y(o,s,u,m))return!0;if(m)return!1;if(u!==null)switch(u.type){case 3:return!s;case 4:return s===!1;case 5:return isNaN(s);case 6:return isNaN(s)||1>s}return!1}function v(o,s,u,m,b,C,B){this.acceptsBooleans=s===2||s===3||s===4,this.attributeName=m,this.attributeNamespace=b,this.mustUseProperty=u,this.propertyName=o,this.type=s,this.sanitizeURL=C,this.removeEmptyString=B}var w={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(o){w[o]=new v(o,0,!1,o,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(o){var s=o[0];w[s]=new v(s,1,!1,o[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(o){w[o]=new v(o,2,!1,o.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(o){w[o]=new v(o,2,!1,o,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(o){w[o]=new v(o,3,!1,o.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(o){w[o]=new v(o,3,!0,o,null,!1,!1)}),["capture","download"].forEach(function(o){w[o]=new v(o,4,!1,o,null,!1,!1)}),["cols","rows","size","span"].forEach(function(o){w[o]=new v(o,6,!1,o,null,!1,!1)}),["rowSpan","start"].forEach(function(o){w[o]=new v(o,5,!1,o.toLowerCase(),null,!1,!1)});var I=/[\-:]([a-z])/g;function P(o){return o[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(o){var s=o.replace(I,P);w[s]=new v(s,1,!1,o,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(o){var s=o.replace(I,P);w[s]=new v(s,1,!1,o,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(o){var s=o.replace(I,P);w[s]=new v(s,1,!1,o,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(o){w[o]=new v(o,1,!1,o.toLowerCase(),null,!1,!1)}),w.xlinkHref=new v("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(o){w[o]=new v(o,1,!1,o.toLowerCase(),null,!0,!0)});function j(o,s,u,m){var b=w.hasOwnProperty(s)?w[s]:null;(b!==null?b.type!==0:m||!(2D||b[B]!==C[D]){var W=` -`+b[B].replace(" at new "," at ");return o.displayName&&W.includes("")&&(W=W.replace("",o.displayName)),W}while(1<=B&&0<=D);break}}}finally{ie=!1,Error.prepareStackTrace=u}return(o=o?o.displayName||o.name:"")?H(o):""}function se(o){switch(o.tag){case 5:return H(o.type);case 16:return H("Lazy");case 13:return H("Suspense");case 19:return H("SuspenseList");case 0:case 2:case 15:return o=X(o.type,!1),o;case 11:return o=X(o.type.render,!1),o;case 1:return o=X(o.type,!0),o;default:return""}}function fe(o){if(o==null)return null;if(typeof o=="function")return o.displayName||o.name||null;if(typeof o=="string")return o;switch(o){case N:return"Fragment";case R:return"Portal";case U:return"Profiler";case O:return"StrictMode";case q:return"Suspense";case ce:return"SuspenseList"}if(typeof o=="object")switch(o.$$typeof){case Y:return(o.displayName||"Context")+".Consumer";case $:return(o._context.displayName||"Context")+".Provider";case G:var s=o.render;return o=o.displayName,o||(o=s.displayName||s.name||"",o=o!==""?"ForwardRef("+o+")":"ForwardRef"),o;case te:return s=o.displayName||null,s!==null?s:fe(o.type)||"Memo";case Z:s=o._payload,o=o._init;try{return fe(o(s))}catch{}}return null}function oe(o){var s=o.type;switch(o.tag){case 24:return"Cache";case 9:return(s.displayName||"Context")+".Consumer";case 10:return(s._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return o=s.render,o=o.displayName||o.name||"",s.displayName||(o!==""?"ForwardRef("+o+")":"ForwardRef");case 7:return"Fragment";case 5:return s;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return fe(s);case 8:return s===O?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof s=="function")return s.displayName||s.name||null;if(typeof s=="string")return s}return null}function be(o){switch(typeof o){case"boolean":case"number":case"string":case"undefined":return o;case"object":return o;default:return""}}function xe(o){var s=o.type;return(o=o.nodeName)&&o.toLowerCase()==="input"&&(s==="checkbox"||s==="radio")}function Ne(o){var s=xe(o)?"checked":"value",u=Object.getOwnPropertyDescriptor(o.constructor.prototype,s),m=""+o[s];if(!o.hasOwnProperty(s)&&typeof u<"u"&&typeof u.get=="function"&&typeof u.set=="function"){var b=u.get,C=u.set;return Object.defineProperty(o,s,{configurable:!0,get:function(){return b.call(this)},set:function(B){m=""+B,C.call(this,B)}}),Object.defineProperty(o,s,{enumerable:u.enumerable}),{getValue:function(){return m},setValue:function(B){m=""+B},stopTracking:function(){o._valueTracker=null,delete o[s]}}}}function $e(o){o._valueTracker||(o._valueTracker=Ne(o))}function Ve(o){if(!o)return!1;var s=o._valueTracker;if(!s)return!0;var u=s.getValue(),m="";return o&&(m=xe(o)?o.checked?"true":"false":o.value),o=m,o!==u?(s.setValue(o),!0):!1}function Ye(o){if(o=o||(typeof document<"u"?document:void 0),typeof o>"u")return null;try{return o.activeElement||o.body}catch{return o.body}}function ze(o,s){var u=s.checked;return M({},s,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:u??o._wrapperState.initialChecked})}function rt(o,s){var u=s.defaultValue==null?"":s.defaultValue,m=s.checked!=null?s.checked:s.defaultChecked;u=be(s.value!=null?s.value:u),o._wrapperState={initialChecked:m,initialValue:u,controlled:s.type==="checkbox"||s.type==="radio"?s.checked!=null:s.value!=null}}function gt(o,s){s=s.checked,s!=null&&j(o,"checked",s,!1)}function _t(o,s){gt(o,s);var u=be(s.value),m=s.type;if(u!=null)m==="number"?(u===0&&o.value===""||o.value!=u)&&(o.value=""+u):o.value!==""+u&&(o.value=""+u);else if(m==="submit"||m==="reset"){o.removeAttribute("value");return}s.hasOwnProperty("value")?$t(o,s.type,u):s.hasOwnProperty("defaultValue")&&$t(o,s.type,be(s.defaultValue)),s.checked==null&&s.defaultChecked!=null&&(o.defaultChecked=!!s.defaultChecked)}function Mt(o,s,u){if(s.hasOwnProperty("value")||s.hasOwnProperty("defaultValue")){var m=s.type;if(!(m!=="submit"&&m!=="reset"||s.value!==void 0&&s.value!==null))return;s=""+o._wrapperState.initialValue,u||s===o.value||(o.value=s),o.defaultValue=s}u=o.name,u!==""&&(o.name=""),o.defaultChecked=!!o._wrapperState.initialChecked,u!==""&&(o.name=u)}function $t(o,s,u){(s!=="number"||Ye(o.ownerDocument)!==o)&&(u==null?o.defaultValue=""+o._wrapperState.initialValue:o.defaultValue!==""+u&&(o.defaultValue=""+u))}var z=Array.isArray;function K(o,s,u,m){if(o=o.options,s){s={};for(var b=0;b"+s.valueOf().toString()+"",s=We.firstChild;o.firstChild;)o.removeChild(o.firstChild);for(;s.firstChild;)o.appendChild(s.firstChild)}});function Ot(o,s){if(s){var u=o.firstChild;if(u&&u===o.lastChild&&u.nodeType===3){u.nodeValue=s;return}}o.textContent=s}var Me={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Ge=["Webkit","ms","Moz","O"];Object.keys(Me).forEach(function(o){Ge.forEach(function(s){s=s+o.charAt(0).toUpperCase()+o.substring(1),Me[s]=Me[o]})});function Fe(o,s,u){return s==null||typeof s=="boolean"||s===""?"":u||typeof s!="number"||s===0||Me.hasOwnProperty(o)&&Me[o]?(""+s).trim():s+"px"}function et(o,s){o=o.style;for(var u in s)if(s.hasOwnProperty(u)){var m=u.indexOf("--")===0,b=Fe(u,s[u],m);u==="float"&&(u="cssFloat"),m?o.setProperty(u,b):o[u]=b}}var Tn=M({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Vt(o,s){if(s){if(Tn[o]&&(s.children!=null||s.dangerouslySetInnerHTML!=null))throw Error(n(137,o));if(s.dangerouslySetInnerHTML!=null){if(s.children!=null)throw Error(n(60));if(typeof s.dangerouslySetInnerHTML!="object"||!("__html"in s.dangerouslySetInnerHTML))throw Error(n(61))}if(s.style!=null&&typeof s.style!="object")throw Error(n(62))}}function Ke(o,s){if(o.indexOf("-")===-1)return typeof s.is=="string";switch(o){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Oe=null;function gn(o){return o=o.target||o.srcElement||window,o.correspondingUseElement&&(o=o.correspondingUseElement),o.nodeType===3?o.parentNode:o}var Zo=null,Ur=null,Qi=null;function yy(o){if(o=Ps(o)){if(typeof Zo!="function")throw Error(n(280));var s=o.stateNode;s&&(s=Dc(s),Zo(o.stateNode,o.type,s))}}function vy(o){Ur?Qi?Qi.push(o):Qi=[o]:Ur=o}function by(){if(Ur){var o=Ur,s=Qi;if(Qi=Ur=null,yy(o),s)for(o=0;o>>=0,o===0?32:31-(K8(o)/Y8|0)|0}var wc=64,xc=4194304;function ds(o){switch(o&-o){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return o&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return o&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return o}}function Cc(o,s){var u=o.pendingLanes;if(u===0)return 0;var m=0,b=o.suspendedLanes,C=o.pingedLanes,B=u&268435455;if(B!==0){var D=B&~b;D!==0?m=ds(D):(C&=B,C!==0&&(m=ds(C)))}else B=u&~b,B!==0?m=ds(B):C!==0&&(m=ds(C));if(m===0)return 0;if(s!==0&&s!==m&&(s&b)===0&&(b=m&-m,C=s&-s,b>=C||b===16&&(C&4194240)!==0))return s;if((m&4)!==0&&(m|=u&16),s=o.entangledLanes,s!==0)for(o=o.entanglements,s&=m;0u;u++)s.push(o);return s}function fs(o,s,u){o.pendingLanes|=s,s!==536870912&&(o.suspendedLanes=0,o.pingedLanes=0),o=o.eventTimes,s=31-ir(s),o[s]=u}function ek(o,s){var u=o.pendingLanes&~s;o.pendingLanes=s,o.suspendedLanes=0,o.pingedLanes=0,o.expiredLanes&=s,o.mutableReadLanes&=s,o.entangledLanes&=s,s=o.entanglements;var m=o.eventTimes;for(o=o.expirationTimes;0=ws),Qy=" ",Gy=!1;function Ky(o,s){switch(o){case"keyup":return Ik.indexOf(s.keyCode)!==-1;case"keydown":return s.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Yy(o){return o=o.detail,typeof o=="object"&&"data"in o?o.data:null}var Yi=!1;function _k(o,s){switch(o){case"compositionend":return Yy(s);case"keypress":return s.which!==32?null:(Gy=!0,Qy);case"textInput":return o=s.data,o===Qy&&Gy?null:o;default:return null}}function Tk(o,s){if(Yi)return o==="compositionend"||!Mf&&Ky(o,s)?(o=Uy(),jc=Pf=wo=null,Yi=!1,o):null;switch(o){case"paste":return null;case"keypress":if(!(s.ctrlKey||s.altKey||s.metaKey)||s.ctrlKey&&s.altKey){if(s.char&&1=s)return{node:u,offset:s-o};o=m}e:{for(;u;){if(u.nextSibling){u=u.nextSibling;break e}u=u.parentNode}u=void 0}u=r1(u)}}function i1(o,s){return o&&s?o===s?!0:o&&o.nodeType===3?!1:s&&s.nodeType===3?i1(o,s.parentNode):"contains"in o?o.contains(s):o.compareDocumentPosition?!!(o.compareDocumentPosition(s)&16):!1:!1}function a1(){for(var o=window,s=Ye();s instanceof o.HTMLIFrameElement;){try{var u=typeof s.contentWindow.location.href=="string"}catch{u=!1}if(u)o=s.contentWindow;else break;s=Ye(o.document)}return s}function Df(o){var s=o&&o.nodeName&&o.nodeName.toLowerCase();return s&&(s==="input"&&(o.type==="text"||o.type==="search"||o.type==="tel"||o.type==="url"||o.type==="password")||s==="textarea"||o.contentEditable==="true")}function zk(o){var s=a1(),u=o.focusedElem,m=o.selectionRange;if(s!==u&&u&&u.ownerDocument&&i1(u.ownerDocument.documentElement,u)){if(m!==null&&Df(u)){if(s=m.start,o=m.end,o===void 0&&(o=s),"selectionStart"in u)u.selectionStart=s,u.selectionEnd=Math.min(o,u.value.length);else if(o=(s=u.ownerDocument||document)&&s.defaultView||window,o.getSelection){o=o.getSelection();var b=u.textContent.length,C=Math.min(m.start,b);m=m.end===void 0?C:Math.min(m.end,b),!o.extend&&C>m&&(b=m,m=C,C=b),b=o1(u,C);var B=o1(u,m);b&&B&&(o.rangeCount!==1||o.anchorNode!==b.node||o.anchorOffset!==b.offset||o.focusNode!==B.node||o.focusOffset!==B.offset)&&(s=s.createRange(),s.setStart(b.node,b.offset),o.removeAllRanges(),C>m?(o.addRange(s),o.extend(B.node,B.offset)):(s.setEnd(B.node,B.offset),o.addRange(s)))}}for(s=[],o=u;o=o.parentNode;)o.nodeType===1&&s.push({element:o,left:o.scrollLeft,top:o.scrollTop});for(typeof u.focus=="function"&&u.focus(),u=0;u=document.documentMode,Ji=null,Ff=null,ks=null,zf=!1;function s1(o,s,u){var m=u.window===u?u.document:u.nodeType===9?u:u.ownerDocument;zf||Ji==null||Ji!==Ye(m)||(m=Ji,"selectionStart"in m&&Df(m)?m={start:m.selectionStart,end:m.selectionEnd}:(m=(m.ownerDocument&&m.ownerDocument.defaultView||window).getSelection(),m={anchorNode:m.anchorNode,anchorOffset:m.anchorOffset,focusNode:m.focusNode,focusOffset:m.focusOffset}),ks&&Es(ks,m)||(ks=m,m=Mc(Ff,"onSelect"),0na||(o.current=Zf[na],Zf[na]=null,na--)}function at(o,s){na++,Zf[na]=o.current,o.current=s}var ko={},Jt=Eo(ko),yn=Eo(!1),ti=ko;function ra(o,s){var u=o.type.contextTypes;if(!u)return ko;var m=o.stateNode;if(m&&m.__reactInternalMemoizedUnmaskedChildContext===s)return m.__reactInternalMemoizedMaskedChildContext;var b={},C;for(C in u)b[C]=s[C];return m&&(o=o.stateNode,o.__reactInternalMemoizedUnmaskedChildContext=s,o.__reactInternalMemoizedMaskedChildContext=b),b}function vn(o){return o=o.childContextTypes,o!=null}function Fc(){ct(yn),ct(Jt)}function C1(o,s,u){if(Jt.current!==ko)throw Error(n(168));at(Jt,s),at(yn,u)}function E1(o,s,u){var m=o.stateNode;if(s=s.childContextTypes,typeof m.getChildContext!="function")return u;m=m.getChildContext();for(var b in m)if(!(b in s))throw Error(n(108,oe(o)||"Unknown",b));return M({},u,m)}function zc(o){return o=(o=o.stateNode)&&o.__reactInternalMemoizedMergedChildContext||ko,ti=Jt.current,at(Jt,o),at(yn,yn.current),!0}function k1(o,s,u){var m=o.stateNode;if(!m)throw Error(n(169));u?(o=E1(o,s,ti),m.__reactInternalMemoizedMergedChildContext=o,ct(yn),ct(Jt),at(Jt,o)):ct(yn),at(yn,u)}var $r=null,Uc=!1,Xf=!1;function A1(o){$r===null?$r=[o]:$r.push(o)}function Zk(o){Uc=!0,A1(o)}function Ao(){if(!Xf&&$r!==null){Xf=!0;var o=0,s=it;try{var u=$r;for(it=1;o>=B,b-=B,Vr=1<<32-ir(s)+b|u<Ue?(Ft=De,De=null):Ft=De.sibling;var nt=ue(Q,De,J[Ue],ye);if(nt===null){De===null&&(De=Ft);break}o&&De&&nt.alternate===null&&s(Q,De),V=C(nt,V,Ue),Le===null?Be=nt:Le.sibling=nt,Le=nt,De=Ft}if(Ue===J.length)return u(Q,De),ut&&ri(Q,Ue),Be;if(De===null){for(;UeUe?(Ft=De,De=null):Ft=De.sibling;var Ro=ue(Q,De,nt.value,ye);if(Ro===null){De===null&&(De=Ft);break}o&&De&&Ro.alternate===null&&s(Q,De),V=C(Ro,V,Ue),Le===null?Be=Ro:Le.sibling=Ro,Le=Ro,De=Ft}if(nt.done)return u(Q,De),ut&&ri(Q,Ue),Be;if(De===null){for(;!nt.done;Ue++,nt=J.next())nt=he(Q,nt.value,ye),nt!==null&&(V=C(nt,V,Ue),Le===null?Be=nt:Le.sibling=nt,Le=nt);return ut&&ri(Q,Ue),Be}for(De=m(Q,De);!nt.done;Ue++,nt=J.next())nt=Ce(De,Q,Ue,nt.value,ye),nt!==null&&(o&&nt.alternate!==null&&De.delete(nt.key===null?Ue:nt.key),V=C(nt,V,Ue),Le===null?Be=nt:Le.sibling=nt,Le=nt);return o&&De.forEach(function(BA){return s(Q,BA)}),ut&&ri(Q,Ue),Be}function bt(Q,V,J,ye){if(typeof J=="object"&&J!==null&&J.type===N&&J.key===null&&(J=J.props.children),typeof J=="object"&&J!==null){switch(J.$$typeof){case _:e:{for(var Be=J.key,Le=V;Le!==null;){if(Le.key===Be){if(Be=J.type,Be===N){if(Le.tag===7){u(Q,Le.sibling),V=b(Le,J.props.children),V.return=Q,Q=V;break e}}else if(Le.elementType===Be||typeof Be=="object"&&Be!==null&&Be.$$typeof===Z&&T1(Be)===Le.type){u(Q,Le.sibling),V=b(Le,J.props),V.ref=_s(Q,Le,J),V.return=Q,Q=V;break e}u(Q,Le);break}else s(Q,Le);Le=Le.sibling}J.type===N?(V=di(J.props.children,Q.mode,ye,J.key),V.return=Q,Q=V):(ye=mu(J.type,J.key,J.props,null,Q.mode,ye),ye.ref=_s(Q,V,J),ye.return=Q,Q=ye)}return B(Q);case R:e:{for(Le=J.key;V!==null;){if(V.key===Le)if(V.tag===4&&V.stateNode.containerInfo===J.containerInfo&&V.stateNode.implementation===J.implementation){u(Q,V.sibling),V=b(V,J.children||[]),V.return=Q,Q=V;break e}else{u(Q,V);break}else s(Q,V);V=V.sibling}V=Yh(J,Q.mode,ye),V.return=Q,Q=V}return B(Q);case Z:return Le=J._init,bt(Q,V,Le(J._payload),ye)}if(z(J))return Ae(Q,V,J,ye);if(ne(J))return Pe(Q,V,J,ye);Hc(Q,J)}return typeof J=="string"&&J!==""||typeof J=="number"?(J=""+J,V!==null&&V.tag===6?(u(Q,V.sibling),V=b(V,J),V.return=Q,Q=V):(u(Q,V),V=Kh(J,Q.mode,ye),V.return=Q,Q=V),B(Q)):u(Q,V)}return bt}var sa=B1(!0),N1=B1(!1),qc=Eo(null),Qc=null,la=null,ih=null;function ah(){ih=la=Qc=null}function sh(o){var s=qc.current;ct(qc),o._currentValue=s}function lh(o,s,u){for(;o!==null;){var m=o.alternate;if((o.childLanes&s)!==s?(o.childLanes|=s,m!==null&&(m.childLanes|=s)):m!==null&&(m.childLanes&s)!==s&&(m.childLanes|=s),o===u)break;o=o.return}}function ca(o,s){Qc=o,ih=la=null,o=o.dependencies,o!==null&&o.firstContext!==null&&((o.lanes&s)!==0&&(bn=!0),o.firstContext=null)}function Qn(o){var s=o._currentValue;if(ih!==o)if(o={context:o,memoizedValue:s,next:null},la===null){if(Qc===null)throw Error(n(308));la=o,Qc.dependencies={lanes:0,firstContext:o}}else la=la.next=o;return s}var oi=null;function ch(o){oi===null?oi=[o]:oi.push(o)}function R1(o,s,u,m){var b=s.interleaved;return b===null?(u.next=u,ch(s)):(u.next=b.next,b.next=u),s.interleaved=u,qr(o,m)}function qr(o,s){o.lanes|=s;var u=o.alternate;for(u!==null&&(u.lanes|=s),u=o,o=o.return;o!==null;)o.childLanes|=s,u=o.alternate,u!==null&&(u.childLanes|=s),u=o,o=o.return;return u.tag===3?u.stateNode:null}var So=!1;function uh(o){o.updateQueue={baseState:o.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function M1(o,s){o=o.updateQueue,s.updateQueue===o&&(s.updateQueue={baseState:o.baseState,firstBaseUpdate:o.firstBaseUpdate,lastBaseUpdate:o.lastBaseUpdate,shared:o.shared,effects:o.effects})}function Qr(o,s){return{eventTime:o,lane:s,tag:0,payload:null,callback:null,next:null}}function jo(o,s,u){var m=o.updateQueue;if(m===null)return null;if(m=m.shared,(tt&2)!==0){var b=m.pending;return b===null?s.next=s:(s.next=b.next,b.next=s),m.pending=s,qr(o,u)}return b=m.interleaved,b===null?(s.next=s,ch(m)):(s.next=b.next,b.next=s),m.interleaved=s,qr(o,u)}function Gc(o,s,u){if(s=s.updateQueue,s!==null&&(s=s.shared,(u&4194240)!==0)){var m=s.lanes;m&=o.pendingLanes,u|=m,s.lanes=u,kf(o,u)}}function O1(o,s){var u=o.updateQueue,m=o.alternate;if(m!==null&&(m=m.updateQueue,u===m)){var b=null,C=null;if(u=u.firstBaseUpdate,u!==null){do{var B={eventTime:u.eventTime,lane:u.lane,tag:u.tag,payload:u.payload,callback:u.callback,next:null};C===null?b=C=B:C=C.next=B,u=u.next}while(u!==null);C===null?b=C=s:C=C.next=s}else b=C=s;u={baseState:m.baseState,firstBaseUpdate:b,lastBaseUpdate:C,shared:m.shared,effects:m.effects},o.updateQueue=u;return}o=u.lastBaseUpdate,o===null?u.firstBaseUpdate=s:o.next=s,u.lastBaseUpdate=s}function Kc(o,s,u,m){var b=o.updateQueue;So=!1;var C=b.firstBaseUpdate,B=b.lastBaseUpdate,D=b.shared.pending;if(D!==null){b.shared.pending=null;var W=D,ee=W.next;W.next=null,B===null?C=ee:B.next=ee,B=W;var de=o.alternate;de!==null&&(de=de.updateQueue,D=de.lastBaseUpdate,D!==B&&(D===null?de.firstBaseUpdate=ee:D.next=ee,de.lastBaseUpdate=W))}if(C!==null){var he=b.baseState;B=0,de=ee=W=null,D=C;do{var ue=D.lane,Ce=D.eventTime;if((m&ue)===ue){de!==null&&(de=de.next={eventTime:Ce,lane:0,tag:D.tag,payload:D.payload,callback:D.callback,next:null});e:{var Ae=o,Pe=D;switch(ue=s,Ce=u,Pe.tag){case 1:if(Ae=Pe.payload,typeof Ae=="function"){he=Ae.call(Ce,he,ue);break e}he=Ae;break e;case 3:Ae.flags=Ae.flags&-65537|128;case 0:if(Ae=Pe.payload,ue=typeof Ae=="function"?Ae.call(Ce,he,ue):Ae,ue==null)break e;he=M({},he,ue);break e;case 2:So=!0}}D.callback!==null&&D.lane!==0&&(o.flags|=64,ue=b.effects,ue===null?b.effects=[D]:ue.push(D))}else Ce={eventTime:Ce,lane:ue,tag:D.tag,payload:D.payload,callback:D.callback,next:null},de===null?(ee=de=Ce,W=he):de=de.next=Ce,B|=ue;if(D=D.next,D===null){if(D=b.shared.pending,D===null)break;ue=D,D=ue.next,ue.next=null,b.lastBaseUpdate=ue,b.shared.pending=null}}while(!0);if(de===null&&(W=he),b.baseState=W,b.firstBaseUpdate=ee,b.lastBaseUpdate=de,s=b.shared.interleaved,s!==null){b=s;do B|=b.lane,b=b.next;while(b!==s)}else C===null&&(b.shared.lanes=0);si|=B,o.lanes=B,o.memoizedState=he}}function L1(o,s,u){if(o=s.effects,s.effects=null,o!==null)for(s=0;su?u:4,o(!0);var m=mh.transition;mh.transition={};try{o(!1),s()}finally{it=u,mh.transition=m}}function nv(){return Gn().memoizedState}function nA(o,s,u){var m=To(o);if(u={lane:m,action:u,hasEagerState:!1,eagerState:null,next:null},rv(o))ov(s,u);else if(u=R1(o,s,u,m),u!==null){var b=ln();dr(u,o,m,b),iv(u,s,m)}}function rA(o,s,u){var m=To(o),b={lane:m,action:u,hasEagerState:!1,eagerState:null,next:null};if(rv(o))ov(s,b);else{var C=o.alternate;if(o.lanes===0&&(C===null||C.lanes===0)&&(C=s.lastRenderedReducer,C!==null))try{var B=s.lastRenderedState,D=C(B,u);if(b.hasEagerState=!0,b.eagerState=D,ar(D,B)){var W=s.interleaved;W===null?(b.next=b,ch(s)):(b.next=W.next,W.next=b),s.interleaved=b;return}}catch{}finally{}u=R1(o,s,b,m),u!==null&&(b=ln(),dr(u,o,m,b),iv(u,s,m))}}function rv(o){var s=o.alternate;return o===pt||s!==null&&s===pt}function ov(o,s){Rs=Zc=!0;var u=o.pending;u===null?s.next=s:(s.next=u.next,u.next=s),o.pending=s}function iv(o,s,u){if((u&4194240)!==0){var m=s.lanes;m&=o.pendingLanes,u|=m,s.lanes=u,kf(o,u)}}var tu={readContext:Qn,useCallback:Zt,useContext:Zt,useEffect:Zt,useImperativeHandle:Zt,useInsertionEffect:Zt,useLayoutEffect:Zt,useMemo:Zt,useReducer:Zt,useRef:Zt,useState:Zt,useDebugValue:Zt,useDeferredValue:Zt,useTransition:Zt,useMutableSource:Zt,useSyncExternalStore:Zt,useId:Zt,unstable_isNewReconciler:!1},oA={readContext:Qn,useCallback:function(o,s){return jr().memoizedState=[o,s===void 0?null:s],o},useContext:Qn,useEffect:G1,useImperativeHandle:function(o,s,u){return u=u!=null?u.concat([o]):null,Xc(4194308,4,J1.bind(null,s,o),u)},useLayoutEffect:function(o,s){return Xc(4194308,4,o,s)},useInsertionEffect:function(o,s){return Xc(4,2,o,s)},useMemo:function(o,s){var u=jr();return s=s===void 0?null:s,o=o(),u.memoizedState=[o,s],o},useReducer:function(o,s,u){var m=jr();return s=u!==void 0?u(s):s,m.memoizedState=m.baseState=s,o={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:o,lastRenderedState:s},m.queue=o,o=o.dispatch=nA.bind(null,pt,o),[m.memoizedState,o]},useRef:function(o){var s=jr();return o={current:o},s.memoizedState=o},useState:q1,useDebugValue:Ch,useDeferredValue:function(o){return jr().memoizedState=o},useTransition:function(){var o=q1(!1),s=o[0];return o=tA.bind(null,o[1]),jr().memoizedState=o,[s,o]},useMutableSource:function(){},useSyncExternalStore:function(o,s,u){var m=pt,b=jr();if(ut){if(u===void 0)throw Error(n(407));u=u()}else{if(u=s(),Dt===null)throw Error(n(349));(ai&30)!==0||U1(m,s,u)}b.memoizedState=u;var C={value:u,getSnapshot:s};return b.queue=C,G1($1.bind(null,m,C,o),[o]),m.flags|=2048,Ls(9,W1.bind(null,m,C,u,s),void 0,null),u},useId:function(){var o=jr(),s=Dt.identifierPrefix;if(ut){var u=Hr,m=Vr;u=(m&~(1<<32-ir(m)-1)).toString(32)+u,s=":"+s+"R"+u,u=Ms++,0<\/script>",o=o.removeChild(o.firstChild)):typeof m.is=="string"?o=B.createElement(u,{is:m.is}):(o=B.createElement(u),u==="select"&&(B=o,m.multiple?B.multiple=!0:m.size&&(B.size=m.size))):o=B.createElementNS(o,u),o[Ar]=s,o[Is]=m,Av(o,s,!1,!1),s.stateNode=o;e:{switch(B=Ke(u,m),u){case"dialog":lt("cancel",o),lt("close",o),b=m;break;case"iframe":case"object":case"embed":lt("load",o),b=m;break;case"video":case"audio":for(b=0;bpa&&(s.flags|=128,m=!0,Ds(C,!1),s.lanes=4194304)}else{if(!m)if(o=Yc(B),o!==null){if(s.flags|=128,m=!0,u=o.updateQueue,u!==null&&(s.updateQueue=u,s.flags|=4),Ds(C,!0),C.tail===null&&C.tailMode==="hidden"&&!B.alternate&&!ut)return Xt(s),null}else 2*vt()-C.renderingStartTime>pa&&u!==1073741824&&(s.flags|=128,m=!0,Ds(C,!1),s.lanes=4194304);C.isBackwards?(B.sibling=s.child,s.child=B):(u=C.last,u!==null?u.sibling=B:s.child=B,C.last=B)}return C.tail!==null?(s=C.tail,C.rendering=s,C.tail=s.sibling,C.renderingStartTime=vt(),s.sibling=null,u=ht.current,at(ht,m?u&1|2:u&1),s):(Xt(s),null);case 22:case 23:return qh(),m=s.memoizedState!==null,o!==null&&o.memoizedState!==null!==m&&(s.flags|=8192),m&&(s.mode&1)!==0?(Mn&1073741824)!==0&&(Xt(s),s.subtreeFlags&6&&(s.flags|=8192)):Xt(s),null;case 24:return null;case 25:return null}throw Error(n(156,s.tag))}function fA(o,s){switch(th(s),s.tag){case 1:return vn(s.type)&&Fc(),o=s.flags,o&65536?(s.flags=o&-65537|128,s):null;case 3:return ua(),ct(yn),ct(Jt),ph(),o=s.flags,(o&65536)!==0&&(o&128)===0?(s.flags=o&-65537|128,s):null;case 5:return fh(s),null;case 13:if(ct(ht),o=s.memoizedState,o!==null&&o.dehydrated!==null){if(s.alternate===null)throw Error(n(340));aa()}return o=s.flags,o&65536?(s.flags=o&-65537|128,s):null;case 19:return ct(ht),null;case 4:return ua(),null;case 10:return sh(s.type._context),null;case 22:case 23:return qh(),null;case 24:return null;default:return null}}var iu=!1,en=!1,hA=typeof WeakSet=="function"?WeakSet:Set,ke=null;function fa(o,s){var u=o.ref;if(u!==null)if(typeof u=="function")try{u(null)}catch(m){yt(o,s,m)}else u.current=null}function Rh(o,s,u){try{u()}catch(m){yt(o,s,m)}}var Iv=!1;function pA(o,s){if(qf=Ac,o=a1(),Df(o)){if("selectionStart"in o)var u={start:o.selectionStart,end:o.selectionEnd};else e:{u=(u=o.ownerDocument)&&u.defaultView||window;var m=u.getSelection&&u.getSelection();if(m&&m.rangeCount!==0){u=m.anchorNode;var b=m.anchorOffset,C=m.focusNode;m=m.focusOffset;try{u.nodeType,C.nodeType}catch{u=null;break e}var B=0,D=-1,W=-1,ee=0,de=0,he=o,ue=null;t:for(;;){for(var Ce;he!==u||b!==0&&he.nodeType!==3||(D=B+b),he!==C||m!==0&&he.nodeType!==3||(W=B+m),he.nodeType===3&&(B+=he.nodeValue.length),(Ce=he.firstChild)!==null;)ue=he,he=Ce;for(;;){if(he===o)break t;if(ue===u&&++ee===b&&(D=B),ue===C&&++de===m&&(W=B),(Ce=he.nextSibling)!==null)break;he=ue,ue=he.parentNode}he=Ce}u=D===-1||W===-1?null:{start:D,end:W}}else u=null}u=u||{start:0,end:0}}else u=null;for(Qf={focusedElem:o,selectionRange:u},Ac=!1,ke=s;ke!==null;)if(s=ke,o=s.child,(s.subtreeFlags&1028)!==0&&o!==null)o.return=s,ke=o;else for(;ke!==null;){s=ke;try{var Ae=s.alternate;if((s.flags&1024)!==0)switch(s.tag){case 0:case 11:case 15:break;case 1:if(Ae!==null){var Pe=Ae.memoizedProps,bt=Ae.memoizedState,Q=s.stateNode,V=Q.getSnapshotBeforeUpdate(s.elementType===s.type?Pe:lr(s.type,Pe),bt);Q.__reactInternalSnapshotBeforeUpdate=V}break;case 3:var J=s.stateNode.containerInfo;J.nodeType===1?J.textContent="":J.nodeType===9&&J.documentElement&&J.removeChild(J.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(n(163))}}catch(ye){yt(s,s.return,ye)}if(o=s.sibling,o!==null){o.return=s.return,ke=o;break}ke=s.return}return Ae=Iv,Iv=!1,Ae}function Fs(o,s,u){var m=s.updateQueue;if(m=m!==null?m.lastEffect:null,m!==null){var b=m=m.next;do{if((b.tag&o)===o){var C=b.destroy;b.destroy=void 0,C!==void 0&&Rh(s,u,C)}b=b.next}while(b!==m)}}function au(o,s){if(s=s.updateQueue,s=s!==null?s.lastEffect:null,s!==null){var u=s=s.next;do{if((u.tag&o)===o){var m=u.create;u.destroy=m()}u=u.next}while(u!==s)}}function Mh(o){var s=o.ref;if(s!==null){var u=o.stateNode;switch(o.tag){case 5:o=u;break;default:o=u}typeof s=="function"?s(o):s.current=o}}function Pv(o){var s=o.alternate;s!==null&&(o.alternate=null,Pv(s)),o.child=null,o.deletions=null,o.sibling=null,o.tag===5&&(s=o.stateNode,s!==null&&(delete s[Ar],delete s[Is],delete s[Jf],delete s[Yk],delete s[Jk])),o.stateNode=null,o.return=null,o.dependencies=null,o.memoizedProps=null,o.memoizedState=null,o.pendingProps=null,o.stateNode=null,o.updateQueue=null}function _v(o){return o.tag===5||o.tag===3||o.tag===4}function Tv(o){e:for(;;){for(;o.sibling===null;){if(o.return===null||_v(o.return))return null;o=o.return}for(o.sibling.return=o.return,o=o.sibling;o.tag!==5&&o.tag!==6&&o.tag!==18;){if(o.flags&2||o.child===null||o.tag===4)continue e;o.child.return=o,o=o.child}if(!(o.flags&2))return o.stateNode}}function Oh(o,s,u){var m=o.tag;if(m===5||m===6)o=o.stateNode,s?u.nodeType===8?u.parentNode.insertBefore(o,s):u.insertBefore(o,s):(u.nodeType===8?(s=u.parentNode,s.insertBefore(o,u)):(s=u,s.appendChild(o)),u=u._reactRootContainer,u!=null||s.onclick!==null||(s.onclick=Lc));else if(m!==4&&(o=o.child,o!==null))for(Oh(o,s,u),o=o.sibling;o!==null;)Oh(o,s,u),o=o.sibling}function Lh(o,s,u){var m=o.tag;if(m===5||m===6)o=o.stateNode,s?u.insertBefore(o,s):u.appendChild(o);else if(m!==4&&(o=o.child,o!==null))for(Lh(o,s,u),o=o.sibling;o!==null;)Lh(o,s,u),o=o.sibling}var Ht=null,cr=!1;function Io(o,s,u){for(u=u.child;u!==null;)Bv(o,s,u),u=u.sibling}function Bv(o,s,u){if(kr&&typeof kr.onCommitFiberUnmount=="function")try{kr.onCommitFiberUnmount(bc,u)}catch{}switch(u.tag){case 5:en||fa(u,s);case 6:var m=Ht,b=cr;Ht=null,Io(o,s,u),Ht=m,cr=b,Ht!==null&&(cr?(o=Ht,u=u.stateNode,o.nodeType===8?o.parentNode.removeChild(u):o.removeChild(u)):Ht.removeChild(u.stateNode));break;case 18:Ht!==null&&(cr?(o=Ht,u=u.stateNode,o.nodeType===8?Yf(o.parentNode,u):o.nodeType===1&&Yf(o,u),ys(o)):Yf(Ht,u.stateNode));break;case 4:m=Ht,b=cr,Ht=u.stateNode.containerInfo,cr=!0,Io(o,s,u),Ht=m,cr=b;break;case 0:case 11:case 14:case 15:if(!en&&(m=u.updateQueue,m!==null&&(m=m.lastEffect,m!==null))){b=m=m.next;do{var C=b,B=C.destroy;C=C.tag,B!==void 0&&((C&2)!==0||(C&4)!==0)&&Rh(u,s,B),b=b.next}while(b!==m)}Io(o,s,u);break;case 1:if(!en&&(fa(u,s),m=u.stateNode,typeof m.componentWillUnmount=="function"))try{m.props=u.memoizedProps,m.state=u.memoizedState,m.componentWillUnmount()}catch(D){yt(u,s,D)}Io(o,s,u);break;case 21:Io(o,s,u);break;case 22:u.mode&1?(en=(m=en)||u.memoizedState!==null,Io(o,s,u),en=m):Io(o,s,u);break;default:Io(o,s,u)}}function Nv(o){var s=o.updateQueue;if(s!==null){o.updateQueue=null;var u=o.stateNode;u===null&&(u=o.stateNode=new hA),s.forEach(function(m){var b=EA.bind(null,o,m);u.has(m)||(u.add(m),m.then(b,b))})}}function ur(o,s){var u=s.deletions;if(u!==null)for(var m=0;mb&&(b=B),m&=~C}if(m=b,m=vt()-m,m=(120>m?120:480>m?480:1080>m?1080:1920>m?1920:3e3>m?3e3:4320>m?4320:1960*gA(m/1960))-m,10o?16:o,_o===null)var m=!1;else{if(o=_o,_o=null,du=0,(tt&6)!==0)throw Error(n(331));var b=tt;for(tt|=4,ke=o.current;ke!==null;){var C=ke,B=C.child;if((ke.flags&16)!==0){var D=C.deletions;if(D!==null){for(var W=0;Wvt()-zh?ci(o,0):Fh|=u),xn(o,s)}function qv(o,s){s===0&&((o.mode&1)===0?s=1:(s=xc,xc<<=1,(xc&130023424)===0&&(xc=4194304)));var u=ln();o=qr(o,s),o!==null&&(fs(o,s,u),xn(o,u))}function CA(o){var s=o.memoizedState,u=0;s!==null&&(u=s.retryLane),qv(o,u)}function EA(o,s){var u=0;switch(o.tag){case 13:var m=o.stateNode,b=o.memoizedState;b!==null&&(u=b.retryLane);break;case 19:m=o.stateNode;break;default:throw Error(n(314))}m!==null&&m.delete(s),qv(o,u)}var Qv;Qv=function(o,s,u){if(o!==null)if(o.memoizedProps!==s.pendingProps||yn.current)bn=!0;else{if((o.lanes&u)===0&&(s.flags&128)===0)return bn=!1,uA(o,s,u);bn=(o.flags&131072)!==0}else bn=!1,ut&&(s.flags&1048576)!==0&&S1(s,$c,s.index);switch(s.lanes=0,s.tag){case 2:var m=s.type;ou(o,s),o=s.pendingProps;var b=ra(s,Jt.current);ca(s,u),b=yh(null,s,m,o,b,u);var C=vh();return s.flags|=1,typeof b=="object"&&b!==null&&typeof b.render=="function"&&b.$$typeof===void 0?(s.tag=1,s.memoizedState=null,s.updateQueue=null,vn(m)?(C=!0,zc(s)):C=!1,s.memoizedState=b.state!==null&&b.state!==void 0?b.state:null,uh(s),b.updater=nu,s.stateNode=b,b._reactInternals=s,kh(s,m,o,u),s=Ih(null,s,m,!0,C,u)):(s.tag=0,ut&&C&&eh(s),sn(null,s,b,u),s=s.child),s;case 16:m=s.elementType;e:{switch(ou(o,s),o=s.pendingProps,b=m._init,m=b(m._payload),s.type=m,b=s.tag=AA(m),o=lr(m,o),b){case 0:s=jh(null,s,m,o,u);break e;case 1:s=bv(null,s,m,o,u);break e;case 11:s=pv(null,s,m,o,u);break e;case 14:s=mv(null,s,m,lr(m.type,o),u);break e}throw Error(n(306,m,""))}return s;case 0:return m=s.type,b=s.pendingProps,b=s.elementType===m?b:lr(m,b),jh(o,s,m,b,u);case 1:return m=s.type,b=s.pendingProps,b=s.elementType===m?b:lr(m,b),bv(o,s,m,b,u);case 3:e:{if(wv(s),o===null)throw Error(n(387));m=s.pendingProps,C=s.memoizedState,b=C.element,M1(o,s),Kc(s,m,null,u);var B=s.memoizedState;if(m=B.element,C.isDehydrated)if(C={element:m,isDehydrated:!1,cache:B.cache,pendingSuspenseBoundaries:B.pendingSuspenseBoundaries,transitions:B.transitions},s.updateQueue.baseState=C,s.memoizedState=C,s.flags&256){b=da(Error(n(423)),s),s=xv(o,s,m,u,b);break e}else if(m!==b){b=da(Error(n(424)),s),s=xv(o,s,m,u,b);break e}else for(Rn=Co(s.stateNode.containerInfo.firstChild),Nn=s,ut=!0,sr=null,u=N1(s,null,m,u),s.child=u;u;)u.flags=u.flags&-3|4096,u=u.sibling;else{if(aa(),m===b){s=Gr(o,s,u);break e}sn(o,s,m,u)}s=s.child}return s;case 5:return D1(s),o===null&&rh(s),m=s.type,b=s.pendingProps,C=o!==null?o.memoizedProps:null,B=b.children,Gf(m,b)?B=null:C!==null&&Gf(m,C)&&(s.flags|=32),vv(o,s),sn(o,s,B,u),s.child;case 6:return o===null&&rh(s),null;case 13:return Cv(o,s,u);case 4:return dh(s,s.stateNode.containerInfo),m=s.pendingProps,o===null?s.child=sa(s,null,m,u):sn(o,s,m,u),s.child;case 11:return m=s.type,b=s.pendingProps,b=s.elementType===m?b:lr(m,b),pv(o,s,m,b,u);case 7:return sn(o,s,s.pendingProps,u),s.child;case 8:return sn(o,s,s.pendingProps.children,u),s.child;case 12:return sn(o,s,s.pendingProps.children,u),s.child;case 10:e:{if(m=s.type._context,b=s.pendingProps,C=s.memoizedProps,B=b.value,at(qc,m._currentValue),m._currentValue=B,C!==null)if(ar(C.value,B)){if(C.children===b.children&&!yn.current){s=Gr(o,s,u);break e}}else for(C=s.child,C!==null&&(C.return=s);C!==null;){var D=C.dependencies;if(D!==null){B=C.child;for(var W=D.firstContext;W!==null;){if(W.context===m){if(C.tag===1){W=Qr(-1,u&-u),W.tag=2;var ee=C.updateQueue;if(ee!==null){ee=ee.shared;var de=ee.pending;de===null?W.next=W:(W.next=de.next,de.next=W),ee.pending=W}}C.lanes|=u,W=C.alternate,W!==null&&(W.lanes|=u),lh(C.return,u,s),D.lanes|=u;break}W=W.next}}else if(C.tag===10)B=C.type===s.type?null:C.child;else if(C.tag===18){if(B=C.return,B===null)throw Error(n(341));B.lanes|=u,D=B.alternate,D!==null&&(D.lanes|=u),lh(B,u,s),B=C.sibling}else B=C.child;if(B!==null)B.return=C;else for(B=C;B!==null;){if(B===s){B=null;break}if(C=B.sibling,C!==null){C.return=B.return,B=C;break}B=B.return}C=B}sn(o,s,b.children,u),s=s.child}return s;case 9:return b=s.type,m=s.pendingProps.children,ca(s,u),b=Qn(b),m=m(b),s.flags|=1,sn(o,s,m,u),s.child;case 14:return m=s.type,b=lr(m,s.pendingProps),b=lr(m.type,b),mv(o,s,m,b,u);case 15:return gv(o,s,s.type,s.pendingProps,u);case 17:return m=s.type,b=s.pendingProps,b=s.elementType===m?b:lr(m,b),ou(o,s),s.tag=1,vn(m)?(o=!0,zc(s)):o=!1,ca(s,u),sv(s,m,b),kh(s,m,b,u),Ih(null,s,m,!0,o,u);case 19:return kv(o,s,u);case 22:return yv(o,s,u)}throw Error(n(156,s.tag))};function Gv(o,s){return jy(o,s)}function kA(o,s,u,m){this.tag=o,this.key=u,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=s,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=m,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Yn(o,s,u,m){return new kA(o,s,u,m)}function Gh(o){return o=o.prototype,!(!o||!o.isReactComponent)}function AA(o){if(typeof o=="function")return Gh(o)?1:0;if(o!=null){if(o=o.$$typeof,o===G)return 11;if(o===te)return 14}return 2}function No(o,s){var u=o.alternate;return u===null?(u=Yn(o.tag,s,o.key,o.mode),u.elementType=o.elementType,u.type=o.type,u.stateNode=o.stateNode,u.alternate=o,o.alternate=u):(u.pendingProps=s,u.type=o.type,u.flags=0,u.subtreeFlags=0,u.deletions=null),u.flags=o.flags&14680064,u.childLanes=o.childLanes,u.lanes=o.lanes,u.child=o.child,u.memoizedProps=o.memoizedProps,u.memoizedState=o.memoizedState,u.updateQueue=o.updateQueue,s=o.dependencies,u.dependencies=s===null?null:{lanes:s.lanes,firstContext:s.firstContext},u.sibling=o.sibling,u.index=o.index,u.ref=o.ref,u}function mu(o,s,u,m,b,C){var B=2;if(m=o,typeof o=="function")Gh(o)&&(B=1);else if(typeof o=="string")B=5;else e:switch(o){case N:return di(u.children,b,C,s);case O:B=8,b|=8;break;case U:return o=Yn(12,u,s,b|2),o.elementType=U,o.lanes=C,o;case q:return o=Yn(13,u,s,b),o.elementType=q,o.lanes=C,o;case ce:return o=Yn(19,u,s,b),o.elementType=ce,o.lanes=C,o;case ae:return gu(u,b,C,s);default:if(typeof o=="object"&&o!==null)switch(o.$$typeof){case $:B=10;break e;case Y:B=9;break e;case G:B=11;break e;case te:B=14;break e;case Z:B=16,m=null;break e}throw Error(n(130,o==null?o:typeof o,""))}return s=Yn(B,u,s,b),s.elementType=o,s.type=m,s.lanes=C,s}function di(o,s,u,m){return o=Yn(7,o,m,s),o.lanes=u,o}function gu(o,s,u,m){return o=Yn(22,o,m,s),o.elementType=ae,o.lanes=u,o.stateNode={isHidden:!1},o}function Kh(o,s,u){return o=Yn(6,o,null,s),o.lanes=u,o}function Yh(o,s,u){return s=Yn(4,o.children!==null?o.children:[],o.key,s),s.lanes=u,s.stateNode={containerInfo:o.containerInfo,pendingChildren:null,implementation:o.implementation},s}function SA(o,s,u,m,b){this.tag=s,this.containerInfo=o,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Ef(0),this.expirationTimes=Ef(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ef(0),this.identifierPrefix=m,this.onRecoverableError=b,this.mutableSourceEagerHydrationData=null}function Jh(o,s,u,m,b,C,B,D,W){return o=new SA(o,s,u,D,W),s===1?(s=1,C===!0&&(s|=8)):s=0,C=Yn(3,null,null,s),o.current=C,C.stateNode=o,C.memoizedState={element:m,isDehydrated:u,cache:null,transitions:null,pendingSuspenseBoundaries:null},uh(C),o}function jA(o,s,u){var m=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}return e(),rp.exports=FA(),rp.exports}var lb;function zA(){if(lb)return Eu;lb=1;var e=P2();return Eu.createRoot=e.createRoot,Eu.hydrateRoot=e.hydrateRoot,Eu}var UA=zA(),A=Vl();const k=Em(A),km=NA({__proto__:null,default:k},[A]);/** - * react-router v7.9.6 - * - * Copyright (c) Remix Software Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */var cb="popstate";function WA(e={}){function t(r,i){let{pathname:a,search:l,hash:c}=r.location;return p0("",{pathname:a,search:l,hash:c},i.state&&i.state.usr||null,i.state&&i.state.key||"default")}function n(r,i){return typeof i=="string"?i:ll(i)}return VA(t,n,null,e)}function ft(e,t){if(e===!1||e===null||typeof e>"u")throw new Error(t)}function tr(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function $A(){return Math.random().toString(36).substring(2,10)}function ub(e,t){return{usr:e.state,key:e.key,idx:t}}function p0(e,t,n=null,r){return{pathname:typeof e=="string"?e:e.pathname,search:"",hash:"",...typeof t=="string"?Qa(t):t,state:n,key:t&&t.key||r||$A()}}function ll({pathname:e="/",search:t="",hash:n=""}){return t&&t!=="?"&&(e+=t.charAt(0)==="?"?t:"?"+t),n&&n!=="#"&&(e+=n.charAt(0)==="#"?n:"#"+n),e}function Qa(e){let t={};if(e){let n=e.indexOf("#");n>=0&&(t.hash=e.substring(n),e=e.substring(0,n));let r=e.indexOf("?");r>=0&&(t.search=e.substring(r),e=e.substring(0,r)),e&&(t.pathname=e)}return t}function VA(e,t,n,r={}){let{window:i=document.defaultView,v5Compat:a=!1}=r,l=i.history,c="POP",d=null,f=h();f==null&&(f=0,l.replaceState({...l.state,idx:f},""));function h(){return(l.state||{idx:null}).idx}function g(){c="POP";let w=h(),I=w==null?null:w-f;f=w,d&&d({action:c,location:v.location,delta:I})}function p(w,I){c="PUSH";let P=p0(v.location,w,I);f=h()+1;let j=ub(P,f),S=v.createHref(P);try{l.pushState(j,"",S)}catch(_){if(_ instanceof DOMException&&_.name==="DataCloneError")throw _;i.location.assign(S)}a&&d&&d({action:c,location:v.location,delta:1})}function y(w,I){c="REPLACE";let P=p0(v.location,w,I);f=h();let j=ub(P,f),S=v.createHref(P);l.replaceState(j,"",S),a&&d&&d({action:c,location:v.location,delta:0})}function x(w){return HA(w)}let v={get action(){return c},get location(){return e(i,l)},listen(w){if(d)throw new Error("A history only accepts one active listener");return i.addEventListener(cb,g),d=w,()=>{i.removeEventListener(cb,g),d=null}},createHref(w){return t(i,w)},createURL:x,encodeLocation(w){let I=x(w);return{pathname:I.pathname,search:I.search,hash:I.hash}},push:p,replace:y,go(w){return l.go(w)}};return v}function HA(e,t=!1){let n="http://localhost";typeof window<"u"&&(n=window.location.origin!=="null"?window.location.origin:window.location.href),ft(n,"No window.location.(origin|href) available to create URL");let r=typeof e=="string"?e:ll(e);return r=r.replace(/ $/,"%20"),!t&&r.startsWith("//")&&(r=n+r),new URL(r,n)}function _2(e,t,n="/"){return qA(e,t,n,!1)}function qA(e,t,n,r){let i=typeof t=="string"?Qa(t):t,a=so(i.pathname||"/",n);if(a==null)return null;let l=T2(e);QA(l);let c=null;for(let d=0;c==null&&d{let h={relativePath:f===void 0?l.path||"":f,caseSensitive:l.caseSensitive===!0,childrenIndex:c,route:l};if(h.relativePath.startsWith("/")){if(!h.relativePath.startsWith(r)&&d)return;ft(h.relativePath.startsWith(r),`Absolute route path "${h.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),h.relativePath=h.relativePath.slice(r.length)}let g=oo([r,h.relativePath]),p=n.concat(h);l.children&&l.children.length>0&&(ft(l.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${g}".`),T2(l.children,t,p,g,d)),!(l.path==null&&!l.index)&&t.push({path:g,score:e4(g,l.index),routesMeta:p})};return e.forEach((l,c)=>{if(l.path===""||!l.path?.includes("?"))a(l,c);else for(let d of B2(l.path))a(l,c,!0,d)}),t}function B2(e){let t=e.split("/");if(t.length===0)return[];let[n,...r]=t,i=n.endsWith("?"),a=n.replace(/\?$/,"");if(r.length===0)return i?[a,""]:[a];let l=B2(r.join("/")),c=[];return c.push(...l.map(d=>d===""?a:[a,d].join("/"))),i&&c.push(...l),c.map(d=>e.startsWith("/")&&d===""?"/":d)}function QA(e){e.sort((t,n)=>t.score!==n.score?n.score-t.score:t4(t.routesMeta.map(r=>r.childrenIndex),n.routesMeta.map(r=>r.childrenIndex)))}var GA=/^:[\w-]+$/,KA=3,YA=2,JA=1,ZA=10,XA=-2,db=e=>e==="*";function e4(e,t){let n=e.split("/"),r=n.length;return n.some(db)&&(r+=XA),t&&(r+=YA),n.filter(i=>!db(i)).reduce((i,a)=>i+(GA.test(a)?KA:a===""?JA:ZA),r)}function t4(e,t){return e.length===t.length&&e.slice(0,-1).every((r,i)=>r===t[i])?e[e.length-1]-t[t.length-1]:0}function n4(e,t,n=!1){let{routesMeta:r}=e,i={},a="/",l=[];for(let c=0;c{if(h==="*"){let x=c[p]||"";l=a.slice(0,a.length-x.length).replace(/(.)\/+$/,"$1")}const y=c[p];return g&&!y?f[h]=void 0:f[h]=(y||"").replace(/%2F/g,"/"),f},{}),pathname:a,pathnameBase:l,pattern:e}}function r4(e,t=!1,n=!0){tr(e==="*"||!e.endsWith("*")||e.endsWith("/*"),`Route path "${e}" will be treated as if it were "${e.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${e.replace(/\*$/,"/*")}".`);let r=[],i="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(l,c,d)=>(r.push({paramName:c,isOptional:d!=null}),d?"/?([^\\/]+)?":"/([^\\/]+)")).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return e.endsWith("*")?(r.push({paramName:"*"}),i+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?i+="\\/*$":e!==""&&e!=="/"&&(i+="(?:(?=\\/|$))"),[new RegExp(i,t?void 0:"i"),r]}function o4(e){try{return e.split("/").map(t=>decodeURIComponent(t).replace(/\//g,"%2F")).join("/")}catch(t){return tr(!1,`The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${t}).`),e}}function so(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith("/")?t.length-1:t.length,r=e.charAt(n);return r&&r!=="/"?null:e.slice(n)||"/"}var i4=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,a4=e=>i4.test(e);function s4(e,t="/"){let{pathname:n,search:r="",hash:i=""}=typeof e=="string"?Qa(e):e,a;if(n)if(a4(n))a=n;else{if(n.includes("//")){let l=n;n=n.replace(/\/\/+/g,"/"),tr(!1,`Pathnames cannot have embedded double slashes - normalizing ${l} -> ${n}`)}n.startsWith("/")?a=fb(n.substring(1),"/"):a=fb(n,t)}else a=t;return{pathname:a,search:u4(r),hash:d4(i)}}function fb(e,t){let n=t.replace(/\/+$/,"").split("/");return e.split("/").forEach(i=>{i===".."?n.length>1&&n.pop():i!=="."&&n.push(i)}),n.length>1?n.join("/"):"/"}function ap(e,t,n,r){return`Cannot include a '${e}' character in a manually specified \`to.${t}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function l4(e){return e.filter((t,n)=>n===0||t.route.path&&t.route.path.length>0)}function Am(e){let t=l4(e);return t.map((n,r)=>r===t.length-1?n.pathname:n.pathnameBase)}function Sm(e,t,n,r=!1){let i;typeof e=="string"?i=Qa(e):(i={...e},ft(!i.pathname||!i.pathname.includes("?"),ap("?","pathname","search",i)),ft(!i.pathname||!i.pathname.includes("#"),ap("#","pathname","hash",i)),ft(!i.search||!i.search.includes("#"),ap("#","search","hash",i)));let a=e===""||i.pathname==="",l=a?"/":i.pathname,c;if(l==null)c=n;else{let g=t.length-1;if(!r&&l.startsWith("..")){let p=l.split("/");for(;p[0]==="..";)p.shift(),g-=1;i.pathname=p.join("/")}c=g>=0?t[g]:"/"}let d=s4(i,c),f=l&&l!=="/"&&l.endsWith("/"),h=(a||l===".")&&n.endsWith("/");return!d.pathname.endsWith("/")&&(f||h)&&(d.pathname+="/"),d}var oo=e=>e.join("/").replace(/\/\/+/g,"/"),c4=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),u4=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,d4=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e;function f4(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var N2=["POST","PUT","PATCH","DELETE"];new Set(N2);var h4=["GET",...N2];new Set(h4);var Ga=A.createContext(null);Ga.displayName="DataRouter";var Ad=A.createContext(null);Ad.displayName="DataRouterState";A.createContext(!1);var R2=A.createContext({isTransitioning:!1});R2.displayName="ViewTransition";var p4=A.createContext(new Map);p4.displayName="Fetchers";var m4=A.createContext(null);m4.displayName="Await";var xr=A.createContext(null);xr.displayName="Navigation";var Hl=A.createContext(null);Hl.displayName="Location";var zr=A.createContext({outlet:null,matches:[],isDataRoute:!1});zr.displayName="Route";var jm=A.createContext(null);jm.displayName="RouteError";function g4(e,{relative:t}={}){ft(Ka(),"useHref() may be used only in the context of a component.");let{basename:n,navigator:r}=A.useContext(xr),{hash:i,pathname:a,search:l}=ql(e,{relative:t}),c=a;return n!=="/"&&(c=a==="/"?n:oo([n,a])),r.createHref({pathname:c,search:l,hash:i})}function Ka(){return A.useContext(Hl)!=null}function fo(){return ft(Ka(),"useLocation() may be used only in the context of a component."),A.useContext(Hl).location}var M2="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function O2(e){A.useContext(xr).static||A.useLayoutEffect(e)}function Li(){let{isDataRoute:e}=A.useContext(zr);return e?P4():y4()}function y4(){ft(Ka(),"useNavigate() may be used only in the context of a component.");let e=A.useContext(Ga),{basename:t,navigator:n}=A.useContext(xr),{matches:r}=A.useContext(zr),{pathname:i}=fo(),a=JSON.stringify(Am(r)),l=A.useRef(!1);return O2(()=>{l.current=!0}),A.useCallback((d,f={})=>{if(tr(l.current,M2),!l.current)return;if(typeof d=="number"){n.go(d);return}let h=Sm(d,JSON.parse(a),i,f.relative==="path");e==null&&t!=="/"&&(h.pathname=h.pathname==="/"?t:oo([t,h.pathname])),(f.replace?n.replace:n.push)(h,f.state,f)},[t,n,a,i,e])}A.createContext(null);function ql(e,{relative:t}={}){let{matches:n}=A.useContext(zr),{pathname:r}=fo(),i=JSON.stringify(Am(n));return A.useMemo(()=>Sm(e,JSON.parse(i),r,t==="path"),[e,i,r,t])}function v4(e,t){return L2(e,t)}function L2(e,t,n,r,i){ft(Ka(),"useRoutes() may be used only in the context of a component.");let{navigator:a}=A.useContext(xr),{matches:l}=A.useContext(zr),c=l[l.length-1],d=c?c.params:{},f=c?c.pathname:"/",h=c?c.pathnameBase:"/",g=c&&c.route;{let P=g&&g.path||"";D2(f,!g||P.endsWith("*")||P.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${f}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. - -Please change the parent to .`)}let p=fo(),y;if(t){let P=typeof t=="string"?Qa(t):t;ft(h==="/"||P.pathname?.startsWith(h),`When overriding the location using \`\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${h}" but pathname "${P.pathname}" was given in the \`location\` prop.`),y=P}else y=p;let x=y.pathname||"/",v=x;if(h!=="/"){let P=h.replace(/^\//,"").split("/");v="/"+x.replace(/^\//,"").split("/").slice(P.length).join("/")}let w=_2(e,{pathname:v});tr(g||w!=null,`No routes matched location "${y.pathname}${y.search}${y.hash}" `),tr(w==null||w[w.length-1].route.element!==void 0||w[w.length-1].route.Component!==void 0||w[w.length-1].route.lazy!==void 0,`Matched leaf route at location "${y.pathname}${y.search}${y.hash}" does not have an element or Component. This means it will render an with a null value by default resulting in an "empty" page.`);let I=E4(w&&w.map(P=>Object.assign({},P,{params:Object.assign({},d,P.params),pathname:oo([h,a.encodeLocation?a.encodeLocation(P.pathname.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:P.pathname]),pathnameBase:P.pathnameBase==="/"?h:oo([h,a.encodeLocation?a.encodeLocation(P.pathnameBase.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:P.pathnameBase])})),l,n,r,i);return t&&I?A.createElement(Hl.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...y},navigationType:"POP"}},I):I}function b4(){let e=I4(),t=f4(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,r="rgba(200,200,200, 0.5)",i={padding:"0.5rem",backgroundColor:r},a={padding:"2px 4px",backgroundColor:r},l=null;return console.error("Error handled by React Router default ErrorBoundary:",e),l=A.createElement(A.Fragment,null,A.createElement("p",null,"💿 Hey developer 👋"),A.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",A.createElement("code",{style:a},"ErrorBoundary")," or"," ",A.createElement("code",{style:a},"errorElement")," prop on your route.")),A.createElement(A.Fragment,null,A.createElement("h2",null,"Unexpected Application Error!"),A.createElement("h3",{style:{fontStyle:"italic"}},t),n?A.createElement("pre",{style:i},n):null,l)}var w4=A.createElement(b4,null),x4=class extends A.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!=="idle"&&e.revalidation==="idle"?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error!==void 0?e.error:t.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){this.props.onError?this.props.onError(e,t):console.error("React Router caught the following error during render",e)}render(){return this.state.error!==void 0?A.createElement(zr.Provider,{value:this.props.routeContext},A.createElement(jm.Provider,{value:this.state.error,children:this.props.component})):this.props.children}};function C4({routeContext:e,match:t,children:n}){let r=A.useContext(Ga);return r&&r.static&&r.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=t.route.id),A.createElement(zr.Provider,{value:e},n)}function E4(e,t=[],n=null,r=null,i=null){if(e==null){if(!n)return null;if(n.errors)e=n.matches;else if(t.length===0&&!n.initialized&&n.matches.length>0)e=n.matches;else return null}let a=e,l=n?.errors;if(l!=null){let h=a.findIndex(g=>g.route.id&&l?.[g.route.id]!==void 0);ft(h>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(l).join(",")}`),a=a.slice(0,Math.min(a.length,h+1))}let c=!1,d=-1;if(n)for(let h=0;h=0?a=a.slice(0,d+1):a=[a[0]];break}}}let f=n&&r?(h,g)=>{r(h,{location:n.location,params:n.matches?.[0]?.params??{},errorInfo:g})}:void 0;return a.reduceRight((h,g,p)=>{let y,x=!1,v=null,w=null;n&&(y=l&&g.route.id?l[g.route.id]:void 0,v=g.route.errorElement||w4,c&&(d<0&&p===0?(D2("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),x=!0,w=null):d===p&&(x=!0,w=g.route.hydrateFallbackElement||null)));let I=t.concat(a.slice(0,p+1)),P=()=>{let j;return y?j=v:x?j=w:g.route.Component?j=A.createElement(g.route.Component,null):g.route.element?j=g.route.element:j=h,A.createElement(C4,{match:g,routeContext:{outlet:h,matches:I,isDataRoute:n!=null},children:j})};return n&&(g.route.ErrorBoundary||g.route.errorElement||p===0)?A.createElement(x4,{location:n.location,revalidation:n.revalidation,component:v,error:y,children:P(),routeContext:{outlet:null,matches:I,isDataRoute:!0},onError:f}):P()},null)}function Im(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function k4(e){let t=A.useContext(Ga);return ft(t,Im(e)),t}function A4(e){let t=A.useContext(Ad);return ft(t,Im(e)),t}function S4(e){let t=A.useContext(zr);return ft(t,Im(e)),t}function Pm(e){let t=S4(e),n=t.matches[t.matches.length-1];return ft(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function j4(){return Pm("useRouteId")}function I4(){let e=A.useContext(jm),t=A4("useRouteError"),n=Pm("useRouteError");return e!==void 0?e:t.errors?.[n]}function P4(){let{router:e}=k4("useNavigate"),t=Pm("useNavigate"),n=A.useRef(!1);return O2(()=>{n.current=!0}),A.useCallback(async(i,a={})=>{tr(n.current,M2),n.current&&(typeof i=="number"?e.navigate(i):await e.navigate(i,{fromRouteId:t,...a}))},[e,t])}var hb={};function D2(e,t,n){!t&&!hb[e]&&(hb[e]=!0,tr(!1,n))}A.memo(_4);function _4({routes:e,future:t,state:n,unstable_onError:r}){return L2(e,void 0,n,r,t)}function T4({to:e,replace:t,state:n,relative:r}){ft(Ka()," may be used only in the context of a component.");let{static:i}=A.useContext(xr);tr(!i," must not be used on the initial render in a . This is a no-op, but you should modify your code so the is only ever rendered in response to some user interaction or state change.");let{matches:a}=A.useContext(zr),{pathname:l}=fo(),c=Li(),d=Sm(e,Am(a),l,r==="path"),f=JSON.stringify(d);return A.useEffect(()=>{c(JSON.parse(f),{replace:t,state:n,relative:r})},[c,f,r,t,n]),null}function Tr(e){ft(!1,"A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .")}function B4({basename:e="/",children:t=null,location:n,navigationType:r="POP",navigator:i,static:a=!1}){ft(!Ka(),"You cannot render a inside another . You should never have more than one in your app.");let l=e.replace(/^\/*/,"/"),c=A.useMemo(()=>({basename:l,navigator:i,static:a,future:{}}),[l,i,a]);typeof n=="string"&&(n=Qa(n));let{pathname:d="/",search:f="",hash:h="",state:g=null,key:p="default"}=n,y=A.useMemo(()=>{let x=so(d,l);return x==null?null:{location:{pathname:x,search:f,hash:h,state:g,key:p},navigationType:r}},[l,d,f,h,g,p,r]);return tr(y!=null,` is not able to match the URL "${d}${f}${h}" because it does not start with the basename, so the won't render anything.`),y==null?null:A.createElement(xr.Provider,{value:c},A.createElement(Hl.Provider,{children:t,value:y}))}function N4({children:e,location:t}){return v4(m0(e),t)}function m0(e,t=[]){let n=[];return A.Children.forEach(e,(r,i)=>{if(!A.isValidElement(r))return;let a=[...t,i];if(r.type===A.Fragment){n.push.apply(n,m0(r.props.children,a));return}ft(r.type===Tr,`[${typeof r.type=="string"?r.type:r.type.name}] is not a component. All component children of must be a or `),ft(!r.props.index||!r.props.children,"An index route cannot have child routes.");let l={id:r.props.id||a.join("-"),caseSensitive:r.props.caseSensitive,element:r.props.element,Component:r.props.Component,index:r.props.index,path:r.props.path,middleware:r.props.middleware,loader:r.props.loader,action:r.props.action,hydrateFallbackElement:r.props.hydrateFallbackElement,HydrateFallback:r.props.HydrateFallback,errorElement:r.props.errorElement,ErrorBoundary:r.props.ErrorBoundary,hasErrorBoundary:r.props.hasErrorBoundary===!0||r.props.ErrorBoundary!=null||r.props.errorElement!=null,shouldRevalidate:r.props.shouldRevalidate,handle:r.props.handle,lazy:r.props.lazy};r.props.children&&(l.children=m0(r.props.children,a)),n.push(l)}),n}var Gu="get",Ku="application/x-www-form-urlencoded";function Sd(e){return e!=null&&typeof e.tagName=="string"}function R4(e){return Sd(e)&&e.tagName.toLowerCase()==="button"}function M4(e){return Sd(e)&&e.tagName.toLowerCase()==="form"}function O4(e){return Sd(e)&&e.tagName.toLowerCase()==="input"}function L4(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function D4(e,t){return e.button===0&&(!t||t==="_self")&&!L4(e)}var ku=null;function F4(){if(ku===null)try{new FormData(document.createElement("form"),0),ku=!1}catch{ku=!0}return ku}var z4=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function sp(e){return e!=null&&!z4.has(e)?(tr(!1,`"${e}" is not a valid \`encType\` for \`
\`/\`\` and will default to "${Ku}"`),null):e}function U4(e,t){let n,r,i,a,l;if(M4(e)){let c=e.getAttribute("action");r=c?so(c,t):null,n=e.getAttribute("method")||Gu,i=sp(e.getAttribute("enctype"))||Ku,a=new FormData(e)}else if(R4(e)||O4(e)&&(e.type==="submit"||e.type==="image")){let c=e.form;if(c==null)throw new Error('Cannot submit a - `}};N.styles=[E,te,ie,Ae];P([d()],N.prototype,"size",void 0);P([d({type:Boolean})],N.prototype,"disabled",void 0);P([d()],N.prototype,"icon",void 0);P([d()],N.prototype,"iconColor",void 0);N=P([u("wui-icon-link")],N);const Te=v` - button { - display: block; - display: flex; - align-items: center; - padding: var(--wui-spacing-xxs); - gap: var(--wui-spacing-xxs); - transition: all var(--wui-ease-out-power-1) var(--wui-duration-md); - border-radius: var(--wui-border-radius-xxs); - } - - wui-image { - border-radius: 100%; - width: var(--wui-spacing-xl); - height: var(--wui-spacing-xl); - } - - wui-icon-box { - width: var(--wui-spacing-xl); - height: var(--wui-spacing-xl); - } - - button:hover { - background-color: var(--wui-color-gray-glass-002); - } - - button:active { - background-color: var(--wui-color-gray-glass-005); - } -`;var ne=function(r,e,t,o){var n=arguments.length,i=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(r,e,t,o);else for(var c=r.length-1;c>=0;c--)(s=r[c])&&(i=(n<3?s(i):n>3?s(e,t,i):s(e,t))||i);return n>3&&i&&Object.defineProperty(e,t,i),i};let U=class extends f{constructor(){super(...arguments),this.imageSrc=""}render(){return a``}imageTemplate(){return this.imageSrc?a``:a``}};U.styles=[E,te,ie,Te];ne([d()],U.prototype,"imageSrc",void 0);U=ne([u("wui-select")],U);const Oe=v` - :host { - height: 64px; - } - - wui-text { - text-transform: capitalize; - } - - wui-flex.w3m-header-title { - transform: translateY(0); - opacity: 1; - } - - wui-flex.w3m-header-title[view-direction='prev'] { - animation: - slide-down-out 120ms forwards var(--wui-ease-out-power-2), - slide-down-in 120ms forwards var(--wui-ease-out-power-2); - animation-delay: 0ms, 200ms; - } - - wui-flex.w3m-header-title[view-direction='next'] { - animation: - slide-up-out 120ms forwards var(--wui-ease-out-power-2), - slide-up-in 120ms forwards var(--wui-ease-out-power-2); - animation-delay: 0ms, 200ms; - } - - wui-icon-link[data-hidden='true'] { - opacity: 0 !important; - pointer-events: none; - } - - @keyframes slide-up-out { - from { - transform: translateY(0px); - opacity: 1; - } - to { - transform: translateY(3px); - opacity: 0; - } - } - - @keyframes slide-up-in { - from { - transform: translateY(-3px); - opacity: 0; - } - to { - transform: translateY(0); - opacity: 1; - } - } - - @keyframes slide-down-out { - from { - transform: translateY(0px); - opacity: 1; - } - to { - transform: translateY(-3px); - opacity: 0; - } - } - - @keyframes slide-down-in { - from { - transform: translateY(3px); - opacity: 0; - } - to { - transform: translateY(0); - opacity: 1; - } - } -`;var y=function(r,e,t,o){var n=arguments.length,i=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(r,e,t,o);else for(var c=r.length-1;c>=0;c--)(s=r[c])&&(i=(n<3?s(i):n>3?s(e,t,i):s(e,t))||i);return n>3&&i&&Object.defineProperty(e,t,i),i};const Ee=["SmartSessionList"];function K(){const r=l.state.data?.connector?.name,e=l.state.data?.wallet?.name,t=l.state.data?.network?.name,o=e??r,n=M.getConnectors();return{Connect:`Connect ${n.length===1&&n[0]?.id==="w3m-email"?"Email":""} Wallet`,Create:"Create Wallet",ChooseAccountName:void 0,Account:void 0,AccountSettings:void 0,AllWallets:"All Wallets",ApproveTransaction:"Approve Transaction",BuyInProgress:"Buy",ConnectingExternal:o??"Connect Wallet",ConnectingWalletConnect:o??"WalletConnect",ConnectingWalletConnectBasic:"WalletConnect",ConnectingSiwe:"Sign In",Convert:"Convert",ConvertSelectToken:"Select token",ConvertPreview:"Preview convert",Downloads:o?`Get ${o}`:"Downloads",EmailLogin:"Email Login",EmailVerifyOtp:"Confirm Email",EmailVerifyDevice:"Register Device",GetWallet:"Get a wallet",Networks:"Choose Network",OnRampProviders:"Choose Provider",OnRampActivity:"Activity",OnRampTokenSelect:"Select Token",OnRampFiatSelect:"Select Currency",Pay:"How you pay",Profile:void 0,SwitchNetwork:t??"Switch Network",SwitchAddress:"Switch Address",Transactions:"Activity",UnsupportedChain:"Switch Network",UpgradeEmailWallet:"Upgrade your Wallet",UpdateEmailWallet:"Edit Email",UpdateEmailPrimaryOtp:"Confirm Current Email",UpdateEmailSecondaryOtp:"Confirm New Email",WhatIsABuy:"What is Buy?",RegisterAccountName:"Choose name",RegisterAccountNameSuccess:"",WalletReceive:"Receive",WalletCompatibleNetworks:"Compatible Networks",Swap:"Swap",SwapSelectToken:"Select token",SwapPreview:"Preview swap",WalletSend:"Send",WalletSendPreview:"Review send",WalletSendSelectToken:"Select Token",WhatIsANetwork:"What is a network?",WhatIsAWallet:"What is a wallet?",ConnectWallets:"Connect wallet",ConnectSocials:"All socials",ConnectingSocial:F.state.socialProvider?F.state.socialProvider:"Connect Social",ConnectingMultiChain:"Select chain",ConnectingFarcaster:"Farcaster",SwitchActiveChain:"Switch chain",SmartSessionCreated:void 0,SmartSessionList:"Smart Sessions",SIWXSignMessage:"Sign In",PayLoading:"Payment in progress"}}let h=class extends f{constructor(){super(),this.unsubscribe=[],this.heading=K()[l.state.view],this.network=m.state.activeCaipNetwork,this.networkImage=H.getNetworkImage(this.network),this.showBack=!1,this.prevHistoryLength=1,this.view=l.state.view,this.viewDirection="",this.headerText=K()[l.state.view],this.unsubscribe.push(fe.subscribeNetworkImages(()=>{this.networkImage=H.getNetworkImage(this.network)}),l.subscribeKey("view",e=>{setTimeout(()=>{this.view=e,this.headerText=K()[e]},k.ANIMATION_DURATIONS.HeaderText),this.onViewChange(),this.onHistoryChange()}),m.subscribeKey("activeCaipNetwork",e=>{this.network=e,this.networkImage=H.getNetworkImage(this.network)}))}disconnectCallback(){this.unsubscribe.forEach(e=>e())}render(){return a` - - ${this.leftHeaderTemplate()} ${this.titleTemplate()} ${this.rightHeaderTemplate()} - - `}onWalletHelp(){q.sendEvent({type:"track",event:"CLICK_WALLET_HELP"}),l.push("WhatIsAWallet")}async onClose(){await oe.safeClose()}rightHeaderTemplate(){const e=T?.state?.features?.smartSessions;return l.state.view!=="Account"||!e?this.closeButtonTemplate():a` - l.push("SmartSessionList")} - data-testid="w3m-header-smart-sessions" - > - ${this.closeButtonTemplate()} - `}closeButtonTemplate(){return a` - - `}titleTemplate(){const e=Ee.includes(this.view);return a` - - ${this.headerText} - ${e?a`Beta`:null} - - `}leftHeaderTemplate(){const{view:e}=l.state,t=e==="Connect",o=T.state.enableEmbedded,n=e==="ApproveTransaction",i=e==="ConnectingSiwe",s=e==="Account",c=T.state.enableNetworkSwitch,G=n||i||t&&o;return s&&c?a``:this.showBack&&!G?a``:a``}onNetworks(){this.isAllowedNetworkSwitch()&&(q.sendEvent({type:"track",event:"CLICK_NETWORKS"}),l.push("Networks"))}isAllowedNetworkSwitch(){const e=m.getAllRequestedCaipNetworks(),t=e?e.length>1:!1,o=e?.find(({id:n})=>n===this.network?.id);return t||!o}getPadding(){return this.heading?["l","2l","l","2l"]:["0","2l","0","2l"]}onViewChange(){const{history:e}=l.state;let t=k.VIEW_DIRECTION.Next;e.length1&&!this.showBack&&t?(await t.animate([{opacity:1},{opacity:0}],{duration:200,fill:"forwards",easing:"ease"}).finished,this.showBack=!0,t.animate([{opacity:0},{opacity:1}],{duration:200,fill:"forwards",easing:"ease"})):e.length<=1&&this.showBack&&t&&(await t.animate([{opacity:1},{opacity:0}],{duration:200,fill:"forwards",easing:"ease"}).finished,this.showBack=!1,t.animate([{opacity:0},{opacity:1}],{duration:200,fill:"forwards",easing:"ease"}))}onGoBack(){l.goBack()}};h.styles=Oe;y([w()],h.prototype,"heading",void 0);y([w()],h.prototype,"network",void 0);y([w()],h.prototype,"networkImage",void 0);y([w()],h.prototype,"showBack",void 0);y([w()],h.prototype,"prevHistoryLength",void 0);y([w()],h.prototype,"view",void 0);y([w()],h.prototype,"viewDirection",void 0);y([w()],h.prototype,"headerText",void 0);h=y([u("w3m-header")],h);const Ie=v` - :host { - display: flex; - column-gap: var(--wui-spacing-s); - align-items: center; - padding: var(--wui-spacing-xs) var(--wui-spacing-m) var(--wui-spacing-xs) var(--wui-spacing-xs); - border-radius: var(--wui-border-radius-s); - border: 1px solid var(--wui-color-gray-glass-005); - box-sizing: border-box; - background-color: var(--wui-color-bg-175); - box-shadow: - 0px 14px 64px -4px rgba(0, 0, 0, 0.15), - 0px 8px 22px -6px rgba(0, 0, 0, 0.15); - - max-width: 300px; - } - - :host wui-loading-spinner { - margin-left: var(--wui-spacing-3xs); - } -`;var R=function(r,e,t,o){var n=arguments.length,i=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(r,e,t,o);else for(var c=r.length-1;c>=0;c--)(s=r[c])&&(i=(n<3?s(i):n>3?s(e,t,i):s(e,t))||i);return n>3&&i&&Object.defineProperty(e,t,i),i};let b=class extends f{constructor(){super(...arguments),this.backgroundColor="accent-100",this.iconColor="accent-100",this.icon="checkmark",this.message="",this.loading=!1,this.iconType="default"}render(){return a` - ${this.templateIcon()} - ${this.message} - `}templateIcon(){return this.loading?a``:this.iconType==="default"?a``:a``}};b.styles=[E,Ie];R([d()],b.prototype,"backgroundColor",void 0);R([d()],b.prototype,"iconColor",void 0);R([d()],b.prototype,"icon",void 0);R([d()],b.prototype,"message",void 0);R([d()],b.prototype,"loading",void 0);R([d()],b.prototype,"iconType",void 0);b=R([u("wui-snackbar")],b);const Pe=v` - :host { - display: block; - position: absolute; - opacity: 0; - pointer-events: none; - top: 11px; - left: 50%; - width: max-content; - } -`;var re=function(r,e,t,o){var n=arguments.length,i=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(r,e,t,o);else for(var c=r.length-1;c>=0;c--)(s=r[c])&&(i=(n<3?s(i):n>3?s(e,t,i):s(e,t))||i);return n>3&&i&&Object.defineProperty(e,t,i),i};const _e={loading:void 0,success:{backgroundColor:"success-100",iconColor:"success-100",icon:"checkmark"},error:{backgroundColor:"error-100",iconColor:"error-100",icon:"close"}};let z=class extends f{constructor(){super(),this.unsubscribe=[],this.timeout=void 0,this.open=$.state.open,this.unsubscribe.push($.subscribeKey("open",e=>{this.open=e,this.onOpen()}))}disconnectedCallback(){clearTimeout(this.timeout),this.unsubscribe.forEach(e=>e())}render(){const{message:e,variant:t,svg:o}=$.state,n=_e[t],{icon:i,iconColor:s}=o??n??{};return a` - - `}onOpen(){clearTimeout(this.timeout),this.open?(this.animate([{opacity:0,transform:"translateX(-50%) scale(0.85)"},{opacity:1,transform:"translateX(-50%) scale(1)"}],{duration:150,fill:"forwards",easing:"ease"}),this.timeout&&clearTimeout(this.timeout),$.state.autoClose&&(this.timeout=setTimeout(()=>$.hide(),2500))):this.animate([{opacity:1,transform:"translateX(-50%) scale(1)"},{opacity:0,transform:"translateX(-50%) scale(0.85)"}],{duration:150,fill:"forwards",easing:"ease"})}};z.styles=Pe;re([w()],z.prototype,"open",void 0);z=re([u("w3m-snackbar")],z);const Be=v` - :host { - pointer-events: none; - } - - :host > wui-flex { - display: var(--w3m-tooltip-display); - opacity: var(--w3m-tooltip-opacity); - padding: 9px var(--wui-spacing-s) 10px var(--wui-spacing-s); - border-radius: var(--wui-border-radius-xxs); - color: var(--wui-color-bg-100); - position: fixed; - top: var(--w3m-tooltip-top); - left: var(--w3m-tooltip-left); - transform: translate(calc(-50% + var(--w3m-tooltip-parent-width)), calc(-100% - 8px)); - max-width: calc(var(--w3m-modal-width) - var(--wui-spacing-xl)); - transition: opacity 0.2s var(--wui-ease-out-power-2); - will-change: opacity; - } - - :host([data-variant='shade']) > wui-flex { - background-color: var(--wui-color-bg-150); - border: 1px solid var(--wui-color-gray-glass-005); - } - - :host([data-variant='shade']) > wui-flex > wui-text { - color: var(--wui-color-fg-150); - } - - :host([data-variant='fill']) > wui-flex { - background-color: var(--wui-color-fg-100); - border: none; - } - - wui-icon { - position: absolute; - width: 12px !important; - height: 4px !important; - color: var(--wui-color-bg-150); - } - - wui-icon[data-placement='top'] { - bottom: 0px; - left: 50%; - transform: translate(-50%, 95%); - } - - wui-icon[data-placement='bottom'] { - top: 0; - left: 50%; - transform: translate(-50%, -95%) rotate(180deg); - } - - wui-icon[data-placement='right'] { - top: 50%; - left: 0; - transform: translate(-65%, -50%) rotate(90deg); - } - - wui-icon[data-placement='left'] { - top: 50%; - right: 0%; - transform: translate(65%, -50%) rotate(270deg); - } -`;var _=function(r,e,t,o){var n=arguments.length,i=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(r,e,t,o);else for(var c=r.length-1;c>=0;c--)(s=r[c])&&(i=(n<3?s(i):n>3?s(e,t,i):s(e,t))||i);return n>3&&i&&Object.defineProperty(e,t,i),i};let W=class extends f{constructor(){super(),this.unsubscribe=[],this.open=A.state.open,this.message=A.state.message,this.triggerRect=A.state.triggerRect,this.variant=A.state.variant,this.unsubscribe.push(A.subscribe(e=>{this.open=e.open,this.message=e.message,this.triggerRect=e.triggerRect,this.variant=e.variant}))}disconnectedCallback(){this.unsubscribe.forEach(e=>e())}render(){this.dataset.variant=this.variant;const e=this.triggerRect.top,t=this.triggerRect.left;return this.style.cssText=` - --w3m-tooltip-top: ${e}px; - --w3m-tooltip-left: ${t}px; - --w3m-tooltip-parent-width: ${this.triggerRect.width/2}px; - --w3m-tooltip-display: ${this.open?"flex":"none"}; - --w3m-tooltip-opacity: ${this.open?1:0}; - `,a` - - ${this.message} - `}};W.styles=[Be];_([w()],W.prototype,"open",void 0);_([w()],W.prototype,"message",void 0);_([w()],W.prototype,"triggerRect",void 0);_([w()],W.prototype,"variant",void 0);W=_([u("w3m-tooltip"),u("w3m-tooltip")],W);const De=v` - :host { - --prev-height: 0px; - --new-height: 0px; - display: block; - } - - div.w3m-router-container { - transform: translateY(0); - opacity: 1; - } - - div.w3m-router-container[view-direction='prev'] { - animation: - slide-left-out 150ms forwards ease, - slide-left-in 150ms forwards ease; - animation-delay: 0ms, 200ms; - } - - div.w3m-router-container[view-direction='next'] { - animation: - slide-right-out 150ms forwards ease, - slide-right-in 150ms forwards ease; - animation-delay: 0ms, 200ms; - } - - @keyframes slide-left-out { - from { - transform: translateX(0px); - opacity: 1; - } - to { - transform: translateX(10px); - opacity: 0; - } - } - - @keyframes slide-left-in { - from { - transform: translateX(-10px); - opacity: 0; - } - to { - transform: translateX(0); - opacity: 1; - } - } - - @keyframes slide-right-out { - from { - transform: translateX(0px); - opacity: 1; - } - to { - transform: translateX(-10px); - opacity: 0; - } - } - - @keyframes slide-right-in { - from { - transform: translateX(10px); - opacity: 0; - } - to { - transform: translateX(0); - opacity: 1; - } - } -`;var Y=function(r,e,t,o){var n=arguments.length,i=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(r,e,t,o);else for(var c=r.length-1;c>=0;c--)(s=r[c])&&(i=(n<3?s(i):n>3?s(e,t,i):s(e,t))||i);return n>3&&i&&Object.defineProperty(e,t,i),i};let O=class extends f{constructor(){super(),this.resizeObserver=void 0,this.prevHeight="0px",this.prevHistoryLength=1,this.unsubscribe=[],this.view=l.state.view,this.viewDirection="",this.unsubscribe.push(l.subscribeKey("view",e=>this.onViewChange(e)))}firstUpdated(){this.resizeObserver=new ResizeObserver(([e])=>{const t=`${e?.contentRect.height}px`;this.prevHeight!=="0px"&&(this.style.setProperty("--prev-height",this.prevHeight),this.style.setProperty("--new-height",t),this.style.animation="w3m-view-height 150ms forwards ease",this.style.height="auto"),setTimeout(()=>{this.prevHeight=t,this.style.animation="unset"},k.ANIMATION_DURATIONS.ModalHeight)}),this.resizeObserver?.observe(this.getWrapper())}disconnectedCallback(){this.resizeObserver?.unobserve(this.getWrapper()),this.unsubscribe.forEach(e=>e())}render(){return a`
- ${this.viewTemplate()} -
`}viewTemplate(){switch(this.view){case"AccountSettings":return a``;case"Account":return a``;case"AllWallets":return a``;case"ApproveTransaction":return a``;case"BuyInProgress":return a``;case"ChooseAccountName":return a``;case"Connect":return a``;case"Create":return a``;case"ConnectingWalletConnect":return a``;case"ConnectingWalletConnectBasic":return a``;case"ConnectingExternal":return a``;case"ConnectingSiwe":return a``;case"ConnectWallets":return a``;case"ConnectSocials":return a``;case"ConnectingSocial":return a``;case"Downloads":return a``;case"EmailLogin":return a``;case"EmailVerifyOtp":return a``;case"EmailVerifyDevice":return a``;case"GetWallet":return a``;case"Networks":return a``;case"SwitchNetwork":return a``;case"Profile":return a``;case"SwitchAddress":return a``;case"Transactions":return a``;case"OnRampProviders":return a``;case"OnRampActivity":return a``;case"OnRampTokenSelect":return a``;case"OnRampFiatSelect":return a``;case"UpgradeEmailWallet":return a``;case"UpdateEmailWallet":return a``;case"UpdateEmailPrimaryOtp":return a``;case"UpdateEmailSecondaryOtp":return a``;case"UnsupportedChain":return a``;case"Swap":return a``;case"SwapSelectToken":return a``;case"SwapPreview":return a``;case"WalletSend":return a``;case"WalletSendSelectToken":return a``;case"WalletSendPreview":return a``;case"WhatIsABuy":return a``;case"WalletReceive":return a``;case"WalletCompatibleNetworks":return a``;case"WhatIsAWallet":return a``;case"ConnectingMultiChain":return a``;case"WhatIsANetwork":return a``;case"ConnectingFarcaster":return a``;case"SwitchActiveChain":return a``;case"RegisterAccountName":return a``;case"RegisterAccountNameSuccess":return a``;case"SmartSessionCreated":return a``;case"SmartSessionList":return a``;case"SIWXSignMessage":return a``;case"Pay":return a``;case"PayLoading":return a``;default:return a``}}onViewChange(e){A.hide();let t=k.VIEW_DIRECTION.Next;const{history:o}=l.state;o.length{this.view=e},k.ANIMATION_DURATIONS.ViewTransition)}getWrapper(){return this.shadowRoot?.querySelector("div")}};O.styles=De;Y([w()],O.prototype,"view",void 0);Y([w()],O.prototype,"viewDirection",void 0);O=Y([u("w3m-router")],O);const je=v` - :host { - z-index: var(--w3m-z-index); - display: block; - backface-visibility: hidden; - will-change: opacity; - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0; - pointer-events: none; - opacity: 0; - background-color: var(--wui-cover); - transition: opacity 0.2s var(--wui-ease-out-power-2); - will-change: opacity; - } - - :host(.open) { - opacity: 1; - } - - :host(.appkit-modal) { - position: relative; - pointer-events: unset; - background: none; - width: 100%; - opacity: 1; - } - - wui-card { - max-width: var(--w3m-modal-width); - width: 100%; - position: relative; - animation: zoom-in 0.2s var(--wui-ease-out-power-2); - animation-fill-mode: backwards; - outline: none; - transition: - border-radius var(--wui-duration-lg) var(--wui-ease-out-power-1), - background-color var(--wui-duration-lg) var(--wui-ease-out-power-1); - will-change: border-radius, background-color; - } - - :host(.appkit-modal) wui-card { - max-width: 400px; - } - - wui-card[shake='true'] { - animation: - zoom-in 0.2s var(--wui-ease-out-power-2), - w3m-shake 0.5s var(--wui-ease-out-power-2); - } - - wui-flex { - overflow-x: hidden; - overflow-y: auto; - display: flex; - align-items: center; - justify-content: center; - width: 100%; - height: 100%; - } - - @media (max-height: 700px) and (min-width: 431px) { - wui-flex { - align-items: flex-start; - } - - wui-card { - margin: var(--wui-spacing-xxl) 0px; - } - } - - @media (max-width: 430px) { - wui-flex { - align-items: flex-end; - } - - wui-card { - max-width: 100%; - border-bottom-left-radius: var(--local-border-bottom-mobile-radius); - border-bottom-right-radius: var(--local-border-bottom-mobile-radius); - border-bottom: none; - animation: slide-in 0.2s var(--wui-ease-out-power-2); - } - - wui-card[shake='true'] { - animation: - slide-in 0.2s var(--wui-ease-out-power-2), - w3m-shake 0.5s var(--wui-ease-out-power-2); - } - } - - @keyframes zoom-in { - 0% { - transform: scale(0.95) translateY(0); - } - 100% { - transform: scale(1) translateY(0); - } - } - - @keyframes slide-in { - 0% { - transform: scale(1) translateY(50px); - } - 100% { - transform: scale(1) translateY(0); - } - } - - @keyframes w3m-shake { - 0% { - transform: scale(1) rotate(0deg); - } - 20% { - transform: scale(1) rotate(-1deg); - } - 40% { - transform: scale(1) rotate(1.5deg); - } - 60% { - transform: scale(1) rotate(-1.5deg); - } - 80% { - transform: scale(1) rotate(1deg); - } - 100% { - transform: scale(1) rotate(0deg); - } - } - - @keyframes w3m-view-height { - from { - height: var(--prev-height); - } - to { - height: var(--new-height); - } - } -`;var C=function(r,e,t,o){var n=arguments.length,i=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(r,e,t,o);else for(var c=r.length-1;c>=0;c--)(s=r[c])&&(i=(n<3?s(i):n>3?s(e,t,i):s(e,t))||i);return n>3&&i&&Object.defineProperty(e,t,i),i};const J="scroll-lock";class x extends f{constructor(){super(),this.unsubscribe=[],this.abortController=void 0,this.hasPrefetched=!1,this.enableEmbedded=T.state.enableEmbedded,this.open=g.state.open,this.caipAddress=m.state.activeCaipAddress,this.caipNetwork=m.state.activeCaipNetwork,this.shake=g.state.shake,this.filterByNamespace=M.state.filterByNamespace,this.initializeTheming(),D.prefetchAnalyticsConfig(),this.unsubscribe.push(g.subscribeKey("open",e=>e?this.onOpen():this.onClose()),g.subscribeKey("shake",e=>this.shake=e),m.subscribeKey("activeCaipNetwork",e=>this.onNewNetwork(e)),m.subscribeKey("activeCaipAddress",e=>this.onNewAddress(e)),T.subscribeKey("enableEmbedded",e=>this.enableEmbedded=e),M.subscribeKey("filterByNamespace",e=>{this.filterByNamespace!==e&&!m.getAccountData(e)?.caipAddress&&(D.fetchRecommendedWallets(),this.filterByNamespace=e)}))}firstUpdated(){if(this.caipAddress){if(this.enableEmbedded){g.close(),this.prefetch();return}this.onNewAddress(this.caipAddress)}this.open&&this.onOpen(),this.enableEmbedded&&this.prefetch()}disconnectedCallback(){this.unsubscribe.forEach(e=>e()),this.onRemoveKeyboardListener()}render(){return this.style.cssText=` - --local-border-bottom-mobile-radius: ${this.enableEmbedded?"clamp(0px, var(--wui-border-radius-l), 44px)":"0px"}; - `,this.enableEmbedded?a`${this.contentTemplate()} - `:this.open?a` - - ${this.contentTemplate()} - - - `:null}contentTemplate(){return a` - - - - - `}async onOverlayClick(e){e.target===e.currentTarget&&await this.handleClose()}async handleClose(){await oe.safeClose()}initializeTheming(){const{themeVariables:e,themeMode:t}=ge.state,o=Ce.getColorTheme(t);be(e,o)}onClose(){this.open=!1,this.classList.remove("open"),this.onScrollUnlock(),$.hide(),this.onRemoveKeyboardListener()}onOpen(){this.open=!0,this.classList.add("open"),this.onScrollLock(),this.onAddKeyboardListener()}onScrollLock(){const e=document.createElement("style");e.dataset.w3m=J,e.textContent=` - body { - touch-action: none; - overflow: hidden; - overscroll-behavior: contain; - } - w3m-modal { - pointer-events: auto; - } - `,document.head.appendChild(e)}onScrollUnlock(){const e=document.head.querySelector(`style[data-w3m="${J}"]`);e&&e.remove()}onAddKeyboardListener(){this.abortController=new AbortController;const e=this.shadowRoot?.querySelector("wui-card");e?.focus(),window.addEventListener("keydown",t=>{if(t.key==="Escape")this.handleClose();else if(t.key==="Tab"){const{tagName:o}=t.target;o&&!o.includes("W3M-")&&!o.includes("WUI-")&&e?.focus()}},this.abortController)}onRemoveKeyboardListener(){this.abortController?.abort(),this.abortController=void 0}async onNewAddress(e){const t=m.state.isSwitchingNamespace,o=ye.getPlainAddress(e);!o&&!t?g.close():t&&o&&l.goBack(),await ee.initializeIfEnabled(),this.caipAddress=e,m.setIsSwitchingNamespace(!1)}onNewNetwork(e){const t=this.caipNetwork,o=t?.caipNetworkId?.toString(),n=t?.chainNamespace,i=e?.caipNetworkId?.toString(),s=e?.chainNamespace,c=o!==i,se=c&&!(n!==s),ce=t?.name===xe.UNSUPPORTED_NETWORK_NAME,le=l.state.view==="ConnectingExternal",we=!m.getAccountData(e?.chainNamespace)?.caipAddress,de=l.state.view==="UnsupportedChain",ue=g.state.open;let B=!1;ue&&!le&&(we?c&&(B=!0):(de||se&&!ce)&&(B=!0)),B&&l.state.view!=="SIWXSignMessage"&&l.goBack(),this.caipNetwork=e}prefetch(){this.hasPrefetched||(D.prefetch(),D.fetchWalletsByPage({page:1}),this.hasPrefetched=!0)}}x.styles=je;C([d({type:Boolean})],x.prototype,"enableEmbedded",void 0);C([w()],x.prototype,"open",void 0);C([w()],x.prototype,"caipAddress",void 0);C([w()],x.prototype,"caipNetwork",void 0);C([w()],x.prototype,"shake",void 0);C([w()],x.prototype,"filterByNamespace",void 0);let Q=class extends x{};Q=C([u("w3m-modal")],Q);let Z=class extends x{};Z=C([u("appkit-modal")],Z);export{Z as AppKitModal,Q as W3mModal,x as W3mModalBase}; diff --git a/client2/build/assets/wallet-CO1OuTdD.js b/client2/build/assets/wallet-CO1OuTdD.js deleted file mode 100644 index 8b60fe6e0..000000000 --- a/client2/build/assets/wallet-CO1OuTdD.js +++ /dev/null @@ -1,8 +0,0 @@ -import{b as o}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const i=o` - -`;export{i as walletSvg}; diff --git a/client2/build/assets/wallet-placeholder-CJ9GI2hj.js b/client2/build/assets/wallet-placeholder-CJ9GI2hj.js deleted file mode 100644 index 587bd36a1..000000000 --- a/client2/build/assets/wallet-placeholder-CJ9GI2hj.js +++ /dev/null @@ -1,14 +0,0 @@ -import{b as a}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const i=a` - - - - -`;export{i as walletPlaceholderSvg}; diff --git a/client2/build/assets/walletConnectWallet-YHWKVTDY-D3lyiczV.js b/client2/build/assets/walletConnectWallet-YHWKVTDY-D3lyiczV.js deleted file mode 100644 index b8b720770..000000000 --- a/client2/build/assets/walletConnectWallet-YHWKVTDY-D3lyiczV.js +++ /dev/null @@ -1 +0,0 @@ -var C="data:image/svg+xml,%3Csvg%20width%3D%2228%22%20height%3D%2228%22%20viewBox%3D%220%200%2028%2028%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Crect%20width%3D%2228%22%20height%3D%2228%22%20fill%3D%22%233B99FC%22%2F%3E%0A%3Cpath%20d%3D%22M8.38969%2010.3739C11.4882%207.27538%2016.5118%207.27538%2019.6103%2010.3739L19.9832%2010.7468C20.1382%2010.9017%2020.1382%2011.1529%2019.9832%2011.3078L18.7076%2012.5835C18.6301%2012.6609%2018.5045%2012.6609%2018.4271%2012.5835L17.9139%2012.0703C15.7523%209.9087%2012.2477%209.9087%2010.0861%2012.0703L9.53655%2012.6198C9.45909%2012.6973%209.3335%2012.6973%209.25604%2012.6198L7.98039%2011.3442C7.82547%2011.1893%207.82547%2010.9381%207.98039%2010.7832L8.38969%2010.3739ZM22.2485%2013.012L23.3838%2014.1474C23.5387%2014.3023%2023.5387%2014.5535%2023.3838%2014.7084L18.2645%2019.8277C18.1096%2019.9827%2017.8584%2019.9827%2017.7035%2019.8277C17.7035%2019.8277%2017.7035%2019.8277%2017.7035%2019.8277L14.0702%2016.1944C14.0314%2016.1557%2013.9686%2016.1557%2013.9299%2016.1944C13.9299%2016.1944%2013.9299%2016.1944%2013.9299%2016.1944L10.2966%2019.8277C10.1417%2019.9827%209.89053%2019.9827%209.73561%2019.8278C9.7356%2019.8278%209.7356%2019.8277%209.7356%2019.8277L4.61619%2014.7083C4.46127%2014.5534%204.46127%2014.3022%204.61619%2014.1473L5.75152%2013.012C5.90645%2012.857%206.15763%2012.857%206.31255%2013.012L9.94595%2016.6454C9.98468%2016.6841%2010.0475%2016.6841%2010.0862%2016.6454C10.0862%2016.6454%2010.0862%2016.6454%2010.0862%2016.6454L13.7194%2013.012C13.8743%2012.857%2014.1255%2012.857%2014.2805%2013.012C14.2805%2013.012%2014.2805%2013.012%2014.2805%2013.012L17.9139%2016.6454C17.9526%2016.6841%2018.0154%2016.6841%2018.0541%2016.6454L21.6874%2013.012C21.8424%2012.8571%2022.0936%2012.8571%2022.2485%2013.012Z%22%20fill%3D%22white%22%2F%3E%0A%3C%2Fsvg%3E%0A";export{C as default}; diff --git a/client2/build/assets/walletconnect-AigV0PnS.js b/client2/build/assets/walletconnect-AigV0PnS.js deleted file mode 100644 index 167ccc59d..000000000 --- a/client2/build/assets/walletconnect-AigV0PnS.js +++ /dev/null @@ -1,30 +0,0 @@ -import{b as l}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const o=l` - - -`,c=l` - - - - - - - - - - - -`,r=l` - - - - - - -`;export{r as walletConnectBrownSvg,c as walletConnectLightBrownSvg,o as walletConnectSvg}; diff --git a/client2/build/assets/warning-circle-CRY7TtAj.js b/client2/build/assets/warning-circle-CRY7TtAj.js deleted file mode 100644 index b6e1f30a5..000000000 --- a/client2/build/assets/warning-circle-CRY7TtAj.js +++ /dev/null @@ -1,12 +0,0 @@ -import{b as r}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const n=r` - - -`;export{n as warningCircleSvg}; diff --git a/client2/build/assets/x-QzKC4g_9.js b/client2/build/assets/x-QzKC4g_9.js deleted file mode 100644 index af964cae4..000000000 --- a/client2/build/assets/x-QzKC4g_9.js +++ /dev/null @@ -1,12 +0,0 @@ -import{b as l}from"./core-Cywc921C.js";import"./index-B6P9GsMd.js";import"./index.es-MB-v37Rm.js";import"./events-DQ172AOg.js";import"./index-nibyPLVP.js";const o=l` - - - - - - - -`;export{o as xSvg}; diff --git a/client2/build/assets/xdc-KJ3TDBYO-DNV6zchh.js b/client2/build/assets/xdc-KJ3TDBYO-DNV6zchh.js deleted file mode 100644 index 962efec2d..000000000 --- a/client2/build/assets/xdc-KJ3TDBYO-DNV6zchh.js +++ /dev/null @@ -1 +0,0 @@ -var l="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2028%2028%22%3E%3Cg%20clip-path%3D%22url(%23a)%22%3E%3Cpath%20fill%3D%22%23B7B5B1%22%20d%3D%22M8%208h12v12H8z%22%2F%3E%3Cpath%20fill%3D%22%23B7B5B1%22%20d%3D%22M28%2012.667C24.786-5.97.448-2.363.011%2012.667c1.4.728%202.285%201.176%202.285%201.176s-.74.448-2.296%201.434c2.8%2018.278%2026.723%2015.624%2028-.023-1.523-.93-2.352-1.422-2.352-1.422s.717-.336%202.352-1.165Zm-11.973%206.507-2.285-3.92-2.318%203.92-1.758-.123%203.304-5.566L9.99%208.68l1.792-.157%202.117%203.562%202.117-3.405%201.669.045-2.778%204.726%203.058%205.69-1.96.045.022-.012Z%22%2F%3E%3Cpath%20fill%3D%22%23244B81%22%20d%3D%22M26.869%2011.94C22.512-4.627%202.52-.147%201.154%2011.94a249.514%20249.514%200%200%201%203.404%201.926l-3.416%202.172c2.98%2015.927%2024.54%2012.858%2025.727-.022-2.173-1.366-3.461-2.162-3.461-2.162s2.934-1.635%203.46-1.915Zm-10.842%207.246-2.285-3.92-2.318%203.92-1.747-.124%203.304-5.566L10%208.691l1.793-.157%202.116%203.562%202.117-3.405%201.669.045-2.766%204.726%203.057%205.69-1.96.045v-.011Z%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3CclipPath%20id%3D%22a%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M0%200h28v28H0z%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fsvg%3E";export{l as default}; diff --git a/client2/build/assets/zetachain-TLDS5IPW-Udhyw16T.js b/client2/build/assets/zetachain-TLDS5IPW-Udhyw16T.js deleted file mode 100644 index b938f615a..000000000 --- a/client2/build/assets/zetachain-TLDS5IPW-Udhyw16T.js +++ /dev/null @@ -1 +0,0 @@ -var l="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2228%22%20height%3D%2228%22%20fill%3D%22none%22%20viewBox%3D%220%200%20178%20178%22%3E%3Ccircle%20cx%3D%2289%22%20cy%3D%2289%22%20r%3D%2289%22%20fill%3D%22%23005741%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M112.109%20108.673v12.02H62.523c.684-7.911%203.236-13.477%2012.064-21.304l37.522-32.01v28.09h13.507V43.79H48.813v25.76H62.32V57.297h40.803L65.784%2089.163l-.089.085c-15.648%2013.854-16.892%2025.036-16.892%2038.211v6.751h76.818v-25.527h-13.507z%22%2F%3E%3C%2Fsvg%3E";export{l as default}; diff --git a/client2/build/assets/zh_CN-RGMLPFEP-CPkk4IYh.js b/client2/build/assets/zh_CN-RGMLPFEP-CPkk4IYh.js deleted file mode 100644 index 946595c4d..000000000 --- a/client2/build/assets/zh_CN-RGMLPFEP-CPkk4IYh.js +++ /dev/null @@ -1,1427 +0,0 @@ -var u=`{ - "connect_wallet": { - "label": "连接钱包", - "wrong_network": { - "label": "错误的网络" - } - }, - "intro": { - "title": "什么是钱包?", - "description": "钱包用于发送、接收、存储和显示数字资产。它也是一种新型的登录方式,无需在每个网站上创建新账户和密码。", - "digital_asset": { - "title": "您的数字资产之家", - "description": "钱包用于发送、接收、存储和显示像以太坊和NFT这样的数字资产。" - }, - "login": { - "title": "一种新的登录方式", - "description": "而不是在每个网站上创建新的账户和密码,只需连接您的钱包。" - }, - "get": { - "label": "获取钱包" - }, - "learn_more": { - "label": "了解更多" - } - }, - "sign_in": { - "label": "验证您的账户", - "description": "为了完成连接,您必须在钱包中签署一条消息,以验证您是此账户的所有者。", - "message": { - "send": "发送消息", - "preparing": "准备消息中...", - "cancel": "取消", - "preparing_error": "准备消息时出错,请重试!" - }, - "signature": { - "waiting": "等待签名...", - "verifying": "正在验证签名...", - "signing_error": "签署消息时出错,请重试!", - "verifying_error": "验证签名时出错,请重试!", - "oops_error": "哎呀,出了点问题!" - } - }, - "connect": { - "label": "连接", - "title": "连接钱包", - "new_to_ethereum": { - "description": "对以太坊钱包不熟悉?", - "learn_more": { - "label": "了解更多" - } - }, - "learn_more": { - "label": "了解更多" - }, - "recent": "近期", - "status": { - "opening": "正在打开 %{wallet}...", - "connecting": "正在连接", - "connect_mobile": "在 %{wallet}中继续", - "not_installed": "%{wallet} 尚未安装", - "not_available": "%{wallet} 不可用", - "confirm": "在扩展中确认连接", - "confirm_mobile": "在钱包中接受连接请求" - }, - "secondary_action": { - "get": { - "description": "没有 %{wallet}吗?", - "label": "获取" - }, - "install": { - "label": "安装" - }, - "retry": { - "label": "重试" - } - }, - "walletconnect": { - "description": { - "full": "需要官方的 WalletConnect 弹窗吗?", - "compact": "需要 WalletConnect 弹窗吗?" - }, - "open": { - "label": "打开" - } - } - }, - "connect_scan": { - "title": "使用 %{wallet}扫描", - "fallback_title": "使用您的手机扫描" - }, - "connector_group": { - "installed": "已安装", - "recommended": "推荐", - "other": "其他", - "popular": "流行", - "more": "更多", - "others": "其他的" - }, - "get": { - "title": "获取一个钱包", - "action": { - "label": "获取" - }, - "mobile": { - "description": "移动钱包" - }, - "extension": { - "description": "浏览器扩展" - }, - "mobile_and_extension": { - "description": "移动钱包和扩展" - }, - "mobile_and_desktop": { - "description": "移动和桌面钱包" - }, - "looking_for": { - "title": "不是你要找的吗?", - "mobile": { - "description": "在主屏幕上选择一个钱包,以开始使用不同的钱包提供商。" - }, - "desktop": { - "compact_description": "在主屏幕上选择一个钱包,以开始使用不同的钱包提供商。", - "wide_description": "在左侧选择一个钱包,以开始使用不同的钱包提供商。" - } - } - }, - "get_options": { - "title": "开始使用 %{wallet}", - "short_title": "获取 %{wallet}", - "mobile": { - "title": "%{wallet} 用于移动", - "description": "使用移动钱包探索以太坊的世界。", - "download": { - "label": "获取应用" - } - }, - "extension": { - "title": "%{wallet} 为 %{browser}", - "description": "从您最喜欢的网络浏览器直接访问您的钱包。", - "download": { - "label": "添加到 %{browser}" - } - }, - "desktop": { - "title": "%{wallet} 对于 %{platform}", - "description": "从您强大的桌面原生访问您的钱包。", - "download": { - "label": "添加到 %{platform}" - } - } - }, - "get_mobile": { - "title": "安装 %{wallet}", - "description": "用手机扫描下载 iOS 或 Android", - "continue": { - "label": "继续" - } - }, - "get_instructions": { - "mobile": { - "connect": { - "label": "连接" - }, - "learn_more": { - "label": "了解更多" - } - }, - "extension": { - "refresh": { - "label": "刷新" - }, - "learn_more": { - "label": "了解更多" - } - }, - "desktop": { - "connect": { - "label": "连接" - }, - "learn_more": { - "label": "了解更多" - } - } - }, - "chains": { - "title": "切换网络", - "wrong_network": "检测到错误的网络,请切换或断开连接以继续。", - "confirm": "在钱包中确认", - "switching_not_supported": "您的钱包不支持从 %{appName}切换网络。请尝试从您的钱包内部切换网络。", - "switching_not_supported_fallback": "您的钱包不支持从此应用切换网络。尝试从您的钱包内切换网络。", - "disconnect": "断开连接", - "connected": "已连接" - }, - "profile": { - "disconnect": { - "label": "断开连接" - }, - "copy_address": { - "label": "复制地址", - "copied": "已复制!" - }, - "explorer": { - "label": "在浏览器上查看更多" - }, - "transactions": { - "description": "%{appName} 交易将会出现在这里...", - "description_fallback": "您的交易将会出现在这里...", - "recent": { - "title": "最近交易" - }, - "clear": { - "label": "清除全部" - } - } - }, - "wallet_connectors": { - "argent": { - "qr_code": { - "step1": { - "description": "将 Argent 放到您的主屏幕上,以便更快地访问您的钱包。", - "title": "打开 Argent 应用" - }, - "step2": { - "description": "创建钱包和用户名,或导入现有钱包。", - "title": "创建或导入钱包" - }, - "step3": { - "description": "在您扫描后,将出现连接提示,供您连接您的钱包。", - "title": "点击扫描二维码按钮" - } - } - }, - "berasig": { - "extension": { - "step1": { - "title": "安装 BeraSig 扩展", - "description": "我们建议将 BeraSig 固定到任务栏,以便更轻松地访问您的钱包。" - }, - "step2": { - "title": "创建一个钱包", - "description": "务必使用安全的方法备份您的钱包。决不与任何人分享您的秘密短语。" - }, - "step3": { - "title": "刷新您的浏览器", - "description": "设置钱包后,点击下方刷新浏览器并加载扩展。" - } - } - }, - "best": { - "qr_code": { - "step1": { - "title": "打开Best Wallet应用", - "description": "将Best Wallet添加到您的主屏幕,以便更快地访问您的钱包。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "创建新钱包或导入现有钱包。" - }, - "step3": { - "title": "点击QR图标并扫描", - "description": "在您的主屏幕上点击QR图标,扫描代码并确认提示以进行连接。" - } - } - }, - "bifrost": { - "qr_code": { - "step1": { - "description": "我们建议将Bifrost Wallet放在您的主屏幕上,以便更快地访问。", - "title": "打开 Bifrost Wallet 应用" - }, - "step2": { - "description": "使用恢复短语创建或导入钱包。", - "title": "创建或导入钱包" - }, - "step3": { - "description": "在您扫描后,将出现连接提示,供您连接您的钱包。", - "title": "点击扫描按钮" - } - } - }, - "bitget": { - "qr_code": { - "step1": { - "description": "我们建议您将Bitget钱包添加到主屏幕,以便更快地访问。", - "title": "打开Bitget钱包应用程序" - }, - "step2": { - "description": "务必使用安全的方法备份您的钱包。决不与任何人分享您的秘密短语。", - "title": "创建或导入钱包" - }, - "step3": { - "description": "扫描后,将出现一个连接提示,供您连接您的钱包。", - "title": "点击扫描按钮" - } - }, - "extension": { - "step1": { - "description": "我们建议您将Bitget钱包固定在任务栏,以便更快地访问您的钱包。", - "title": "安装Bitget Wallet扩展" - }, - "step2": { - "description": "确保使用安全的方式备份您的钱包。绝不与任何人分享您的秘密短语。", - "title": "创建或导入钱包" - }, - "step3": { - "description": "设置钱包后,点击下方刷新浏览器并加载扩展。", - "title": "刷新您的浏览器" - } - } - }, - "bitski": { - "extension": { - "step1": { - "description": "我们建议您将Bitski固定在任务栏上,以便更快地访问您的钱包。", - "title": "安装Bitski扩展" - }, - "step2": { - "description": "请确保用安全的方法备份您的钱包。绝不与任何人共享您的秘密短语。", - "title": "创建或导入钱包" - }, - "step3": { - "description": "设置完您的钱包后,点击下方以刷新浏览器并加载扩展程序。", - "title": "刷新您的浏览器" - } - } - }, - "bitverse": { - "qr_code": { - "step1": { - "title": "打开 Bitverse Wallet 应用", - "description": "将 Bitverse Wallet 添加到您的主屏幕上,以便更快访问您的钱包。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "创建新钱包或导入现有钱包。" - }, - "step3": { - "title": "点击QR图标并扫描", - "description": "在您的主屏幕上点击QR图标,扫描代码并确认提示以进行连接。" - } - } - }, - "bloom": { - "desktop": { - "step1": { - "title": "打开 Bloom 钱包应用", - "description": "我们建议将 Bloom 钱包添加到主屏幕上,以便更快地访问。" - }, - "step2": { - "description": "使用恢复短语创建或导入钱包。", - "title": "创建或导入钱包" - }, - "step3": { - "description": "拥有钱包后,点击连接以通过 Bloom 连接。应用中会出现一个连接提示,供您确认连接。", - "title": "点击连接" - } - } - }, - "bybit": { - "qr_code": { - "step1": { - "description": "我们建议将 Bybit 添加到您的主屏幕上,以便更快访问您的钱包。", - "title": "打开 Bybit 应用" - }, - "step2": { - "description": "您可以使用我们的手机上的备份功能轻松备份您的钱包。", - "title": "创建或导入钱包" - }, - "step3": { - "description": "在您扫描后,将出现连接提示,供您连接您的钱包。", - "title": "点击扫描按钮" - } - }, - "extension": { - "step1": { - "description": "点击浏览器右上角并固定 Bybit Wallet,便于快速访问。", - "title": "安装 Bybit Wallet 扩展程序" - }, - "step2": { - "description": "创建新钱包或导入现有钱包。", - "title": "创建或导入钱包。" - }, - "step3": { - "description": "设置 Bybit Wallet 后,点击下方刷新浏览器并加载扩展程序。", - "title": "刷新您的浏览器" - } - } - }, - "binance": { - "qr_code": { - "step1": { - "description": "我们建议将Binance放在您的主屏幕上,以便更快地访问您的钱包。", - "title": "打开 Binance 应用" - }, - "step2": { - "description": "您可以使用我们的手机上的备份功能轻松备份您的钱包。", - "title": "创建或导入钱包" - }, - "step3": { - "description": "在您扫描后,将出现连接提示,供您连接您的钱包。", - "title": "点击WalletConnect按钮" - } - } - }, - "coin98": { - "qr_code": { - "step1": { - "description": "我们建议将Coin98钱包放在您的主屏幕上,以便更快地访问您的钱包。", - "title": "打开Coin98钱包应用程序" - }, - "step2": { - "description": "您可以使用我们的手机上的备份功能轻松备份您的钱包。", - "title": "创建或导入钱包" - }, - "step3": { - "description": "扫描后,将出现一个连接提示,让您连接您的钱包。", - "title": "点击WalletConnect按钮" - } - }, - "extension": { - "step1": { - "description": "点击浏览器右上角并固定Coin98钱包,以便轻松访问。", - "title": "安装Coin98钱包扩展" - }, - "step2": { - "description": "创建新钱包或导入现有钱包。", - "title": "创建或导入钱包。" - }, - "step3": { - "description": "设置完成Coin98 钱包后,单击下方以刷新浏览器并加载扩展程序。", - "title": "刷新您的浏览器" - } - } - }, - "coinbase": { - "qr_code": { - "step1": { - "description": "我们建议您把Coinbase钱包放到主屏幕上,以便更快地访问。", - "title": "打开Coinbase钱包应用" - }, - "step2": { - "description": "您可以轻松地使用云备份功能备份您的钱包。", - "title": "创建或导入钱包" - }, - "step3": { - "description": "扫描后,将出现连接提示,供您连接您的钱包。", - "title": "点击扫描按钮" - } - }, - "extension": { - "step1": { - "description": "我们建议您将Coinbase钱包固定在任务栏上,以便更快地访问您的钱包。", - "title": "安装Coinbase钱包扩展" - }, - "step2": { - "description": "务必使用安全的方法备份您的钱包。永远不要与任何人分享您的秘密短语。", - "title": "创建或导入钱包" - }, - "step3": { - "description": "设置好钱包后,点击下方以刷新浏览器并加载扩展。", - "title": "刷新您的浏览器" - } - } - }, - "compass": { - "extension": { - "step1": { - "description": "我们建议将Compass Wallet固定在任务栏上,以便更快地访问您的钱包。", - "title": "安装Compass Wallet扩展" - }, - "step2": { - "description": "务必使用安全的方法备份您的钱包。决不与任何人分享您的秘密短语。", - "title": "创建或导入钱包" - }, - "step3": { - "description": "设置钱包后,点击下方刷新浏览器并加载扩展。", - "title": "刷新您的浏览器" - } - } - }, - "core": { - "qr_code": { - "step1": { - "description": "我们建议您将Core添加到主屏幕,以便更快地访问您的钱包。", - "title": "打开Core应用程序" - }, - "step2": { - "description": "您可以使用我们的手机备份功能轻松备份您的钱包。", - "title": "创建或导入钱包" - }, - "step3": { - "description": "扫描后,将出现连接提示,让您连接您的钱包。", - "title": "点击WalletConnect按钮" - } - }, - "extension": { - "step1": { - "description": "我们建议将 Core 固定到任务栏,以便更快地访问您的钱包。", - "title": "安装 Core 扩展" - }, - "step2": { - "description": "一定要使用安全的方法备份您的钱包。切勿与任何人分享您的秘密短语。", - "title": "创建或导入钱包" - }, - "step3": { - "description": "设置好钱包后,点击下方以刷新浏览器并加载扩展。", - "title": "刷新你的浏览器" - } - } - }, - "fox": { - "qr_code": { - "step1": { - "description": "我们建议您将 FoxWallet 放到主屏幕上,以便更快的访问。", - "title": "打开 FoxWallet 应用" - }, - "step2": { - "description": "确保使用安全的方法备份您的钱包。永远不要与任何人共享您的秘密短语。", - "title": "创建或导入钱包" - }, - "step3": { - "description": "扫描后,将出现连接提示,让您连接您的钱包。", - "title": "点击扫描按钮" - } - } - }, - "frontier": { - "qr_code": { - "step1": { - "description": "我们建议将 Frontier 钱包放在您的主屏幕上,以便更快地访问。", - "title": "打开 Frontier 钱包应用" - }, - "step2": { - "description": "确保使用安全的方法备份您的钱包。永远不要与任何人共享您的秘密短语。", - "title": "创建或导入钱包" - }, - "step3": { - "description": "扫描后,将出现连接提示,让您连接您的钱包。", - "title": "点击扫描按钮" - } - }, - "extension": { - "step1": { - "description": "我们建议您将Frontier钱包固定到任务栏,以便更快地访问您的钱包。", - "title": "安装Frontier钱包扩展" - }, - "step2": { - "description": "确保使用安全的方法备份您的钱包。永远不要与任何人分享您的秘密短语。", - "title": "创建或导入钱包" - }, - "step3": { - "description": "设置完成钱包后,点击下方刷新浏览器并加载扩展。", - "title": "刷新你的浏览器" - } - } - }, - "im_token": { - "qr_code": { - "step1": { - "title": "打开imToken应用", - "description": "将imToken应用放在您的主屏幕上,以更快地访问您的钱包。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "创建新钱包或导入已有的钱包。" - }, - "step3": { - "title": "点击右上角的扫描图标", - "description": "选择新连接,然后扫描二维码并确认提示以进行连接。" - } - } - }, - "iopay": { - "qr_code": { - "step1": { - "description": "我们建议您将ioPay添加到主屏幕,以便更快地访问您的钱包。", - "title": "打开ioPay应用" - }, - "step2": { - "description": "您可以使用我们的手机上的备份功能轻松备份您的钱包。", - "title": "创建或导入钱包" - }, - "step3": { - "description": "在您扫描后,将出现连接提示,供您连接您的钱包。", - "title": "点击WalletConnect按钮" - } - } - }, - "kaikas": { - "extension": { - "step1": { - "description": "我们建议将 Kaikas 固定到任务栏上,以便更快访问您的钱包。", - "title": "安装 Kaikas 扩展程序" - }, - "step2": { - "description": "务必使用安全的方法备份您的钱包。决不与任何人分享您的秘密短语。", - "title": "创建或导入钱包" - }, - "step3": { - "description": "设置钱包后,点击下方刷新浏览器并加载扩展。", - "title": "刷新您的浏览器" - } - }, - "qr_code": { - "step1": { - "title": "打开 Kaikas 应用", - "description": "将 Kaikas 应用添加到您的主屏幕上,以便更快访问您的钱包。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "创建新钱包或导入现有钱包。" - }, - "step3": { - "title": "点击右上角的扫描图标", - "description": "选择新连接,然后扫描二维码并确认提示以进行连接。" - } - } - }, - "kaia": { - "extension": { - "step1": { - "description": "我们建议将Kaia固定在您的任务栏上,以便更快地访问您的钱包。", - "title": "安装Kaia扩展程序" - }, - "step2": { - "description": "务必使用安全的方法备份您的钱包。决不与任何人分享您的秘密短语。", - "title": "创建或导入钱包" - }, - "step3": { - "description": "设置钱包后,点击下方刷新浏览器并加载扩展。", - "title": "刷新您的浏览器" - } - }, - "qr_code": { - "step1": { - "title": "打开Kaia应用", - "description": "将Kaia应用放在您的主屏幕上,以更快地访问您的钱包。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "创建新钱包或导入现有钱包。" - }, - "step3": { - "title": "点击右上角的扫描图标", - "description": "选择新连接,然后扫描二维码并确认提示以进行连接。" - } - } - }, - "kraken": { - "qr_code": { - "step1": { - "title": "打开Kraken Wallet应用程序", - "description": "将Kraken Wallet添加到您的主屏幕,以便更快地访问您的钱包。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "创建新钱包或导入现有钱包。" - }, - "step3": { - "title": "点击QR图标并扫描", - "description": "在您的主屏幕上点击QR图标,扫描代码并确认提示以进行连接。" - } - } - }, - "kresus": { - "qr_code": { - "step1": { - "title": "打开 Kresus 钱包应用", - "description": "将Kresus钱包添加到主屏幕,以便更快地访问您的钱包。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "创建新钱包或导入现有钱包。" - }, - "step3": { - "title": "点击QR图标并扫描", - "description": "在您的主屏幕上点击QR图标,扫描代码并确认提示以进行连接。" - } - } - }, - "magicEden": { - "extension": { - "step1": { - "title": "安装 Magic Eden 扩展程序", - "description": "我们建议将 Magic Eden 固定到任务栏,以便更轻松地访问您的钱包。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "确保使用安全的方法备份您的钱包。切勿与任何人分享您的秘密恢复短语。" - }, - "step3": { - "title": "刷新您的浏览器", - "description": "设置钱包后,点击下方刷新浏览器并加载扩展。" - } - } - }, - "metamask": { - "qr_code": { - "step1": { - "title": "打开 MetaMask 应用", - "description": "我们建议将 MetaMask 放在您的主屏幕上,以便更快地访问。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "确保使用安全的方法备份您的钱包。永远不要与任何人分享你的秘密短语。" - }, - "step3": { - "title": "点击扫描按钮", - "description": "扫描后,将出现连接提示,以便你连接你的钱包。" - } - }, - "extension": { - "step1": { - "title": "安装 MetaMask 扩展", - "description": "我们建议将MetaMask固定在您的任务栏上,以便更快地访问您的钱包。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "请务必使用安全的方法备份您的钱包。切勿与任何人分享您的秘密短语。" - }, - "step3": { - "title": "刷新您的浏览器", - "description": "一旦您设置好您的钱包,点击下面刷新浏览器并加载扩展。" - } - } - }, - "nestwallet": { - "extension": { - "step1": { - "title": "安装 NestWallet 扩展程序", - "description": "我们建议将NestWallet固定到任务栏,以便更快速地访问您的钱包。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "务必使用安全的方法备份您的钱包。决不与任何人分享您的秘密短语。" - }, - "step3": { - "title": "刷新您的浏览器", - "description": "设置钱包后,点击下方刷新浏览器并加载扩展。" - } - } - }, - "okx": { - "qr_code": { - "step1": { - "title": "打开OKX钱包应用程序", - "description": "我们建议将OKX钱包放在您的主屏幕上,以便更快地访问。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "务必使用安全的方法备份您的钱包。千万不要与任何人分享您的秘密短语。" - }, - "step3": { - "title": "点击扫描按钮", - "description": "扫描后,将出现一个连接提示,让您连接您的钱包。" - } - }, - "extension": { - "step1": { - "title": "安装 OKX 钱包扩展", - "description": "我们建议将 OKX 钱包固定到您的任务栏,以便更快地访问您的钱包。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "务必使用安全的方法备份您的钱包。千万不要与任何人分享您的秘密短语。" - }, - "step3": { - "title": "刷新您的浏览器", - "description": "一旦你设置好你的钱包,点击下方刷新浏览器并加载扩展。" - } - } - }, - "omni": { - "qr_code": { - "step1": { - "title": "打开Omni应用", - "description": "将Omni添加到你的主屏幕,以便更快地访问你的钱包。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "创建新的钱包或导入现有的钱包。" - }, - "step3": { - "title": "点击QR图标并扫描", - "description": "点击首页的二维码图标,扫描代码并确认提示以连接。" - } - } - }, - "1inch": { - "qr_code": { - "step1": { - "description": "将 1inch Wallet 添加到您的主屏幕上,以便更快访问您的钱包。", - "title": "打开 1inch Wallet 应用" - }, - "step2": { - "description": "创建钱包和用户名,或导入现有钱包。", - "title": "创建或导入钱包" - }, - "step3": { - "description": "在您扫描后,将出现连接提示,供您连接您的钱包。", - "title": "点击扫描二维码按钮" - } - } - }, - "token_pocket": { - "qr_code": { - "step1": { - "title": "打开TokenPocket应用", - "description": "我们建议将TokenPocket放在您的主屏幕上以便更快的访问。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "一定要使用安全的方法备份您的钱包。切勿与任何人分享您的秘密短语。" - }, - "step3": { - "title": "点击扫描按钮", - "description": "扫描后,将出现连接提示,供您连接钱包。" - } - }, - "extension": { - "step1": { - "title": "安装TokenPocket扩展", - "description": "我们建议将TokenPocket固定到任务栏,以便更快地访问您的钱包。" - }, - "step2": { - "title": "创建或导入一个钱包", - "description": "一定要使用安全的方法备份您的钱包。绝对不要与任何人分享您的秘密短语。" - }, - "step3": { - "title": "刷新您的浏览器", - "description": "设置好您的钱包后,点击下面刷新浏览器并加载扩展。" - } - } - }, - "trust": { - "qr_code": { - "step1": { - "title": "打开Trust Wallet应用", - "description": "将Trust Wallet放在主屏幕上,以便更快地访问您的钱包。" - }, - "step2": { - "title": "创建或导入一个钱包", - "description": "创建新的钱包或导入现有的钱包。" - }, - "step3": { - "title": "在设置中点击WalletConnect", - "description": "选择新的连接,然后扫描二维码并确认提示以进行连接。" - } - }, - "extension": { - "step1": { - "title": "安装Trust Wallet扩展程序", - "description": "在浏览器的右上角点击并固定Trust Wallet以便于访问。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "创建新的钱包或导入现有的钱包。" - }, - "step3": { - "title": "刷新您的浏览器", - "description": "设置Trust Wallet后,点击下面以刷新浏览器并加载扩展程序。" - } - } - }, - "uniswap": { - "qr_code": { - "step1": { - "title": "打开Uniswap应用", - "description": "将Uniswap钱包添加到您的主屏幕,以便更快地访问您的钱包。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "创建新钱包或导入现有钱包。" - }, - "step3": { - "title": "点击QR图标并扫描", - "description": "在您的主屏幕上点击QR图标,扫描代码并确认提示以进行连接。" - } - } - }, - "zerion": { - "qr_code": { - "step1": { - "title": "打开Zerion应用", - "description": "我们建议将Zerion放在您的主屏幕上以便更快地访问。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "确保使用安全的方式备份你的钱包。绝对不要与任何人分享你的私人密语。" - }, - "step3": { - "title": "点击扫描按钮", - "description": "你扫描后,会出现一个连接提示让你连接你的钱包。" - } - }, - "extension": { - "step1": { - "title": "安装 Zerion 扩展", - "description": "我们建议将 Zerion 固定在你的任务栏以便更快访问你的钱包。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "确保使用安全的方法备份你的钱包。永远不要与任何人分享你的秘密短语。" - }, - "step3": { - "title": "刷新您的浏览器", - "description": "设置您的钱包后,点击下面以刷新浏览器并加载扩展程序。" - } - } - }, - "rainbow": { - "qr_code": { - "step1": { - "title": "打开 Rainbow 应用", - "description": "我们建议将 Rainbow 放在您的主屏幕上,以便更快地访问您的钱包。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "您可以使用我们的备份功能在您的手机上轻松备份你的钱包。" - }, - "step3": { - "title": "点击扫描按钮", - "description": "扫描后,将出现连接提示,让您连接您的钱包。" - } - } - }, - "enkrypt": { - "extension": { - "step1": { - "description": "我们建议将Enkrypt Wallet固定到任务栏,以便更快地访问您的钱包。", - "title": "安装Enkrypt Wallet扩展" - }, - "step2": { - "description": "请确保使用安全方法备份您的钱包。永远不要与任何人分享您的秘密短语。", - "title": "创建钱包或导入钱包" - }, - "step3": { - "description": "设置钱包后,点击下面刷新浏览器并加载扩展。", - "title": "刷新您的浏览器" - } - } - }, - "frame": { - "extension": { - "step1": { - "description": "我们建议将Frame固定到任务栏,以便更快地访问您的钱包。", - "title": "安装Frame及其配套扩展" - }, - "step2": { - "description": "务必使用安全的方法备份您的钱包。决不与任何人分享您的秘密短语。", - "title": "创建或导入钱包" - }, - "step3": { - "description": "设置钱包后,点击下方以刷新浏览器并加载扩展。", - "title": "刷新你的浏览器" - } - } - }, - "one_key": { - "extension": { - "step1": { - "title": "安装OneKey Wallet扩展", - "description": "我们建议将OneKey Wallet固定到任务栏,以便更快地访问您的钱包。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "确保使用安全的方法备份您的钱包。切勿与任何人分享您的秘密短语。" - }, - "step3": { - "title": "刷新您的浏览器", - "description": "设置您的钱包后,点击下方以刷新浏览器并加载扩展程序。" - } - } - }, - "paraswap": { - "qr_code": { - "step1": { - "title": "打开ParaSwap应用", - "description": "将ParaSwap Wallet添加到您的主屏幕,以便更快地访问您的钱包。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "创建新钱包或导入现有钱包。" - }, - "step3": { - "title": "点击QR图标并扫描", - "description": "在您的主屏幕上点击QR图标,扫描代码并确认提示以进行连接。" - } - } - }, - "phantom": { - "extension": { - "step1": { - "title": "安装 Phantom 扩展程序", - "description": "我们建议将 Phantom 固定到您的任务栏,以便更容易访问您的钱包。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "确保使用安全的方法备份您的钱包。切勿与任何人分享您的秘密恢复短语。" - }, - "step3": { - "title": "刷新您的浏览器", - "description": "设置好您的钱包后,点击下方以刷新浏览器并加载扩展程序。" - } - } - }, - "rabby": { - "extension": { - "step1": { - "title": "安装 Rabby 扩展程序", - "description": "我们建议将 Rabby 固定在您的任务栏,以便更快地访问您的钱包。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "一定要使用安全的方法备份您的钱包。切勿与任何人分享您的密钥短语。" - }, - "step3": { - "title": "刷新您的浏览器", - "description": "一旦您设置好您的钱包,点击以下以刷新浏览器并加载扩展程序。" - } - } - }, - "ronin": { - "qr_code": { - "step1": { - "description": "我们建议您将Ronin钱包添加到主屏幕,以便更快地访问。", - "title": "打开Ronin钱包应用" - }, - "step2": { - "description": "务必使用安全的方法备份您的钱包。决不与任何人分享您的秘密短语。", - "title": "创建或导入钱包" - }, - "step3": { - "description": "在您扫描后,将出现连接提示,供您连接您的钱包。", - "title": "点击扫描按钮" - } - }, - "extension": { - "step1": { - "description": "我们建议您将Ronin钱包固定到任务栏,以便更快地访问您的钱包。", - "title": "安装Ronin钱包扩展" - }, - "step2": { - "description": "务必使用安全的方法备份您的钱包。决不与任何人分享您的秘密短语。", - "title": "创建或导入钱包" - }, - "step3": { - "description": "设置钱包后,点击下方刷新浏览器并加载扩展。", - "title": "刷新您的浏览器" - } - } - }, - "ramper": { - "extension": { - "step1": { - "title": "安装Ramper扩展", - "description": "我们建议您将Ramper固定到任务栏,以便更容易地访问您的钱包。" - }, - "step2": { - "title": "创建一个钱包", - "description": "务必使用安全的方法备份您的钱包。决不与任何人分享您的秘密短语。" - }, - "step3": { - "title": "刷新您的浏览器", - "description": "设置钱包后,点击下方刷新浏览器并加载扩展。" - } - } - }, - "safeheron": { - "extension": { - "step1": { - "title": "安装 Core 扩展", - "description": "我们建议将 Safeheron 固定在您的任务栏,以便更快地访问您的钱包。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "确保使用安全的方法备份您的钱包。切勿与任何人分享您的秘密短语。" - }, - "step3": { - "title": "刷新您的浏览器", - "description": "设置好您的钱包后,点击下方以刷新浏览器并加载扩展程序。" - } - } - }, - "taho": { - "extension": { - "step1": { - "title": "安装Taho扩展程序", - "description": "我们建议将Taho固定在您的任务栏上,以便更快地访问您的钱包。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "确保使用安全的方法备份您的钱包。切勿与任何人分享您的秘密短语。" - }, - "step3": { - "title": "刷新您的浏览器", - "description": "设置好您的钱包后,点击下方以刷新浏览器并加载扩展程序。" - } - } - }, - "wigwam": { - "extension": { - "step1": { - "title": "安装Wigwam扩展程序", - "description": "我们建议将Wigwam固定在您的任务栏上,以便更快地访问您的钱包。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "务必使用安全的方法备份您的钱包。决不与任何人分享您的秘密短语。" - }, - "step3": { - "title": "刷新您的浏览器", - "description": "设置钱包后,点击下方刷新浏览器并加载扩展。" - } - } - }, - "talisman": { - "extension": { - "step1": { - "title": "安装 Talisman 扩展程序", - "description": "我们建议将 Talisman 固定在任务栏上,以便更快地访问您的钱包。" - }, - "step2": { - "title": "创建或导入以太坊钱包", - "description": "确保使用安全的方法备份您的钱包。永远不要与任何人分享您的恢复短语。" - }, - "step3": { - "title": "刷新您的浏览器", - "description": "设置好您的钱包后,点击下方以刷新浏览器并加载扩展程序。" - } - } - }, - "xdefi": { - "extension": { - "step1": { - "title": "安装 XDEFI 钱包扩展程序", - "description": "我们建议将XDEFI钱包固定到您的任务栏,以便更快地访问您的钱包。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "确保使用安全的方法备份您的钱包。永远不要与任何人共享您的秘密短语。" - }, - "step3": { - "title": "刷新您的浏览器", - "description": "一旦你设置好你的钱包,点击下面刷新浏览器和加载扩展。" - } - } - }, - "zeal": { - "qr_code": { - "step1": { - "title": "打开 Zeal 应用", - "description": "将Zeal钱包添加到您的主屏幕,以便更快地访问您的钱包。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "创建新钱包或导入现有钱包。" - }, - "step3": { - "title": "点击QR图标并扫描", - "description": "在您的主屏幕上点击QR图标,扫描代码并确认提示以进行连接。" - } - }, - "extension": { - "step1": { - "title": "安装Zeal扩展程序", - "description": "我们建议将Zeal固定在您的任务栏上,以便更快地访问您的钱包。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "务必使用安全的方法备份您的钱包。决不与任何人分享您的秘密短语。" - }, - "step3": { - "title": "刷新您的浏览器", - "description": "设置钱包后,点击下方刷新浏览器并加载扩展。" - } - } - }, - "safepal": { - "extension": { - "step1": { - "title": "安装SafePal Wallet扩展程序", - "description": "点击浏览器右上角并固定SafePal Wallet以便于快速访问。" - }, - "step2": { - "title": "创建或导入钱包。", - "description": "创建新钱包或导入现有钱包。" - }, - "step3": { - "title": "刷新您的浏览器", - "description": "一旦设置了SafePal钱包,点击下方刷新浏览器并加载扩展程序。" - } - }, - "qr_code": { - "step1": { - "title": "打开SafePal钱包应用程序", - "description": "将SafePal钱包放在主屏幕上以更快地访问您的钱包。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "创建新钱包或导入现有钱包。" - }, - "step3": { - "title": "在设置中点击WalletConnect", - "description": "选择新连接,然后扫描二维码并确认提示以进行连接。" - } - } - }, - "desig": { - "extension": { - "step1": { - "title": "安装 Desig 扩展", - "description": "我们建议将 Desig 固定到任务栏,以便更轻松地访问您的钱包。" - }, - "step2": { - "title": "创建一个钱包", - "description": "务必使用安全的方法备份您的钱包。决不与任何人分享您的秘密短语。" - }, - "step3": { - "title": "刷新您的浏览器", - "description": "设置钱包后,点击下方刷新浏览器并加载扩展。" - } - } - }, - "subwallet": { - "extension": { - "step1": { - "title": "安装 SubWallet 扩展", - "description": "我们建议将 SubWallet 固定到任务栏,以便更快地访问您的钱包。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "确保使用安全的方法备份您的钱包。永远不要与任何人分享您的恢复短语。" - }, - "step3": { - "title": "刷新您的浏览器", - "description": "设置钱包后,点击下方刷新浏览器并加载扩展。" - } - }, - "qr_code": { - "step1": { - "title": "打开 SubWallet 应用", - "description": "我们建议将 SubWallet 放置在主屏幕上,以便更快地访问。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "务必使用安全的方法备份您的钱包。决不与任何人分享您的秘密短语。" - }, - "step3": { - "title": "点击扫描按钮", - "description": "在您扫描后,将出现连接提示,供您连接您的钱包。" - } - } - }, - "clv": { - "extension": { - "step1": { - "title": "安装 CLV Wallet 扩展", - "description": "我们建议将 CLV Wallet 固定到任务栏,以便更快地访问您的钱包。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "务必使用安全的方法备份您的钱包。决不与任何人分享您的秘密短语。" - }, - "step3": { - "title": "刷新您的浏览器", - "description": "设置钱包后,点击下方刷新浏览器并加载扩展。" - } - }, - "qr_code": { - "step1": { - "title": "打开 CLV 钱包应用", - "description": "我们建议将 CLV 钱包添加到您的主屏幕,以便更快地访问。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "务必使用安全的方法备份您的钱包。决不与任何人分享您的秘密短语。" - }, - "step3": { - "title": "点击扫描按钮", - "description": "在您扫描后,将出现连接提示,供您连接您的钱包。" - } - } - }, - "okto": { - "qr_code": { - "step1": { - "title": "打开 Okto 应用", - "description": "将 Okto 添加到您的主屏幕以便快速访问" - }, - "step2": { - "title": "创建一个 MPC 钱包", - "description": "创建一个账户并生成一个钱包" - }, - "step3": { - "title": "在设置中点击WalletConnect", - "description": "点击右上角的扫描二维码图标,并确认提示以连接。" - } - } - }, - "ledger": { - "desktop": { - "step1": { - "title": "打开Ledger Live应用", - "description": "我们建议将Ledger Live放在您的主屏幕上,以便更快地访问。" - }, - "step2": { - "title": "设置您的Ledger", - "description": "设置一个新的Ledger或连接到一个现有的。" - }, - "step3": { - "title": "连接", - "description": "你扫描后,会出现一个连接提示让你连接你的钱包。" - } - }, - "qr_code": { - "step1": { - "title": "打开Ledger Live应用", - "description": "我们建议将Ledger Live放在您的主屏幕上,以便更快地访问。" - }, - "step2": { - "title": "设置您的Ledger", - "description": "您可以同步桌面应用程式,或连接您的Ledger。" - }, - "step3": { - "title": "扫描代码", - "description": "点击 WalletConnect 然后切换到扫描器。你扫描后,会出现一个连接提示让你连接你的钱包。" - } - } - }, - "valora": { - "qr_code": { - "step1": { - "title": "打开Valora应用程序", - "description": "我们建议将 Valora 放在您的主屏幕上以便更快地访问。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "创建新钱包或导入现有钱包。" - }, - "step3": { - "title": "点击扫描按钮", - "description": "在您扫描后,将出现连接提示,供您连接您的钱包。" - } - } - }, - "gate": { - "qr_code": { - "step1": { - "title": "打开 Gate 应用", - "description": "我们建议将 Gate 放在您的主屏幕上以便更快地访问。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "创建新钱包或导入现有钱包。" - }, - "step3": { - "title": "点击扫描按钮", - "description": "在您扫描后,将出现连接提示,供您连接您的钱包。" - } - }, - "extension": { - "step1": { - "title": "安装 Gate 扩展程序", - "description": "我们建议将 Gate 固定到任务栏,以便更轻松地访问您的钱包。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "确保使用安全的方法备份您的钱包。切勿与任何人分享您的秘密恢复短语。" - }, - "step3": { - "title": "刷新您的浏览器", - "description": "设置钱包后,点击下方刷新浏览器并加载扩展。" - } - } - }, - "xportal": { - "qr_code": { - "step1": { - "description": "将 xPortal 放到您的主屏幕上,以便更快地访问您的钱包。", - "title": "打开 xPortal 应用" - }, - "step2": { - "description": "创建钱包或导入现有钱包。", - "title": "创建或导入钱包" - }, - "step3": { - "description": "在您扫描后,将出现连接提示,供您连接您的钱包。", - "title": "点击扫描二维码按钮" - } - } - }, - "mew": { - "qr_code": { - "step1": { - "description": "我们建议将 MEW 钱包添加到您的主屏幕,以便更快地访问。", - "title": "打开 MEW 钱包应用" - }, - "step2": { - "description": "您可以轻松地使用云备份功能备份您的钱包。", - "title": "创建或导入钱包" - }, - "step3": { - "description": "在您扫描后,将出现连接提示,供您连接您的钱包。", - "title": "点击扫描按钮" - } - } - } - }, - "zilpay": { - "qr_code": { - "step1": { - "title": "打开ZilPay应用", - "description": "将ZilPay添加到你的主屏幕,以便更快地访问你的钱包。" - }, - "step2": { - "title": "创建或导入钱包", - "description": "创建新钱包或导入现有钱包。" - }, - "step3": { - "title": "点击扫描按钮", - "description": "在您扫描后,将出现连接提示,供您连接您的钱包。" - } - } - } -} -`;export{u as default}; diff --git a/client2/build/assets/zh_HK-YM3T6EI5-BYHcXtXC.js b/client2/build/assets/zh_HK-YM3T6EI5-BYHcXtXC.js deleted file mode 100644 index e2a8e496a..000000000 --- a/client2/build/assets/zh_HK-YM3T6EI5-BYHcXtXC.js +++ /dev/null @@ -1,1427 +0,0 @@ -var u=`{ - "connect_wallet": { - "label": "連接錢包", - "wrong_network": { - "label": "錯誤的網絡" - } - }, - "intro": { - "title": "錢包是什麼?", - "description": "錢包可以用來發送、接收、存儲和顯示數字資產。這也是一種新的登錄方式,不需要在每個網站上創建新的賬號和密碼。", - "digital_asset": { - "title": "您的數字資產之家", - "description": "錢包可用於發送、接收、存儲和顯示數字資產,例如以太坊和NFT。" - }, - "login": { - "title": "一種新的登錄方式", - "description": "無需在每個網站上創建新的賬號和密碼,只需連接您的錢包。" - }, - "get": { - "label": "獲取錢包" - }, - "learn_more": { - "label": "了解更多" - } - }, - "sign_in": { - "label": "驗證你的賬戶", - "description": "要完成連接,你必須在錢包中簽署一條消息,以驗證你是這個賬戶的擁有者。", - "message": { - "send": "簽署消息", - "preparing": "正在準備消息...", - "cancel": "取消", - "preparing_error": "準備消息時出錯,請重試!" - }, - "signature": { - "waiting": "等待簽名...", - "verifying": "驗證簽名中...", - "signing_error": "簽署消息時出錯,請重試!", - "verifying_error": "驗證簽名時出錯,請重試!", - "oops_error": "哦,出了點問題!" - } - }, - "connect": { - "label": "連接", - "title": "連接錢包", - "new_to_ethereum": { - "description": "新手入門以太坊錢包?", - "learn_more": { - "label": "了解更多" - } - }, - "learn_more": { - "label": "了解更多" - }, - "recent": "最近", - "status": { - "opening": "正在開啟%{wallet}...", - "connecting": "連接中", - "connect_mobile": "繼續在 %{wallet} 中操作", - "not_installed": "%{wallet} 尚未安裝", - "not_available": "%{wallet} 不可用", - "confirm": "在擴展程序中確認連接", - "confirm_mobile": "在錢包中接受連接請求" - }, - "secondary_action": { - "get": { - "description": "沒有%{wallet}?", - "label": "獲取" - }, - "install": { - "label": "安裝" - }, - "retry": { - "label": "重試" - } - }, - "walletconnect": { - "description": { - "full": "需要官方的WalletConnect模態框嗎?", - "compact": "需要WalletConnect模態框嗎?" - }, - "open": { - "label": "開啟" - } - } - }, - "connect_scan": { - "title": "用 %{wallet} 掃描", - "fallback_title": "用你的手機掃描" - }, - "connector_group": { - "installed": "已安裝", - "recommended": "推荐", - "other": "其他", - "popular": "流行", - "more": "更多", - "others": "其他" - }, - "get": { - "title": "獲取錢包", - "action": { - "label": "獲取" - }, - "mobile": { - "description": "手機錢包" - }, - "extension": { - "description": "瀏覽器擴展" - }, - "mobile_and_extension": { - "description": "手機錢包和擴展" - }, - "mobile_and_desktop": { - "description": "行動裝置和桌面錢包" - }, - "looking_for": { - "title": "找不到你想要的?", - "mobile": { - "description": "在主屏幕上選擇一個錢包,以開始使用不同的錢包提供商。" - }, - "desktop": { - "compact_description": "在主屏幕上選擇一個錢包,以開始使用不同的錢包提供商。", - "wide_description": "在左邊選擇一個錢包,以開始使用不同的錢包提供商。" - } - } - }, - "get_options": { - "title": "開始使用%{wallet}", - "short_title": "獲取%{wallet}", - "mobile": { - "title": "%{wallet} 手機版", - "description": "使用手機錢包探索以太坊的世界。", - "download": { - "label": "獲取應用" - } - }, - "extension": { - "title": "%{wallet} 適用於 %{browser}", - "description": "直接從您喜愛的網頁瀏覽器中訪問您的錢包。", - "download": { - "label": "添加到%{browser}" - } - }, - "desktop": { - "title": "%{wallet} 用於 %{platform}", - "description": "從強大的桌面上本地訪問你的錢包。", - "download": { - "label": "添加到 %{platform}" - } - } - }, - "get_mobile": { - "title": "安裝%{wallet}", - "description": "用你的手機掃描以下載iOS或Android版本", - "continue": { - "label": "繼續" - } - }, - "get_instructions": { - "mobile": { - "connect": { - "label": "連接" - }, - "learn_more": { - "label": "了解更多" - } - }, - "extension": { - "refresh": { - "label": "刷新" - }, - "learn_more": { - "label": "了解更多" - } - }, - "desktop": { - "connect": { - "label": "連接" - }, - "learn_more": { - "label": "了解更多" - } - } - }, - "chains": { - "title": "切換網絡", - "wrong_network": "檢測到錯誤的網絡,請切換或斷開連接以繼續。", - "confirm": "在錢包中確認", - "switching_not_supported": "您的錢包不支持從 %{appName} 切換網絡。請嘗試在您的錢包內切換網絡。", - "switching_not_supported_fallback": "您的錢包不支持從此應用切換網絡。請嘗試在您的錢包內切換網絡。", - "disconnect": "斷開連接", - "connected": "已連接" - }, - "profile": { - "disconnect": { - "label": "斷開連接" - }, - "copy_address": { - "label": "複製地址", - "copied": "已複製!" - }, - "explorer": { - "label": "在探勘器查看更多" - }, - "transactions": { - "description": "%{appName} 的交易將會顯示在這裡...", - "description_fallback": "您的交易將會顯示在這裡...", - "recent": { - "title": "最近的交易" - }, - "clear": { - "label": "清除所有" - } - } - }, - "wallet_connectors": { - "argent": { - "qr_code": { - "step1": { - "description": "將 Argent 加到你的主畫面以快速訪問你的錢包。", - "title": "打開 Argent 應用程式" - }, - "step2": { - "description": "創建一個錢包和用戶名,或導入現有的錢包。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "掃描後,將會出現連接提示,讓你連接你的錢包。", - "title": "點擊掃瞄 QR 按鈕" - } - } - }, - "berasig": { - "extension": { - "step1": { - "title": "安裝 BeraSig 擴充套件", - "description": "我們建議您將 BeraSig 固定在工作列上,以便更輕鬆地存取您的錢包。" - }, - "step2": { - "title": "建立錢包", - "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" - }, - "step3": { - "title": "刷新你的瀏覽器", - "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" - } - } - }, - "best": { - "qr_code": { - "step1": { - "title": "打開 Best Wallet 應用程式", - "description": "將 Best Wallet 加到主畫面以更快地開啟你的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "創建新的錢包或導入現有的錢包。" - }, - "step3": { - "title": "點擊二維碼圖示並掃描", - "description": "點擊主畫面上的二維碼圖示,掃描代碼並確認提示以連接。" - } - } - }, - "bifrost": { - "qr_code": { - "step1": { - "description": "我們建議將 Bifrost Wallet 加到你的主畫面,以便更快訪問。", - "title": "打開 Bifrost Wallet 應用程式" - }, - "step2": { - "description": "使用你的恢覆短語創建或導入錢包。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "掃描後,將會出現連接提示,讓你連接你的錢包。", - "title": "點擊掃描按鈕" - } - } - }, - "bitget": { - "qr_code": { - "step1": { - "description": "我們建議將 Bitget Wallet 加到你的主畫面,以便更快訪問。", - "title": "打開 Bitget Wallet 應用程式" - }, - "step2": { - "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "掃描後,將會出現連接提示,讓你連接你的錢包。", - "title": "點擊掃描按鈕" - } - }, - "extension": { - "step1": { - "description": "我們建議將 Bitget Wallet 固定到你的任務欄上,以便更快訪問你的錢包。", - "title": "安裝 Bitget Wallet 擴展" - }, - "step2": { - "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。", - "title": "刷新你的瀏覽器" - } - } - }, - "bitski": { - "extension": { - "step1": { - "description": "我們建議將 Bitski 固定到你的任務欄上,以便更快訪問你的錢包。", - "title": "安裝 Bitski 擴展" - }, - "step2": { - "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。", - "title": "刷新你的瀏覽器" - } - } - }, - "bitverse": { - "qr_code": { - "step1": { - "title": "開啟 Bitverse Wallet 應用程式", - "description": "新增 Bitverse Wallet 至你的主畫面,便可以更快存取你的電子錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "創建新的錢包或導入現有的錢包。" - }, - "step3": { - "title": "點擊二維碼圖示並掃描", - "description": "點擊主畫面上的二維碼圖示,掃描代碼並確認提示以連接。" - } - } - }, - "bloom": { - "desktop": { - "step1": { - "title": "打開 Bloom Wallet 應用程式", - "description": "我們建議將 Bloom Wallet 放置在你的主畫面,以便更快地訪問。" - }, - "step2": { - "description": "使用你的恢覆短語創建或導入錢包。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "擁有錢包後,點擊連接以通過 Bloom 連接。應用程式中將會出現一個連接提示讓你確認連接。", - "title": "點擊連接" - } - } - }, - "bybit": { - "qr_code": { - "step1": { - "description": "我們建議將 Bybit 放在主畫面,便可以更快存取你的電子錢包。", - "title": "開啟 Bybit 應用程式" - }, - "step2": { - "description": "你可以使用我們的備份功能在手機上輕鬆備份你的錢包。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "掃描後,將會出現連接提示,讓你連接你的錢包。", - "title": "點擊掃描按鈕" - } - }, - "extension": { - "step1": { - "description": "點擊瀏覽器右上角,並將 Bybit Wallet 釘起來,以便輕鬆存取。", - "title": "安裝 Bybit Wallet 擴充功能" - }, - "step2": { - "description": "創建新的錢包或導入現有的錢包。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "設置 Bybit Wallet 後,點擊下方刷新瀏覽器,並加載擴充功能。", - "title": "刷新你的瀏覽器" - } - } - }, - "binance": { - "qr_code": { - "step1": { - "description": "我們建議將 Binance 放在主畫面,便可以更快存取你的電子錢包。", - "title": "開啟 Binance 應用程式" - }, - "step2": { - "description": "你可以使用我們的備份功能在手機上輕鬆備份你的錢包。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "掃描後,將會出現連接提示,讓你連接你的錢包。", - "title": "點擊 WalletConnect 按鈕" - } - } - }, - "coin98": { - "qr_code": { - "step1": { - "description": "我們建議將 Coin98 Wallet 加到你的主畫面,以便更快訪問你的錢包。", - "title": "打開 Coin98 Wallet 應用程式" - }, - "step2": { - "description": "你可以使用我們的備份功能在手機上輕鬆備份你的錢包。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "掃描後,將會出現連接提示,讓你連接你的錢包。", - "title": "點擊 WalletConnect 按鈕" - } - }, - "extension": { - "step1": { - "description": "點擊瀏覽器右上角並固定 Coin98 Wallet 以便訪問。", - "title": "安裝 Coin98 Wallet 擴展" - }, - "step2": { - "description": "創建新的錢包或導入現有的錢包。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "設置好 Coin98 Wallet 後,點擊下方按鈕刷新瀏覽器並載入擴展。", - "title": "刷新你的瀏覽器" - } - } - }, - "coinbase": { - "qr_code": { - "step1": { - "description": "我們建議將 Coinbase Wallet 加到你的主畫面,以便更快訪問。", - "title": "打開 Coinbase Wallet 應用程式" - }, - "step2": { - "description": "你可以使用雲端備份功能輕鬆備份你的錢包。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "掃描後,將會出現連接提示,讓你連接你的錢包。", - "title": "點擊掃描按鈕" - } - }, - "extension": { - "step1": { - "description": "我們建議將 Coinbase Wallet 固定到你的任務欄上,以便更快訪問你的錢包。", - "title": "安裝 Coinbase Wallet 擴展" - }, - "step2": { - "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。", - "title": "刷新你的瀏覽器" - } - } - }, - "compass": { - "extension": { - "step1": { - "description": "我們建議將 Compass Wallet 釘在工作列上,便可以更快存取你的電子錢包。", - "title": "安裝 Compass Wallet 擴充功能" - }, - "step2": { - "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。", - "title": "刷新你的瀏覽器" - } - } - }, - "core": { - "qr_code": { - "step1": { - "description": "我們建議將 Core 加到你的主畫面,以便更快訪問你的錢包。", - "title": "打開 Core 應用程式" - }, - "step2": { - "description": "你可以使用我們的備份功能在手機上輕鬆備份你的錢包。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "掃描後,將會出現連接提示,讓你連接你的錢包。", - "title": "點擊 WalletConnect 按鈕" - } - }, - "extension": { - "step1": { - "description": "我們建議將 Core 釘在你的工作列,以便更快捷地存取你的錢包。", - "title": "安裝 Core 擴充套件" - }, - "step2": { - "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。", - "title": "刷新你的瀏覽器" - } - } - }, - "fox": { - "qr_code": { - "step1": { - "description": "我們建議將 FoxWallet 放在你的主畫面上,以方便更快地存取。", - "title": "打開 FoxWallet 應用程式" - }, - "step2": { - "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "掃描後,將會出現連接提示,讓你連接你的錢包。", - "title": "點擊掃描按鈕" - } - } - }, - "frontier": { - "qr_code": { - "step1": { - "description": "我們建議將 Frontier Wallet 放在你的主畫面上,以便更快捷地存取。", - "title": "打開 Frontier Wallet 應用程式" - }, - "step2": { - "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "掃描後,將會出現連接提示,讓你連接你的錢包。", - "title": "點擊掃描按鈕" - } - }, - "extension": { - "step1": { - "description": "我們建議將 Frontier Wallet 釘在你的工作列,以便更快捷地存取你的錢包。", - "title": "安裝 Frontier Wallet 擴充套件" - }, - "step2": { - "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。", - "title": "刷新你的瀏覽器" - } - } - }, - "im_token": { - "qr_code": { - "step1": { - "title": "打開 imToken 應用程式", - "description": "將 imToken 應用程式放在你的主畫面上,以便更快捷地存取你的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "創建新的錢包或導入現有的錢包。" - }, - "step3": { - "title": "點擊右上角的掃描圖示", - "description": "選擇新連接,然後掃描二維碼並確認提示以連接。" - } - } - }, - "iopay": { - "qr_code": { - "step1": { - "description": "我們建議將 ioPay 放在主畫面,便可以更快存取你的電子錢包。", - "title": "開啟 ioPay 應用程式" - }, - "step2": { - "description": "你可以使用我們的備份功能在手機上輕鬆備份你的錢包。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "掃描後,將會出現連接提示,讓你連接你的錢包。", - "title": "點擊 WalletConnect 按鈕" - } - } - }, - "kaikas": { - "extension": { - "step1": { - "description": "我們建議將 Kaikas 釘在工作列上,便可以更快存取你的電子錢包。", - "title": "安裝 Kaikas 擴充功能" - }, - "step2": { - "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。", - "title": "刷新你的瀏覽器" - } - }, - "qr_code": { - "step1": { - "title": "開啟 Kaikas 應用程式", - "description": "將 Kaikas 應用程式放在主畫面,便可以更快存取你的電子錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "創建新的錢包或導入現有的錢包。" - }, - "step3": { - "title": "點擊右上角的掃描圖示", - "description": "選擇新連接,然後掃描二維碼並確認提示以連接。" - } - } - }, - "kaia": { - "extension": { - "step1": { - "description": "我們建議將 Kaia 釘在工作列上,便可以更快存取你的電子錢包。", - "title": "安裝 Kaia 擴充功能" - }, - "step2": { - "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。", - "title": "刷新你的瀏覽器" - } - }, - "qr_code": { - "step1": { - "title": "打開 Kaia 應用程式", - "description": "將 Kaia 應用程式放在主畫面,以便更快訪問你的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "創建新的錢包或導入現有的錢包。" - }, - "step3": { - "title": "點擊右上角的掃描圖示", - "description": "選擇新連接,然後掃描二維碼並確認提示以連接。" - } - } - }, - "kraken": { - "qr_code": { - "step1": { - "title": "開啟 Kraken Wallet 應用程式", - "description": "新增 Kraken Wallet 至你的主畫面,便可以更快存取你的電子錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "創建新的錢包或導入現有的錢包。" - }, - "step3": { - "title": "點擊二維碼圖示並掃描", - "description": "點擊主畫面上的二維碼圖示,掃描代碼並確認提示以連接。" - } - } - }, - "kresus": { - "qr_code": { - "step1": { - "title": "開啟 Kresus Wallet 應用程式", - "description": "新增 Kresus Wallet 至你的主畫面,便可以更快存取你的電子錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "創建新的錢包或導入現有的錢包。" - }, - "step3": { - "title": "點擊二維碼圖示並掃描", - "description": "點擊主畫面上的二維碼圖示,掃描代碼並確認提示以連接。" - } - } - }, - "magicEden": { - "extension": { - "step1": { - "title": "安裝 Magic Eden 擴充功能", - "description": "我們建議將 Magic Eden 釘在工作列上,便可以更容易存取你的電子錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保用安全的方法備份你的錢包。絕不與任何人分享你的秘密恢復詞。" - }, - "step3": { - "title": "刷新你的瀏覽器", - "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" - } - } - }, - "metamask": { - "qr_code": { - "step1": { - "title": "打開 MetaMask 應用程式", - "description": "我們建議將 MetaMask 放在你的主畫面上,以便更快捷地存取。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" - }, - "step3": { - "title": "點擊掃描按鈕", - "description": "掃描後,將會出現連接提示,讓你連接你的錢包。" - } - }, - "extension": { - "step1": { - "title": "安裝 MetaMask 擴充套件", - "description": "我們建議將 MetaMask 釘在你的工作列,以便更快捷地存取你的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" - }, - "step3": { - "title": "刷新你的瀏覽器", - "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" - } - } - }, - "nestwallet": { - "extension": { - "step1": { - "title": "安裝 NestWallet 擴充功能", - "description": "我們建議將 NestWallet 釘在工作列上,便可以更快存取你的電子錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" - }, - "step3": { - "title": "刷新你的瀏覽器", - "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" - } - } - }, - "okx": { - "qr_code": { - "step1": { - "title": "打開 OKX Wallet 應用程式", - "description": "我們建議將 OKX Wallet 放在你的主畫面上,以便更快捷地存取。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" - }, - "step3": { - "title": "點擊掃描按鈕", - "description": "掃描後,將會出現連接提示,讓你連接你的錢包。" - } - }, - "extension": { - "step1": { - "title": "安裝 OKX Wallet 擴充套件", - "description": "我們建議將 OKX Wallet 釘在你的工作列,以便更快捷地存取你的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" - }, - "step3": { - "title": "刷新你的瀏覽器", - "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" - } - } - }, - "omni": { - "qr_code": { - "step1": { - "title": "打開 Omni 應用程式", - "description": "將 Omni 加到你的主畫面上,以便更快捷地存取你的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "創建新的錢包或導入現有的錢包。" - }, - "step3": { - "title": "點擊二維碼圖示並掃描", - "description": "點擊主畫面上的二維碼圖示,掃描代碼並確認提示以連接。" - } - } - }, - "1inch": { - "qr_code": { - "step1": { - "description": "將 1inch Wallet 放在主畫面,便可以更快存取你的電子錢包。", - "title": "開啟 1inch Wallet 應用程式" - }, - "step2": { - "description": "創建一個錢包和用戶名,或導入現有的錢包。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "掃描後,將會出現連接提示,讓你連接你的錢包。", - "title": "點擊掃瞄 QR 按鈕" - } - } - }, - "token_pocket": { - "qr_code": { - "step1": { - "title": "打開 TokenPocket 應用程式", - "description": "我們建議將 TokenPocket 放在你的主畫面上,以便更快捷地存取。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" - }, - "step3": { - "title": "點擊掃描按鈕", - "description": "掃描後,將會出現連接提示,讓你連接你的錢包。" - } - }, - "extension": { - "step1": { - "title": "安裝 TokenPocket 擴充套件", - "description": "我們建議將 TokenPocket 釘在你的工作列,以便更快捷地存取你的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" - }, - "step3": { - "title": "刷新你的瀏覽器", - "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" - } - } - }, - "trust": { - "qr_code": { - "step1": { - "title": "打開 Trust Wallet 應用程式", - "description": "將 Trust Wallet 放在你的主畫面上,以便更快捷地存取你的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "創建新的錢包或導入現有的錢包。" - }, - "step3": { - "title": "在設定中點擊 WalletConnect", - "description": "選擇新連接,然後掃描二維碼並確認提示以連接。" - } - }, - "extension": { - "step1": { - "title": "安裝 Trust Wallet 擴充套件", - "description": "點擊瀏覽器右上角,然後釘上 Trust Wallet 以便輕鬆存取。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "創建新的錢包或導入現有的錢包。" - }, - "step3": { - "title": "刷新你的瀏覽器", - "description": "設定 Trust Wallet 後,點擊下方以重新整理瀏覽器並加載擴充套件。" - } - } - }, - "uniswap": { - "qr_code": { - "step1": { - "title": "打開 Uniswap 應用程式", - "description": "將 Uniswap Wallet 加到你的主畫面上,以便更快捷地存取你的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "創建新的錢包或導入現有的錢包。" - }, - "step3": { - "title": "點擊二維碼圖示並掃描", - "description": "點擊主畫面上的二維碼圖示,掃描代碼並確認提示以連接。" - } - } - }, - "zerion": { - "qr_code": { - "step1": { - "title": "打開 Zerion 應用程式", - "description": "我們建議把 Zerion 放在主頁上以便更快捷地進入。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" - }, - "step3": { - "title": "點擊掃描按鈕", - "description": "掃描後,將會出現連接提示,讓你連接你的錢包。" - } - }, - "extension": { - "step1": { - "title": "安裝 Zerion 擴充功能", - "description": "我們建議把 Zerion 釘在工作列上,以便更快捷地進入你的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" - }, - "step3": { - "title": "刷新你的瀏覽器", - "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" - } - } - }, - "rainbow": { - "qr_code": { - "step1": { - "title": "打開 Rainbow 應用程式", - "description": "我們建議把 Rainbow 放在主頁上以便更快捷地進入你的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "你可以使用我們的備份功能在手機上輕鬆備份你的錢包。" - }, - "step3": { - "title": "點擊掃描按鈕", - "description": "掃描後,將會出現連接提示,讓你連接你的錢包。" - } - } - }, - "enkrypt": { - "extension": { - "step1": { - "description": "我們建議把 Enkrypt Wallet 釘在工作列上,以便更快捷地進入你的錢包。", - "title": "安裝 Enkrypt Wallet 擴充功能" - }, - "step2": { - "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。", - "title": "刷新你的瀏覽器" - } - } - }, - "frame": { - "extension": { - "step1": { - "description": "我們建議把 Frame 釘在工作列上,以便更快捷地進入你的錢包。", - "title": "安裝 Frame 和配套擴充功能" - }, - "step2": { - "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。", - "title": "刷新你的瀏覽器" - } - } - }, - "one_key": { - "extension": { - "step1": { - "title": "安裝 OneKey Wallet 擴充功能", - "description": "我們建議把 OneKey Wallet 釘在工作列上,以便更快捷地進入你的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" - }, - "step3": { - "title": "刷新你的瀏覽器", - "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" - } - } - }, - "paraswap": { - "qr_code": { - "step1": { - "title": "打開 ParaSwap 應用程式", - "description": "將 ParaSwap Wallet 加到主畫面以更快地開啟你的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "創建新的錢包或導入現有的錢包。" - }, - "step3": { - "title": "點擊二維碼圖示並掃描", - "description": "點擊主畫面上的二維碼圖示,掃描代碼並確認提示以連接。" - } - } - }, - "phantom": { - "extension": { - "step1": { - "title": "安裝 Phantom 擴充功能", - "description": "我們建議把 Phantom 釘在工作列上,以便更容易地進入你的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保用安全的方法備份你的錢包。絕不與任何人分享你的秘密恢復詞。" - }, - "step3": { - "title": "刷新你的瀏覽器", - "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" - } - } - }, - "rabby": { - "extension": { - "step1": { - "title": "安裝 Rabby 擴充功能", - "description": "我們建議把 Rabby 釘在工作列上,以便更快捷地進入你的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" - }, - "step3": { - "title": "刷新你的瀏覽器", - "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" - } - } - }, - "ronin": { - "qr_code": { - "step1": { - "description": "我們建議將 Ronin Wallet 放在主畫面,便可以更快存取你的電子錢包。", - "title": "開啟 Ronin Wallet 應用程式" - }, - "step2": { - "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "掃描後,將會出現連接提示,讓你連接你的錢包。", - "title": "點擊掃描按鈕" - } - }, - "extension": { - "step1": { - "description": "我們建議將 Ronin Wallet 釘在工作列上,便可以更快存取你的電子錢包。", - "title": "安裝 Ronin Wallet 擴充功能" - }, - "step2": { - "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。", - "title": "刷新你的瀏覽器" - } - } - }, - "ramper": { - "extension": { - "step1": { - "title": "安裝 Ramper 擴充功能", - "description": "我們建議將 Ramper 釘在工作列上,便可以更容易存取你的電子錢包。" - }, - "step2": { - "title": "建立錢包", - "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" - }, - "step3": { - "title": "刷新你的瀏覽器", - "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" - } - } - }, - "safeheron": { - "extension": { - "step1": { - "title": "安裝 Core 擴充套件", - "description": "我們建議把 Safeheron 釘在工作列上,以便更快捷地進入你的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" - }, - "step3": { - "title": "刷新你的瀏覽器", - "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" - } - } - }, - "taho": { - "extension": { - "step1": { - "title": "安裝 Taho 擴充功能", - "description": "我們建議把 Taho 釘在工作列上,以便更快捷地進入你的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" - }, - "step3": { - "title": "刷新你的瀏覽器", - "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" - } - } - }, - "wigwam": { - "extension": { - "step1": { - "title": "安裝 Wigwam 擴充套件", - "description": "我們建議將 Wigwam 鎖定到任務欄,方便更快捷地訪問您的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" - }, - "step3": { - "title": "刷新你的瀏覽器", - "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" - } - } - }, - "talisman": { - "extension": { - "step1": { - "title": "安裝 Talisman 擴充功能", - "description": "我們建議把 Talisman 釘在工作列上,以便更快捷地進入你的錢包。" - }, - "step2": { - "title": "建立或導入以太坊錢包", - "description": "請確保用安全的方法備份你的錢包。絕不與任何人分享你的恢復詞。" - }, - "step3": { - "title": "刷新你的瀏覽器", - "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" - } - } - }, - "xdefi": { - "extension": { - "step1": { - "title": "安裝 XDEFI Wallet 擴充功能", - "description": "我們建議把 XDEFI Wallet 釘在工作列上,以便更快捷地進入你的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" - }, - "step3": { - "title": "刷新你的瀏覽器", - "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" - } - } - }, - "zeal": { - "qr_code": { - "step1": { - "title": "開啟 Zeal 應用程式", - "description": "新增 Zeal Wallet 至你的主畫面,便可以更快存取你的電子錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "創建新的錢包或導入現有的錢包。" - }, - "step3": { - "title": "點擊二維碼圖示並掃描", - "description": "點擊主畫面上的二維碼圖示,掃描代碼並確認提示以連接。" - } - }, - "extension": { - "step1": { - "title": "安裝 Zeal 擴充功能", - "description": "我們建議把 Zeal 釘在工作列上,以便更快捷地進入你的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" - }, - "step3": { - "title": "刷新你的瀏覽器", - "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" - } - } - }, - "safepal": { - "extension": { - "step1": { - "title": "安裝 SafePal Wallet 擴充功能", - "description": "點擊瀏覽器右上方並把 SafePal Wallet 釘起來,以便容易進入。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "創建新的錢包或導入現有的錢包。" - }, - "step3": { - "title": "刷新你的瀏覽器", - "description": "設定好 SafePal Wallet 後,點擊下方以更新瀏覽器並加載擴充功能。" - } - }, - "qr_code": { - "step1": { - "title": "打開 SafePal Wallet 應用程式", - "description": "把 SafePal Wallet 放在主頁上以便更快捷地進入你的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "創建新的錢包或導入現有的錢包。" - }, - "step3": { - "title": "在設定中點擊 WalletConnect", - "description": "選擇新連接,然後掃描二維碼並確認提示以連接。" - } - } - }, - "desig": { - "extension": { - "step1": { - "title": "安裝 Desig 擴充功能", - "description": "我們建議把 Desig 釘在工作列上以便更容易地進入你的錢包。" - }, - "step2": { - "title": "建立錢包", - "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" - }, - "step3": { - "title": "刷新你的瀏覽器", - "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" - } - } - }, - "subwallet": { - "extension": { - "step1": { - "title": "安裝 SubWallet 擴充功能", - "description": "我們建議將 SubWallet 固定到你的任務欄,以便更快地訪問你的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保用安全的方法備份你的錢包。絕不與任何人分享你的恢復詞。" - }, - "step3": { - "title": "刷新你的瀏覽器", - "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" - } - }, - "qr_code": { - "step1": { - "title": "打開 SubWallet 應用程式", - "description": "我們建議將 SubWallet 放置在你的主畫面,以便更快地訪問。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" - }, - "step3": { - "title": "點擊掃描按鈕", - "description": "掃描後,將會出現連接提示,讓你連接你的錢包。" - } - } - }, - "clv": { - "extension": { - "step1": { - "title": "安裝 CLV Wallet 擴展", - "description": "我們建議將 CLV Wallet 固定到你的任務欄,以便更快地訪問你的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" - }, - "step3": { - "title": "刷新你的瀏覽器", - "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" - } - }, - "qr_code": { - "step1": { - "title": "打開 CLV Wallet 應用程式", - "description": "我們建議將 CLV Wallet 放置在你的主畫面,以便更快地訪問。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全方法備份你的錢包,絕不要與任何人分享你的秘密短語。" - }, - "step3": { - "title": "點擊掃描按鈕", - "description": "掃描後,將會出現連接提示,讓你連接你的錢包。" - } - } - }, - "okto": { - "qr_code": { - "step1": { - "title": "打開 Okto 應用程式", - "description": "將 Okto 添加到你的主畫面,以便快速訪問" - }, - "step2": { - "title": "創建 MPC 錢包", - "description": "創建賬戶並生成錢包" - }, - "step3": { - "title": "在設定中點擊 WalletConnect", - "description": "點擊右上角的掃描 QR 圖示,並確認提示以連接。" - } - } - }, - "ledger": { - "desktop": { - "step1": { - "title": "打開 Ledger Live 應用程式", - "description": "我們建議將 Ledger Live 放置在你的主畫面,以便更快地訪問。" - }, - "step2": { - "title": "設置你的 Ledger", - "description": "設置一個新的 Ledger 或連接到現有的 Ledger。" - }, - "step3": { - "title": "連接", - "description": "將會出現一個連接提示,以便你連接錢包。" - } - }, - "qr_code": { - "step1": { - "title": "打開 Ledger Live 應用程式", - "description": "我們建議將 Ledger Live 放置在你的主畫面,以便更快地訪問。" - }, - "step2": { - "title": "設置你的 Ledger", - "description": "你可以同步桌面應用程式或連接你的 Ledger。" - }, - "step3": { - "title": "掃描代碼", - "description": "點擊 WalletConnect 並切換到掃描器。掃描後,將會出現一個連接提示,以便你連接錢包。" - } - } - }, - "valora": { - "qr_code": { - "step1": { - "title": "打開 Valora 應用程式", - "description": "我們建議將 Valora 放置在你的主畫面,以便更快地訪問。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "創建新的錢包或導入現有的錢包。" - }, - "step3": { - "title": "點擊掃描按鈕", - "description": "掃描後,將會出現連接提示,讓你連接你的錢包。" - } - } - }, - "gate": { - "qr_code": { - "step1": { - "title": "打開 Gate 應用程式", - "description": "我們建議將 Gate 放置在你的主畫面,以便更快地訪問。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "創建新的錢包或導入現有的錢包。" - }, - "step3": { - "title": "點擊掃描按鈕", - "description": "掃描後,將會出現連接提示,讓你連接你的錢包。" - } - }, - "extension": { - "step1": { - "title": "安裝 Gate 擴充套件", - "description": "我們建議將 Gate 釘選到你的工作列,以便更方便地訪問你的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保用安全的方法備份你的錢包。絕不與任何人分享你的秘密恢復詞。" - }, - "step3": { - "title": "刷新你的瀏覽器", - "description": "設置你的錢包後,點擊下方按鈕刷新瀏覽器並載入擴展。" - } - } - }, - "xportal": { - "qr_code": { - "step1": { - "description": "將 xPortal 放置在你的主畫面,以便更快地訪問你的錢包。", - "title": "打開 xPortal 應用程式" - }, - "step2": { - "description": "創建新的錢包或導入現有的錢包。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "掃描後,將會出現連接提示,讓你連接你的錢包。", - "title": "點擊掃瞄 QR 按鈕" - } - } - }, - "mew": { - "qr_code": { - "step1": { - "description": "我們建議將 MEW Wallet 放置在你的主畫面,以便更快地訪問。", - "title": "打開 MEW Wallet 應用程式" - }, - "step2": { - "description": "你可以使用雲端備份功能輕鬆備份你的錢包。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "掃描後,將會出現連接提示,讓你連接你的錢包。", - "title": "點擊掃描按鈕" - } - } - } - }, - "zilpay": { - "qr_code": { - "step1": { - "title": "開啟 ZilPay 應用程式", - "description": "將 ZilPay 加到主畫面以便更快速存取您的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "創建新的錢包或導入現有的錢包。" - }, - "step3": { - "title": "點擊掃描按鈕", - "description": "掃描後,將會出現連接提示,讓你連接你的錢包。" - } - } - } -} -`;export{u as default}; diff --git a/client2/build/assets/zh_TW-HAEH6VE5-r-nym7hs.js b/client2/build/assets/zh_TW-HAEH6VE5-r-nym7hs.js deleted file mode 100644 index f6584d461..000000000 --- a/client2/build/assets/zh_TW-HAEH6VE5-r-nym7hs.js +++ /dev/null @@ -1,1427 +0,0 @@ -var u=`{ - "connect_wallet": { - "label": "連接錢包", - "wrong_network": { - "label": "錯誤的網絡" - } - }, - "intro": { - "title": "什麼是錢包?", - "description": "錢包用於發送、接收、儲存及顯示數字資產。它還是一種新的登入方式,不需要為每個網站創建新的帳戶和密碼。", - "digital_asset": { - "title": "您的數字資產之家", - "description": "錢包用於發送、接收、儲存及顯示像以太坊和NFT這樣的數字資產。" - }, - "login": { - "title": "新的登入方式", - "description": "不用再為每個網站創建新的帳戶和密碼,只需連接您的錢包。" - }, - "get": { - "label": "獲取錢包" - }, - "learn_more": { - "label": "了解更多" - } - }, - "sign_in": { - "label": "驗證您的賬戶", - "description": "要完成連接,您必須在錢包中簽署一條消息,以驗證您是此賬戶的擁有者。", - "message": { - "send": "簽署訊息", - "preparing": "準備消息...", - "cancel": "取消", - "preparing_error": "準備消息時出錯,請重試!" - }, - "signature": { - "waiting": "等待簽名...", - "verifying": "驗證簽名...", - "signing_error": "簽署消息時出錯,請重試!", - "verifying_error": "驗證簽名時出錯,請重試!", - "oops_error": "糟糕,出錯了!" - } - }, - "connect": { - "label": "連接", - "title": "連接錢包", - "new_to_ethereum": { - "description": "剛開始使用以太坊錢包嗎?", - "learn_more": { - "label": "了解更多" - } - }, - "learn_more": { - "label": "了解更多" - }, - "recent": "最近", - "status": { - "opening": "正在開啟%{wallet}...", - "connecting": "連接中", - "connect_mobile": "繼續在 %{wallet}", - "not_installed": "%{wallet}尚未安裝", - "not_available": "%{wallet}無法使用", - "confirm": "在擴展程序中確認連接", - "confirm_mobile": "在錢包中接受連接請求" - }, - "secondary_action": { - "get": { - "description": "沒有%{wallet}?", - "label": "獲取" - }, - "install": { - "label": "安裝" - }, - "retry": { - "label": "重試" - } - }, - "walletconnect": { - "description": { - "full": "需要官方的WalletConnect模態?", - "compact": "需要WalletConnect模態?" - }, - "open": { - "label": "開啟" - } - } - }, - "connect_scan": { - "title": "使用%{wallet}掃描", - "fallback_title": "用手機掃描" - }, - "connector_group": { - "installed": "已安裝", - "recommended": "推薦", - "other": "其他", - "popular": "熱門", - "more": "更多", - "others": "其他" - }, - "get": { - "title": "獲取錢包", - "action": { - "label": "獲取" - }, - "mobile": { - "description": "手機錢包" - }, - "extension": { - "description": "瀏覽器擴展" - }, - "mobile_and_extension": { - "description": "手機錢包和擴展" - }, - "mobile_and_desktop": { - "description": "移動和桌面錢包" - }, - "looking_for": { - "title": "不是您要找的東西嗎?", - "mobile": { - "description": "在主屏幕上選擇一個錢包以使用不同的錢包提供商。" - }, - "desktop": { - "compact_description": "在主屏幕上選擇一個錢包以使用不同的錢包提供商。", - "wide_description": "在左側選擇一個錢包以使用不同的錢包提供商。" - } - } - }, - "get_options": { - "title": "開始使用%{wallet}", - "short_title": "獲取%{wallet}", - "mobile": { - "title": "%{wallet}移動版本", - "description": "使用手機錢包探索以太坊世界。", - "download": { - "label": "下載應用" - } - }, - "extension": { - "title": "%{wallet}適用於%{browser}", - "description": "直接從您最喜愛的網絡瀏覽器訪問您的錢包。", - "download": { - "label": "添加到%{browser}" - } - }, - "desktop": { - "title": "%{wallet} 在 %{platform}", - "description": "從強大的桌面端本機存取您的錢包。", - "download": { - "label": "添加到 %{platform}" - } - } - }, - "get_mobile": { - "title": "安裝%{wallet}", - "description": "用手機掃描即可在iOS或Android下載", - "continue": { - "label": "繼續" - } - }, - "get_instructions": { - "mobile": { - "connect": { - "label": "連接" - }, - "learn_more": { - "label": "了解更多" - } - }, - "extension": { - "refresh": { - "label": "刷新" - }, - "learn_more": { - "label": "了解更多" - } - }, - "desktop": { - "connect": { - "label": "連接" - }, - "learn_more": { - "label": "了解更多" - } - } - }, - "chains": { - "title": "切換網路", - "wrong_network": "檢測到錯誤網絡,請切換或斷開連接以繼續。", - "confirm": "在錢包中確認", - "switching_not_supported": "您的錢包不支持從 %{appName} 切換網絡。請嘗試從錢包內切換網絡。", - "switching_not_supported_fallback": "您的錢包不支持從此應用切換網絡。請嘗試從錢包內切換網絡。", - "disconnect": "斷開連接", - "connected": "已連接" - }, - "profile": { - "disconnect": { - "label": "斷開連接" - }, - "copy_address": { - "label": "複製地址", - "copied": "已複製!" - }, - "explorer": { - "label": "在探險家中查看更多" - }, - "transactions": { - "description": "%{appName} 交易將顯示在這裡...", - "description_fallback": "您的交易將顯示在這裡...", - "recent": { - "title": "最近交易" - }, - "clear": { - "label": "全部清除" - } - } - }, - "wallet_connectors": { - "argent": { - "qr_code": { - "step1": { - "description": "將 Argent 放在您的主屏幕以更快訪問您的錢包。", - "title": "打開 Argent 應用" - }, - "step2": { - "description": "創建一個錢包和用戶名,或導入現有的錢包。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "掃描後,將出現連接提示以連接您的錢包。", - "title": "點擊掃描 QR 按鈕" - } - } - }, - "berasig": { - "extension": { - "step1": { - "title": "安裝 BeraSig 擴充功能", - "description": "我們建議將 BeraSig 固定到工作列上,以便更輕鬆地存取您的錢包。" - }, - "step2": { - "title": "創建錢包", - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" - }, - "step3": { - "title": "刷新您的瀏覽器", - "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" - } - } - }, - "best": { - "qr_code": { - "step1": { - "title": "打開 Best Wallet 應用程式", - "description": "將 Best Wallet 添加到主畫面以更快訪問您的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "創建一個新的錢包或導入現有的錢包。" - }, - "step3": { - "title": "點擊 QR 圖標並掃描", - "description": "在主螢幕上點擊 QR 圖標,掃描代碼並確認提示以進行連接。" - } - } - }, - "bifrost": { - "qr_code": { - "step1": { - "description": "我們建議將 Bifrost Wallet 放在主屏幕上以更快訪問。", - "title": "打開 Bifrost Wallet 應用" - }, - "step2": { - "description": "使用恢復短語創建或導入錢包。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "掃描後,將出現連接提示以連接您的錢包。", - "title": "點擊掃描按鈕" - } - } - }, - "bitget": { - "qr_code": { - "step1": { - "description": "我們建議將 Bitget Wallet 放在主屏幕上以更快訪問。", - "title": "打開 Bitget Wallet 應用" - }, - "step2": { - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "掃描後,將出現連接提示以連接您的錢包。", - "title": "點擊掃描按鈕" - } - }, - "extension": { - "step1": { - "description": "我們建議將 Bitget Wallet 固定到任務欄,以更快訪問您的錢包。", - "title": "安裝 Bitget Wallet 擴展" - }, - "step2": { - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。", - "title": "刷新您的瀏覽器" - } - } - }, - "bitski": { - "extension": { - "step1": { - "description": "我們建議將 Bitski 固定到任務欄,以更快訪問您的錢包。", - "title": "安裝 Bitski 擴展" - }, - "step2": { - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。", - "title": "刷新您的瀏覽器" - } - } - }, - "bitverse": { - "qr_code": { - "step1": { - "title": "打開 Bitverse Wallet 應用程序", - "description": "將 Bitverse Wallet 添加到主屏幕以便更快速訪問您的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "創建一個新的錢包或導入現有的錢包。" - }, - "step3": { - "title": "點擊 QR 圖標並掃描", - "description": "在主螢幕上點擊 QR 圖標,掃描代碼並確認提示以進行連接。" - } - } - }, - "bloom": { - "desktop": { - "step1": { - "title": "打開 Bloom Wallet 應用程序", - "description": "我們建議將 Bloom Wallet 添加到主屏幕以便更快速訪問。" - }, - "step2": { - "description": "使用恢復短語創建或導入錢包。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "擁有錢包後,點擊連接通過 Bloom 連接。應用程序中會出現連接提示,讓您確認連接。", - "title": "點擊連接" - } - } - }, - "bybit": { - "qr_code": { - "step1": { - "description": "我們建議將 Bybit 添加到主屏幕以便更快速訪問您的錢包。", - "title": "打開 Bybit 應用程序" - }, - "step2": { - "description": "您可以輕鬆使用手機上的備份功能備份您的錢包。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "掃描後,將出現連接提示以連接您的錢包。", - "title": "點擊掃描按鈕" - } - }, - "extension": { - "step1": { - "description": "點擊瀏覽器右上角,將 Bybit Wallet 錨定以便輕鬆訪問。", - "title": "安裝 Bybit Wallet 擴展" - }, - "step2": { - "description": "創建一個新的錢包或導入現有的錢包。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "設置 Bybit Wallet 後,點擊下方刷新瀏覽器並載入擴展。", - "title": "刷新您的瀏覽器" - } - } - }, - "binance": { - "qr_code": { - "step1": { - "description": "我們建議將 Binance 放到主屏幕上,以便更快訪問您的錢包。", - "title": "打開 Binance 應用程序" - }, - "step2": { - "description": "您可以輕鬆使用手機上的備份功能備份您的錢包。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "掃描後,將出現連接提示以連接您的錢包。", - "title": "點擊 WalletConnect 按鈕" - } - } - }, - "coin98": { - "qr_code": { - "step1": { - "description": "我們建議將 Coin98 Wallet 放在主屏幕上以更快訪問您的錢包。", - "title": "打開 Coin98 Wallet 應用" - }, - "step2": { - "description": "您可以輕鬆使用手機上的備份功能備份您的錢包。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "掃描後,將出現連接提示以連接您的錢包。", - "title": "點擊 WalletConnect 按鈕" - } - }, - "extension": { - "step1": { - "description": "在瀏覽器右上角點擊並固定 Coin98 Wallet 以便快速訪問。", - "title": "安裝 Coin98 Wallet 擴展" - }, - "step2": { - "description": "創建一個新的錢包或導入現有的錢包。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "設置好 Coin98 Wallet 後,點擊下方以刷新瀏覽器並加載插件。", - "title": "刷新您的瀏覽器" - } - } - }, - "coinbase": { - "qr_code": { - "step1": { - "description": "我們建議將 Coinbase Wallet 添加到主屏幕,以便更快地訪問。", - "title": "打開 Coinbase Wallet 應用" - }, - "step2": { - "description": "您可以使用雲備份功能輕鬆備份您的錢包。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "掃描後,將出現連接提示以連接您的錢包。", - "title": "點擊掃描按鈕" - } - }, - "extension": { - "step1": { - "description": "我們建議將 Coinbase Wallet 鎖定在任務欄上,以便更快地訪問您的錢包。", - "title": "安裝 Coinbase Wallet 插件" - }, - "step2": { - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。", - "title": "刷新您的瀏覽器" - } - } - }, - "compass": { - "extension": { - "step1": { - "description": "我們建議將 Compass Wallet 錨定到工作列,以便更快訪問您的錢包。", - "title": "安裝 Compass Wallet 擴展" - }, - "step2": { - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。", - "title": "刷新您的瀏覽器" - } - } - }, - "core": { - "qr_code": { - "step1": { - "description": "我們建議將 Core 添加到主屏幕,以便更快地訪問您的錢包。", - "title": "打開 Core 應用" - }, - "step2": { - "description": "您可以輕鬆使用手機上的備份功能備份您的錢包。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "掃描後,將出現連接提示以連接您的錢包。", - "title": "點擊 WalletConnect 按鈕" - } - }, - "extension": { - "step1": { - "description": "我們建議將 Core 鎖定在任務欄上,以便更快地訪問您的錢包。", - "title": "安裝 Core 插件" - }, - "step2": { - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。", - "title": "刷新您的瀏覽器" - } - } - }, - "fox": { - "qr_code": { - "step1": { - "description": "我們建議將 FoxWallet 添加到主屏幕,以便更快地訪問。", - "title": "打開 FoxWallet 應用" - }, - "step2": { - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "掃描後,將出現連接提示以連接您的錢包。", - "title": "點擊掃描按鈕" - } - } - }, - "frontier": { - "qr_code": { - "step1": { - "description": "我們建議將 Frontier Wallet 添加到主屏幕,以便更快地訪問。", - "title": "打開 Frontier Wallet 應用" - }, - "step2": { - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "掃描後,將出現連接提示以連接您的錢包。", - "title": "點擊掃描按鈕" - } - }, - "extension": { - "step1": { - "description": "我們建議將 Frontier Wallet 鎖定在任務欄上,以便更快地訪問您的錢包。", - "title": "安裝 Frontier Wallet 插件" - }, - "step2": { - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。", - "title": "刷新您的瀏覽器" - } - } - }, - "im_token": { - "qr_code": { - "step1": { - "title": "打開 imToken 應用", - "description": "將 imToken 應用放置在主屏幕,以便更快地訪問您的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "創建一個新的錢包或導入現有的錢包。" - }, - "step3": { - "title": "點擊右上角的掃描圖標", - "description": "選擇新連接,然後掃描 QR 碼並確認提示以連接。" - } - } - }, - "iopay": { - "qr_code": { - "step1": { - "description": "我們建議將 ioPay 放在您的主畫面,以便更快速地存取您的錢包。", - "title": "打開 ioPay 應用程式" - }, - "step2": { - "description": "您可以輕鬆使用手機上的備份功能備份您的錢包。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "掃描後,將出現連接提示以連接您的錢包。", - "title": "點擊 WalletConnect 按鈕" - } - } - }, - "kaikas": { - "extension": { - "step1": { - "description": "我們建議將 Kaikas 錨定到工作列,以便更快訪問您的錢包。", - "title": "安裝 Kaikas 擴展" - }, - "step2": { - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。", - "title": "刷新您的瀏覽器" - } - }, - "qr_code": { - "step1": { - "title": "打開 Kaikas 應用程序", - "description": "將 Kaikas 應用程序放到主屏幕上,以便更快訪問您的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "創建一個新的錢包或導入現有的錢包。" - }, - "step3": { - "title": "點擊右上角的掃描圖標", - "description": "選擇新連接,然後掃描 QR 碼並確認提示以連接。" - } - } - }, - "kaia": { - "extension": { - "step1": { - "description": "我們建議將 Kaia 鎖定到您的任務欄,以便更快地訪問您的錢包。", - "title": "安裝 Kaia 擴充功能" - }, - "step2": { - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。", - "title": "刷新您的瀏覽器" - } - }, - "qr_code": { - "step1": { - "title": "打開 Kaia 應用程式", - "description": "將 Kaia 應用程式放在您的主畫面,以便更快地訪問您的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "創建一個新的錢包或導入現有的錢包。" - }, - "step3": { - "title": "點擊右上角的掃描圖標", - "description": "選擇新連接,然後掃描 QR 碼並確認提示以連接。" - } - } - }, - "kraken": { - "qr_code": { - "step1": { - "title": "打開 Kraken Wallet 應用程序", - "description": "將 Kraken Wallet 添加到主屏幕上,以便更快訪問您的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "創建一個新的錢包或導入現有的錢包。" - }, - "step3": { - "title": "點擊 QR 圖標並掃描", - "description": "在主螢幕上點擊 QR 圖標,掃描代碼並確認提示以進行連接。" - } - } - }, - "kresus": { - "qr_code": { - "step1": { - "title": "打開 Kresus Wallet 應用程序", - "description": "將 Kresus Wallet 添加到主屏幕以便更快速訪問您的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "創建一個新的錢包或導入現有的錢包。" - }, - "step3": { - "title": "點擊 QR 圖標並掃描", - "description": "在主螢幕上點擊 QR 圖標,掃描代碼並確認提示以進行連接。" - } - } - }, - "magicEden": { - "extension": { - "step1": { - "title": "安裝 Magic Eden 擴展", - "description": "我們建議將 Magic Eden 錨定到工作列,以便更容易訪問您的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人分享您的秘密恢復短語。" - }, - "step3": { - "title": "刷新您的瀏覽器", - "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" - } - } - }, - "metamask": { - "qr_code": { - "step1": { - "title": "打開 MetaMask 應用", - "description": "我們建議將 MetaMask 添加到主屏幕,以便更快地訪問。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" - }, - "step3": { - "title": "點擊掃描按鈕", - "description": "掃描後,將出現連接提示以連接您的錢包。" - } - }, - "extension": { - "step1": { - "title": "安裝 MetaMask 插件", - "description": "我們建議將 MetaMask 鎖定在任務欄上,以便更快地訪問您的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" - }, - "step3": { - "title": "刷新您的瀏覽器", - "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" - } - } - }, - "nestwallet": { - "extension": { - "step1": { - "title": "安裝 NestWallet 擴展", - "description": "我們建議將 NestWallet 錨定到工作列,以便更快訪問您的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" - }, - "step3": { - "title": "刷新您的瀏覽器", - "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" - } - } - }, - "okx": { - "qr_code": { - "step1": { - "title": "打開 OKX Wallet 應用", - "description": "我們建議將 OKX Wallet 添加到主屏幕,以便更快地訪問。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" - }, - "step3": { - "title": "點擊掃描按鈕", - "description": "掃描後,將出現連接提示以連接您的錢包。" - } - }, - "extension": { - "step1": { - "title": "安裝 OKX Wallet 插件", - "description": "我們建議將 OKX Wallet 鎖定在任務欄上,以便更快地訪問您的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" - }, - "step3": { - "title": "刷新您的瀏覽器", - "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" - } - } - }, - "omni": { - "qr_code": { - "step1": { - "title": "打開 Omni 應用", - "description": "將 Omni 添加到主屏幕,以便更快地訪問您的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "創建一個新的錢包或導入現有的錢包。" - }, - "step3": { - "title": "點擊 QR 圖標並掃描", - "description": "點擊主屏幕上的 QR 圖標,掃描代碼並確認提示連接。" - } - } - }, - "1inch": { - "qr_code": { - "step1": { - "description": "將 1inch Wallet 放到主屏幕上,以便更快訪問您的錢包。", - "title": "打開 1inch Wallet 應用程序" - }, - "step2": { - "description": "創建一個錢包和用戶名,或導入現有的錢包。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "掃描後,將出現連接提示以連接您的錢包。", - "title": "點擊掃描 QR 按鈕" - } - } - }, - "token_pocket": { - "qr_code": { - "step1": { - "title": "打開 TokenPocket 應用", - "description": "我們建議將 TokenPocket 放在您的主螢幕上,以便更快速地訪問。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" - }, - "step3": { - "title": "點擊掃描按鈕", - "description": "掃描後,將出現連接提示以連接您的錢包。" - } - }, - "extension": { - "step1": { - "title": "安裝 TokenPocket 擴展", - "description": "我們建議將 TokenPocket 固定到您的工作列上,以便更快速地訪問您的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" - }, - "step3": { - "title": "刷新您的瀏覽器", - "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" - } - } - }, - "trust": { - "qr_code": { - "step1": { - "title": "打開 Trust Wallet 應用程式", - "description": "將 Trust Wallet 放在您的主螢幕上,以便更快地訪問您的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "創建一個新的錢包或導入現有的錢包。" - }, - "step3": { - "title": "在設定中點擊 WalletConnect", - "description": "選擇新連接,然後掃描 QR 碼並確認提示以連接。" - } - }, - "extension": { - "step1": { - "title": "安裝 Trust Wallet 擴展", - "description": "點擊瀏覽器右上角並固定 Trust Wallet,以便輕鬆訪問。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "創建一個新的錢包或導入現有的錢包。" - }, - "step3": { - "title": "刷新您的瀏覽器", - "description": "設置 Trust Wallet 後,點擊下方刷新瀏覽器並加載擴展。" - } - } - }, - "uniswap": { - "qr_code": { - "step1": { - "title": "打開 Uniswap 應用程式", - "description": "將 Uniswap Wallet 放在您的主螢幕上,以便更快速地訪問您的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "創建一個新的錢包或導入現有的錢包。" - }, - "step3": { - "title": "點擊 QR 圖標並掃描", - "description": "在主螢幕上點擊 QR 圖標,掃描代碼並確認提示以進行連接。" - } - } - }, - "zerion": { - "qr_code": { - "step1": { - "title": "打開 Zerion 應用程式", - "description": "我們建議將 Zerion 放在您的主螢幕上,以便更快速地訪問。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" - }, - "step3": { - "title": "點擊掃描按鈕", - "description": "掃描後,將出現連接提示以連接您的錢包。" - } - }, - "extension": { - "step1": { - "title": "安裝 Zerion 擴展", - "description": "我們建議將 Zerion 固定到您的工作列上,以便更快速地訪問您的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" - }, - "step3": { - "title": "刷新您的瀏覽器", - "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" - } - } - }, - "rainbow": { - "qr_code": { - "step1": { - "title": "打開 Rainbow 應用程式", - "description": "我們建議將 Rainbow 放在您的主螢幕上,以便更快速地訪問您的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "您可以輕鬆使用手機上的備份功能備份您的錢包。" - }, - "step3": { - "title": "點擊掃描按鈕", - "description": "掃描後,將出現連接提示以連接您的錢包。" - } - } - }, - "enkrypt": { - "extension": { - "step1": { - "description": "我們建議將 Enkrypt Wallet 固定到您的工作列上,以便更快速地訪問您的錢包。", - "title": "安裝 Enkrypt Wallet 擴展" - }, - "step2": { - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。", - "title": "刷新您的瀏覽器" - } - } - }, - "frame": { - "extension": { - "step1": { - "description": "我們建議將 Frame 固定到您的工作列上,以便更快速地訪問您的錢包。", - "title": "安裝 Frame 和輔助擴展" - }, - "step2": { - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。", - "title": "刷新您的瀏覽器" - } - } - }, - "one_key": { - "extension": { - "step1": { - "title": "安裝 OneKey Wallet 擴展", - "description": "我們建議將 OneKey Wallet 固定到您的工作列上,以便更快速地訪問您的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" - }, - "step3": { - "title": "刷新您的瀏覽器", - "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" - } - } - }, - "paraswap": { - "qr_code": { - "step1": { - "title": "打開 ParaSwap 應用程式", - "description": "將 ParaSwap Wallet 添加到主畫面以更快訪問您的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "創建一個新的錢包或導入現有的錢包。" - }, - "step3": { - "title": "點擊 QR 圖標並掃描", - "description": "在主螢幕上點擊 QR 圖標,掃描代碼並確認提示以進行連接。" - } - } - }, - "phantom": { - "extension": { - "step1": { - "title": "安裝 Phantom 擴展", - "description": "我們建議將 Phantom 固定到您的工作列上,以便更輕鬆地訪問您的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人分享您的秘密恢復短語。" - }, - "step3": { - "title": "刷新您的瀏覽器", - "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" - } - } - }, - "rabby": { - "extension": { - "step1": { - "title": "安裝 Rabby 擴展", - "description": "我們建議將 Rabby 固定到您的工作列上,以便更快速地訪問您的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" - }, - "step3": { - "title": "刷新您的瀏覽器", - "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" - } - } - }, - "ronin": { - "qr_code": { - "step1": { - "description": "我們建議將 Ronin Wallet 添加到主屏幕以便更快速訪問。", - "title": "打開 Ronin Wallet 應用程序" - }, - "step2": { - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "掃描後,將出現連接提示以連接您的錢包。", - "title": "點擊掃描按鈕" - } - }, - "extension": { - "step1": { - "description": "我們建議將 Ronin Wallet 錨定到任務欄以便更快速訪問錢包。", - "title": "安裝 Ronin Wallet 擴展" - }, - "step2": { - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。", - "title": "刷新您的瀏覽器" - } - } - }, - "ramper": { - "extension": { - "step1": { - "title": "安裝 Ramper 擴展", - "description": "我們建議將 Ramper 錨定到任務欄以便更容易訪問錢包。" - }, - "step2": { - "title": "創建錢包", - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" - }, - "step3": { - "title": "刷新您的瀏覽器", - "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" - } - } - }, - "safeheron": { - "extension": { - "step1": { - "title": "安裝 Core 插件", - "description": "我們建議將 Safeheron 固定到您的工作列上,以便更快速地訪問您的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" - }, - "step3": { - "title": "刷新您的瀏覽器", - "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" - } - } - }, - "taho": { - "extension": { - "step1": { - "title": "安裝 Taho 擴展", - "description": "我們建議將 Taho 固定到您的工作列上,以便更快速地訪問您的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" - }, - "step3": { - "title": "刷新您的瀏覽器", - "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" - } - } - }, - "wigwam": { - "extension": { - "step1": { - "title": "安裝 Wigwam 擴充套件", - "description": "我們建議將 Wigwam 鎖定到任務欄,以便更快存取您的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" - }, - "step3": { - "title": "刷新您的瀏覽器", - "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" - } - } - }, - "talisman": { - "extension": { - "step1": { - "title": "安裝 Talisman 擴展", - "description": "我們建議將 Talisman 固定到您的工作列上,以便更快速地訪問您的錢包。" - }, - "step2": { - "title": "創建或導入以太坊錢包", - "description": "請確保使用安全的方法備份您的錢包。絕不與任何人分享您的恢復短語。" - }, - "step3": { - "title": "刷新您的瀏覽器", - "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" - } - } - }, - "xdefi": { - "extension": { - "step1": { - "title": "安裝 XDEFI Wallet 擴展程序", - "description": "我們建議將 XDEFI Wallet 釘選到您的任務欄,以便更快訪問錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" - }, - "step3": { - "title": "刷新您的瀏覽器", - "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" - } - } - }, - "zeal": { - "qr_code": { - "step1": { - "title": "打開 Zeal 應用程序", - "description": "將 Zeal Wallet 添加到主屏幕上,以便更快訪問您的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "創建一個新的錢包或導入現有的錢包。" - }, - "step3": { - "title": "點擊 QR 圖標並掃描", - "description": "在主螢幕上點擊 QR 圖標,掃描代碼並確認提示以進行連接。" - } - }, - "extension": { - "step1": { - "title": "安裝 Zeal 擴展程序", - "description": "我們建議將 Zeal 釘選到您的任務欄,以便更快訪問錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" - }, - "step3": { - "title": "刷新您的瀏覽器", - "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" - } - } - }, - "safepal": { - "extension": { - "step1": { - "title": "安裝 SafePal Wallet 擴展程序", - "description": "點擊您的瀏覽器右上角,將 SafePal Wallet 釘選,方便訪問。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "創建一個新的錢包或導入現有的錢包。" - }, - "step3": { - "title": "刷新您的瀏覽器", - "description": "設置 SafePal Wallet 後,點擊下方刷新瀏覽器並加載擴展程序。" - } - }, - "qr_code": { - "step1": { - "title": "打開 SafePal Wallet 應用程序", - "description": "將 SafePal Wallet 添加到您的主屏幕,以便更快捷地訪問錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "創建一個新的錢包或導入現有的錢包。" - }, - "step3": { - "title": "在設定中點擊 WalletConnect", - "description": "選擇新連接,然後掃描 QR 碼並確認提示以連接。" - } - } - }, - "desig": { - "extension": { - "step1": { - "title": "安裝 Desig 擴展程序", - "description": "我們建議將 Desig 釘選到您的任務欄,以便更容易訪問錢包。" - }, - "step2": { - "title": "創建錢包", - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" - }, - "step3": { - "title": "刷新您的瀏覽器", - "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" - } - } - }, - "subwallet": { - "extension": { - "step1": { - "title": "安裝 SubWallet 擴展程序", - "description": "我們建議將 SubWallet 釘選到您的任務欄,以便更快訪問錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全的方法備份您的錢包。絕不與任何人分享您的恢復短語。" - }, - "step3": { - "title": "刷新您的瀏覽器", - "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" - } - }, - "qr_code": { - "step1": { - "title": "打開 SubWallet 應用程序", - "description": "我們建議將 SubWallet 添加到您的主屏幕,以便更快捷地訪問。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" - }, - "step3": { - "title": "點擊掃描按鈕", - "description": "掃描後,將出現連接提示以連接您的錢包。" - } - } - }, - "clv": { - "extension": { - "step1": { - "title": "安裝 CLV Wallet 擴展程序", - "description": "我們建議將 CLV Wallet 釘選到您的任務欄,以便更快訪問錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" - }, - "step3": { - "title": "刷新您的瀏覽器", - "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" - } - }, - "qr_code": { - "step1": { - "title": "打開 CLV Wallet 應用程序", - "description": "我們建議將 CLV Wallet 添加到您的主屏幕,以便更快訪問。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人共享您的秘密短語。" - }, - "step3": { - "title": "點擊掃描按鈕", - "description": "掃描後,將出現連接提示以連接您的錢包。" - } - } - }, - "okto": { - "qr_code": { - "step1": { - "title": "打開 Okto 應用程序", - "description": "將 Okto 添加到您的主屏幕,便捷訪問" - }, - "step2": { - "title": "創建 MPC 錢包", - "description": "創建賬戶並生成錢包" - }, - "step3": { - "title": "在設定中點擊 WalletConnect", - "description": "點擊右上角的掃描二維碼圖標,確認提示以連接。" - } - } - }, - "ledger": { - "desktop": { - "step1": { - "title": "打開 Ledger Live 應用程序", - "description": "我們建議將 Ledger Live 添加到主屏幕以便更快速訪問。" - }, - "step2": { - "title": "設置您的 Ledger", - "description": "設置一個新的 Ledger 或連接到現有的。" - }, - "step3": { - "title": "連接", - "description": "會出現一個連接提示,讓您連接錢包。" - } - }, - "qr_code": { - "step1": { - "title": "打開 Ledger Live 應用程序", - "description": "我們建議將 Ledger Live 添加到主屏幕以便更快速訪問。" - }, - "step2": { - "title": "設置您的 Ledger", - "description": "您可以同步桌面應用程序或連接 Ledger。" - }, - "step3": { - "title": "掃描代碼", - "description": "點擊 WalletConnect 然後切換到掃描儀。掃描後,會出現連接提示,讓您連接錢包。" - } - } - }, - "valora": { - "qr_code": { - "step1": { - "title": "打開 Valora 應用程式", - "description": "我們建議將 Valora 放在您的主畫面上以便更快存取。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "創建一個新的錢包或導入現有的錢包。" - }, - "step3": { - "title": "點擊掃描按鈕", - "description": "掃描後,將出現連接提示以連接您的錢包。" - } - } - }, - "gate": { - "qr_code": { - "step1": { - "title": "打開 Gate 應用程式", - "description": "我們建議將 Gate 添加到主屏幕以便更快速訪問。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "創建一個新的錢包或導入現有的錢包。" - }, - "step3": { - "title": "點擊掃描按鈕", - "description": "掃描後,將出現連接提示以連接您的錢包。" - } - }, - "extension": { - "step1": { - "title": "安裝 Gate 插件", - "description": "我們建議將 Gate 固定到任務欄上,方便快速訪問您的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "請確保使用安全的方法備份您的錢包。切勿與任何人分享您的秘密恢復短語。" - }, - "step3": { - "title": "刷新您的瀏覽器", - "description": "一旦設置好您的錢包,點擊下方刷新瀏覽器並加載擴展。" - } - } - }, - "xportal": { - "qr_code": { - "step1": { - "description": "將 xPortal 添加到主屏幕以便更快速訪問您的錢包。", - "title": "打開 xPortal 應用程式" - }, - "step2": { - "description": "創建一個新的錢包或導入現有的錢包。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "掃描後,將出現連接提示以連接您的錢包。", - "title": "點擊掃描 QR 按鈕" - } - } - }, - "mew": { - "qr_code": { - "step1": { - "description": "我們建議將 MEW Wallet 添加到主屏幕以便更快速訪問。", - "title": "打開 MEW Wallet 應用程式" - }, - "step2": { - "description": "您可以使用雲備份功能輕鬆備份您的錢包。", - "title": "創建或導入錢包" - }, - "step3": { - "description": "掃描後,將出現連接提示以連接您的錢包。", - "title": "點擊掃描按鈕" - } - } - } - }, - "zilpay": { - "qr_code": { - "step1": { - "title": "打開 ZilPay 應用程式", - "description": "將 ZilPay 添加到您的主畫面,更快速地存取您的錢包。" - }, - "step2": { - "title": "創建或導入錢包", - "description": "創建一個新的錢包或導入現有的錢包。" - }, - "step3": { - "title": "點擊掃描按鈕", - "description": "掃描後,將出現連接提示以連接您的錢包。" - } - } - } -} -`;export{u as default}; diff --git a/client2/build/assets/zksync-DH7HK5U4-Dt4usFw6.js b/client2/build/assets/zksync-DH7HK5U4-Dt4usFw6.js deleted file mode 100644 index 5ec3a7e6a..000000000 --- a/client2/build/assets/zksync-DH7HK5U4-Dt4usFw6.js +++ /dev/null @@ -1 +0,0 @@ -var l="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2028%2028%22%3E%3Cg%20transform%3D%22translate(0%2C0)%20scale(0.7)%22%3E%3Cg%20clip-path%3D%22url(%23a)%22%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M0%200h40v40H0z%22%2F%3E%3Cpath%20fill%3D%22url(%23b)%22%20fill-opacity%3D%22.1%22%20d%3D%22M0%200h40v40H0z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20fill-rule%3D%22evenodd%22%20d%3D%22m32.25%2020.005-6.954-6.922v5.066l-6.901%205.078h6.901v3.7l6.954-6.922ZM7.75%2020.005l6.954%206.923v-5.036l6.901-5.119h-6.901v-3.7L7.75%2020.004Z%22%20clip-rule%3D%22evenodd%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22b%22%20x1%3D%220%22%20x2%3D%2220%22%20y1%3D%220%22%20y2%3D%2240%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23fff%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23fff%22%20stop-opacity%3D%220%22%2F%3E%3C%2FlinearGradient%3E%3CclipPath%20id%3D%22a%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M0%200h40v40H0z%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fg%3E%3C%2Fsvg%3E";export{l as default}; diff --git a/client2/build/assets/zora-FYL5H3IO-iB4wygST.js b/client2/build/assets/zora-FYL5H3IO-iB4wygST.js deleted file mode 100644 index 9f5adb994..000000000 --- a/client2/build/assets/zora-FYL5H3IO-iB4wygST.js +++ /dev/null @@ -1 +0,0 @@ -var o="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2228%22%20height%3D%2228%22%20fill%3D%22none%22%3E%3Cg%20clip-path%3D%22url(%23a)%22%3E%3Cpath%20fill%3D%22url(%23b)%22%20d%3D%22M.943%2013.754c0%207.586%205.944%2013.755%2013.252%2013.755%207.308%200%2013.252-6.17%2013.252-13.755C27.44%206.17%2021.497%200%2014.195%200%206.887%200%20.943%206.17.943%2013.754Z%22%2F%3E%3Cpath%20fill%3D%22url(%23c)%22%20d%3D%22M.943%2013.754c0%207.586%205.944%2013.755%2013.252%2013.755%207.308%200%2013.252-6.17%2013.252-13.755C27.44%206.17%2021.497%200%2014.195%200%206.887%200%20.943%206.17.943%2013.754Z%22%2F%3E%3Cpath%20fill%3D%22url(%23d)%22%20d%3D%22M.943%2013.754c0%207.586%205.944%2013.755%2013.252%2013.755%207.308%200%2013.252-6.17%2013.252-13.755C27.44%206.17%2021.497%200%2014.195%200%206.887%200%20.943%206.17.943%2013.754Z%22%2F%3E%3C%2Fg%3E%3Cdefs%3E%3CradialGradient%20id%3D%22b%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(19.9547%200%200%2020.7113%2018.16%206.7)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%22.005%22%20stop-color%3D%22%23fff%22%2F%3E%3Cstop%20offset%3D%22.458%22%20stop-color%3D%22%23B7D8C8%22%2F%3E%3Cstop%20offset%3D%22.656%22%20stop-color%3D%22%236D9487%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%234B4C3C%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22c%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(19.9547%200%200%2020.7113%2018.16%206.7)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%22.005%22%20stop-color%3D%22%23fff%22%2F%3E%3Cstop%20offset%3D%22.458%22%20stop-color%3D%22%23B5B4C6%22%2F%3E%3Cstop%20offset%3D%22.656%22%20stop-color%3D%22%239B8F8F%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%234B4C3C%22%2F%3E%3C%2FradialGradient%3E%3CradialGradient%20id%3D%22d%22%20cx%3D%220%22%20cy%3D%220%22%20r%3D%221%22%20gradientTransform%3D%22matrix(19.9547%200%200%2020.7113%2018.16%206.7)%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20offset%3D%22.156%22%20stop-color%3D%22%23DCC8D0%22%2F%3E%3Cstop%20offset%3D%22.302%22%20stop-color%3D%22%2378C8CF%22%2F%3E%3Cstop%20offset%3D%22.427%22%20stop-color%3D%22%234D959E%22%2F%3E%3Cstop%20offset%3D%22.557%22%20stop-color%3D%22%23305EB9%22%2F%3E%3Cstop%20offset%3D%22.797%22%20stop-color%3D%22%23311F12%22%2F%3E%3Cstop%20offset%3D%22.906%22%20stop-color%3D%22%23684232%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%232D1C13%22%2F%3E%3C%2FradialGradient%3E%3CclipPath%20id%3D%22a%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M0%200h28v28H0z%22%2F%3E%3C%2FclipPath%3E%3C%2Fdefs%3E%3C%2Fsvg%3E";export{o as default}; diff --git a/client2/build/index.html b/client2/build/index.html deleted file mode 100644 index 2201874e2..000000000 --- a/client2/build/index.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - Design System Implementation - - - - - -
- - - \ No newline at end of file diff --git a/client2/src/components/ProtocolDesignerDashboard.tsx b/client2/src/components/ProtocolDesignerDashboard.tsx index 090cfa827..41f8e9422 100644 --- a/client2/src/components/ProtocolDesignerDashboard.tsx +++ b/client2/src/components/ProtocolDesignerDashboard.tsx @@ -28,37 +28,40 @@ export default function ProtocolDesignerDashboard({ onNavigate }: ProtocolDesign const [detailsDialogOpen, setDetailsDialogOpen] = useState(false); const [selectedProtocol, setSelectedProtocol] = useState(null); - const [protocols, setProtocols] = useState([ - { - id: '1', - name: 'DeFi Protocol Alpha', - feeRecipient: '0x0000000000000000000000000000000000000000', - pools: 5, - revenue: '$28,450', - status: 'active', - }, - { - id: '2', - name: 'Liquidity Hub Beta', - feeRecipient: '0x0000000000000000000000000000000000000000', - pools: 3, - revenue: '$16,780', - status: 'active', - }, - ]); + // Store all protocols (including user-created ones) + const [protocols, setProtocols] = useState([]); + + // Filter protocols by connected wallet address + const userProtocols = protocols.filter( + (protocol) => protocol.creator?.toLowerCase() === address?.toLowerCase() + ); + + // Calculate stats from user's protocols + const totalPools = userProtocols.reduce((sum, p) => sum + (p.pools || 0), 0); + const totalRevenue = userProtocols.reduce((sum, p) => { + const revenue = parseFloat(p.revenue?.replace(/[$,]/g, '') || '0'); + return sum + revenue; + }, 0); const stats = [ - { icon: Layers, label: 'Total Protocols', value: String(protocols.length), color: 'primary' }, - { icon: TrendingUp, label: 'Total Pools', value: '8', color: 'secondary' }, - { icon: DollarSign, label: 'Total Revenue', value: '$45,230', color: 'accent' }, + { icon: Layers, label: 'Total Protocols', value: String(userProtocols.length), color: 'primary' }, + { icon: TrendingUp, label: 'Total Pools', value: String(totalPools), color: 'secondary' }, + { icon: DollarSign, label: 'Total Revenue', value: `$${totalRevenue.toLocaleString()}`, color: 'accent' }, ]; const handleCreateProtocolSuccess = ( - protocolId: bigint, - chainId: number, - protocolName: string, + protocolId: bigint, + chainId: number, + protocolName: string, feeRecipient?: string ) => { + // Check if protocol already exists to prevent duplicates + const exists = protocols.some((p) => p.protocolId === protocolId.toString()); + if (exists) { + console.log('Protocol already exists, skipping duplicate creation'); + return; + } + // Create a new protocol entry with the name and fee recipient from the transaction const newProtocol: Protocol = { id: `protocol-${protocolId.toString()}`, @@ -73,7 +76,7 @@ export default function ProtocolDesignerDashboard({ onNavigate }: ProtocolDesign }; setProtocols([...protocols, newProtocol]); setCreateDialogOpen(false); - + // Automatically open ProtocolDetailsDialog after success // Small delay to allow confetti to show first setTimeout(() => { @@ -297,7 +300,31 @@ export default function ProtocolDesignerDashboard({ onNavigate }: ProtocolDesign
- {protocols.map((protocol, index) => ( + {userProtocols.length === 0 && ( +
+

+ No protocols created yet +

+

+ {!address + ? 'Connect your wallet to view your protocols' + : 'Click "Create Protocol" to get started'} +

+
+ )} + {userProtocols.map((protocol, index) => (
{ @@ -185,16 +187,21 @@ export default function CreateProtocolDialog({ } }, [step, protocolId, isConfirmed, hash, triggerConfetti]); - // Auto-close dialog on transaction error + // Reset to select-chain on transaction error to allow retry useEffect(() => { if (error && (step === 'creating' || isPending || isConfirming)) { - console.log('Transaction error detected, closing dialog in 3 seconds'); + console.log('Transaction error detected, resetting to allow retry'); + // Don't auto-close, just reset to allow user to retry const timer = setTimeout(() => { - onOpenChange(false); + setStep('select-chain'); + setSelectedChainId(undefined); + setProtocolName(''); + hasCalledCreateProtocol.current = false; + isSwitchingChain.current = false; }, 3000); return () => clearTimeout(timer); } - }, [error, step, isPending, isConfirming, onOpenChange]); + }, [error, step, isPending, isConfirming]); // Monitor chain changes and auto-proceed to creating when correct chain is active useEffect(() => { @@ -235,27 +242,21 @@ export default function CreateProtocolDialog({ } }, [step, isConnected, selectedChainId, chainId, isPending, hash, protocolName, createProtocol]); - // Fallback: If transaction is confirmed but success step not reached, trigger success + // Wait for the actual ProtocolCreated event - DO NOT use fallback fake IDs + // The onSuccess callback from useCreateProtocol will trigger when the real event is detected useEffect(() => { - if (step === 'creating' && isConfirmed && hash && !error) { - console.log('Transaction confirmed! Moving to success step (fallback if event not detected)'); - // Wait a bit for event, then trigger success if not already triggered - const successTimer = setTimeout(() => { - if (step === 'creating' && isConfirmed) { - console.log('Triggering success step from transaction confirmation (event may not have fired)'); - setStep('success'); - // Use transaction hash as fallback protocol ID if event didn't fire - if (!protocolId && onSuccess) { - const fallbackId = BigInt(parseInt(hash.slice(0, 10), 16)); - const feeRecipient = isConnected && address ? address : ''; - onSuccess(fallbackId, selectedChainId || chainId, protocolName, feeRecipient); - } + if (step === 'creating' && isConfirmed && hash && !error && !protocolId) { + console.log('Transaction confirmed! Waiting for ProtocolCreated event to get real tokenId...'); + // Log warning if event takes too long + const warningTimer = setTimeout(() => { + if (step === 'creating' && !protocolId) { + console.warn('Still waiting for ProtocolCreated event after 10 seconds. This may indicate an issue with event emission.'); } - }, 2000); // Wait 2 seconds for event, then fallback - - return () => clearTimeout(successTimer); + }, 10000); + + return () => clearTimeout(warningTimer); } - }, [step, isConfirmed, hash, error, protocolId, onSuccess, selectedChainId, chainId, protocolName, isConnected, address]); + }, [step, isConfirmed, hash, error, protocolId]); const handleClose = () => { if (step !== 'creating' && !isPending && !isConfirming) { @@ -602,11 +603,11 @@ export default function CreateProtocolDialog({ )} {error && ( -

@@ -616,7 +617,7 @@ export default function CreateProtocolDialog({ {error instanceof Error ? error.message : String(error)}

- Dialog will close automatically in 3 seconds... + Resetting in 3 seconds. You can try again with a different chain.

)} diff --git a/client2/src/components/protocol/ProtocolDetailsDialog.tsx b/client2/src/components/protocol/ProtocolDetailsDialog.tsx index df9f6c81a..686ee9359 100644 --- a/client2/src/components/protocol/ProtocolDetailsDialog.tsx +++ b/client2/src/components/protocol/ProtocolDetailsDialog.tsx @@ -33,7 +33,8 @@ export default function ProtocolDetailsDialog({ const { address } = useWallet(); // Check if current user is the protocol creator - const isCreator = protocol.creator?.toLowerCase() === address?.toLowerCase(); + // Allow editing if creator matches OR if creator is not set (for newly created protocols) + const isCreator = !protocol.creator || protocol.creator?.toLowerCase() === address?.toLowerCase(); if (!isCreator) { return ( diff --git a/client2/src/components/protocol/ProtocolDetailsForm.tsx b/client2/src/components/protocol/ProtocolDetailsForm.tsx index 77ac8dd1c..ed62b1266 100644 --- a/client2/src/components/protocol/ProtocolDetailsForm.tsx +++ b/client2/src/components/protocol/ProtocolDetailsForm.tsx @@ -48,15 +48,16 @@ export default function ProtocolDetailsForm({ className="block mb-2 font-heading font-medium" style={{ color: 'var(--color-secondary)', fontSize: 'var(--font-size-body-sm)' }} > - Website URL + Website URL * - Roles (comma-separated) + Roles (comma-separated) * -

- Separate multiple roles with commas -

+ {errors.roles ? ( +

+ {errors.roles.message} +

+ ) : ( +

+ Separate multiple roles with commas +

+ )}
diff --git a/client2/src/hooks/useCreateProtocol.ts b/client2/src/hooks/useCreateProtocol.ts index b7acc3a64..63ee7580d 100644 --- a/client2/src/hooks/useCreateProtocol.ts +++ b/client2/src/hooks/useCreateProtocol.ts @@ -1,9 +1,10 @@ import { useState, useEffect } from 'react'; -import { useWriteContract, useWaitForTransactionReceipt, useWatchContractEvent } from 'wagmi'; +import { useWriteContract, useWaitForTransactionReceipt, useWatchContractEvent, usePublicClient } from 'wagmi'; import { protocolAdminClientABI } from '../lib/contracts/abi'; import { getContractAddress } from '../lib/contracts/protocolAdminClient'; import { useAccount } from 'wagmi'; import type { Address } from 'viem'; +import { decodeEventLog } from 'viem'; interface UseCreateProtocolOptions { chainId: number; @@ -19,6 +20,7 @@ export function useCreateProtocol({ onError, }: UseCreateProtocolOptions) { const { address } = useAccount(); + const publicClient = usePublicClient({ chainId }); const [protocolId, setProtocolId] = useState(null); const [isSubscribed, setIsSubscribed] = useState(false); @@ -53,6 +55,7 @@ export function useCreateProtocol({ const { isLoading: isConfirming, isSuccess: isConfirmed, + data: receipt, error: receiptError, } = useWaitForTransactionReceipt({ hash, @@ -63,7 +66,7 @@ export function useCreateProtocol({ address: contractAddress, abi: protocolAdminClientABI, eventName: 'ProtocolCreated', - enabled: !!hash && isConfirmed, // Only watch after transaction is confirmed + enabled: !!hash, // Start watching as soon as transaction is submitted onLogs(logs) { console.log('ProtocolCreated event logs received:', logs); // Find the log for this transaction @@ -90,29 +93,58 @@ export function useCreateProtocol({ }, }); - // Fallback: If transaction is confirmed but no event detected after 5 seconds, - // try to get protocol ID from transaction receipt or use a placeholder + // Parse ProtocolCreated event from transaction receipt useEffect(() => { - if (isConfirmed && hash && !protocolId && !isSubscribed) { - console.log('Transaction confirmed but no event detected yet. Setting fallback timer...'); - const fallbackTimer = setTimeout(() => { - if (!protocolId && !isSubscribed) { - console.warn('No ProtocolCreated event detected after 5 seconds. Using fallback.'); - // Use a placeholder protocol ID based on transaction hash - // In production, you might want to query the contract for the actual protocol ID - const fallbackId = BigInt(parseInt(hash.slice(0, 10), 16)); - setProtocolId(fallbackId); - setIsSubscribed(true); - if (onSuccess) { - console.log('Calling onSuccess with fallback ID:', fallbackId.toString()); - onSuccess(fallbackId); + if (isConfirmed && receipt && !protocolId && !isSubscribed) { + console.log('Transaction confirmed. Parsing receipt logs for ProtocolCreated event...'); + console.log('Receipt:', receipt); + + try { + // Find the ProtocolCreated event in the logs + const protocolCreatedLog = receipt.logs.find((log) => { + try { + const decoded = decodeEventLog({ + abi: protocolAdminClientABI, + data: log.data, + topics: log.topics, + }); + return decoded.eventName === 'ProtocolCreated'; + } catch { + return false; } + }); + + if (protocolCreatedLog) { + const decoded = decodeEventLog({ + abi: protocolAdminClientABI, + data: protocolCreatedLog.data, + topics: protocolCreatedLog.topics, + }); + + console.log('Decoded ProtocolCreated event:', decoded); + + if (decoded.eventName === 'ProtocolCreated' && decoded.args) { + const args = decoded.args as { tokenId?: bigint; protocolCaller?: Address }; + const tokenId = args.tokenId; + + if (tokenId) { + console.log('ProtocolCreated event found! TokenId:', tokenId.toString()); + setProtocolId(tokenId); + setIsSubscribed(true); + if (onSuccess) { + onSuccess(tokenId); + } + } + } + } else { + console.warn('No ProtocolCreated event found in transaction receipt'); + console.log('All logs:', receipt.logs); } - }, 5000); - - return () => clearTimeout(fallbackTimer); + } catch (error) { + console.error('Error parsing transaction receipt:', error); + } } - }, [isConfirmed, hash, protocolId, isSubscribed, onSuccess]); + }, [isConfirmed, receipt, protocolId, isSubscribed, onSuccess]); const createProtocol = async (name?: string) => { const nameToUse = name || protocolName; @@ -185,8 +217,17 @@ export function useCreateProtocol({ setIsSubscribed(false); }, [chainId, reset]); + // Expose a reset function for manual reset + const resetProtocolCreation = () => { + console.log('Resetting protocol creation state'); + reset(); + setProtocolId(null); + setIsSubscribed(false); + }; + return { createProtocol, + resetProtocolCreation, hash, isPending, isConfirming, diff --git a/client2/src/main.tsx b/client2/src/main.tsx index 91c84bbd7..f4f222775 100644 --- a/client2/src/main.tsx +++ b/client2/src/main.tsx @@ -1,12 +1,13 @@ +import { StrictMode } from "react"; +import { createRoot } from "react-dom/client"; +import App from "./App.tsx"; +import "./index.css"; +import { WalletProvider } from "./providers/WalletProvider"; - import { createRoot } from "react-dom/client"; - import App from "./App.tsx"; - import "./index.css"; - import { WalletProvider } from "./providers/WalletProvider"; - - createRoot(document.getElementById("root")!).render( +createRoot(document.getElementById("root")!).render( + - ); - \ No newline at end of file + +); \ No newline at end of file diff --git a/client2/src/providers/WalletProvider.tsx b/client2/src/providers/WalletProvider.tsx index f0062106a..73d03bfed 100644 --- a/client2/src/providers/WalletProvider.tsx +++ b/client2/src/providers/WalletProvider.tsx @@ -5,7 +5,6 @@ import '@rainbow-me/rainbowkit/styles.css'; import { supportedChains } from '../config/chains'; import type { ReactNode } from 'react'; -// Create a query client for React Query const queryClient = new QueryClient(); // Get WalletConnect Project ID from environment or use a development placeholder diff --git a/contracts/TODO.md b/contracts/TODO.md index 65af31502..d4c523a41 100644 --- a/contracts/TODO.md +++ b/contracts/TODO.md @@ -1,72 +1,78 @@ +- uhi7 branch integration ci/cd + - This needs to be tested against current code base and other branche +Create a temp branch on upstream to test this CI workflow works agains current uhi7 state and test against other branches MAKE sure to output a sepearet dir ci-testing/ the findgindgs and next steps -- Create Protocol FLow -- The protocol designed cresates protocol respresented as tokens of some multi-token stantdards -- Each protocol can have multiple pools attached to it. -- The only conditions are: - - An address specified by the protocol designer as treasury is the recipient of part of the recipients list of the protocol fees on the pool. - - The protocol designer specifies the pool parameters except for the hooks on poolKey, which must be attached to a masterHook (diamond) interface. +- ProtocolAdminRegistry: + - INITIALIZATION + - MUST be initialized once + - MUST set the caller as upgradeAdmin + - MUST set the implementation as ProtocolAdminManager -- The protocol desginer specifies the name of the protocol, and additional metadat is auto-created -- Once the token is created the ERC1155Receiver is a created ProtocolAdmin at run-time -- PRs should target branch: feat/create-protocol +- create protocol + - The creator is set by a protocolAdminManager which MUST be the caller of createProtocol initially -```json -{ - "name": "", - "Tokens":[ - { - "This object exposes the tokens used by the protocol - used, incorporated, etc" - } - ], - "Pools": [ - { - "This tracks the pools created or from where the protocol receives revenue from it also provides analytics on protocol" - } - ], + - The protocolAdminManager MUST implement IERC1155Receiver - "Hooks":[ - { - "This is a mapping of hooks used per pool, it alsso needs to have the cost paid for hook and the funcationality the hooks is giving to the pool" - } - ] + - Once, the creator is set it MUST have permission to add governance -} -``` + - The tokenURI is set concatenating with the /loggedIn?=protocolDashboard/protocolId?=tokenURI -## Exclussions -- The system does not provide interface for token creation, It only provides createPool interface. -Then it needs to specify the pair of tokens and an address for the trassuryManagement . Then a fully upgreadable treassuryManagement interface is deployed and it's functions can be upgraded or written by the address provided + - Since protocolAdmin 1----->* tokenId 1----> 1 protocolAdminManager -The ERC1155 facet is the ProtocolFactory component +- ProtocolAdminManager returns to the client the initialization of the protocol and then the client asks the +panel to unclock functionality to caller -- Each tokenId is a protocol instance -``` -// Example tokenId allocation -tokenId = 1 → Protocol "DeFi Protocol Alpha" -tokenId = 2 → Protocol "Liquidity Hub Beta" -tokenId = 3 → Protocol "Yield Farm Gamma" -// etc. -``` + Then ProtocolAdminManager can only MANAGE (CUD) pools associated with (protocolAdmin, tokenId) + - The initial only caller of protocolAdminManager is the protocolAdmin, but we can provide access control to other accounts or governance mechanisms + - What are the advantages of doing in this way instead of directly on the AdminClient -Balance = 1: Protocol exists -Balance = 0: Protocol doesn't exist or was burned + - Let's explore the adminClient case : + protocolAdmin ---> client.createPool + --> isValidCreator + --> attach masterHook + --> attach treassury -- For each protocol ERC-5169 enables executable scripts attached to tokens. For protocols, this enables: +- ProtocolAdminClient.fork.t.sol + - createPool flow with masterHook and protocolHookMaster + - Ensure the only entry point to initialize a pool with HookMatter attached to it is through the client -``` -- Transformation function F logic -- Pool connection rules -- Aggregation methods -``` +- Study possible EigenLayer integration + - BondedHooks reference + - EigenLayerDocumentation +- Connect Figma MCP and frontend system prompt and tooling to Claude +- Make github system prompt +- Make indexer system prompt + + +- Revenue MultiAsset Vault (Eahc Vault is a dedicated pool revenue vault) +- Revennue PoolVault + +- Connect to HookDB, both at contract level queris and frontend + +- Create staking mechaincs both for ProtocolDevelopers and HookDevelopers + +- hooks querys (smart contracts) +- view details, set protocol website +- protocol treassury (smart contract, frontned) +- pool treassury (smart contract, frontend) +- eigenLayer integration + - reverse ing BondedHooks + - own intgration checking + + +The gitmodules must reference the Compose dendendcies at the already specidfied commit and the nested Compose dependecies muts comply with this = + +Openeppeling version in 0.5.1. + +This must be consistent and protected for all new code integrations \ No newline at end of file diff --git a/contracts/lib/compose-extensions b/contracts/lib/compose-extensions index 196d5a596..2e8ca3c44 160000 --- a/contracts/lib/compose-extensions +++ b/contracts/lib/compose-extensions @@ -1 +1 @@ -Subproject commit 196d5a59663fa351c17869ed28688c271c3d6407 +Subproject commit 2e8ca3c44ef963015d809cd9f103e86988f5248d diff --git a/contracts/script/protocol-pkg/CreateProtocol.s.sol b/contracts/script/protocol-pkg/CreateProtocol.s.sol index f3c4daa66..69ffd9312 100644 --- a/contracts/script/protocol-pkg/CreateProtocol.s.sol +++ b/contracts/script/protocol-pkg/CreateProtocol.s.sol @@ -2,7 +2,7 @@ pragma solidity 0.8.30; import {Script, console2} from "forge-std/Script.sol"; -import {IProtocolAdminClient} from "@hook-bazaar/protocol-pkg/ProtocolAdminClient.sol"; +import {IProtocolAdminClient} from "@hook-bazaar/protocol-pkg/src/ProtocolAdminClient.sol"; import {DevOpsTools} from "foundry-devops/DevOpsTools.sol"; contract CreateProtocol is Script{ diff --git a/contracts/script/protocol-pkg/Deploy.s.sol b/contracts/script/protocol-pkg/Deploy.s.sol index 8e903b32a..14c0116f8 100644 --- a/contracts/script/protocol-pkg/Deploy.s.sol +++ b/contracts/script/protocol-pkg/Deploy.s.sol @@ -2,9 +2,9 @@ pragma solidity 0.8.30; import {Script, console2} from "forge-std/Script.sol"; -import {ProtocolAdminClient} from "@hook-bazaar/protocol-pkg/ProtocolAdminClient.sol"; -import {ProtocolAdminRegistry} from "@hook-bazaar/protocol-pkg/ProtocolAdminRegistry.sol"; -import {ProtocolFactoryFacet} from "@hook-bazaar/protocol-pkg/ProtocolFactoryFacet.sol"; +import {ProtocolAdminClient} from "@hook-bazaar/protocol-pkg/src/ProtocolAdminClient.sol"; +import {ProtocolAdminRegistry} from "@hook-bazaar/protocol-pkg/src/ProtocolAdminRegistry.sol"; +import {ProtocolFactoryFacet} from "@hook-bazaar/protocol-pkg/src/ProtocolFactoryFacet.sol"; contract DeployAll is Script{ diff --git a/contracts/script/protocol-pkg/Initialize.s.sol b/contracts/script/protocol-pkg/Initialize.s.sol index c1ace161f..6eb357774 100644 --- a/contracts/script/protocol-pkg/Initialize.s.sol +++ b/contracts/script/protocol-pkg/Initialize.s.sol @@ -2,7 +2,9 @@ pragma solidity 0.8.30; import {Script, console2} from "forge-std/Script.sol"; -import {IProtocolAdminClient} from "@hook-bazaar/protocol-pkg/ProtocolAdminClient.sol"; +import {IProtocolAdminClient} from "@hook-bazaar/protocol-pkg/src/ProtocolAdminClient.sol"; +import {IProtocolAdminRegistry} from "@hook-bazaar/protocol-pkg/src/ProtocolAdminRegistry.sol"; +import {IProtocolFactory} from "@hook-bazaar/protocol-pkg/src/ProtocolFactoryFacet.sol"; import {DevOpsTools} from "foundry-devops/DevOpsTools.sol"; @@ -25,9 +27,11 @@ contract Initialize is Script{ ); vm.startBroadcast(privateKey); - IProtocolAdminClient(protocol_admin_client).initialize(); - IProtocolAdminClient(protocol_admin_client).initialize_admin_panel( - protocol_admin_registry, protocol_factory_facet, _baseURI); + IProtocolAdminClient(protocol_admin_client).initialize( + IProtocolAdminRegistry(protocol_admin_registry), + IProtocolFactory(protocol_factory_facet), + _baseURI + ); vm.stopBroadcast(); } } \ No newline at end of file diff --git a/contracts/src/master-hook-pkg/MasterHook.sol b/contracts/src/master-hook-pkg/MasterHook.sol index 7b96b8a30..d745a4842 100644 --- a/contracts/src/master-hook-pkg/MasterHook.sol +++ b/contracts/src/master-hook-pkg/MasterHook.sol @@ -1,10 +1,11 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; -import "compose-extensions/BaseDiamond.sol"; import "./AllHook.sol"; -import "compose-extensions/libraries/LibInitializable.sol"; -import "Compose/access/AccessControl/LibAccessControl.sol"; +import {InitializableBase} from "compose-extensions/LibInitializable.sol"; + +import "Compose/access/AccessControl/AccessControlMod.sol" as AccessControlMod; +import "Compose/diamond/DiamondCutMod.sol" as DiamondCutMod; import "./types/HookSelectors.sol"; import "./HookFacetTemplate.sol"; @@ -13,12 +14,12 @@ interface IMasterHook{ error MasterHook__NotValidHook(); error MasterHook__Uninitiialized(); function initialize(address _poolManager, address _allHookImpl) external; - function setProtocolFeeConfig(bytes calldata _encoded_pool_key,bytes calldata _protocol_fee_config) external; + // function setProtocolFeeConfig(bytes calldata _encoded_pool_key,bytes calldata _protocol_fee_config) external; function addHook(address _hook,bytes4[] memory _additionalSelectors) external; } -contract MasterHook is BaseDiamond, IMasterHook{ +contract MasterHook is IMasterHook, InitializableBase{ bytes32 constant PROTOCOL_ADMIN = keccak256("protocol-admin"); bytes32 constant STORAGE_POSITION = keccak256("hook-bazar.hooks"); @@ -34,43 +35,12 @@ contract MasterHook is BaseDiamond, IMasterHook{ } - modifier initializer() { - // solhint-disable-next-line var-name-mixedcase - LibInitializable.InitializableStorage storage $ = LibInitializable.getStorage(); - - // Cache values to avoid duplicated sloads - bool isTopLevelCall = !$._initializing; - uint64 initialized = $._initialized; - - // Allowed calls: - // - initialSetup: the contract is not in the initializing state and no previous version was - // initialized - // - construction: the contract is initialized at version 1 (no reinitialization) and the - // current contract is just being deployed - bool initialSetup = initialized == 0 && isTopLevelCall; - bool construction = initialized == 1 && address(this).code.length == 0; - - if (!initialSetup && !construction) { - revert LibInitializable.InvalidInitialization(); - } - - $._initialized = 1; - if (isTopLevelCall) { - $._initializing = true; - } - _; - if (isTopLevelCall) { - $._initializing = false; - emit LibInitializable.Initialized(1); - } - } - function initialize(address _poolManager, address _allHookImpl) external initializer{ MasterHookStorage storage $ = getStorage(); - LibAccessControl.setRoleAdmin(LibAccessControl.DEFAULT_ADMIN_ROLE, PROTOCOL_ADMIN); - LibAccessControl.grantRole(PROTOCOL_ADMIN, msg.sender); + AccessControlMod.setRoleAdmin(AccessControlMod.DEFAULT_ADMIN_ROLE, PROTOCOL_ADMIN); + AccessControlMod.grantRole(PROTOCOL_ADMIN, msg.sender); $.poolManager = IPoolManager(_poolManager); { @@ -87,37 +57,61 @@ contract MasterHook is BaseDiamond, IMasterHook{ _interface[8] = IHooks.beforeDonate.selector; _interface[9] = IHooks.afterDonate.selector; - LibDiamond.FacetCut[] memory _cut = new LibDiamond.FacetCut[](1); - _cut[0] = LibDiamond.FacetCut(_allHookImpl, LibDiamond.FacetCutAction.Add, _interface); - this._diamondCut(_cut, address(0x00), abi.encode("0x00")); + DiamondMod.FacetCut[] memory _cut = new DiamondMod.FacetCut[](1); + _cut[0] = DiamondMod.FacetCut(_allHookImpl, DiamondMod.FacetCutAction.Add, _interface); + DiamondMod.addFacets(_cut); } } - modifier initialized(){ - if (LibInitializable.getInitializedVersion() == uint256(0x00)) revert MasterHook__Uninitiialized(); - _; - } + modifier onlyProtocolAdmin(){ - LibAccessControl.requireRole(PROTOCOL_ADMIN, msg.sender); + AccessControlMod.requireRole(PROTOCOL_ADMIN, msg.sender); _; } - function setProtocolFeeConfig(bytes calldata _encoded_pool_key,bytes calldata _protocol_fee_config) external initialized onlyProtocolAdmin {} + // function setProtocolFeeConfig(bytes calldata _encoded_pool_key,bytes calldata _protocol_fee_config) external initialized onlyProtocolAdmin {} // TODO: This needs to be protected to be only allowed once a amreket transaction has been ccompleted to acquire, plug the hook - function addHook(address _hook, bytes4[] memory _additionalSelectors) external initialized onlyProtocolAdmin{ + function addHook(address _hook, bytes4[] calldata _additionalSelectors) external onlyInitialized onlyProtocolAdmin{ // if (!IERC165(_hook).supportsInterface(type(IHooks).interfaceId)) revert MasterHook__NotValidHook(); bytes4[] memory _hookSelectors = LibHookSelectors.hookSelectors(IHooks(_hook)); bytes4[] memory _allSelectors = LibHookSelectors.appendSelectors(_hookSelectors, _additionalSelectors); - this._replaceFunctions(_hook, _hookSelectors); - this._addFunctions(_hook, _additionalSelectors); + + // Call replace and add functions directly - need to convert memory to calldata + // Since we can't convert memory to calldata, we'll use a helper approach + _replaceHookFunctions(_hook, _hookSelectors); + _addHookFunctions(_hook, _additionalSelectors); + emit MasterHook__HookAdded(msg.sender, address(_hook), abi.encode(_allSelectors)); } + + function _replaceHookFunctions(address _hook, bytes4[] memory _selectors) private { + // Create a temporary array to work around calldata requirement + // We'll call the functions in a way that works with memory arrays + DiamondCutMod.DiamondStorage storage s = DiamondCutMod.getStorage(); + for (uint256 i; i < _selectors.length; i++) { + bytes4 selector = _selectors[i]; + address oldFacet = s.facetAndPosition[selector].facet; + if (oldFacet == address(0)) { + revert DiamondCutMod.CannotReplaceFunctionThatDoesNotExists(selector); + } + s.facetAndPosition[selector].facet = _hook; + } + } + + function _addHookFunctions(address _hook, bytes4[] calldata _selectors) private { + DiamondCutMod.addFunctions(_hook, _selectors); + } + + fallback() external payable { + DiamondMod.diamondFallback(); + } + diff --git a/contracts/src/master-hook-pkg/types/HookSelectors.sol b/contracts/src/master-hook-pkg/types/HookSelectors.sol index 5421e9e98..154d6d91e 100644 --- a/contracts/src/master-hook-pkg/types/HookSelectors.sol +++ b/contracts/src/master-hook-pkg/types/HookSelectors.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity >=0.8.30; -import "Compose/diamond/LibDiamond.sol"; +import "Compose/diamond/DiamondMod.sol" as DiamondMod; import "@uniswap/v4-core/src/libraries/Hooks.sol"; import "@uniswap/v4-core/src/interfaces/IHooks.sol"; diff --git a/contracts/src/protocol-hook-pkg/ProtocolHookMediator.sol b/contracts/src/protocol-hook-pkg/ProtocolHookMediator.sol new file mode 100644 index 000000000..a762cb7e3 --- /dev/null +++ b/contracts/src/protocol-hook-pkg/ProtocolHookMediator.sol @@ -0,0 +1,75 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.30; + +import {console2} from "forge-std/console2.sol"; + +import "@uniswap/v4-periphery/src/interfaces/IPositionManager.sol"; +import {IHooks} from "@uniswap/v4-core/src/interfaces/IHooks.sol"; +import {PoolKey} from "@uniswap/v4-core/src/types/PoolKey.sol"; +import {IMasterHook} from "@hook-bazaar/master-hook-pkg/src/MasterHook.sol"; +import {IProtocolAdminPanel} from "@hook-bazaar/protocol-pkg/src/ProtocolAdminPanel.sol"; +import {IProtocolAdminClient} from "@hook-bazaar/protocol-pkg/src/ProtocolAdminClient.sol"; +import {Context} from "@openzeppelin/contracts/utils/Context.sol"; +import {InitializableBase} from "compose-extensions/LibInitializable.sol"; + +interface IProtocolHookMediator{ + function initialize(IMasterHook _masterHook,IProtocolAdminClient protocolAdminClient,IPositionManager positionManager) external; + + function notify(address notifier, bytes4 _funcSig, bytes memory _data) external returns(bytes memory); +} + +contract ProtocolHookMediator is IProtocolHookMediator, Context, InitializableBase{ + + bytes32 constant STORAGE_POSITION = keccak256("hook-bazaar.protocol-hook-mediator"); + + struct ProtocolHookMediatorStorage{ + IMasterHook masterHook; + IProtocolAdminClient protocolAdminClient; + IPositionManager positionManager; + } + + function getStorage() internal pure returns (ProtocolHookMediatorStorage storage s){ + bytes32 position = STORAGE_POSITION; + assembly { + s.slot := position + } + } + + + function initialize(IMasterHook _masterHook,IProtocolAdminClient protocolAdminClient,IPositionManager positionManager) external initializer { + ProtocolHookMediatorStorage storage $ = getStorage(); + $.masterHook = _masterHook; + $.positionManager = positionManager; + $.protocolAdminClient = protocolAdminClient; + } + + + + function notify(address notifier, bytes4 _funcSig, bytes memory _data) external onlyInitialized returns(bytes memory){ + ProtocolHookMediatorStorage storage $ = getStorage(); + + bytes memory res; + if (notifier == address($.protocolAdminClient)){ + res = reactOnProtocolClient(_funcSig, _data); + } + + return res; + + } + + function reactOnProtocolClient(bytes4 _funcSig, bytes memory _data) internal returns(bytes memory){ + console2.logBytes4(_funcSig); + ProtocolHookMediatorStorage storage $ = getStorage(); + + if (_funcSig == bytes4(keccak256("create_pool(uint256,bytes,uint160)"))){ + (uint256 _protocolId, PoolKey memory poolKey, uint160 _initialSqrtPrice) = abi.decode(_data, (uint256, PoolKey, uint160)); + poolKey.hooks = IHooks(address($.masterHook)); + int24 tick = $.positionManager.initializePool( + poolKey, + _initialSqrtPrice + ); + + return abi.encode(tick); + } + } +} \ No newline at end of file diff --git a/contracts/src/protocol-pkg/ProtocolAdminClient.sol b/contracts/src/protocol-pkg/ProtocolAdminClient.sol index da2e0af29..8d13f03ca 100644 --- a/contracts/src/protocol-pkg/ProtocolAdminClient.sol +++ b/contracts/src/protocol-pkg/ProtocolAdminClient.sol @@ -1,40 +1,58 @@ // SPDX-License-Identifier: MIT pragma solidity >=0.8.30; +import {console2} from "forge-std/console2.sol"; -import {LibInitializable} from "compose-extensions/libraries/LibInitializable.sol"; -import {LibOwner} from "Compose/access/Owner/LibOwner.sol"; - -import "./ProtocolAdminPanel.sol"; +import {InitializableBase} from "compose-extensions/LibInitializable.sol"; +import "Compose/access/Owner/OwnerMod.sol" as OwnerMod; +import {ProtocolAdminPanel, IProtocolAdminPanel} from "./ProtocolAdminPanel.sol"; +import {IProtocolAdminRegistry} from "./ProtocolAdminRegistry.sol"; +import {IProtocolFactory} from "./ProtocolFactoryFacet.sol"; +import {IProtocolAdminManager, Authority} from "@hook-bazaar/protocol-pkg/src/ProtocolAdminManager.sol"; +import {IProtocolHookMediator} from "@hook-bazaar/protocol-hook-pkg/src/ProtocolHookMediator.sol"; +import {PoolKey} from "@uniswap/v4-core/src/types/PoolKey.sol"; interface IProtocolAdminClient{ error ProtocolAdminClientUninitialized(); error ProtocolAdminClientUnSetAdminClient(); - - function initialize() external; - - function initialize_admin_panel( - address _protocol_admin_registry, - address _protocol_factory, + error ProtocolAdminClientUnauthorizedCaller(); + //======================PROTOCOL-DEPLOYER ACTIONS ================================================= + function initialize( + IProtocolAdminRegistry _protocol_admin_registry, + IProtocolFactory _protocol_factory, string calldata _baseURI - ) external; - event ProtocolCreated(address indexed protocolCaller, uint256 indexed tokenId, address indexed protocolAdminManager); + + + //================================================================================================================== + function adminPanel() external view returns(address); function nextTokenId() external view returns(uint256); + //====================================PROTOCOL-CREATOR=============================================================== function create_protocol(string calldata _name) external returns(uint256); - function create_pool(bytes calldata _encoded_pool_key) external returns(bytes32); + event ProtocolCreated(address indexed protocolCaller, uint256 indexed tokenId, address indexed __adminManager); + + function create_pool(uint256 protocolId, bytes calldata _encoded_pool_key, uint160 initialSqrtPrice) external returns(bytes32); + + + function setProtocolHookMediator(IProtocolHookMediator _hookMediator) external; + + + function protocolHookMediator() external view returns(IProtocolHookMediator); + + } -contract ProtocolAdminClient is IProtocolAdminClient, IERC165{ +contract ProtocolAdminClient is IProtocolAdminClient, InitializableBase{ bytes32 constant PROTOCOL_ADMIN_CLIENT_POSITION = keccak256("hook-bazaar.protocol.admin-client"); struct ProtocolAdminClientStorage{ address admin_panel; + address protocolHookMediator; uint256 nextTokenId; } @@ -60,89 +78,83 @@ contract ProtocolAdminClient is IProtocolAdminClient, IERC165{ s.slot := position } } - modifier initializer() { - // solhint-disable-next-line var-name-mixedcase - LibInitializable.InitializableStorage storage $ = LibInitializable.getStorage(); - - // Cache values to avoid duplicated sloads - bool isTopLevelCall = !$._initializing; - uint64 initialized = $._initialized; - - // Allowed calls: - // - initialSetup: the contract is not in the initializing state and no previous version was - // initialized - // - construction: the contract is initialized at version 1 (no reinitialization) and the - // current contract is just being deployed - bool initialSetup = initialized == 0 && isTopLevelCall; - bool construction = initialized == 1 && address(this).code.length == 0; - - if (!initialSetup && !construction) { - revert LibInitializable.InvalidInitialization(); - } - - $._initialized = 1; - if (isTopLevelCall) { - $._initializing = true; - } - _; - if (isTopLevelCall) { - $._initializing = false; - emit LibInitializable.Initialized(1); - } - } // TODO: This function is onwed by the protocol deployer // and implements the initializer on initializable - function initialize() external initializer{ - LibOwner.OwnerStorage storage o$ = LibOwner.getStorage(); + function initialize( + IProtocolAdminRegistry _protocol_admin_registry, + IProtocolFactory _protocol_factory, + string calldata _baseURI + ) external initializer{ + OwnerMod.OwnerStorage storage o$ = OwnerMod.getStorage(); o$.owner = msg.sender; // TODO: Strong check for admin panel impl contract ProtocolAdminClientStorage storage $ = getStorage(); // LibERC165.registerInterface(type(IProtocolAdminClient).interfaceId); $.admin_panel = address(new ProtocolAdminPanel()); + IProtocolAdminPanel($.admin_panel).initialize(IProtocolAdminClient(address(this)), _protocol_admin_registry, _protocol_factory, _baseURI); + IProtocolFactory($.admin_panel).__initialize(_baseURI); + IProtocolAdminRegistry($.admin_panel)._initialize(); } - modifier initialized(){ - if (LibInitializable.getInitializedVersion() == uint256(0x00)) revert ProtocolAdminClientUninitialized(); - _; - } - // TODO: Possible protection needed for delegate calls - - function initialize_admin_panel( - address _protocol_admin_registry, - address _protocol_factory, - string calldata _baseURI - ) external initialized { - ProtocolAdminClientStorage storage $ = getStorage(); - LibOwner.requireOwner(); - IProtocolAdminPanel($.admin_panel).initialize(address(this),_protocol_admin_registry, _protocol_factory, _baseURI); - } - - function create_protocol(string calldata _name) external initialized returns(uint256){ - ProtocolAdminClientStorage storage $ = getStorage(); - // NOTE: This only checks the address is not Zero, which - // is equivalent to checking the contract has been initialized - // because the code on address requirement is checked at __init__ + // NOTE: The caller can delegate ownership of the protocol to an __auth address, defaults to msg.sender - // address _protocol_factory = IProtocolAdminPanel($.admin_panel).registry(); + // if __auth is 0, the name is only for visibilty + function create_protocol(string calldata _name) external onlyInitialized returns(uint256){ + + ProtocolAdminClientStorage storage $ = getStorage(); uint256 _token_id = $.nextTokenId; address _protocol_admin_manager = IProtocolAdminRegistry($.admin_panel).protocol_manager(_token_id); - IProtocolFactory($.admin_panel).create_protocol(_name, _protocol_admin_manager, _token_id); + IProtocolFactory($.admin_panel).create_protocol(_name, _protocol_admin_manager, _token_id); + IProtocolAdminPanel($.admin_panel).unlockAdminManager(IProtocolAdminManager(_protocol_admin_manager)); emit ProtocolCreated(msg.sender, _token_id,_protocol_admin_manager); - + $.nextTokenId++; return _token_id; } - function create_pool(bytes calldata _encoded_pool_key) external initialized returns(bytes32){} + function create_pool(uint256 protocolId, bytes calldata _encoded_pool_key, uint160 initialSqrtPrice) external onlyInitialized returns(bytes32){ + + ProtocolAdminClientStorage storage $ = getStorage(); + console2.log("Protocol Creator:", msg.sender); + bytes4 createPoolSig = msg.sig; + console2.logBytes4(createPoolSig); + // NOTE: With protocolId one can fetch the associated adminManager + address adminManager = IProtocolAdminRegistry($.admin_panel).protocol_manager(protocolId); + // if (!Authority($.admin_panel).canCall(msg.sender, adminManager, createPoolSig)) revert ProtocolAdminClientUnauthorizedCaller(); + + PoolKey memory poolKey = abi.decode(_encoded_pool_key, (PoolKey)); + int24 _initialTick = abi.decode( + IProtocolHookMediator($.protocolHookMediator).notify( + address(this) , + createPoolSig, + abi.encode(protocolId, poolKey, initialSqrtPrice)), + (int24) + ); + + } function supportsInterface(bytes4 interfaceID) external view returns (bool){ return interfaceID == type(IProtocolAdminClient).interfaceId; } + + function setProtocolHookMediator(IProtocolHookMediator _hookMediator) external{ + OwnerMod.requireOwner(); + ProtocolAdminClientStorage storage $ = getStorage(); + $.protocolHookMediator = address(_hookMediator); + } + + + function protocolHookMediator() external view returns(IProtocolHookMediator){ + ProtocolAdminClientStorage storage $ = getStorage(); + return IProtocolHookMediator($.protocolHookMediator); + } + + } \ No newline at end of file diff --git a/contracts/src/protocol-pkg/ProtocolAdminManager.sol b/contracts/src/protocol-pkg/ProtocolAdminManager.sol index a74d03242..1d23a9e54 100644 --- a/contracts/src/protocol-pkg/ProtocolAdminManager.sol +++ b/contracts/src/protocol-pkg/ProtocolAdminManager.sol @@ -1,29 +1,50 @@ // SPDX-License-Identifier: MIT pragma solidity >=0.8.30; -import {LibInitializable} from "compose-extensions/libraries/LibInitializable.sol"; +import {console2} from "forge-std/console2.sol"; -import {IComponent} from "compose-extensions/GenericFactory/LibGenericFactory.sol"; +import {InitializableBase} from "compose-extensions/LibInitializable.sol"; +import "Compose/access/AccessControl/AccessControlMod.sol" as AccessControlMod; +import {Authority} from "solmate/src/auth/Auth.sol"; +import {IComponent} from "compose-extensions/LibGenericFactory.sol"; import {IERC1155Receiver} from "Compose/interfaces/IERC1155Receiver.sol"; +import "Compose/libraries/NonReentrancyMod.sol" as NonReentrancy; -interface IPoolCreator{ - function create_pool(bytes calldata _encoded_pool_key) external; +library ProxyUtils{ + function metadata() internal pure returns(address){ + address _protocolCreator; + assembly{ + _protocolCreator := shr(96, calldataload(sub(calldatasize(),20))) + } + return _protocolCreator; + } } interface IProtocolAdminManager{ error ProtocolAdminManagerCallerIsNotCreator(); error ProtocolAdminManagerUninitialized(); - event ProtocolAdminManagerInitialized(address indexed creator); - function creator() external view returns(address); + event ProtocolAdminManagerInitialized(address indexed adminPanel, address indexed _protocolCreator); + function __self() external view returns(address); + function isCreator(address _account) external view returns(bool); + function delegatePoolCreatorRole(address _account) external; + } -contract ProtocolAdminManager is IComponent, IERC1155Receiver, IProtocolAdminManager, IPoolCreator{ + +// NOTE: ProtocolAdminManager is an operator +contract ProtocolAdminManager is IComponent, IERC1155Receiver, IProtocolAdminManager, Authority, InitializableBase{ + address public immutable __self; + // function __self() public view returns(address){ + // return __self; + // } + bytes32 constant CREATOR = keccak256("hook-bazaar.creator"); + bytes32 constant POOL_CREATOR = keccak256("hook-bazaar.pool-creator"); + bytes32 constant STORAGE_POSITION = keccak256("wvs-finance.protocolAdminManager"); struct ProtocolAdminManagerStorage{ - address creator; uint256 tokenId; } @@ -34,82 +55,57 @@ contract ProtocolAdminManager is IComponent, IERC1155Receiver, IProtocolAdminMan } } - - - modifier initializer() { - // solhint-disable-next-line var-name-mixedcase - LibInitializable.InitializableStorage storage $ = LibInitializable.getStorage(); - - // Cache values to avoid duplicated sloads - bool isTopLevelCall = !$._initializing; - uint64 initialized = $._initialized; - - // Allowed calls: - // - initialSetup: the contract is not in the initializing state and no previous version was - // initialized - // - construction: the contract is initialized at version 1 (no reinitialization) and the - // current contract is just being deployed - bool initialSetup = initialized == 0 && isTopLevelCall; - bool construction = initialized == 1 && address(this).code.length == 0; - - if (!initialSetup && !construction) { - revert LibInitializable.InvalidInitialization(); - } - - $._initialized = 1; - if (isTopLevelCall) { - $._initializing = true; - } - _; - if (isTopLevelCall) { - $._initializing = false; - emit LibInitializable.Initialized(1); - } + constructor(){ + __self = address(this); } // NOTE: Creator MUST be the address that called create_protocol - // NOTE: This needs to implement the initializer - //of initializable + // NOTE: The creator needs to be the caller of the create_protocol on ProtocolAdminClient function initialize(address creator) external initializer{ ProtocolAdminManagerStorage storage $ = getStorage(); - $.creator = creator; + AccessControlMod.grantRole(CREATOR, creator); + AccessControlMod.grantRole(POOL_CREATOR, creator); // NOTE : creator is supposed to be the owner of the protocol // which is potentially a smart accounMT , regular EOA or governance contract - emit ProtocolAdminManagerInitialized(creator); + emit ProtocolAdminManagerInitialized(creator, creator); } - // NOTE: The creator is the ProtocolAdminClient, we need enforcements - // that the creator implements the IUnlockCallback interface and the - // IProtocolAdminClient interface - function creator() public view returns(address){ - ProtocolAdminManagerStorage storage $ = getStorage(); - return $.creator; - } - // Only callable once initialized. MUST be guarded - modifier initialized(){ - if (LibInitializable.getInitializedVersion() == uint256(0x00)) revert ProtocolAdminManagerUninitialized(); - _; + function isCreator(address _account) public view returns(bool){ + return AccessControlMod.hasRole(CREATOR, _account); } modifier onlyCreator(){ - if (msg.sender != creator()) revert ProtocolAdminManagerCallerIsNotCreator(); + if (!isCreator(msg.sender)) revert ProtocolAdminManagerCallerIsNotCreator(); _; } + + function delegatePoolCreatorRole(address _account) external onlyCreator onlyInitialized{ + AccessControlMod.grantRole(POOL_CREATOR, _account); + } + // TODO: Function is only callable during mints triggered by the create_protocol flow ... + modifier nonReentrant(){ + NonReentrancy.enter(); + _; + NonReentrancy.exit(); + } + function onERC1155Received(address _operator, address _from, uint256 _id, uint256 _value, bytes calldata _data) external - initialized + onlyInitialized + nonReentrant returns (bytes4){ ProtocolAdminManagerStorage storage $ = getStorage(); $.tokenId = _id; return IERC1155Receiver.onERC1155Received.selector; + // TODO: It sets the protocoll as created and this uncloks the create_pool to be called - // by the caller address, additioanlly the caller can now use this contract + // // by the caller address, additioanlly the caller can now use this contract // to custom his protocol } @@ -121,7 +117,20 @@ contract ProtocolAdminManager is IComponent, IERC1155Receiver, IProtocolAdminMan bytes calldata _data ) external returns (bytes4){} - function create_pool(bytes calldata _encoded_pool_key) external onlyCreator{} + + function canCall( + address user, + address target, + bytes4 functionSig + ) external view returns (bool){ + bool _canCall; + if (functionSig == bytes4(keccak256("create_pool(uint256,bytes,uint160)"))){ + _canCall = (AccessControlMod.hasRole(POOL_CREATOR, user) && target == __self); + } + return _canCall; + } + + } diff --git a/contracts/src/protocol-pkg/ProtocolAdminPanel.sol b/contracts/src/protocol-pkg/ProtocolAdminPanel.sol index cfe2925e3..262117514 100644 --- a/contracts/src/protocol-pkg/ProtocolAdminPanel.sol +++ b/contracts/src/protocol-pkg/ProtocolAdminPanel.sol @@ -1,15 +1,16 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.30; -import "compose-extensions/BaseDiamond.sol"; import {IERC1155} from "Compose/interfaces/IERC1155.sol"; import {ERC1155Facet} from "Compose/token/ERC1155/ERC1155Facet.sol"; -import "./ProtocolFactoryFacet.sol"; -import "./ProtocolAdminRegistry.sol"; -import "compose-extensions/GenericFactory/GenericFactoryFacet.sol"; -import {LibOwner} from "Compose/access/Owner/LibOwner.sol"; - +import {IProtocolFactory} from "./ProtocolFactoryFacet.sol"; +import "Compose/access/Owner/OwnerMod.sol" as OwnerMod; +import {IProtocolAdminRegistry, IGenericFactory} from "./ProtocolAdminRegistry.sol"; +import {IProtocolAdminClient} from "./ProtocolAdminClient.sol"; +import {IProtocolHookMediator} from "@hook-bazaar/protocol-hook-pkg/src/ProtocolHookMediator.sol"; +import "Compose/diamond/DiamondMod.sol" as DiamondMod; +import {IProtocolAdminManager, Authority} from "@hook-bazaar/protocol-pkg/src/ProtocolAdminManager.sol"; // // NOTE: This contract is the interaction point for protocol // // developers, AI agents @@ -19,99 +20,126 @@ interface IProtocolAdminPanel{ error InvalidDeployer(address); error ProtocolAdminPanelInvalidProtocolFactoryInstance(address); error ProtocolAdminPanelInvalidProtocolAdminRegistry(address); - function initialize(address _client,address _protocol_admin_registry, address _protocol_factory, string calldata _baseURI) external; + //=============================================ADMIN-FUNCTIONS===================================================================== + function initialize(IProtocolAdminClient _client,IProtocolAdminRegistry _protocol_admin_registry, IProtocolFactory _protocol_factory, string calldata _baseURI) external; + + + //==============================CREATE-PROTOCOL-FLOW=================================================== + function unlockAdminManager(IProtocolAdminManager _adminManager) external; + + + } // TODO: To be considered : IERC5169 // TODO: To be considered: IERC1155Receiver -contract ProtocolAdminPanel is BaseDiamond, IProtocolAdminPanel{ +contract ProtocolAdminPanel is IProtocolAdminPanel{ struct ProtocolAdminPanelStorage{ bool _initialized; + IProtocolHookMediator protocolHookMediator; } bytes32 constant PROTOCOL_ADMIN_PANEL_STORAGE = keccak256("hook-bazaar.protocol.admin-panel"); - - function getStorage() internal pure returns (ProtocolAdminPanelStorage storage s) { bytes32 position = PROTOCOL_ADMIN_PANEL_STORAGE; assembly { s.slot := position } } + // TODO: This needs to be owned by the protocol deployer constructor(){ - ProtocolAdminPanelStorage storage $ = getStorage(); - LibOwner.OwnerStorage storage o$ = LibOwner.getStorage(); - o$.owner = msg.sender; - $._initialized = false; + ProtocolAdminPanelStorage storage $ = getStorage(); + OwnerMod.OwnerStorage storage o$ = OwnerMod.getStorage(); + o$.owner = msg.sender; + $._initialized = false; } - function initialize( - address _client, - address _protocol_admin_registry, - address _protocol_factory, - string calldata _baseURI - ) external{ - LibOwner.requireOwner(); - - ProtocolAdminPanelStorage storage $ = getStorage(); - if ($._initialized) revert ProtocolAdminPanelAlreadyInitialized(); - // TODO: Introspection checks ... - - { - bytes4[] memory _interface = new bytes4[](uint256(0x06)); + function initialize( + IProtocolAdminClient _client, + IProtocolAdminRegistry _protocol_admin_registry, + IProtocolFactory _protocol_factory, + string calldata _baseURI + ) external{ + OwnerMod.requireOwner(); + + ProtocolAdminPanelStorage storage $ = getStorage(); + if ($._initialized) revert ProtocolAdminPanelAlreadyInitialized(); + //TODO: Introspection checks ... + DiamondMod.FacetCut[] memory _cut = new DiamondMod.FacetCut[](uint256(0x02)); + { + bytes4[] memory _interface = new bytes4[](uint256(0x06)); - _interface[0x00] = IProtocolFactory.__initialize.selector; - _interface[0x01] = IProtocolFactory.adminPanel.selector; - _interface[0x02] = IProtocolFactory.baseURI.selector; - _interface[0x03] = IProtocolFactory.create_protocol.selector; - _interface[0x04] = IERC1155.balanceOf.selector; - _interface[0x05] = IERC1155.uri.selector; + _interface[0x00] = _protocol_factory.__initialize.selector; + _interface[0x01] = _protocol_factory.adminPanel.selector; + _interface[0x02] = _protocol_factory.baseURI.selector; + _interface[0x03] = _protocol_factory.create_protocol.selector; + _interface[0x04] = IERC1155.balanceOf.selector; + _interface[0x05] = IERC1155.uri.selector; - LibDiamond.FacetCut[] memory _cut = new LibDiamond.FacetCut[](uint256(0x01)); - _cut[0x00] = LibDiamond.FacetCut(_protocol_factory, LibDiamond.FacetCutAction.Add, _interface); - this._diamondCut(_cut, _protocol_factory, abi.encodeCall(IProtocolFactory.__initialize, _baseURI)); - - } - { - bytes4[] memory _interface = new bytes4[](uint256(0x05)); - - _interface[0x00] = IProtocolAdminRegistry._initialize.selector; - _interface[0x01] = IProtocolAdminRegistry.protocol_manager.selector; - _interface[0x02] = IProtocolAdminRegistry.protocol_admin_template.selector; - _interface[0x03] = IProtocolAdminRegistry.upgradeAdmin.selector; - _interface[0x04] = IProtocolAdminRegistry.isUpgradeAdmin.selector; + _cut[0x00] = DiamondMod.FacetCut(address(_protocol_factory), DiamondMod.FacetCutAction.Add, _interface); + } + { + bytes4[] memory _interface = new bytes4[](uint256(0x04)); + + _interface[0x00] = _protocol_admin_registry._initialize.selector; + _interface[0x01] = _protocol_admin_registry.protocol_manager.selector; + _interface[0x02] = _protocol_admin_registry.adminManagerTemplate.selector; + _interface[0x03] = _protocol_admin_registry.upgradeAdmin.selector; + // _interface[0x04] = _protocol_admin_registry.isUpgradeAdmin.selector; // _interface[0x05] = IERC165.supportsInterface.selector; - LibDiamond.FacetCut[] memory _cut = new LibDiamond.FacetCut[](uint256(0x01)); - _cut[0x00] = LibDiamond.FacetCut(_protocol_admin_registry, LibDiamond.FacetCutAction.Add, _interface); - this._diamondCut(_cut, _protocol_admin_registry, abi.encodeCall(IProtocolAdminRegistry._initialize, ())); + _cut[0x01] = DiamondMod.FacetCut(address(_protocol_admin_registry), DiamondMod.FacetCutAction.Add, _interface); - } - { - bytes4[] memory _interface = new bytes4[](uint256(0x01)); - _interface[0x00] = IERC165.supportsInterface.selector; - LibDiamond.FacetCut[] memory _cut = new LibDiamond.FacetCut[](uint256(0x01)); - _cut[0x00] = LibDiamond.FacetCut(_client, LibDiamond.FacetCutAction.Add, _interface); - this._diamondCut(_cut, address(0x00),bytes("")); - } + } + DiamondMod.addFacets(_cut); - $._initialized = true; + $._initialized = true; + + } + + + +// function setProtocolHookMediator(IProtocolHookMediator _hookMediator) external{ +// // OwnerMod.requireOwner(); +// ProtocolAdminPanelStorage storage $ = getStorage(); +// $.protocolHookMediator = _hookMediator; +// } + +// function protocolHookMediator() public view returns(IProtocolHookMediator){ +// ProtocolAdminPanelStorage storage $ = getStorage(); +// return $.protocolHookMediator; +// } + + function unlockAdminManager(IProtocolAdminManager _adminManager) external{ + DiamondMod.FacetCut[] memory _cut = new DiamondMod.FacetCut[](uint256(0x01)); + bytes4[] memory _interface = new bytes4[](uint256(0x02)); + _interface[0] = IProtocolAdminManager.delegatePoolCreatorRole.selector; + _interface[1] = Authority.canCall.selector; + _cut[0x00] = DiamondMod.FacetCut(address(_adminManager), DiamondMod.FacetCutAction.Add, _interface); + + DiamondMod.addFacets(_cut); + + } + + - } // TODO: It must verify the _account is compliant // with the adminManager, msg.sender MUST be // ProtocolAdminClient - // NOTE: Checks + // NOTE: Checks - // NOTE: After checks - // If first time enabling create pool. Enable it + // NOTE: After checks + // If first time enabling create pool. Enable it + fallback() external payable { + DiamondMod.diamondFallback(); + } } diff --git a/contracts/src/protocol-pkg/ProtocolAdminRegistry.sol b/contracts/src/protocol-pkg/ProtocolAdminRegistry.sol index 0846a90ec..05c3fade0 100644 --- a/contracts/src/protocol-pkg/ProtocolAdminRegistry.sol +++ b/contracts/src/protocol-pkg/ProtocolAdminRegistry.sol @@ -1,14 +1,29 @@ // SPDX-License-Identifier: MIT pragma solidity >=0.8.30; -import {LibGenericFactory} from "compose-extensions/GenericFactory/LibGenericFactory.sol"; -import {LibInitializable} from "compose-extensions/libraries/LibInitializable.sol"; -import {LibAccessControl} from "Compose/access/AccessControl/LibAccessControl.sol"; - -import "./ProtocolAdminManager.sol"; -import "./ProtocolAdminClient.sol"; +import {LibGenericFactory} from "compose-extensions/LibGenericFactory.sol"; +import "compose-extensions/GenericFactoryMod.sol" as GenericFactoryMod; +import {GenericFactory} from "@euler/GenericFactory/GenericFactory.sol"; +import {InitializableBase} from "compose-extensions/LibInitializable.sol"; +import "compose-extensions/InitializableMod.sol" as InitializableMod; +import "Compose/access/AccessControl/AccessControlMod.sol" as AccessControlMod; + +import {ProtocolAdminManager} from "./ProtocolAdminManager.sol"; +// import "./ProtocolAdminClient.sol"; import {IERC165} from "forge-std/interfaces/IERC165.sol"; +interface IGenericFactory{ + function implementation() external view returns(address); + function upgradeAdmin() external view returns(address); + function proxyList() external view returns(address[] memory); + function createProxy(address desiredImplementation, bool upgradeable, bytes memory trailingData) external returns (address); + function setImplementation(address newImplementation) external; + function setUpgradeAdmin(address newUpgradeAdmin) external; + function getProxyConfig(address proxy) external view returns (GenericFactory.ProxyConfig memory config); + function isProxy(address proxy) external view returns (bool); + function getProxyListLength() external view returns (uint256); + function getProxyListSlice(uint256 start, uint256 end) external view returns (address[] memory list); +} interface IVersionControl{ // TODO: This needs protection for attackers altering versions on re-entrancy or multicalls @@ -27,13 +42,13 @@ interface IProtocolAdminRegistry{ function __self() external view returns(address); function _initialize() external; - function protocol_manager(uint256 _tokenId) external returns(address); - function protocol_admin_template() external view returns(address); - function upgradeAdmin() external view returns(address); - function isUpgradeAdmin(address _account) external view returns(bool); + function protocol_manager(uint256 _protocolId) external returns(address); + + function adminManagerTemplate() external returns(address); + function upgradeAdmin() external returns(address); } -contract ProtocolAdminRegistry is IVersionControl ,IProtocolAdminRegistry{ +contract ProtocolAdminRegistry is IVersionControl ,IProtocolAdminRegistry, InitializableBase{ // NOTE: delegate call only guard address immutable public __self; @@ -77,103 +92,85 @@ contract ProtocolAdminRegistry is IVersionControl ,IProtocolAdminRegistry{ return $.version; } - modifier reinitializer(uint64 version) { - // solhint-disable-next-line var-name-mixedcase - LibInitializable.InitializableStorage storage $ = LibInitializable.getStorage(); - - if ($._initializing || $._initialized >= version) { - revert LibInitializable.InvalidInitialization(); - } - - $._initialized = version; - $._initializing = true; - _; - $._initializing = false; - emit LibInitializable.Initialized(version); - } - function _initialize() external reinitializer(updateVersion()){ + ProtocolAdminRegistryStorage storage $ = getStorage(); + + LibGenericFactory.GenericFactoryStorage storage g$ = LibGenericFactory.getStorage(); + g$.upgradeAdmin = msg.sender; // TODO: Further introspection checks are suggested here - if (msg.sender.code.length == uint256(0x00)) revert ProtocolAdminRegistryInvalidInitializer(); + // if (msg.sender.code.length == uint256(0x00)) revert ProtocolAdminRegistryInvalidInitializer(); // NOTE: The msg.sender in our implementation // is the ProtocolAdminPanel - LibGenericFactory.initialize(msg.sender); - LibGenericFactory.setImplementation(address(new ProtocolAdminManager())); + LibGenericFactory.setImplementation(address(new ProtocolAdminManager())); + } - function isUpgradeAdmin(address _account) public view returns(bool){ - LibGenericFactory.GenericFactoryStorage storage g$ = LibGenericFactory.getStorage(); - - return g$.upgradeAdmin == _account && LibAccessControl.hasRole(LibGenericFactory.UPGRADE_ADMIN_ROLE, _account); - } - - function protocol_admin_template() public view returns(address){ + + function adminManagerTemplate() public returns(address){ + ProtocolAdminRegistryStorage storage $ = getStorage(); return LibGenericFactory.implementation(); } - // NOTE: This function can not be called if the contract is not initialized - // The createProxy factory will revert but we want to enforce our own error + // // NOTE: This function can not be called if the contract is not initialized + // // The createProxy factory will revert but we want to enforce our own error modifier initialized(){ - if (LibInitializable.getInitializedVersion() < STARTER_VERSION) revert ProtocolAdminRegistryUninitialized(); + InitializableMod.InitializableStorage storage $ = InitializableMod.getStorage(); + if ($._initialized < STARTER_VERSION) revert ProtocolAdminRegistryUninitialized(); _; } - // NOTE:The data passed to the clone is the tokenId + // // NOTE:The data passed to the clone is the tokenId - // NOTE The function can only be called through delegate - // call, and the delegate caller must be the admin panel + // // NOTE The function can only be called through delegate + // // call, and the delegate caller must be the admin panel function onlyAdminPanel() private { if (address(this) == __self) revert ProtocolAdminRegistryNotDelegateCall(); // if (address(this) != upgradeAdmin()) revert ProtocolAdminRegistryInvalidDelegateCaller(); } - function upgradeAdmin() public view initialized returns(address){ - LibGenericFactory.GenericFactoryStorage storage g$ = LibGenericFactory.getStorage(); - return g$.upgradeAdmin; + function upgradeAdmin() public initialized returns(address){ + return LibGenericFactory.upgradeAdmin(); } - - - - function protocol_manager(uint256 _tokenId) external initialized returns(address){ - if (_tokenId == uint256(0x00)) revert ProtocolAdminRegistryInvalidTokenId(); + function protocol_manager(uint256 _protocolId) external initialized returns(address){ + if (_protocolId == uint256(0x00)) return address(0x00); ProtocolAdminRegistryStorage storage $ = getStorage(); - if ($.protocol_managers[_tokenId] == address(0x00)){ + if ($.protocol_managers[_protocolId] == address(0x00)){ // NOTE: This protects for the delegate call onlyAdminPanel(); // TODO: Now we need protection for the Context to be msg.sender == protocolAdminClient AND // msg.sig == IProtocolAdminClient.create_protocol.selector - // msg.sender == protocolAdminClient needs to be checked with introspection on CLient since // Regiostry does not reference client // TODO: This + // msg.sender == protocolAdminClient needs to be checked with introspection on CLient since // if ( // !IERC165(address(this)).supportsInterface(type(IProtocolAdminClient).interfaceId) // || // _parentSig != CREATE_PROTOCOL_CLIENT_SIG // ) revert ProtocolAdminRegistryInvalidContextCall(); - $.protocol_managers[_tokenId] = LibGenericFactory.createProxy(protocol_admin_template(), false, abi.encode(msg.sender)); + $.protocol_managers[_protocolId] = LibGenericFactory.createProxy(adminManagerTemplate(), false, abi.encode("0x00")); } + return $.protocol_managers[_protocolId]; + } + + function protocolManagers(uint256 _tokenId) external returns(address){ + ProtocolAdminRegistryStorage storage $ = getStorage(); return $.protocol_managers[_tokenId]; + } - - - - - - } \ No newline at end of file diff --git a/contracts/src/protocol-pkg/ProtocolFactoryFacet.sol b/contracts/src/protocol-pkg/ProtocolFactoryFacet.sol index 51c6e3640..54c199de8 100644 --- a/contracts/src/protocol-pkg/ProtocolFactoryFacet.sol +++ b/contracts/src/protocol-pkg/ProtocolFactoryFacet.sol @@ -1,26 +1,16 @@ // SPDX-License-Identifier: MIT pragma solidity >=0.8.30; -import {LibInitializable} from "compose-extensions/libraries/LibInitializable.sol"; +import {console2} from "forge-std/console2.sol"; +import {InitializableBase} from "compose-extensions/LibInitializable.sol"; import {IERC165} from "forge-std/interfaces/IERC165.sol"; -import {LibERC165} from "Compose/interfaceDetection/ERC165/LibERC165.sol"; -import {ERC165Facet} from "Compose/interfaceDetection/ERC165/ERC165Facet.sol"; - import {IERC1155} from "Compose/interfaces/IERC1155.sol"; -import {LibERC1155} from "Compose/token/ERC1155/LibERC1155.sol"; +import "Compose/token/ERC1155/ERC1155Mod.sol" as ERC1155Mod; import {ERC1155Facet} from "Compose/token/ERC1155/ERC1155Facet.sol"; - -// import {GenericFactory} from "euler-vault-kit/src/GenericFactory/GenericFactory.sol"; - -// interface IGenericFactory{ -// function createProxy(address desiredImplementation, bool upgradeable, bytes memory trailingData) external returns (address); -// } - - - +import "Compose/access/Owner/OwnerMod.sol" as OwnerMod; interface IProtocolFactory{ function __self() external view returns(address); @@ -47,7 +37,7 @@ interface IProtocolFactory{ // constructor() GenericFactory(msg.sender){} // } -contract ProtocolFactoryFacet is IProtocolFactory{ +contract ProtocolFactoryFacet is IProtocolFactory, InitializableBase{ address immutable public __self; constructor(){ @@ -68,55 +58,22 @@ contract ProtocolFactoryFacet is IProtocolFactory{ } } - // NOTE: This is owned by the protocol deployer - // Implements initializer - modifier initializer() { - // solhint-disable-next-line var-name-mixedcase - LibInitializable.InitializableStorage storage $ = LibInitializable.getStorage(); - - // Cache values to avoid duplicated sloads - bool isTopLevelCall = !$._initializing; - uint64 initialized = $._initialized; - - // Allowed calls: - // - initialSetup: the contract is not in the initializing state and no previous version was - // initialized - // - construction: the contract is initialized at version 1 (no reinitialization) and the - // current contract is just being deployed - bool initialSetup = initialized == 0 && isTopLevelCall; - bool construction = initialized == 1 && address(this).code.length == 0; - - if (!initialSetup && !construction) { - revert LibInitializable.InvalidInitialization(); - } - - $._initialized = 1; - if (isTopLevelCall) { - $._initializing = true; - } - _; - if (isTopLevelCall) { - $._initializing = false; - emit LibInitializable.Initialized(1); - } - } - // It specifies the Base URI at initialization // This is called on regular call by the protocolAdminPanel function __initialize(string calldata _baseURI) external initializer{ + OwnerMod.OwnerStorage storage o$ = OwnerMod.getStorage(); ProtocolFactoryStorage storage $ = getStorage(); - // TODO: Stronger check to ensure the caller is the ProtocolAdminPanel, - // HINT: Introspection on diamond interface id - if (msg.sender.code.length == uint256(0x00)) revert ProtocolFactoryFacetInvalidInitializer(); - $.adminPanel = msg.sender; - LibERC1155.setBaseURI(_baseURI); - + o$.owner = msg.sender; + ERC1155Mod.setBaseURI(_baseURI); + $.adminPanel = address(this); + } + function baseURI() public view returns(string memory){ - LibERC1155.ERC1155Storage storage e1155$ = LibERC1155.getStorage(); + ERC1155Mod.ERC1155Storage storage e1155$ = ERC1155Mod.getStorage(); return e1155$.baseURI; } @@ -136,36 +93,29 @@ contract ProtocolFactoryFacet is IProtocolFactory{ } // This is only callable after the contract has been initialized - modifier initialized(){ - if (LibInitializable.getInitializedVersion() == uint256(0x00)) revert ProtocolFactoryFacetUninitialized(); - _; - } - // NOTE: This also needs protection against reentrancy + // NOTE: This also needs protection against reentrancy - function create_protocol(string calldata _name,address _protocol_admin, uint256 _token_id) external initialized onlyAdminPanel{ + function create_protocol(string calldata _name,address _protocol_admin, uint256 _token_id) external onlyInitialized onlyAdminPanel{ // TODO: This library must also expose a payload to the protocol admin // and perform checks against the protocol_admin // TODO: This is missing the data param on the mint function - LibERC1155.mint(_protocol_admin,_token_id,uint256(0x01),abi.encode(_token_id)); - LibERC1155.setTokenURI(_token_id, _name); + console2.log("Caller", msg.sender); + ERC1155Mod.mint(_protocol_admin,_token_id,1,abi.encode("0x00")); + // NOTE: Needs to concat /ProtocolDashboard/protocolName ?= _name + ERC1155Mod.setTokenURI(_token_id, _name); } - function balanceOf(address _account, uint256 _id) external view returns (uint256){ - LibERC1155.ERC1155Storage storage e1155$ = LibERC1155.getStorage(); - return e1155$.balanceOf[_id][_account]; + function balanceOf(address _from, uint256 _id) external view returns (uint256){ + ERC1155Mod.ERC1155Storage storage e1155$ = ERC1155Mod.getStorage(); + return e1155$.balanceOf[_id][_from]; } function uri(uint256 _id) external view returns (string memory){ - LibERC1155.ERC1155Storage storage e1155$ = LibERC1155.getStorage(); + ERC1155Mod.ERC1155Storage storage e1155$ = ERC1155Mod.getStorage(); return e1155$.tokenURIs[_id]; } fallback() external payable{} - - - - - } \ No newline at end of file diff --git a/contracts/src/protocol-pkg/types/URI.sol b/contracts/src/protocol-pkg/types/URI.sol new file mode 100644 index 000000000..20d46a405 --- /dev/null +++ b/contracts/src/protocol-pkg/types/URI.sol @@ -0,0 +1,3 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.8.30; + diff --git a/contracts/test/master-hook-pkg/MasterHook.fork.t.sol b/contracts/test/master-hook-pkg/MasterHook.fork.t.sol index e1222bf1b..7299b63d4 100644 --- a/contracts/test/master-hook-pkg/MasterHook.fork.t.sol +++ b/contracts/test/master-hook-pkg/MasterHook.fork.t.sol @@ -6,11 +6,11 @@ import {Script} from "forge-std/Script.sol"; import {EthereumMainnet} from "./utils/ForkUtils.sol"; import {Constants} from "@uniswap/v4-core/test/utils/Constants.sol"; -// import "@hook-bazaar/master-hook-pkg/MasterHook.sol"; +import "@hook-bazaar/master-hook-pkg/src/MasterHook.sol"; import "@uniswap/v4-periphery/src/utils/BaseHook.sol"; -// import "@hook-bazaar/master-hook-pkg/AllHook.sol"; +import "@hook-bazaar/master-hook-pkg/src/AllHook.sol"; import "@uniswap/v4-core/src/types/Currency.sol"; @@ -34,341 +34,21 @@ import {IHooks} from "@uniswap/v4-core/src/interfaces/IHooks.sol"; import "@uniswap/v4-periphery/src/utils/HookMiner.sol"; import {MockCounterHook} from "@uniswap/v4-periphery/test/mocks/MockCounterHook.sol"; -// import {MockCounterHook2} from "@hook-bazaar/master-hook-pkg/mocks/MockCounterHook2.sol"; +import {MockCounterHook2} from "@hook-bazaar/master-hook-pkg/src/mocks/MockCounterHook2.sol"; import {BalanceDeltaLibrary} from "@uniswap/v4-core/src/types/BalanceDelta.sol"; -contract AllHook is BaseHook{ - constructor(address _poolManager) BaseHook(IPoolManager(_poolManager)){} - - function getHookPermissions() public pure override returns (Hooks.Permissions memory){ - return Hooks.Permissions(true,true,true,true,true,true,true,true,true,true,true,true,true,true); - } - - function _beforeInitialize(address, PoolKey calldata, uint160) internal pure override returns (bytes4) { - return IHooks.beforeInitialize.selector; - } - - function _afterInitialize(address, PoolKey calldata, uint160, int24) internal pure override returns (bytes4) { - return IHooks.afterInitialize.selector; - } - - function _beforeAddLiquidity(address, PoolKey calldata, ModifyLiquidityParams calldata, bytes calldata) - internal - pure - override - returns (bytes4) - { - return IHooks.beforeAddLiquidity.selector; - } - - function _afterAddLiquidity( - address, - PoolKey calldata, - ModifyLiquidityParams calldata, - BalanceDelta, - BalanceDelta, - bytes calldata - ) internal pure override returns (bytes4, BalanceDelta) { - return (IHooks.afterAddLiquidity.selector, BalanceDeltaLibrary.ZERO_DELTA); - } - - function _beforeRemoveLiquidity(address, PoolKey calldata, ModifyLiquidityParams calldata, bytes calldata) - internal - pure - override - returns (bytes4) - { - return IHooks.beforeRemoveLiquidity.selector; - } - - function _afterRemoveLiquidity( - address, - PoolKey calldata, - ModifyLiquidityParams calldata, - BalanceDelta, - BalanceDelta, - bytes calldata - ) internal pure override returns (bytes4, BalanceDelta) { - return (IHooks.afterRemoveLiquidity.selector, BalanceDeltaLibrary.ZERO_DELTA); - } - - function _beforeSwap(address, PoolKey calldata, SwapParams calldata, bytes calldata) internal pure override returns (bytes4, BeforeSwapDelta, uint24){ - return (IHooks.beforeSwap.selector, BeforeSwapDeltaLibrary.ZERO_DELTA, 0); - } - - function _afterSwap(address, PoolKey calldata, SwapParams calldata, BalanceDelta, bytes calldata) internal pure override returns (bytes4, int128){ - return (IHooks.afterSwap.selector, 0); - } - - function _beforeDonate(address, PoolKey calldata, uint256, uint256, bytes calldata) - internal - pure - override - returns (bytes4) - { - return IHooks.beforeDonate.selector; - } - - function _afterDonate(address, PoolKey calldata, uint256, uint256, bytes calldata) - internal - pure - override - returns (bytes4) - { - return IHooks.afterDonate.selector; - } -} -import "compose-extensions/BaseDiamond.sol"; -import "compose-extensions/libraries/LibInitializable.sol"; -import "Compose/access/AccessControl/LibAccessControl.sol"; - - -import "Compose/diamond/LibDiamond.sol"; -import "@uniswap/v4-core/src/libraries/Hooks.sol"; -import "@uniswap/v4-core/src/interfaces/IHooks.sol"; - -// NOTE: This type is used to store hook selectors for diamond facet cuts - -struct HookSelectors{ - bytes4[] _hookSelectors; -} - -library LibHookSelectors{ - - function hookSelectors(IHooks _hook) internal pure returns(bytes4[] memory){ - bytes4[] memory __hookSelectors = new bytes4[](uint256(0x10)); - uint256 finalLen = 0; - if (Hooks.hasPermission(_hook, Hooks.BEFORE_INITIALIZE_FLAG)){ - __hookSelectors[0x00] = IHooks.beforeInitialize.selector; - finalLen++; - } - if (Hooks.hasPermission(_hook, Hooks.AFTER_INITIALIZE_FLAG)){ - __hookSelectors[0x01] = IHooks.afterInitialize.selector; - finalLen++; - } - - // Add liquidity hooks - if (Hooks.hasPermission(_hook, Hooks.BEFORE_ADD_LIQUIDITY_FLAG)){ - __hookSelectors[0x02] = IHooks.beforeAddLiquidity.selector; - finalLen++; - } - if (Hooks.hasPermission(_hook, Hooks.AFTER_ADD_LIQUIDITY_FLAG)){ - __hookSelectors[0x03] = IHooks.afterAddLiquidity.selector; - finalLen++; - } - - // Remove liquidity hooks - if (Hooks.hasPermission(_hook, Hooks.BEFORE_REMOVE_LIQUIDITY_FLAG)){ - __hookSelectors[0x04] = IHooks.beforeRemoveLiquidity.selector; - finalLen++; - } - if (Hooks.hasPermission(_hook, Hooks.AFTER_REMOVE_LIQUIDITY_FLAG)){ - __hookSelectors[0x05] = IHooks.afterRemoveLiquidity.selector; - finalLen++; - } - - // Swap hooks - if (Hooks.hasPermission(_hook, Hooks.BEFORE_SWAP_FLAG)){ - __hookSelectors[0x06] = IHooks.beforeSwap.selector; - finalLen++; - } - if (Hooks.hasPermission(_hook, Hooks.AFTER_SWAP_FLAG)){ - __hookSelectors[0x07] = IHooks.afterSwap.selector; - finalLen++; - } - - // Donate hooks - if (Hooks.hasPermission(_hook, Hooks.BEFORE_DONATE_FLAG)){ - __hookSelectors[0x08] = IHooks.beforeDonate.selector; - finalLen++; - } - if (Hooks.hasPermission(_hook, Hooks.AFTER_DONATE_FLAG)){ - __hookSelectors[0x09] = IHooks.afterDonate.selector; - finalLen++; - } - - // Delta return flags (map to same selectors as their base hooks) - if (Hooks.hasPermission(_hook, Hooks.BEFORE_SWAP_RETURNS_DELTA_FLAG)){ - __hookSelectors[0x0A] = IHooks.beforeSwap.selector; - finalLen++; - } - if (Hooks.hasPermission(_hook, Hooks.AFTER_SWAP_RETURNS_DELTA_FLAG)){ - __hookSelectors[0x0B] = IHooks.afterSwap.selector; - finalLen++; - } - if (Hooks.hasPermission(_hook, Hooks.AFTER_ADD_LIQUIDITY_RETURNS_DELTA_FLAG)){ - __hookSelectors[0x0C] = IHooks.afterAddLiquidity.selector; - finalLen++; - } - if (Hooks.hasPermission(_hook, Hooks.AFTER_REMOVE_LIQUIDITY_RETURNS_DELTA_FLAG)){ - __hookSelectors[0x0D] = IHooks.afterRemoveLiquidity.selector; - finalLen++; - } - - bytes4[] memory _resHookSelectors = new bytes4[](finalLen); - uint256 resIndex = 0; - for (uint256 i = 0; i < __hookSelectors.length; i++) { - if (__hookSelectors[i] != bytes4(0x00)) { - _resHookSelectors[resIndex] = __hookSelectors[i]; - resIndex++; - } - } - return _resHookSelectors; - } - - function appendSelectors(bytes4[] memory _self, bytes4[] memory _additionalSelectors) internal pure returns(bytes4[] memory){ - bytes4[] memory result = new bytes4[](_self.length + _additionalSelectors.length); - - for (uint256 i = 0; i < _self.length; i++) { - result[i] = _self[i]; - } - - for (uint256 i = 0; i < _additionalSelectors.length; i++) { - result[_self.length + i] = _additionalSelectors[i]; - } - - return result; - } -} - - -interface IMasterHook{ - event MasterHook__HookAdded(address indexed mediator, address indexed _hook, bytes selectors); - error MasterHook__NotValidHook(); - error MasterHook__Uninitiialized(); - function initialize(address _poolManager, address _allHookImpl) external; - function setProtocolFeeConfig(bytes calldata _encoded_pool_key,bytes calldata _protocol_fee_config) external; - function addHook(address _hook,bytes4[] memory _additionalSelectors) external; -} - - -contract MasterHook is BaseDiamond, IMasterHook{ - bytes32 constant PROTOCOL_ADMIN = keccak256("protocol-admin"); - bytes32 constant STORAGE_POSITION = keccak256("hook-bazar.hooks"); - - struct MasterHookStorage{ - IPoolManager poolManager; - } - - function getStorage() internal pure returns (MasterHookStorage storage $) { - bytes32 position = STORAGE_POSITION; - assembly { - $.slot := position - } - } - - - modifier initializer() { - // solhint-disable-next-line var-name-mixedcase - LibInitializable.InitializableStorage storage $ = LibInitializable.getStorage(); - - // Cache values to avoid duplicated sloads - bool isTopLevelCall = !$._initializing; - uint64 initialized = $._initialized; - - // Allowed calls: - // - initialSetup: the contract is not in the initializing state and no previous version was - // initialized - // - construction: the contract is initialized at version 1 (no reinitialization) and the - // current contract is just being deployed - bool initialSetup = initialized == 0 && isTopLevelCall; - bool construction = initialized == 1 && address(this).code.length == 0; - - if (!initialSetup && !construction) { - revert LibInitializable.InvalidInitialization(); - } - - $._initialized = 1; - if (isTopLevelCall) { - $._initializing = true; - } - _; - if (isTopLevelCall) { - $._initializing = false; - emit LibInitializable.Initialized(1); - } - } - - - - function initialize(address _poolManager, address _allHookImpl) external initializer{ - MasterHookStorage storage $ = getStorage(); - LibAccessControl.setRoleAdmin(LibAccessControl.DEFAULT_ADMIN_ROLE, PROTOCOL_ADMIN); - LibAccessControl.grantRole(PROTOCOL_ADMIN, msg.sender); - - $.poolManager = IPoolManager(_poolManager); - { - bytes4[] memory _interface = new bytes4[](10); - - _interface[0] = IHooks.beforeInitialize.selector; - _interface[1] = IHooks.afterInitialize.selector; - _interface[2] = IHooks.beforeAddLiquidity.selector; - _interface[3] = IHooks.afterAddLiquidity.selector; - _interface[4] = IHooks.beforeRemoveLiquidity.selector; - _interface[5] = IHooks.afterRemoveLiquidity.selector; - _interface[6] = IHooks.beforeSwap.selector; - _interface[7] = IHooks.afterSwap.selector; - _interface[8] = IHooks.beforeDonate.selector; - _interface[9] = IHooks.afterDonate.selector; - - LibDiamond.FacetCut[] memory _cut = new LibDiamond.FacetCut[](1); - _cut[0] = LibDiamond.FacetCut(_allHookImpl, LibDiamond.FacetCutAction.Add, _interface); - this._diamondCut(_cut, address(0x00), abi.encode("0x00")); - } - - } - - modifier initialized(){ - if (LibInitializable.getInitializedVersion() == uint256(0x00)) revert MasterHook__Uninitiialized(); - _; - } - - modifier onlyProtocolAdmin(){ - LibAccessControl.requireRole(PROTOCOL_ADMIN, msg.sender); - _; - } - - - function setProtocolFeeConfig(bytes calldata _encoded_pool_key,bytes calldata _protocol_fee_config) external initialized onlyProtocolAdmin {} - - - - // TODO: This needs to be protected to be only allowed once a amreket transaction has been ccompleted to acquire, plug the hook - function addHook(address _hook, bytes4[] memory _additionalSelectors) external initialized onlyProtocolAdmin{ - // if (!IERC165(_hook).supportsInterface(type(IHooks).interfaceId)) revert MasterHook__NotValidHook(); - bytes4[] memory _hookSelectors = LibHookSelectors.hookSelectors(IHooks(_hook)); - bytes4[] memory _allSelectors = LibHookSelectors.appendSelectors(_hookSelectors, _additionalSelectors); - this._replaceFunctions(_hook, _hookSelectors); - this._addFunctions(_hook, _additionalSelectors); - emit MasterHook__HookAdded(msg.sender, address(_hook), abi.encode(_allSelectors)); - } - - - -} - - - - -contract MockCounterHook2 is MockCounterHook{ - uint256 __slot; - constructor(address _manager) MockCounterHook(IPoolManager(_manager)){} -} - import {IERC20} from "forge-std/interfaces/IERC20.sol"; interface IMockCounterHook{ function beforeSwapCount(PoolId) external view returns(uint256); function afterSwapCount(PoolId) external view returns(uint256); - function beforeAddLiquidityCount(PoolId) external view returns(uint256); - function beforeRemoveLiquidityCount(PoolId) external view returns(uint256); } -uint256 constant DEFAULT_DEADLINE = uint256(type(uint48).max); - + +uint256 constant DEFAULT_DEADLINE = uint256(type(uint48).max); contract SwapHelper{ uint128 constant DEFAULT_SWAP_ZERO_ONE_AMOUNT_IN = uint128(1e18); uint128 constant DEFAULT_AMOUNT_OUT_MINIMUM = uint128(0x00); @@ -485,8 +165,9 @@ contract MasterHookForkTest is Test, SwapHelper, LiquidityHelper{ } function test__fork__initializeMasterHookMustSucceed() public{ - vm.startPrank(protocol_admin); //================PRE-CONDITIONS==================== + + vm.startPrank(protocol_admin); vm.expectRevert(); poolManager.initialize(poolKey, Constants.SQRT_PRICE_1_1); vm.stopPrank(); @@ -509,8 +190,6 @@ contract MasterHookForkTest is Test, SwapHelper, LiquidityHelper{ poolManager.initialize(poolKey, Constants.SQRT_PRICE_1_1); vm.stopPrank(); - - //====================POST-CONDITIONS========================= } diff --git a/contracts/test/protocol-pkg/ProtocolAdminClient.fork.t.sol b/contracts/test/protocol-pkg/ProtocolAdminClient.fork.t.sol new file mode 100644 index 000000000..e6892e545 --- /dev/null +++ b/contracts/test/protocol-pkg/ProtocolAdminClient.fork.t.sol @@ -0,0 +1,146 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import "@hook-bazaar/master-hook-pkg/test/MasterHook.fork.t.sol"; +import "@hook-bazaar/protocol-pkg/src/ProtocolAdminClient.sol"; +import "@hook-bazaar/protocol-hook-pkg/src/ProtocolHookMediator.sol"; +import {ProtocolAdminRegistry} from "@hook-bazaar/protocol-pkg/src/ProtocolAdminRegistry.sol"; +import {ProtocolFactoryFacet} from "@hook-bazaar/protocol-pkg/src/ProtocolFactoryFacet.sol"; + +contract ProtocolAdminClientForkTest is Test, SwapHelper, LiquidityHelper{ + bool forked; + uint256 eth_mainnet_fork; + + uint160 hookPermissionCount = 14; + uint160 clearAllHookPermissionsMask = ~uint160(0) << hookPermissionCount; + + + PoolKey poolKey; + IMasterHook masterHook; + IHooks allHook; + + IProtocolAdminClient protocolAdminClient; + IProtocolHookMediator protocolHookMediator; + IProtocolAdminRegistry protocolAdminRegistry; + IProtocolFactory protocolFactory; + + + IPoolManager poolManager; + IUniversalRouter swapRouter; + + + address protocol_admin = makeAddr("protocol_admin"); + address any_caller = makeAddr("anyCaller"); + address any_caller2 = makeAddr("anyCaller2"); + + + + + + function setUp() public{ + console2.log("Forked Ethereum mainnet"); + try vm.envString("ALCHEMY_API_KEY") returns (string memory){ + eth_mainnet_fork = vm.createSelectFork("mainnet"); + + poolManager = IPoolManager(EthereumMainnet.POOL_MANAGER); + lpm = IPositionManager(EthereumMainnet.POSITION_MANAGER); + swapRouter = IUniversalRouter(EthereumMainnet.UNIVERSAL_ROUTER); + + protocolAdminClient = IProtocolAdminClient(address(new ProtocolAdminClient())); + protocolAdminRegistry = IProtocolAdminRegistry(address(new ProtocolAdminRegistry())); + protocolFactory = IProtocolFactory(address(new ProtocolFactoryFacet())); + + + masterHook = IMasterHook(MasterHook(payable(address(uint160((type(uint160).max & clearAllHookPermissionsMask) | Hooks.ALL_HOOK_MASK))))); + allHook = IHooks(address(AllHook(payable(address(uint160(((type(uint160).max & clearAllHookPermissionsMask) | Hooks.ALL_HOOK_MASK) & (type(uint160).max - 2 ** 156))))))); + + deployCodeTo("MasterHook.sol:MasterHook", abi.encode("0x00"), address(masterHook)); + deployCodeTo("AllHook.sol:AllHook", abi.encode(address(poolManager)), address(allHook)); + + protocolHookMediator = IProtocolHookMediator(address(new ProtocolHookMediator())); + + poolKey = PoolKey(Currency.wrap(EthereumMainnet.ETH),Currency.wrap(EthereumMainnet.USDC), uint24(0x00), int24(0x3c), IHooks(address(masterHook))); + + + forked = true; + + } catch { + console2.log( + "Skipping forked tests, no alchemy key found. Add ALCHEMY_API_KEY env var to .env to run forked tests." + ); + forked = false; + + } + + } + + function test__fork__callingFunctionsBeforeInitializeMustRevert() public { + //======================PRE-CONDITIONS===================================== + + //========================TEST============================================ + vm.startPrank(any_caller); + vm.expectRevert(); + protocolAdminClient.create_pool(1,abi.encode(poolKey), Constants.SQRT_PRICE_1_1); + + vm.stopPrank(); + + //=====================POST-CONDITIONS==================================== + } + + function test__fork__createPoolWitNoProtocolAttachedMustRevert() public{ + //=======================PRE-CONDITIONS============================ + vm.startPrank(protocol_admin); + protocolAdminClient.initialize(protocolAdminRegistry,protocolFactory, "localhost"); + vm.stopPrank(); + + //==========================TEST=================================== + vm.startPrank(any_caller); + vm.expectRevert(); + protocolAdminClient.create_pool(1,abi.encode(poolKey), Constants.SQRT_PRICE_1_1); + vm.stopPrank(); + //========================POST-CONDITIONS=========================== + } + + function test__fork__createPoolWithUnauthorizedPermsMustRevert() public { + //====================PRE-CONDITIONS==================================== + vm.prank(protocol_admin); + protocolAdminClient.initialize(protocolAdminRegistry, protocolFactory, "localhost"); + + vm.prank(any_caller); + protocolAdminClient.create_protocol("MyProtocol1"); + + //=======================TEST=========================================== + vm.prank(any_caller2); + vm.expectRevert(); + protocolAdminClient.create_pool(1,abi.encode(poolKey), Constants.SQRT_PRICE_1_1); + //======================POST-CONDITIONS================================== + } + + function test__fork__createPoolMustSucceed() public { + //===================PRE-CONDITIONS=================== + vm.startPrank(protocol_admin); + masterHook.initialize(address(poolManager), address(allHook)); + protocolAdminClient.initialize(protocolAdminRegistry, protocolFactory, "localhost"); + protocolHookMediator.initialize(masterHook,protocolAdminClient,lpm); + protocolAdminClient.setProtocolHookMediator(protocolHookMediator); + + + vm.stopPrank(); + + vm.prank(any_caller); + protocolAdminClient.create_protocol("MyProtocol1"); + + + //=====================TEST============================= + vm.prank(any_caller); + + protocolAdminClient.create_pool(1,abi.encode(poolKey), Constants.SQRT_PRICE_1_1); + + + //======================POST-CONDITIONS======================== + } + + + + +} \ No newline at end of file diff --git a/contracts/test/protocol-pkg/ProtocolAdminClient.t.sol b/contracts/test/protocol-pkg/ProtocolAdminClient.t.sol index 86ad87c18..5bbb76dc6 100644 --- a/contracts/test/protocol-pkg/ProtocolAdminClient.t.sol +++ b/contracts/test/protocol-pkg/ProtocolAdminClient.t.sol @@ -2,9 +2,9 @@ pragma solidity 0.8.30; import {Test, console2} from "forge-std/Test.sol"; -import {ProtocolAdminClient, IProtocolAdminClient} from "@hook-bazaar/protocol-pkg/ProtocolAdminClient.sol"; -import {ProtocolAdminRegistry} from "@hook-bazaar/protocol-pkg/ProtocolAdminRegistry.sol"; -import {ProtocolFactoryFacet} from "@hook-bazaar/protocol-pkg/ProtocolFactoryFacet.sol"; +import {ProtocolAdminClient, IProtocolAdminClient} from "@hook-bazaar/protocol-pkg/src/ProtocolAdminClient.sol"; +import {ProtocolAdminRegistry, IProtocolAdminRegistry} from "@hook-bazaar/protocol-pkg/src/ProtocolAdminRegistry.sol"; +import {ProtocolFactoryFacet, IProtocolFactory} from "@hook-bazaar/protocol-pkg/src/ProtocolFactoryFacet.sol"; contract ProtocolAdminClientTest is Test{ @@ -40,7 +40,11 @@ contract ProtocolAdminClientTest is Test{ //===============PRE-CONDITIONS===================== //====================TEST============================ vm.startPrank(protocol_deployer); - IProtocolAdminClient(protocol_admin_client).initialize(); + IProtocolAdminClient(protocol_admin_client).initialize( + IProtocolAdminRegistry(protocol_admin_registry), + IProtocolFactory(protocol_factory_facet), + "http://localhost:3000/metadata/" + ); vm.stopPrank(); //================POST-CONDITIONS==================== assertNotEq(IProtocolAdminClient(protocol_admin_client).adminPanel(), address(0x00)); @@ -49,14 +53,13 @@ contract ProtocolAdminClientTest is Test{ function test__unit__initializeAdminProtocolMustSucceed() public { //======================PRE-CONDITIONS============================= - vm.startPrank(protocol_deployer); - IProtocolAdminClient(protocol_admin_client).initialize(); - vm.stopPrank(); - - //=========================TEST=================================== vm.startPrank(protocol_deployer); - IProtocolAdminClient(protocol_admin_client).initialize_admin_panel(protocol_admin_registry, protocol_factory_facet, "http://localhost:3000/metadata/"); + IProtocolAdminClient(protocol_admin_client).initialize( + IProtocolAdminRegistry(protocol_admin_registry), + IProtocolFactory(protocol_factory_facet), + "http://localhost:3000/metadata/" + ); vm.stopPrank(); //=======================POST-CONDITIONS========================== } @@ -64,11 +67,11 @@ contract ProtocolAdminClientTest is Test{ function test__unit__createProtocolMustSucceed() public { //=================PRE-CONDITIONS======================= vm.startPrank(protocol_deployer); - IProtocolAdminClient(protocol_admin_client).initialize(); - vm.stopPrank(); - - vm.startPrank(protocol_deployer); - IProtocolAdminClient(protocol_admin_client).initialize_admin_panel(protocol_admin_registry, protocol_factory_facet, "http://localhost:3000/metadata/"); + IProtocolAdminClient(protocol_admin_client).initialize( + IProtocolAdminRegistry(protocol_admin_registry), + IProtocolFactory(protocol_factory_facet), + "http://localhost:3000/metadata/" + ); vm.stopPrank(); //=======================TEST================================ diff --git a/contracts/test/protocol-pkg/ProtocolAdminManager.t.sol b/contracts/test/protocol-pkg/ProtocolAdminManager.t.sol index 789aa837c..079e74c21 100644 --- a/contracts/test/protocol-pkg/ProtocolAdminManager.t.sol +++ b/contracts/test/protocol-pkg/ProtocolAdminManager.t.sol @@ -2,11 +2,11 @@ pragma solidity >=0.8.30; import {Test, console2} from "forge-std/Test.sol"; -import {ProtocolAdminManager, IProtocolAdminManager} from "@hook-bazaar/protocol-pkg/ProtocolAdminManager.sol"; -import {IComponent} from "@hook-bazaar/protocol-pkg/ProtocolAdminManager.sol"; +import {ProtocolAdminManager, IProtocolAdminManager, Authority} from "@hook-bazaar/protocol-pkg/src/ProtocolAdminManager.sol"; +import {IComponent} from "@hook-bazaar/protocol-pkg/src/ProtocolAdminManager.sol"; contract ProtocolAdminManagerTest is Test{ - address admin = makeAddr("admin"); + address protocol_admin = makeAddr("admin"); address protocol_admin_manager_impl; address any_caller = makeAddr("anyCaller"); @@ -20,16 +20,63 @@ contract ProtocolAdminManagerTest is Test{ //===============TEST========================= + vm.startPrank(protocol_admin); + IComponent(protocol_admin_manager_impl).initialize(protocol_admin); + vm.stopPrank(); + + //============POST-CONDITIONS============== + assertTrue(IProtocolAdminManager(protocol_admin_manager_impl).isCreator(protocol_admin)); + } + + function test__unit__initializeDoubleMustRevert() public { + //===============PRE-CONDITIONS===================== + test__unit__initializeMustSucceed(); + //=================TEST=============================== vm.startPrank(any_caller); + vm.expectRevert(); IComponent(protocol_admin_manager_impl).initialize(any_caller); vm.stopPrank(); + + //=================POST-CONDITIONS======================= + } + + function test__unit__delegatePoolCreatorRoleMustSucceed() public { + //=================PRE-CONDITIONS========================== + test__unit__initializeMustSucceed(); + //==================TEST=================================== + vm.startPrank(protocol_admin); + + IProtocolAdminManager(protocol_admin_manager_impl).delegatePoolCreatorRole(any_caller); + vm.stopPrank(); + //=================POST-CONDITIONS========================= + // assertTrue(Authority(protocol_admin_manager_impl).canCall(any_caller, address(0x00), bytes4(keccak256("create_pool(bytes,uint160)")))); + + } + + function test__unit__makeCallsBeforeInitializingMustFail() public { + //====================PRE-CONDITIONS======================= - //============POST-CONDITIONS============== - assertEq(any_caller, IProtocolAdminManager(protocol_admin_manager_impl).creator()); + //======================TEST============================== + vm.startPrank(any_caller); + vm.expectRevert(); + IProtocolAdminManager(protocol_admin_manager_impl).delegatePoolCreatorRole(any_caller); + vm.stopPrank(); + + //==================POST-CONDITIONS======================= } + function test__unit__delegatePoolCreatorRoleUnauthorizedMustRevert() public{ + //====================PRE-CONDITIONS======================= + test__unit__initializeMustSucceed(); + //======================TEST============================== + vm.startPrank(any_caller); + vm.expectRevert(); + IProtocolAdminManager(protocol_admin_manager_impl).delegatePoolCreatorRole(any_caller); + vm.stopPrank(); + //=====================POST-CONDITIONS========================= + } } diff --git a/contracts/test/protocol-pkg/ProtocolAdminPanel.t.sol b/contracts/test/protocol-pkg/ProtocolAdminPanel.t.sol index 025750e0f..7070280c2 100644 --- a/contracts/test/protocol-pkg/ProtocolAdminPanel.t.sol +++ b/contracts/test/protocol-pkg/ProtocolAdminPanel.t.sol @@ -2,9 +2,10 @@ pragma solidity 0.8.30; import {Test, console2} from "forge-std/Test.sol"; -import {ProtocolAdminPanel, IProtocolAdminPanel} from "@hook-bazaar/protocol-pkg/ProtocolAdminPanel.sol"; -import {ProtocolFactoryFacet, IProtocolFactory} from "@hook-bazaar/protocol-pkg/ProtocolFactoryFacet.sol"; -import {ProtocolAdminRegistry, IProtocolAdminRegistry} from "@hook-bazaar/protocol-pkg/ProtocolAdminRegistry.sol"; +import {ProtocolAdminPanel, IProtocolAdminPanel} from "@hook-bazaar/protocol-pkg/src/ProtocolAdminPanel.sol"; +import {ProtocolFactoryFacet, IProtocolFactory} from "@hook-bazaar/protocol-pkg/src/ProtocolFactoryFacet.sol"; +import {ProtocolAdminRegistry, IProtocolAdminRegistry} from "@hook-bazaar/protocol-pkg/src/ProtocolAdminRegistry.sol"; +import {IProtocolAdminClient} from "@hook-bazaar/protocol-pkg/src/ProtocolAdminClient.sol"; import {ERC165Facet} from "Compose/interfaceDetection/ERC165/ERC165Facet.sol"; import {IERC1155} from "Compose/interfaces/IERC1155.sol"; @@ -14,6 +15,7 @@ contract ProtocolAdminPanelTest is Test{ address protocol_admin_panel; address protocol_admin_registry; address protocol_factory_facet; + @@ -43,30 +45,31 @@ contract ProtocolAdminPanelTest is Test{ //====================TEST============================ vm.startPrank(protocol_deployer); - IProtocolAdminPanel(protocol_admin_panel).initialize(address(new ERC165Facet()),protocol_admin_registry, protocol_factory_facet, "http://localhost:3000/metadata/"); + IProtocolAdminPanel(protocol_admin_panel).initialize( + IProtocolAdminClient(address(new ERC165Facet())), + IProtocolAdminRegistry(protocol_admin_registry), + IProtocolFactory(protocol_factory_facet), + "http://localhost:3000/metadata/" + ); vm.stopPrank(); //================POST-CONDITIONS===================== //============================FACTORY===================================================== - assertEq(IProtocolFactory(protocol_admin_panel).adminPanel(), protocol_admin_panel); - assertEq(IProtocolFactory(protocol_factory_facet).adminPanel(), address(0x00)); - assertEq(keccak256(bytes("http://localhost:3000/metadata/")), keccak256(bytes(IProtocolFactory(protocol_admin_panel).baseURI()))); + // assertEq(IProtocolFactory(protocol_admin_panel).adminPanel(), protocol_admin_panel); + // assertEq(IProtocolFactory(protocol_factory_facet).adminPanel(), address(0x00)); + // assertEq(keccak256(bytes("http://localhost:3000/metadata/")), keccak256(bytes(IProtocolFactory(protocol_admin_panel).baseURI()))); //=========================ADMIN-REGISTRY================================================================ // assertTrue(IProtocolAdminRegistry(protocol_admin_panel).isUpgradeAdmin(protocol_admin_panel)); // assertEq(IProtocolAdminRegistry(protocol_admin_panel).upgradeAdmin(),protocol_admin_panel); - assertNotEq(address(0x00), IProtocolAdminRegistry(protocol_admin_panel).protocol_admin_template()); + // assertNotEq(address(0x00), IProtocolAdminRegistry(protocol_admin_panel).adminManagerTemplate()); } function test__unit__deployProtocolAdminManagerMustSucceed() public{ //===============PRE-CONDITIONS===================== + test__unit__initializeMustSucceed(); vm.startPrank(protocol_deployer); - - protocol_admin_panel = address(new ProtocolAdminPanel()); - - vm.stopPrank(); - vm.startPrank(protocol_deployer); - - IProtocolAdminPanel(protocol_admin_panel).initialize(erc165,protocol_admin_registry, protocol_factory_facet, "http://localhost:3000/metadata/"); + IProtocolFactory(protocol_admin_panel).__initialize("localhost"); + IProtocolAdminRegistry(protocol_admin_panel)._initialize(); vm.stopPrank(); //====================TEST============================ @@ -81,37 +84,37 @@ contract ProtocolAdminPanelTest is Test{ function test__unit__createProtocolMustSucceed() public { //=================PRE-CONDITIONS======================= + test__unit__initializeMustSucceed(); vm.startPrank(protocol_deployer); - - protocol_admin_panel = address(new ProtocolAdminPanel()); + IProtocolFactory(protocol_admin_panel).__initialize("localhost"); + IProtocolAdminRegistry(protocol_admin_panel)._initialize(); vm.stopPrank(); - vm.startPrank(protocol_deployer); - - IProtocolAdminPanel(protocol_admin_panel).initialize(erc165,protocol_admin_registry, protocol_factory_facet, "http://localhost:3000/metadata/"); - - vm.stopPrank(); - + vm.startPrank(any_caller); - address _admin_manager = IProtocolAdminRegistry(protocol_admin_panel).protocol_manager(uint256(0x01)); - vm.stopPrank(); - - //=====================TEST============================= vm.startPrank(protocol_admin_panel); IProtocolFactory(protocol_admin_panel).create_protocol("DeFiHub",_admin_manager,uint256(0x01)); vm.stopPrank(); - - - //=================POST-CONDITIONS====================== + //=================POST-CONDITIONS====================== assertEq(uint256(0x01),IERC1155(protocol_admin_panel).balanceOf(_admin_manager, uint256(0x01))); - assertEq(keccak256(bytes("DeFiHub")),keccak256(bytes(IERC1155(protocol_admin_panel).uri(uint256(0x01))))); + // assertEq(keccak256(bytes("DeFiHub")),keccak256(bytes(IERC1155(protocol_admin_panel).uri(uint256(0x01))))); } + function test__unit__setProtocolHookMediatorMustSucceed() public { + //==================PRE-CONDITIONS=========================== + + //====================TEST=================================== + // vm.startPrank(protocol_deployer); + // IProtocolAdminPanel(protocol_admin_panel).setProtocolHookMediator(_hookMediator); + // vm.stopPrank(); + //==================POST-CONDITIONS========================= + + } } \ No newline at end of file diff --git a/contracts/test/protocol-pkg/ProtocolAdminRegistry.t.sol b/contracts/test/protocol-pkg/ProtocolAdminRegistry.t.sol index 0917c122b..299d4e8cf 100644 --- a/contracts/test/protocol-pkg/ProtocolAdminRegistry.t.sol +++ b/contracts/test/protocol-pkg/ProtocolAdminRegistry.t.sol @@ -3,7 +3,7 @@ pragma solidity >=0.8.30; import {Test, console2} from "forge-std/Test.sol"; -import {ProtocolAdminRegistry, IProtocolAdminRegistry} from "@hook-bazaar/protocol-pkg/ProtocolAdminRegistry.sol"; +import {ProtocolAdminRegistry, IProtocolAdminRegistry, IGenericFactory} from "@hook-bazaar/protocol-pkg/src/ProtocolAdminRegistry.sol"; import {ProxyHelper} from "./helpers/ProxyHelper.sol"; contract ProtocolAdminRegistryTest is Test{ @@ -24,23 +24,30 @@ contract ProtocolAdminRegistryTest is Test{ assertEq(protocol_admin_registry, IProtocolAdminRegistry(protocol_admin_registry).__self()); //====================TEST============================ - vm.startPrank(proxy_helper); + vm.startPrank(admin); IProtocolAdminRegistry(proxy_helper)._initialize(); - vm.stopPrank(); //===============POST-CONDITIONS================== - // assertTrue(IProtocolAdminRegistry(proxy_helper).isUpgradeAdmin(proxy_helper)); - // assertEq(IProtocolAdminRegistry(proxy_helper).upgradeAdmin(),proxy_helper); - assertNotEq(address(0x00), IProtocolAdminRegistry(proxy_helper).protocol_admin_template()); + assertEq(IProtocolAdminRegistry(proxy_helper).upgradeAdmin(),admin); + assertNotEq(address(0x00), IProtocolAdminRegistry(proxy_helper).adminManagerTemplate()); } - function test__unit__deployAdminManagerMustSucceed() public{ - //=================PRE-CONDITIONS========================= - vm.startPrank(proxy_helper); + function test__unit__initializeMustRevertDoubleInitialization() public { + //================PRE-CONDITIONS============================== + test__unit__initializeMustSucceed(); + //===================TEST======================================= + vm.startPrank(any_caller); + vm.expectRevert(); IProtocolAdminRegistry(proxy_helper)._initialize(); vm.stopPrank(); + //===================POST-CONDITIONS=========================== + } + + function test__unit__deployAdminManagerMustSucceed() public{ + //=================PRE-CONDITIONS========================= + test__unit__initializeMustSucceed(); //====================TEST============================== diff --git a/contracts/test/protocol-pkg/ProtocolFactoryFacet.t.sol b/contracts/test/protocol-pkg/ProtocolFactoryFacet.t.sol index 1ad9d949b..5a18e7edd 100644 --- a/contracts/test/protocol-pkg/ProtocolFactoryFacet.t.sol +++ b/contracts/test/protocol-pkg/ProtocolFactoryFacet.t.sol @@ -2,9 +2,9 @@ pragma solidity 0.8.30; import {Test, console2} from "forge-std/Test.sol"; -import {ProtocolFactoryFacet, IProtocolFactory} from "@hook-bazaar/protocol-pkg/ProtocolFactoryFacet.sol"; +import {ProtocolFactoryFacet, IProtocolFactory} from "@hook-bazaar/protocol-pkg/src/ProtocolFactoryFacet.sol"; import {ProxyHelper} from "./helpers/ProxyHelper.sol"; -import {ProtocolAdminManager, IComponent} from "@hook-bazaar/protocol-pkg/ProtocolAdminManager.sol"; +import {ProtocolAdminManager, IComponent} from "@hook-bazaar/protocol-pkg/src/ProtocolAdminManager.sol"; import {IERC1155} from "Compose/interfaces/IERC1155.sol"; contract ProtocolFactoryFacetTest is Test{ @@ -15,8 +15,8 @@ contract ProtocolFactoryFacetTest is Test{ address protocol_factory_facet; address protocol_admin_manager_impl; - function setUp() public{ + protocol_factory_facet = address(new ProtocolFactoryFacet()); proxy_helper = address(new ProxyHelper(protocol_factory_facet)); protocol_admin_manager_impl = address(new ProtocolAdminManager()); @@ -26,7 +26,7 @@ contract ProtocolFactoryFacetTest is Test{ //==========PRE-CONDITIONS================== assertEq(protocol_factory_facet, IProtocolFactory(protocol_factory_facet).__self()); //=============TEST======================= - vm.startPrank(proxy_helper); + vm.startPrank(admin); IProtocolFactory(proxy_helper).__initialize("http://localhost:3000/metadata/"); vm.stopPrank(); @@ -38,27 +38,25 @@ contract ProtocolFactoryFacetTest is Test{ function test__unit__createProtocolMustSucceed() public { //============PRE-CONDITIONS============= - vm.startPrank(proxy_helper); - IProtocolFactory(proxy_helper).__initialize("http://localhost:3000/metadata/"); - vm.stopPrank(); - + test__unit__initializeMustSucceed(); + // vm.startPrank(proxy_helper); IComponent(protocol_admin_manager_impl).initialize(any_caller); vm.stopPrank(); - - + uint256 beforeProtocolsBalance = IERC1155(proxy_helper).balanceOf(protocol_admin_manager_impl, uint256(0x01)); //===============TEST==================== - vm.startPrank(proxy_helper); + vm.startPrank(any_caller); IProtocolFactory(proxy_helper).create_protocol("DeFi Hub",protocol_admin_manager_impl,uint256(0x01)); vm.stopPrank(); //=========POST-CONDITIONS=============== - - assertEq(uint256(0x01),IERC1155(proxy_helper).balanceOf(protocol_admin_manager_impl, uint256(0x01))); - assertEq(keccak256(bytes("DeFi Hub")),keccak256(bytes(IERC1155(proxy_helper).uri(uint256(0x01))))); + uint256 afterProtocolBalance = IERC1155(proxy_helper).balanceOf(protocol_admin_manager_impl, uint256(0x01)); + assertEq(afterProtocolBalance, uint256(0x01) +beforeProtocolsBalance); + // assertEq(uint256(0x01),IERC1155(proxy_helper).balanceOf(protocol_admin_manager_impl, uint256(0x01))); + // // assertEq(keccak256(bytes("DeFi Hub")),keccak256(bytes(IERC1155(proxy_helper).uri(uint256(0x01))))); } diff --git a/docs/NOTES.md b/docs/NOTES.md index 823923f7a..cbd6e1699 100644 --- a/docs/NOTES.md +++ b/docs/NOTES.md @@ -76,3 +76,15 @@ Tooling: - A developer + + + +1. Agent documentation for gitBook document generator +- Use the reactice system approach (func, beh, communication) + +2. Frontend Agent documentation + - agent to have access to the JS browser console + - especial instructions for web3 integration +3. Indexer Agent documentation + - leverage sqd, etc +4. github devOPs agent documentation \ No newline at end of file diff --git a/foundry.toml b/foundry.toml index 816232a4b..4543eb0ae 100644 --- a/foundry.toml +++ b/foundry.toml @@ -6,6 +6,7 @@ out = "contracts/out/" libs = ["contracts/lib", "node_modules"] script = "contracts/script" ffi=true + fs_permissions = [ { access = "read", path = "./contracts/broadcast" }, { access = "read", path = "./contracts/reports" }, @@ -20,21 +21,24 @@ remappings = [ "compose-extensions/=contracts/lib/compose-extensions/src/", "@openzeppelin/contracts/=contracts/lib/openzeppelin-contracts/contracts/", "solmate/=contracts/lib/v4-periphery/lib/permit2/lib/solmate/", - "foundry-devops/=contracts/lib/foundry-devops/src/", - "@hook-bazaar/protocol-pkg/=contracts/src/protocol-pkg/", - "@hook-bazaar/master-hook-pkg/src/=contracts/src/master-hook-pkg/src/", - "@hook-bazaar/protocol-pkg/script/=contracts/script/protocol-pkg/", - "@hook-bazaar/master-hook-pkg/script/=contracts/script/hook-master/", + "foundry-devops/=contracts/lib/foundry-devops/src/", "@hook-bazaar/protocol-pkg/test/=contracts/test/protocol-pkg/", - "@hook-bazaar/master-hook-pkg/test/=contracts/test/hook-master/", - + "@hook-bazaar/protocol-pkg/script/=contracts/script/protocol-pkg/", + "@hook-bazaar/protocol-pkg/src/=contracts/src/protocol-pkg/", + "@hook-bazaar/master-hook-pkg/test/=contracts/test/master-hook-pkg/", + "@hook-bazaar/master-hook-pkg/script/=contracts/script/master-hook-pkg/", + "@hook-bazaar/master-hook-pkg/src/=contracts/src/master-hook-pkg/", + "@hook-bazaar/protocol-hook-pkg/test/=contracts/test/protocol-hook-pkg/", + "@hook-bazaar/protocol-hook-pkg/script/=contracts/script/protocol-hook-pkg/", + "@hook-bazaar/protocol-hook-pkg/src/=contracts/src/protocol-hook-pkg/", + "@euler/=contracts/lib/compose-extensions/lib/euler-vault-kit/src/" ] compiler_restrictions = [ {path = "contracts/src/**", solc_version = ">=0.8.30", evm_version = "prague"}, {path = "contracts/lib/v4-periphery/**", solc_version = "=0.8.26", evm_version = "cancun"}, - {path = "contracts/lib/compose-extensions/**", solc_version = "=0.8.30", evm_version = "prague"}, - {path = "contracts/test/**", solc_version = ">=0.8.0"} + {path = "contracts/lib/compose-extensions/**", solc_version = "=0.8.30"} + ] [rpc_endpoints] diff --git a/package-lock.json b/package-lock.json index cf117f138..2db4ff636 100644 --- a/package-lock.json +++ b/package-lock.json @@ -39,6 +39,7 @@ "@subsquid/evm-abi": "^0.3.1", "@subsquid/evm-codec": "^0.3.0", "@subsquid/evm-processor": "^1.27.3", + "@subsquid/openreader": "^5.3.0", "@subsquid/typeorm-store": "^1.5.1", "@subsquid/util-internal": "^3.2.0", "@tanstack/react-query": "^5.59.0", @@ -85,6 +86,170 @@ "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==", "license": "MIT" }, + "node_modules/@apollo/protobufjs": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.7.tgz", + "integrity": "sha512-Lahx5zntHPZia35myYDBRuF58tlwPskwHc5CWBZC/4bMKB6siTBWwtMrkqXcsNwQiFSzSx5hKdRPUmemrEp3Gg==", + "hasInstallScript": true, + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.0", + "long": "^4.0.0" + }, + "bin": { + "apollo-pbjs": "bin/pbjs", + "apollo-pbts": "bin/pbts" + } + }, + "node_modules/@apollo/usage-reporting-protobuf": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@apollo/usage-reporting-protobuf/-/usage-reporting-protobuf-4.1.1.tgz", + "integrity": "sha512-u40dIUePHaSKVshcedO7Wp+mPiZsaU6xjv9J+VyxpoU/zL6Jle+9zWeG98tr/+SZ0nZ4OXhrbb8SNr0rAPpIDA==", + "license": "MIT", + "dependencies": { + "@apollo/protobufjs": "1.2.7" + } + }, + "node_modules/@apollo/utils.dropunuseddefinitions": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.dropunuseddefinitions/-/utils.dropunuseddefinitions-1.1.0.tgz", + "integrity": "sha512-jU1XjMr6ec9pPoL+BFWzEPW7VHHulVdGKMkPAMiCigpVIT11VmCbnij0bWob8uS3ODJ65tZLYKAh/55vLw2rbg==", + "license": "MIT", + "engines": { + "node": ">=12.13.0" + }, + "peerDependencies": { + "graphql": "14.x || 15.x || 16.x" + } + }, + "node_modules/@apollo/utils.keyvaluecache": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@apollo/utils.keyvaluecache/-/utils.keyvaluecache-1.0.2.tgz", + "integrity": "sha512-p7PVdLPMnPzmXSQVEsy27cYEjVON+SH/Wb7COyW3rQN8+wJgT1nv9jZouYtztWW8ZgTkii5T6tC9qfoDREd4mg==", + "license": "MIT", + "dependencies": { + "@apollo/utils.logger": "^1.0.0", + "lru-cache": "7.10.1 - 7.13.1" + } + }, + "node_modules/@apollo/utils.keyvaluecache/node_modules/lru-cache": { + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.13.1.tgz", + "integrity": "sha512-CHqbAq7NFlW3RSnoWXLJBxCWaZVBrfa9UEHId2M3AW8iEBurbqduNexEUCGc3SHc6iCYXNJCDi903LajSVAEPQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/@apollo/utils.logger": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.logger/-/utils.logger-1.0.1.tgz", + "integrity": "sha512-XdlzoY7fYNK4OIcvMD2G94RoFZbzTQaNP0jozmqqMudmaGo2I/2Jx71xlDJ801mWA/mbYRihyaw6KJii7k5RVA==", + "license": "MIT" + }, + "node_modules/@apollo/utils.printwithreducedwhitespace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.printwithreducedwhitespace/-/utils.printwithreducedwhitespace-1.1.0.tgz", + "integrity": "sha512-GfFSkAv3n1toDZ4V6u2d7L4xMwLA+lv+6hqXicMN9KELSJ9yy9RzuEXaX73c/Ry+GzRsBy/fdSUGayGqdHfT2Q==", + "license": "MIT", + "engines": { + "node": ">=12.13.0" + }, + "peerDependencies": { + "graphql": "14.x || 15.x || 16.x" + } + }, + "node_modules/@apollo/utils.removealiases": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.removealiases/-/utils.removealiases-1.0.0.tgz", + "integrity": "sha512-6cM8sEOJW2LaGjL/0vHV0GtRaSekrPQR4DiywaApQlL9EdROASZU5PsQibe2MWeZCOhNrPRuHh4wDMwPsWTn8A==", + "license": "MIT", + "engines": { + "node": ">=12.13.0" + }, + "peerDependencies": { + "graphql": "14.x || 15.x || 16.x" + } + }, + "node_modules/@apollo/utils.sortast": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.sortast/-/utils.sortast-1.1.0.tgz", + "integrity": "sha512-VPlTsmUnOwzPK5yGZENN069y6uUHgeiSlpEhRnLFYwYNoJHsuJq2vXVwIaSmts015WTPa2fpz1inkLYByeuRQA==", + "license": "MIT", + "dependencies": { + "lodash.sortby": "^4.7.0" + }, + "engines": { + "node": ">=12.13.0" + }, + "peerDependencies": { + "graphql": "14.x || 15.x || 16.x" + } + }, + "node_modules/@apollo/utils.stripsensitiveliterals": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.stripsensitiveliterals/-/utils.stripsensitiveliterals-1.2.0.tgz", + "integrity": "sha512-E41rDUzkz/cdikM5147d8nfCFVKovXxKBcjvLEQ7bjZm/cg9zEcXvS6vFY8ugTubI3fn6zoqo0CyU8zT+BGP9w==", + "license": "MIT", + "engines": { + "node": ">=12.13.0" + }, + "peerDependencies": { + "graphql": "14.x || 15.x || 16.x" + } + }, + "node_modules/@apollo/utils.usagereporting": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.usagereporting/-/utils.usagereporting-1.0.1.tgz", + "integrity": "sha512-6dk+0hZlnDbahDBB2mP/PZ5ybrtCJdLMbeNJD+TJpKyZmSY6bA3SjI8Cr2EM9QA+AdziywuWg+SgbWUF3/zQqQ==", + "license": "MIT", + "dependencies": { + "@apollo/usage-reporting-protobuf": "^4.0.0", + "@apollo/utils.dropunuseddefinitions": "^1.1.0", + "@apollo/utils.printwithreducedwhitespace": "^1.1.0", + "@apollo/utils.removealiases": "1.0.0", + "@apollo/utils.sortast": "^1.1.0", + "@apollo/utils.stripsensitiveliterals": "^1.2.0" + }, + "engines": { + "node": ">=12.13.0" + }, + "peerDependencies": { + "graphql": "14.x || 15.x || 16.x" + } + }, + "node_modules/@apollographql/apollo-tools": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@apollographql/apollo-tools/-/apollo-tools-0.5.4.tgz", + "integrity": "sha512-shM3q7rUbNyXVVRkQJQseXv6bnYM3BUma/eZhwXR4xsuM+bqWnJKvW7SAfRjP7LuSCocrexa5AXhjjawNHrIlw==", + "license": "MIT", + "engines": { + "node": ">=8", + "npm": ">=6" + }, + "peerDependencies": { + "graphql": "^14.2.1 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@apollographql/graphql-playground-html": { + "version": "1.6.29", + "resolved": "https://registry.npmjs.org/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.29.tgz", + "integrity": "sha512-xCcXpoz52rI4ksJSdOCxeOCn2DLocxwHf9dVT/Q90Pte1LX+LY+91SFtJF3KXVHH8kEin+g1KKCQPKBjZJfWNA==", + "license": "MIT", + "dependencies": { + "xss": "^1.0.8" + } + }, "node_modules/@babel/runtime": { "version": "7.28.4", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", @@ -1752,6 +1917,178 @@ "viem": ">=2.0.0" } }, + "node_modules/@graphql-tools/merge": { + "version": "9.1.6", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-9.1.6.tgz", + "integrity": "sha512-bTnP+4oom4nDjmkS3Ykbe+ljAp/RIiWP3R35COMmuucS24iQxGLa9Hn8VMkLIoaoPxgz6xk+dbC43jtkNsFoBw==", + "license": "MIT", + "dependencies": { + "@graphql-tools/utils": "^10.11.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/merge/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/@graphql-tools/mock": { + "version": "8.7.20", + "resolved": "https://registry.npmjs.org/@graphql-tools/mock/-/mock-8.7.20.tgz", + "integrity": "sha512-ljcHSJWjC/ZyzpXd5cfNhPI7YljRVvabKHPzKjEs5ElxWu2cdlLGvyNYepApXDsM/OJG/2xuhGM+9GWu5gEAPQ==", + "license": "MIT", + "dependencies": { + "@graphql-tools/schema": "^9.0.18", + "@graphql-tools/utils": "^9.2.1", + "fast-json-stable-stringify": "^2.1.0", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/mock/node_modules/@graphql-tools/merge": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.4.2.tgz", + "integrity": "sha512-XbrHAaj8yDuINph+sAfuq3QCZ/tKblrTLOpirK0+CAgNlZUCHs0Fa+xtMUURgwCVThLle1AF7svJCxFizygLsw==", + "license": "MIT", + "dependencies": { + "@graphql-tools/utils": "^9.2.1", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/mock/node_modules/@graphql-tools/schema": { + "version": "9.0.19", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-9.0.19.tgz", + "integrity": "sha512-oBRPoNBtCkk0zbUsyP4GaIzCt8C0aCI4ycIRUL67KK5pOHljKLBBtGT+Jr6hkzA74C8Gco8bpZPe7aWFjiaK2w==", + "license": "MIT", + "dependencies": { + "@graphql-tools/merge": "^8.4.1", + "@graphql-tools/utils": "^9.2.1", + "tslib": "^2.4.0", + "value-or-promise": "^1.0.12" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/mock/node_modules/@graphql-tools/utils": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.2.1.tgz", + "integrity": "sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A==", + "license": "MIT", + "dependencies": { + "@graphql-typed-document-node/core": "^3.1.1", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/mock/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/@graphql-tools/mock/node_modules/value-or-promise": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.12.tgz", + "integrity": "sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/@graphql-tools/schema": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.5.1.tgz", + "integrity": "sha512-0Esilsh0P/qYcB5DKQpiKeQs/jevzIadNTaT0jeWklPMwNbT7yMX4EqZany7mbeRRlSRwMzNzL5olyFdffHBZg==", + "license": "MIT", + "dependencies": { + "@graphql-tools/merge": "8.3.1", + "@graphql-tools/utils": "8.9.0", + "tslib": "^2.4.0", + "value-or-promise": "1.0.11" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/schema/node_modules/@graphql-tools/merge": { + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.1.tgz", + "integrity": "sha512-BMm99mqdNZbEYeTPK3it9r9S6rsZsQKtlqJsSBknAclXq2pGEfOxjcIZi+kBSkHZKPKCRrYDd5vY0+rUmIHVLg==", + "license": "MIT", + "dependencies": { + "@graphql-tools/utils": "8.9.0", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/schema/node_modules/@graphql-tools/utils": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.9.0.tgz", + "integrity": "sha512-pjJIWH0XOVnYGXCqej8g/u/tsfV4LvLlj0eATKQu5zwnxd/TiTHq7Cg313qUPTFFHZ3PP5wJ15chYVtLDwaymg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/schema/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/@graphql-tools/utils": { + "version": "10.11.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-10.11.0.tgz", + "integrity": "sha512-iBFR9GXIs0gCD+yc3hoNswViL1O5josI33dUqiNStFI/MHLCEPduasceAcazRH77YONKNiviHBV8f7OgcT4o2Q==", + "license": "MIT", + "dependencies": { + "@graphql-typed-document-node/core": "^3.1.1", + "@whatwg-node/promise-helpers": "^1.0.0", + "cross-inspect": "1.0.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/utils/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/@graphql-typed-document-node/core": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "license": "MIT", + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, "node_modules/@hapi/hoek": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", @@ -1904,6 +2241,12 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/@josephg/resolvable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@josephg/resolvable/-/resolvable-1.0.1.tgz", + "integrity": "sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg==", + "license": "ISC" + }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", @@ -18934,6 +19277,70 @@ "node": ">=12" } }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "license": "BSD-3-Clause" + }, "node_modules/@radix-ui/number": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.1.tgz", @@ -23426,6 +23833,94 @@ "license": "MIT", "peer": true }, + "node_modules/@subsquid/apollo-server-core": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@subsquid/apollo-server-core/-/apollo-server-core-3.14.0.tgz", + "integrity": "sha512-ubGem3d0eTcMxJS/XR53EMsjrh4SyLneEsVn3XUyw7T9VQBOZYsu2OAFfnFUdnYU4u0imAX/VVh24Mt6I4WetQ==", + "license": "MIT", + "dependencies": { + "@apollo/utils.keyvaluecache": "^1.0.1", + "@apollo/utils.logger": "^1.0.0", + "@apollo/utils.usagereporting": "^1.0.0", + "@apollographql/apollo-tools": "^0.5.3", + "@apollographql/graphql-playground-html": "1.6.29", + "@graphql-tools/mock": "^8.1.2", + "@graphql-tools/schema": "^8.0.0", + "@josephg/resolvable": "^1.0.0", + "apollo-datasource": "^3.3.2", + "apollo-reporting-protobuf": "^3.4.0", + "apollo-server-env": "^4.2.1", + "apollo-server-errors": "^3.3.1", + "apollo-server-plugin-base": "^3.7.2", + "apollo-server-types": "^3.8.0", + "async-retry": "^1.2.1", + "fast-json-stable-stringify": "^2.1.0", + "graphql-tag": "^2.11.0", + "loglevel": "^1.6.8", + "lru-cache": "^6.0.0", + "node-abort-controller": "^3.0.1", + "sha.js": "^2.4.11", + "uuid": "^9.0.0", + "whatwg-mimetype": "^3.0.0" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "graphql": "^15.3.0 || ^16.0.0" + } + }, + "node_modules/@subsquid/apollo-server-core/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@subsquid/apollo-server-core/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@subsquid/apollo-server-express": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/@subsquid/apollo-server-express/-/apollo-server-express-3.14.1.tgz", + "integrity": "sha512-A4gr0CACz8TNpsDPT3E8DvN7YZwmmMgpSk0WYMtcUkVOd+2Z6rVhYsmctV2KsEX07GcQta8VUOafkY+GmgtSNA==", + "license": "MIT", + "dependencies": { + "@subsquid/apollo-server-core": "^3.14.0", + "@types/accepts": "^1.3.5", + "@types/body-parser": "1.19.2", + "@types/cors": "2.8.12", + "@types/express": "4.17.14", + "@types/express-serve-static-core": "4.17.31", + "accepts": "^1.3.5", + "apollo-server-types": "^3.8.0", + "body-parser": "^1.19.0", + "cors": "^2.8.5", + "parseurl": "^1.3.3" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "express": "^4.17.1", + "graphql": "^15.3.0 || ^16.0.0" + } + }, "node_modules/@subsquid/big-decimal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@subsquid/big-decimal/-/big-decimal-1.0.0.tgz", @@ -23650,6 +24145,11 @@ "@subsquid/util-timeout": "^2.3.2" } }, + "node_modules/@subsquid/graphiql-console": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@subsquid/graphiql-console/-/graphiql-console-0.3.0.tgz", + "integrity": "sha512-C89mus6IXnNi0xMQrZqUFBZwLj8tbuq9lye8Gq/lHmmERAUpi6UsWEyLdJLx2mneZzF3JtY8eNiiZ16jmjtvfw==" + }, "node_modules/@subsquid/http-client": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/@subsquid/http-client/-/http-client-1.8.0.tgz", @@ -23725,6 +24225,83 @@ "dev": true, "license": "ISC" }, + "node_modules/@subsquid/openreader": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@subsquid/openreader/-/openreader-5.3.0.tgz", + "integrity": "sha512-nX5x7Fu7qHVxARTae0JzEOY2vj0MSDP09SBNQDvVSh4azlAcaIzGkzpX7GIGe0wUtt1fz5wXMn5/zyCc5nxHuQ==", + "license": "GPL-3.0-or-later", + "dependencies": { + "@graphql-tools/merge": "^9.0.1", + "@subsquid/apollo-server-core": "^3.14.0", + "@subsquid/apollo-server-express": "^3.14.1", + "@subsquid/graphiql-console": "^0.3.0", + "@subsquid/logger": "^1.4.0", + "@subsquid/util-internal": "^3.2.0", + "@subsquid/util-internal-commander": "^1.4.0", + "@subsquid/util-internal-hex": "^1.2.2", + "@subsquid/util-internal-http-server": "^2.0.0", + "@subsquid/util-naming": "^1.3.0", + "commander": "^11.1.0", + "deep-equal": "^2.2.3", + "express": "^4.18.2", + "graphql": "^15.8.0", + "graphql-parse-resolve-info": "^4.14.0", + "graphql-ws": "^5.14.2", + "inflected": "^2.1.0", + "pg": "^8.11.3", + "ws": "^8.14.2" + }, + "bin": { + "openreader": "bin/main.js" + }, + "peerDependencies": { + "@subsquid/big-decimal": "^1.0.0" + }, + "peerDependenciesMeta": { + "@subsquid/big-decimal": { + "optional": true + } + } + }, + "node_modules/@subsquid/openreader/node_modules/@subsquid/util-internal-commander": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@subsquid/util-internal-commander/-/util-internal-commander-1.4.0.tgz", + "integrity": "sha512-I+IztlLVow9z2S5lK/ON4aBRYXKtAKXl/rVPUn1Ue5vq+5JgEFbWEKJgnwXkd0qKnKeoYeaRFlcyQVfxirxzJw==", + "license": "GPL-3.0-or-later", + "peerDependencies": { + "commander": "^11.1.0" + } + }, + "node_modules/@subsquid/openreader/node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/@subsquid/openreader/node_modules/ws": { + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/@subsquid/rpc-client": { "version": "4.14.0", "resolved": "https://registry.npmjs.org/@subsquid/rpc-client/-/rpc-client-4.14.0.tgz", @@ -24367,6 +24944,15 @@ "node": ">= 10.0.0" } }, + "node_modules/@types/accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/bn.js": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.2.0.tgz", @@ -24378,6 +24964,16 @@ "@types/node": "*" } }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, "node_modules/@types/canvas-confetti": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@types/canvas-confetti/-/canvas-confetti-1.9.0.tgz", @@ -24422,6 +25018,12 @@ "@types/node": "*" } }, + "node_modules/@types/cors": { + "version": "2.8.12", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", + "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", + "license": "MIT" + }, "node_modules/@types/d3-array": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz", @@ -24501,6 +25103,29 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/express": { + "version": "4.17.14", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", + "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.31", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", + "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, "node_modules/@types/fast-levenshtein": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/@types/fast-levenshtein/-/fast-levenshtein-0.0.4.tgz", @@ -24526,12 +25151,24 @@ "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==", "license": "MIT" }, + "node_modules/@types/http-errors": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "license": "MIT" + }, "node_modules/@types/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-FOvQ0YPD5NOfPgMzJihoT+Za5pdkDJWcbpuj1DjaKZIr/gxodQjY/uWEFlTNqW2ugXHUiL8lRQgw63dzKHZdeQ==", "license": "MIT" }, + "node_modules/@types/long": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==", + "license": "MIT" + }, "node_modules/@types/minimatch": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", @@ -24582,6 +25219,18 @@ "license": "MIT", "peer": true }, + "node_modules/@types/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "license": "MIT" + }, "node_modules/@types/react": { "version": "19.2.7", "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz", @@ -24623,6 +25272,16 @@ "@types/node": "*" } }, + "node_modules/@types/serve-static": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==", + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*" + } + }, "node_modules/@types/tar-fs": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/tar-fs/-/tar-fs-2.0.4.tgz", @@ -25982,6 +26641,24 @@ "tslib": "1.14.1" } }, + "node_modules/@whatwg-node/promise-helpers": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@whatwg-node/promise-helpers/-/promise-helpers-1.3.2.tgz", + "integrity": "sha512-Nst5JdK47VIl9UcGwtv2Rcgyn5lWtZ0/mhRQ4G8NN2isxpq2TO30iqHzmwoJycjWuyUfg3GFXqP/gFHXeV57IA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.6.3" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@whatwg-node/promise-helpers/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, "node_modules/abbrev": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", @@ -26010,6 +26687,19 @@ } } }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/acorn": { "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", @@ -26237,6 +26927,123 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/apollo-datasource": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-3.3.2.tgz", + "integrity": "sha512-L5TiS8E2Hn/Yz7SSnWIVbZw0ZfEIXZCa5VUiVxD9P53JvSrf4aStvsFDlGWPvpIdCR+aly2CfoB79B9/JjKFqg==", + "deprecated": "The `apollo-datasource` package is part of Apollo Server v2 and v3, which are now end-of-life (as of October 22nd 2023 and October 22nd 2024, respectively). See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.", + "license": "MIT", + "dependencies": { + "@apollo/utils.keyvaluecache": "^1.0.1", + "apollo-server-env": "^4.2.1" + }, + "engines": { + "node": ">=12.0" + } + }, + "node_modules/apollo-reporting-protobuf": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.4.0.tgz", + "integrity": "sha512-h0u3EbC/9RpihWOmcSsvTW2O6RXVaD/mPEjfrPkxRPTEPWqncsgOoRJw+wih4OqfH3PvTJvoEIf4LwKrUaqWog==", + "deprecated": "The `apollo-reporting-protobuf` package is part of Apollo Server v2 and v3, which are now end-of-life (as of October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/usage-reporting-protobuf` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.", + "license": "MIT", + "dependencies": { + "@apollo/protobufjs": "1.2.6" + } + }, + "node_modules/apollo-reporting-protobuf/node_modules/@apollo/protobufjs": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.6.tgz", + "integrity": "sha512-Wqo1oSHNUj/jxmsVp4iR3I480p6qdqHikn38lKrFhfzcDJ7lwd7Ck7cHRl4JE81tWNArl77xhnG/OkZhxKBYOw==", + "hasInstallScript": true, + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.0", + "@types/node": "^10.1.0", + "long": "^4.0.0" + }, + "bin": { + "apollo-pbjs": "bin/pbjs", + "apollo-pbts": "bin/pbts" + } + }, + "node_modules/apollo-reporting-protobuf/node_modules/@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", + "license": "MIT" + }, + "node_modules/apollo-server-env": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-4.2.1.tgz", + "integrity": "sha512-vm/7c7ld+zFMxibzqZ7SSa5tBENc4B0uye9LTfjJwGoQFY5xsUPH5FpO5j0bMUDZ8YYNbrF9SNtzc5Cngcr90g==", + "deprecated": "The `apollo-server-env` package is part of Apollo Server v2 and v3, which are now end-of-life (as of October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/utils.fetcher` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.6.7" + }, + "engines": { + "node": ">=12.0" + } + }, + "node_modules/apollo-server-errors": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-3.3.1.tgz", + "integrity": "sha512-xnZJ5QWs6FixHICXHxUfm+ZWqqxrNuPlQ+kj5m6RtEgIpekOPssH/SD9gf2B4HuWV0QozorrygwZnux8POvyPA==", + "deprecated": "The `apollo-server-errors` package is part of Apollo Server v2 and v3, which are now end-of-life (as of October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.", + "license": "MIT", + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "graphql": "^15.3.0 || ^16.0.0" + } + }, + "node_modules/apollo-server-plugin-base": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.7.2.tgz", + "integrity": "sha512-wE8dwGDvBOGehSsPTRZ8P/33Jan6/PmL0y0aN/1Z5a5GcbFhDaaJCjK5cav6npbbGL2DPKK0r6MPXi3k3N45aw==", + "deprecated": "The `apollo-server-plugin-base` package is part of Apollo Server v2 and v3, which are now end-of-life (as of October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.", + "license": "MIT", + "dependencies": { + "apollo-server-types": "^3.8.0" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "graphql": "^15.3.0 || ^16.0.0" + } + }, + "node_modules/apollo-server-types": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.8.0.tgz", + "integrity": "sha512-ZI/8rTE4ww8BHktsVpb91Sdq7Cb71rdSkXELSwdSR0eXu600/sY+1UXhTWdiJvk+Eq5ljqoHLwLbY2+Clq2b9A==", + "deprecated": "The `apollo-server-types` package is part of Apollo Server v2 and v3, which are now end-of-life (as of October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.", + "license": "MIT", + "dependencies": { + "@apollo/utils.keyvaluecache": "^1.0.1", + "@apollo/utils.logger": "^1.0.0", + "apollo-reporting-protobuf": "^3.4.0", + "apollo-server-env": "^4.2.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "graphql": "^15.3.0 || ^16.0.0" + } + }, "node_modules/app-root-path": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.1.0.tgz", @@ -26291,6 +27098,28 @@ "node": ">=6" } }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "license": "MIT" + }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -26349,7 +27178,6 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", - "dev": true, "license": "MIT", "dependencies": { "retry": "0.13.1" @@ -26630,6 +27458,45 @@ "integrity": "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==", "license": "MIT" }, + "node_modules/body-parser": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", + "type-is": "~1.6.18", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, "node_modules/borsh": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/borsh/-/borsh-0.7.0.tgz", @@ -26862,7 +27729,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -27524,11 +28390,22 @@ "proto-list": "~1.2.1" } }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/content-type": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -27550,12 +28427,31 @@ "integrity": "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==", "license": "MIT" }, + "node_modules/cookie-signature": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", + "license": "MIT" + }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "license": "MIT" }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/crc-32": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", @@ -27616,6 +28512,24 @@ "node-fetch": "^2.7.0" } }, + "node_modules/cross-inspect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cross-inspect/-/cross-inspect-1.0.1.tgz", + "integrity": "sha512-Pcw1JTvZLSJH83iiGWt6fRcT+BjZlCDRVwYLbUcHzv/CRpB7r0MlSrGbIyQvVSNyGnbt7G4AXuyCiDR3POvZ1A==", + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/cross-inspect/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -27687,6 +28601,12 @@ "node": ">=4" } }, + "node_modules/cssfilter": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", + "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==", + "license": "MIT" + }, "node_modules/csstype": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", @@ -27957,6 +28877,38 @@ "node": ">=6" } }, + "node_modules/deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", @@ -28031,6 +28983,23 @@ "node": ">=8" } }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/defu": { "version": "6.1.4", "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", @@ -28062,7 +29031,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -28083,6 +29051,16 @@ "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==", "license": "MIT" }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, "node_modules/detect-browser": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/detect-browser/-/detect-browser-5.3.0.tgz", @@ -28256,6 +29234,12 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, "node_modules/ejs": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", @@ -28335,6 +29319,15 @@ "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==", "license": "MIT" }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/end-of-stream": { "version": "1.4.5", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", @@ -28456,6 +29449,26 @@ "node": ">= 0.4" } }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/es-object-atoms": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", @@ -28599,6 +29612,12 @@ "node": ">=6" } }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -28701,6 +29720,15 @@ "node": ">=0.10.0" } }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/eth-block-tracker": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/eth-block-tracker/-/eth-block-tracker-7.1.0.tgz", @@ -29101,6 +30129,76 @@ "safe-buffer": "^5.1.1" } }, + "node_modules/express": { + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", + "content-type": "~1.0.4", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "~0.1.12", + "proxy-addr": "~2.0.7", + "qs": "~6.14.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "~0.19.0", + "serve-static": "~1.16.2", + "setprototypeof": "1.2.0", + "statuses": "~2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express/node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, "node_modules/ext": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", @@ -29163,6 +30261,12 @@ "node": ">=8.6.0" } }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "license": "MIT" + }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", @@ -29362,6 +30466,39 @@ "node": ">=0.10.0" } }, + "node_modules/finalhandler": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "statuses": "~2.0.2", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, "node_modules/find-replace": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", @@ -29482,6 +30619,15 @@ "node": ">=12.20.0" } }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/fp-ts": { "version": "1.19.3", "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", @@ -29489,6 +30635,15 @@ "dev": true, "license": "MIT" }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", @@ -29542,6 +30697,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/generator-function": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", @@ -29887,6 +31051,70 @@ "dev": true, "license": "ISC" }, + "node_modules/graphql": { + "version": "15.10.1", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.10.1.tgz", + "integrity": "sha512-BL/Xd/T9baO6NFzoMpiMD7YUZ62R6viR5tp/MULVEnbYJXZA//kRNW7J0j1w/wXArgL0sCxhDfK5dczSKn3+cg==", + "license": "MIT", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/graphql-parse-resolve-info": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/graphql-parse-resolve-info/-/graphql-parse-resolve-info-4.14.1.tgz", + "integrity": "sha512-WKHukfEuZamP1ZONR84b8iT+4sJgEhtXMDArm1jpXEsU2vTb5EgkCZ4Obfl+v09oNTKXm0CJjPfBUZ5jcJ2Ykg==", + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=8.6" + }, + "peerDependencies": { + "graphql": ">=0.9 <0.14 || ^14.0.2 || ^15.4.0 || ^16.3.0" + } + }, + "node_modules/graphql-parse-resolve-info/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/graphql-tag": { + "version": "2.12.6", + "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", + "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/graphql-tag/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/graphql-ws": { + "version": "5.16.2", + "resolved": "https://registry.npmjs.org/graphql-ws/-/graphql-ws-5.16.2.tgz", + "integrity": "sha512-E1uccsZxt/96jH/OwmLPuXMACILs76pKF2i3W861LpKBCYtGIyPQGtWLuBLkND4ox1KHns70e83PS4te50nvPQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "graphql": ">=0.11 <=16" + } + }, "node_modules/h3": { "version": "1.15.4", "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.4.tgz", @@ -30163,6 +31391,18 @@ "node": ">=0.10.0" } }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -30381,7 +31621,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", - "dev": true, "license": "MIT", "dependencies": { "depd": "~2.0.0", @@ -30435,7 +31674,6 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" @@ -30592,6 +31830,20 @@ "node": ">=8" } }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/internmap": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", @@ -30622,6 +31874,15 @@ "fp-ts": "^1.0.0" } }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/iron-webcrypto": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz", @@ -30647,6 +31908,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -30654,6 +31932,21 @@ "dev": true, "license": "MIT" }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -30667,6 +31960,22 @@ "node": ">=8" } }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", @@ -30685,6 +31994,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", @@ -30774,6 +32099,18 @@ "node": ">=8" } }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -30784,6 +32121,22 @@ "node": ">=0.12.0" } }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-plain-obj": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", @@ -30824,6 +32177,33 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -30836,6 +32216,39 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-typed-array": { "version": "1.1.15", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", @@ -30870,6 +32283,34 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -31304,6 +32745,12 @@ "license": "MIT", "peer": true }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", + "license": "MIT" + }, "node_modules/lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", @@ -31329,6 +32776,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/loglevel": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.2.tgz", + "integrity": "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/loglevel" + } + }, + "node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "license": "Apache-2.0" + }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -31510,6 +32976,15 @@ "@babel/runtime": "^7.12.5" } }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/memory-streams": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/memory-streams/-/memory-streams-0.1.3.tgz", @@ -31556,6 +33031,15 @@ "node": ">= 0.10.0" } }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -31566,6 +33050,15 @@ "node": ">= 8" } }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/micro-eth-signer": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/micro-eth-signer/-/micro-eth-signer-0.14.0.tgz", @@ -31647,6 +33140,18 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -31945,6 +33450,15 @@ "node": ">=10" } }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", @@ -31982,6 +33496,12 @@ "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", "license": "ISC" }, + "node_modules/node-abort-controller": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", + "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", + "license": "MIT" + }, "node_modules/node-addon-api": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", @@ -32179,7 +33699,6 @@ "version": "1.13.4", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -32188,6 +33707,31 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/object-treeify": { "version": "1.1.33", "resolved": "https://registry.npmjs.org/object-treeify/-/object-treeify-1.1.33.tgz", @@ -32198,6 +33742,26 @@ "node": ">= 10" } }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/obliterator": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.5.tgz", @@ -32222,6 +33786,18 @@ "integrity": "sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==", "license": "MIT" }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -32537,6 +34113,15 @@ "node": ">=4" } }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/password-prompt": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/password-prompt/-/password-prompt-1.1.3.tgz", @@ -32600,6 +34185,12 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "license": "MIT" + }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -32640,6 +34231,104 @@ "node": ">= 0.10" } }, + "node_modules/pg": { + "version": "8.16.3", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.16.3.tgz", + "integrity": "sha512-enxc1h0jA/aq5oSDMvqyW3q89ra6XIIDZgCX9vkMrnz5DFTw/Ny3Li2lFQ+pt3L6MCgm/5o2o8HW9hiJji+xvw==", + "license": "MIT", + "dependencies": { + "pg-connection-string": "^2.9.1", + "pg-pool": "^3.10.1", + "pg-protocol": "^1.10.3", + "pg-types": "2.2.0", + "pgpass": "1.0.5" + }, + "engines": { + "node": ">= 16.0.0" + }, + "optionalDependencies": { + "pg-cloudflare": "^1.2.7" + }, + "peerDependencies": { + "pg-native": ">=3.0.1" + }, + "peerDependenciesMeta": { + "pg-native": { + "optional": true + } + } + }, + "node_modules/pg-cloudflare": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.2.7.tgz", + "integrity": "sha512-YgCtzMH0ptvZJslLM1ffsY4EuGaU0cx4XSdXLRFae8bPP4dS5xL1tNB3k2o/N64cHJpwU7dxKli/nZ2lUa5fLg==", + "license": "MIT", + "optional": true + }, + "node_modules/pg-connection-string": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.9.1.tgz", + "integrity": "sha512-nkc6NpDcvPVpZXxrreI/FOtX3XemeLl8E0qFr6F2Lrm/I8WOnaWNhIPK2Z7OHpw7gh5XJThi6j6ppgNoaT1w4w==", + "license": "MIT" + }, + "node_modules/pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "license": "ISC", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pg-pool": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.10.1.tgz", + "integrity": "sha512-Tu8jMlcX+9d8+QVzKIvM/uJtp07PKr82IUOYEphaWcoBhIYkoHpLXN3qO59nAI11ripznDsEzEv8nUxBVWajGg==", + "license": "MIT", + "peerDependencies": { + "pg": ">=8.0" + } + }, + "node_modules/pg-protocol": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.10.3.tgz", + "integrity": "sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==", + "license": "MIT" + }, + "node_modules/pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "license": "MIT", + "dependencies": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pgpass": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", + "license": "MIT", + "dependencies": { + "split2": "^4.1.0" + } + }, + "node_modules/pgpass/node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "license": "ISC", + "engines": { + "node": ">= 10.x" + } + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -32800,6 +34489,45 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/postgres-bytea": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "license": "MIT", + "dependencies": { + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/preact": { "version": "10.24.2", "resolved": "https://registry.npmjs.org/preact/-/preact-10.24.2.tgz", @@ -32913,6 +34641,19 @@ "dev": true, "license": "ISC" }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/proxy-compare": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/proxy-compare/-/proxy-compare-2.6.0.tgz", @@ -33102,7 +34843,6 @@ "version": "6.14.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.1.0" @@ -33175,11 +34915,19 @@ "safe-buffer": "^5.1.0" } }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/raw-body": { "version": "2.5.3", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", - "dev": true, "license": "MIT", "dependencies": { "bytes": "~3.1.2", @@ -33613,6 +35361,26 @@ "license": "Apache-2.0", "peer": true }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/registry-auth-token": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.1.0.tgz", @@ -33701,7 +35469,6 @@ "version": "0.13.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true, "license": "MIT", "engines": { "node": ">= 4" @@ -33943,7 +35710,6 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, "license": "MIT" }, "node_modules/sax": { @@ -34151,6 +35917,70 @@ "semver": "bin/semver.js" } }, + "node_modules/send": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.1.tgz", + "integrity": "sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/send/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/serialize-javascript": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", @@ -34161,6 +35991,94 @@ "randombytes": "^2.1.0" } }, + "node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-static/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-static/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/serve-static/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-static/node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-static/node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-static/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -34190,6 +36108,21 @@ "node": ">= 0.4" } }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -34202,7 +36135,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true, "license": "ISC" }, "node_modules/sha.js": { @@ -34333,7 +36265,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -34353,7 +36284,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -34370,7 +36300,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -34389,7 +36318,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -34880,12 +36808,24 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" } }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/stoppable": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", @@ -35346,7 +37286,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.6" @@ -35522,6 +37461,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/typechain": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/typechain/-/typechain-8.3.2.tgz", @@ -35975,7 +37927,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -36085,6 +38036,15 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "license": "MIT" }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -36137,6 +38097,24 @@ "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/value-or-promise": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.11.tgz", + "integrity": "sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/vaul": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vaul/-/vaul-1.1.2.tgz", @@ -36582,6 +38560,15 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, + "node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", @@ -36606,6 +38593,43 @@ "which": "bin/which" } }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/which-module": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", @@ -36801,6 +38825,28 @@ "node": ">=0.4.0" } }, + "node_modules/xss": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.15.tgz", + "integrity": "sha512-FVdlVVC67WOIPvfOwhoMETV72f6GbW7aOabBC3WxN/oUdoEMDyLz4OgRv5/gck2ZeNqEQu+Tb0kloovXOfpYVg==", + "license": "MIT", + "dependencies": { + "commander": "^2.20.3", + "cssfilter": "0.0.10" + }, + "bin": { + "xss": "bin/xss" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/xss/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" + }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -36829,6 +38875,12 @@ "node": ">=0.10.32" } }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, "node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", diff --git a/remappings.txt b/remappings.txt index 393c52b7f..865d7b720 100644 --- a/remappings.txt +++ b/remappings.txt @@ -7,9 +7,9 @@ compose-extensions/=contracts/lib/compose-extensions/src/ @openzeppelin/contracts/=contracts/lib/openzeppelin-contracts/contracts/ solmate/=contracts/lib/v4-periphery/lib/permit2/lib/solmate/ foundry-devops/=contracts/lib/foundry-devops/src/ -@hook-bazaar/protocol-pkg/=contracts/src/protocol-pkg/ -@hook-bazaar/master-hook-pkg/=contracts/src/protocol-pkg/ +@hook-bazaar/protocol-pkg/test/=contracts/test/protocol-pkg/ @hook-bazaar/protocol-pkg/script/=contracts/script/protocol-pkg/script/ +@hook-bazaar/protocol-pkg/src/=contracts/src/protocol-pkg/ +@hook-bazaar/master-hook-pkg/test/=contracts/test/master-hook-pkg/ @hook-bazaar/master-hook-pkg/script/=contracts/script/master-hook-pkg/script/ -@hook-bazaar/protocol-pkg/test/=contracts/script/protocol-pkg/test/ -@hook-bazaar/master-hook-pkg/test/=contracts/script/master-hook-pkg/test/ +@hook-bazaar/master-hook-pkg/src/=contracts/src/master-hook-pkg/ diff --git a/vite.config.ts b/vite.config.ts index 65b2b00ab..1451d64f9 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,13 +1,17 @@ - import { defineConfig } from 'vite'; - import react from '@vitejs/plugin-react-swc'; - import path from 'path'; +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react-swc'; +import path from 'path'; - export default defineConfig({ +export default defineConfig({ root: 'client2', - plugins: [react()], - resolve: { - extensions: ['.js', '.jsx', '.ts', '.tsx', '.json'], - alias: { + plugins: [react()], + optimizeDeps: { + include: ['react', 'react-dom', 'wagmi', '@rainbow-me/rainbowkit', '@tanstack/react-query'], + }, + resolve: { + dedupe: ['react', 'react-dom', '@tanstack/react-query'], + extensions: ['.js', '.jsx', '.ts', '.tsx', '.json'], + alias: { 'vaul@1.1.2': 'vaul', 'sonner@2.0.3': 'sonner', 'recharts@2.15.2': 'recharts',