Files
FlowPilot/sidepanel/sidepanel.html
T
2026-05-30 21:30:14 +08:00

1948 lines
117 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>FlowPilot</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap"
rel="stylesheet">
<link rel="stylesheet" href="sidepanel.css">
</head>
<body>
<header>
<div class="header-left">
<a id="link-repo-home" class="header-repo-link" href="https://github.com/QLHazyCoder/FlowPilot"
target="_blank" rel="noopener noreferrer" aria-label="打开 GitHub 仓库" title="打开 GitHub 仓库">仓库</a>
<div class="header-version-block">
<div class="header-version-main">
<button id="extension-update-status" class="header-version-title header-version-link" type="button"
aria-label="打开 GitHub Releases 页面" title="打开 GitHub Releases 页面">FlowPilot0.0</button>
<button id="btn-release-log" class="header-link-btn" type="button" hidden>更新日志</button>
</div>
<span id="extension-version-meta" class="header-version-meta" hidden></span>
</div>
</div>
<div class="header-btns">
<div class="run-group">
<button id="btn-contribution-mode" class="btn btn-outline btn-sm btn-contribution-mode" type="button"
aria-pressed="false" title="进入贡献模式并打开官网页">贡献/使用教程</button>
<input type="number" id="input-run-count" class="run-count-input" value="1" min="1" title="运行次数" />
<button id="btn-auto-run" class="btn btn-success" title="自动执行全部步骤">自动</button>
<button id="btn-stop" class="btn btn-danger" title="停止当前流程" disabled>停止</button>
</div>
<button id="btn-reset" class="btn btn-ghost btn-sm" title="重置全部步骤">重置</button>
<button id="btn-theme" class="btn btn-ghost btn-sm header-theme-btn" title="切换主题">主题</button>
<div id="config-menu-shell" class="header-menu">
<button id="btn-config-menu" class="btn btn-ghost btn-sm header-config-btn" type="button" aria-haspopup="menu"
aria-expanded="false">配置</button>
<div id="config-menu" class="header-dropdown" role="menu" aria-labelledby="btn-config-menu" hidden>
<button id="btn-export-settings" class="header-dropdown-item" type="button" role="menuitem">导出配置</button>
<button id="btn-import-settings" class="header-dropdown-item" type="button" role="menuitem">导入配置</button>
</div>
</div>
</div>
</header>
<div id="auto-run-ad-bar" class="auto-run-ad-bar" hidden aria-live="polite">
<span class="auto-run-ad-badge">作者自营</span>
<div id="auto-run-ad-viewport" class="auto-run-ad-viewport">
<div id="auto-run-ad-track" class="auto-run-ad-track">
<span id="auto-run-ad-text" class="auto-run-ad-text"></span>
<span id="auto-run-ad-text-clone" class="auto-run-ad-text auto-run-ad-text--clone" aria-hidden="true"></span>
</div>
</div>
<span class="auto-run-ad-badge auto-run-ad-badge--end">售后保障</span>
</div>
<div id="contribution-update-layer" class="contribution-update-layer" hidden>
<div id="contribution-update-hint" class="contribution-update-hint" aria-live="polite" hidden>
<p id="contribution-update-hint-text" class="contribution-update-hint-text">
公告 / 使用教程有更新了,可点上方“贡献/使用教程”查看。
</p>
<button id="btn-dismiss-contribution-update-hint" class="contribution-update-hint-close" type="button"
aria-label="关闭更新提示" title="关闭更新提示">×</button>
</div>
</div>
<section id="update-section" hidden>
<div class="update-card">
<div class="update-card-header">
<div class="update-card-copy">
<span class="section-label">更新内容</span>
<div id="update-card-version" class="update-card-version"></div>
<p id="update-card-summary" class="update-card-summary"></p>
</div>
<div class="update-card-actions">
<button id="btn-ignore-release" class="btn btn-outline btn-sm" type="button" hidden>忽略本次更新</button>
<button id="btn-open-release" class="btn btn-primary btn-sm" type="button">前往更新</button>
</div>
</div>
<p class="update-card-reminder">一定请先导出配置,再执行更新</p>
<div id="update-release-list" class="update-release-list"></div>
</div>
</section>
<section id="data-section">
<div id="settings-card" class="data-card">
<div class="data-row" id="row-flow-selector">
<span class="data-label">注册</span>
<select id="select-flow" class="data-select" aria-label="Flow 选择">
<option value="openai" selected>Codex / OpenAI</option>
<option value="kiro">Kiro</option>
<option value="grok">Grok</option>
</select>
</div>
<div class="data-row" id="row-source-selector">
<span id="label-source-selector" class="data-label">来源</span>
<div class="data-inline">
<select id="select-panel-mode" class="data-select">
<option value="cpa">CPA 面板</option>
<option value="sub2api">SUB2API</option>
<option value="codex2api">Codex2API</option>
</select>
<button id="btn-open-target-repository" class="btn btn-outline btn-sm data-inline-btn" type="button"
aria-label="打开项目 GitHub 仓库" title="打开项目 GitHub 仓库">GitHub</button>
</div>
</div>
<div id="contribution-mode-panel" class="contribution-mode-panel" hidden>
<div class="contribution-mode-panel-header">
<span class="section-label">贡献模式</span>
<span id="contribution-mode-badge" class="contribution-mode-badge">CPA</span>
</div>
<p id="contribution-mode-text" class="contribution-mode-text">
当前账号将用于支持项目维护。扩展会自动申请贡献登录地址并持续跟踪授权状态;如检测到回调地址,会自动提交,无需手动复制。</p>
<div class="data-row contribution-mode-field">
<span class="data-label">贡献昵称</span>
<input type="text" id="input-contribution-nickname" class="data-input" placeholder="可留空,将显示为匿名贡献者" />
</div>
<div class="data-row contribution-mode-field">
<span class="data-label">QQ</span>
<input type="text" id="input-contribution-qq" class="data-input" inputmode="numeric"
placeholder="可留空,只能填写数字" />
</div>
<div class="contribution-mode-status-grid">
<div class="contribution-mode-status-card">
<span id="contribution-primary-status-label" class="contribution-mode-status-label">OAUTH</span>
<span id="contribution-oauth-status" class="contribution-mode-status-value">未生成登录地址</span>
</div>
<div class="contribution-mode-status-card">
<span id="contribution-secondary-status-label" class="contribution-mode-status-label">回调</span>
<span id="contribution-callback-status" class="contribution-mode-status-value">等待回调</span>
</div>
</div>
<div id="contribution-mode-summary" class="contribution-mode-summary">等待开始贡献</div>
<div class="contribution-mode-actions">
<button id="btn-start-contribution" class="btn btn-primary btn-sm" type="button">开始贡献</button>
<button id="btn-open-contribution-upload" class="btn btn-outline btn-sm" type="button">已有认证文件?前往上传</button>
<button id="btn-exit-contribution-mode" class="btn btn-ghost btn-sm" type="button">退出贡献模式</button>
</div>
</div>
<div class="data-row" id="row-vps-url">
<span class="data-label">CPA</span>
<div class="input-with-icon">
<input type="password" id="input-vps-url" class="data-input data-input-with-icon"
placeholder="http://ip:port/management.html#/oauth" />
<button id="btn-toggle-vps-url" class="input-icon-btn" type="button" aria-label="显示 CPA 地址"
title="显示 CPA 地址"></button>
</div>
</div>
<div class="data-row" id="row-vps-password">
<span class="data-label">管理密钥</span>
<div class="input-with-icon">
<input type="password" id="input-vps-password" class="data-input data-input-with-icon"
placeholder="请输入 CPA 管理密钥" />
<button id="btn-toggle-vps-password" class="input-icon-btn" type="button" aria-label="显示管理密钥"
title="显示管理密钥"></button>
</div>
</div>
<div class="data-row" id="row-local-cpa-step9-mode">
<span class="data-label">回调方式</span>
<div id="local-cpa-step9-mode-group" class="choice-group" role="group" aria-label="回调方式">
<button type="button" class="choice-btn" data-local-cpa-step9-mode="submit">服务器部署</button>
<button type="button" class="choice-btn" data-local-cpa-step9-mode="bypass">本地部署</button>
</div>
</div>
<div class="data-row" id="row-sub2api-url" style="display:none;">
<span class="data-label">SUB2API</span>
<input type="text" id="input-sub2api-url" class="data-input"
placeholder="https://your-sub2api-domain/admin/accounts" />
</div>
<div class="data-row" id="row-sub2api-email" style="display:none;">
<span class="data-label">账号</span>
<input type="text" id="input-sub2api-email" class="data-input" placeholder="请输入 SUB2API 登录邮箱" />
</div>
<div class="data-row" id="row-sub2api-password" style="display:none;">
<span class="data-label">密码</span>
<div class="input-with-icon">
<input type="password" id="input-sub2api-password" class="data-input data-input-with-icon"
placeholder="请输入 SUB2API 登录密码" />
<button id="btn-toggle-sub2api-password" class="input-icon-btn" type="button"
data-password-toggle="input-sub2api-password" data-show-label="显示 SUB2API 密码"
data-hide-label="隐藏 SUB2API 密码" aria-label="显示 SUB2API 密码" title="显示 SUB2API 密码"></button>
</div>
</div>
<div class="data-row" id="row-sub2api-group" style="display:none;">
<span class="data-label">分组</span>
<div class="data-inline">
<input type="hidden" id="input-sub2api-group" value="codex" />
<div id="sub2api-group-picker" class="editable-list-picker">
<button id="btn-sub2api-group-menu" class="data-select editable-list-trigger" type="button"
aria-haspopup="listbox" aria-expanded="false">
<span id="sub2api-group-current" class="truncate">codex</span>
<span class="editable-list-caret" aria-hidden="true"></span>
</button>
<div id="sub2api-group-menu" class="editable-list-menu" role="listbox" hidden></div>
</div>
<button id="btn-add-sub2api-group" class="btn btn-outline btn-sm data-inline-btn" type="button">添加</button>
</div>
</div>
<div class="data-row" id="row-sub2api-account-priority" style="display:none;">
<span class="data-label">优先级</span>
<input type="number" id="input-sub2api-account-priority" class="data-input mono" value="1" min="1" step="1" />
</div>
<div class="data-row" id="row-sub2api-default-proxy" style="display:none;">
<span class="data-label">默认代理</span>
<input type="text" id="input-sub2api-default-proxy" class="data-input" placeholder="留空则不使用代理;或填写代理名称 / ID" />
</div>
<div class="data-row" id="row-codex2api-url" style="display:none;">
<span class="data-label">Codex2API</span>
<input type="text" id="input-codex2api-url" class="data-input"
placeholder="http://localhost:8080/admin/accounts" />
</div>
<div class="data-row" id="row-codex2api-admin-key" style="display:none;">
<span class="data-label">管理密钥</span>
<div class="input-with-icon">
<input type="password" id="input-codex2api-admin-key" class="data-input data-input-with-icon"
placeholder="请输入 Codex2API Admin Secret" />
<button id="btn-toggle-codex2api-admin-key" class="input-icon-btn" type="button"
data-password-toggle="input-codex2api-admin-key" data-show-label="显示 Codex2API 管理密钥"
data-hide-label="隐藏 Codex2API 管理密钥" aria-label="显示 Codex2API 管理密钥"
title="显示 Codex2API 管理密钥"></button>
</div>
</div>
<div class="data-row" id="row-kiro-rs-url" style="display:none;">
<span class="data-label">kiro.rs</span>
<input type="text" id="input-kiro-rs-url" class="data-input"
placeholder="请输入 kiro.rs 管理地址" />
</div>
<div class="data-row" id="row-kiro-rs-key" style="display:none;">
<span class="data-label">API Key</span>
<div class="data-inline">
<div class="input-with-icon">
<input type="password" id="input-kiro-rs-key" class="data-input data-input-with-icon"
placeholder="请输入 kiro.rs API Key" />
<button id="btn-toggle-kiro-rs-key" class="input-icon-btn" type="button"
data-password-toggle="input-kiro-rs-key" data-show-label="显示 kiro.rs API Key"
data-hide-label="隐藏 kiro.rs API Key" aria-label="显示 kiro.rs API Key"
title="显示 kiro.rs API Key"></button>
</div>
<button id="btn-test-kiro-rs" class="btn btn-ghost btn-xs data-inline-btn" type="button">测试</button>
</div>
</div>
<div class="data-row" id="row-kiro-rs-test-status" style="display:none;">
<span class="data-label">连接测试</span>
<span id="display-kiro-rs-test-status" class="data-value mono">未测试</span>
</div>
<div class="data-row" id="row-kiro-web-status" style="display:none;">
<span class="data-label">Kiro Web</span>
<span id="display-kiro-web-status" class="data-value mono">未开始</span>
</div>
<div class="data-row" id="row-kiro-login-url" style="display:none;">
<span class="data-label">注册入口</span>
<span id="display-kiro-login-url" class="data-value mono">未打开</span>
</div>
<div class="data-row" id="row-kiro-upload-status" style="display:none;">
<span class="data-label">上传状态</span>
<span id="display-kiro-upload-status" class="data-value mono">未开始</span>
</div>
<div class="data-row" id="row-grok-webchat2api-url" style="display:none;">
<span class="data-label">webchat</span>
<input type="text" id="input-grok-webchat2api-url" class="data-input"
placeholder="请输入 webchat2api 地址,例如 http://localhost:83" />
</div>
<div class="data-row" id="row-grok-webchat2api-key" style="display:none;">
<span class="data-label">管理密钥</span>
<div class="input-with-icon">
<input type="password" id="input-grok-webchat2api-key" class="data-input data-input-with-icon"
placeholder="请输入 webchat2api 管理密钥" />
<button id="btn-toggle-grok-webchat2api-key" class="input-icon-btn" type="button"
data-password-toggle="input-grok-webchat2api-key" data-show-label="显示 webchat2api 管理密钥"
data-hide-label="隐藏 webchat2api 管理密钥" aria-label="显示 webchat2api 管理密钥"
title="显示 webchat2api 管理密钥"></button>
</div>
</div>
<div class="data-row" id="row-grok-register-status" style="display:none;">
<span class="data-label">Grok 注册</span>
<span id="display-grok-register-status" class="data-value mono">未开始</span>
</div>
<div class="data-row" id="row-grok-sso-status" style="display:none;">
<span class="data-label">SSO 状态</span>
<span id="display-grok-sso-status" class="data-value mono">未提取</span>
</div>
<div class="data-row" id="row-grok-webchat2api-upload-status" style="display:none;">
<span class="data-label">上传状态</span>
<span id="display-grok-webchat2api-upload-status" class="data-value mono">未开始</span>
</div>
<div class="data-row" id="row-grok-sso-settings" style="display:none;">
<span class="data-label">SSO Cookie</span>
<div class="data-inline">
<span id="display-grok-sso-cookie" class="data-value mono">未提取</span>
<button id="btn-copy-grok-sso" class="btn btn-ghost btn-xs data-inline-btn" type="button">复制</button>
<button id="btn-clear-grok-sso" class="btn btn-ghost btn-xs data-inline-btn" type="button">清空</button>
</div>
</div>
<div class="data-row module-divider-start" id="row-custom-password">
<span class="data-label">账户密码</span>
<div class="input-with-icon">
<input type="password" id="input-password" class="data-input data-input-with-icon"
placeholder="账户密码,留空则自动生成" />
<button id="btn-toggle-password" class="input-icon-btn" type="button" aria-label="显示密码" title="显示密码"></button>
</div>
</div>
<div class="data-row" id="row-plus-mode">
<span class="data-label">Plus 模式</span>
<div class="data-inline setting-pair">
<div class="setting-group setting-group-primary">
<label class="toggle-switch" for="input-plus-mode-enabled" title="开启后使用 Plus Checkout 支付授权流程">
<input type="checkbox" id="input-plus-mode-enabled" />
<span class="toggle-switch-track" aria-hidden="true">
<span class="toggle-switch-thumb"></span>
</span>
</label>
</div>
<span class="setting-caption">Plus 订阅链路</span>
</div>
</div>
<div class="data-row" id="row-plus-account-access-strategy" style="display:none;">
<span class="data-label">账号接入策略</span>
<div class="data-inline">
<select id="select-plus-account-access-strategy" class="data-select">
<option value="oauth">OAuth</option>
<option value="codex_session">使用会话 JSON 导入</option>
</select>
<span class="setting-caption" id="plus-account-access-strategy-caption">当前来源仅支持 OAuth</span>
</div>
</div>
<div class="data-row" id="row-plus-payment-method" style="display:none;">
<span class="data-label">Plus 支付</span>
<div class="data-inline">
<select id="select-plus-payment-method" class="data-select">
<option value="none">无需支付</option>
<option value="paypal-hosted">PayPal 无卡直绑</option>
<option value="paypal">PayPal</option>
<!--
<option value="gopay">GoPay</option>
-->
<option value="gpc-helper">GPC</option>
</select>
<button id="btn-gpc-card-key-purchase" class="btn btn-outline btn-sm data-inline-btn" type="button" style="display:none;">购买卡密</button>
<span class="setting-caption" id="plus-payment-method-caption">PayPal 订阅链路</span>
</div>
</div>
<div class="data-row" id="row-paypal-account" style="display:none;">
<span class="data-label">PayPal 账号</span>
<div class="data-inline">
<input type="hidden" id="select-paypal-account" value="" />
<div id="paypal-account-picker" class="editable-list-picker">
<button id="btn-paypal-account-menu" class="data-select editable-list-trigger" type="button"
aria-haspopup="listbox" aria-expanded="false">
<span id="paypal-account-current" class="truncate">请先添加 PayPal 账号</span>
<span class="editable-list-caret" aria-hidden="true"></span>
</button>
<div id="paypal-account-menu" class="editable-list-menu" role="listbox" hidden></div>
</div>
<button id="btn-add-paypal-account" class="btn btn-outline btn-sm data-inline-btn" type="button">添加</button>
</div>
</div>
<div class="data-row" id="row-hosted-checkout-verification-url" style="display:none;">
<span class="data-label">直绑验证码</span>
<input type="text" id="input-hosted-checkout-verification-url" class="data-input"
placeholder="用于读取 PayPal / OpenAI 验证码的接口地址" autocomplete="off" />
</div>
<div class="data-row" id="row-hosted-checkout-phone" style="display:none;">
<span class="data-label">直绑电话</span>
<input type="text" id="input-hosted-checkout-phone" class="data-input"
placeholder="填 10 位美国本地号码,不要带 +1" autocomplete="tel" />
</div>
<div class="data-row" id="row-plus-hosted-checkout-oauth-delay" style="display:none;">
<span class="data-label">成功等待</span>
<div class="data-inline">
<input type="number" id="input-plus-hosted-checkout-oauth-delay-seconds" class="data-input auto-delay-input"
value="3" min="0" max="120" step="1" />
<span class="setting-caption">支付成功页出现后再继续账号接入</span>
</div>
</div>
<div class="data-row" id="row-gpc-card-key" style="display:none;">
<span class="data-label">GPC 卡密</span>
<div class="data-inline gpc-card-key-inline">
<div class="input-with-icon">
<input type="password" id="input-gpc-card-key" class="data-input data-input-with-icon"
placeholder="请输入 GPC 卡密" autocomplete="off" />
<button id="btn-toggle-gpc-card-key" class="input-icon-btn" type="button"
data-password-toggle="input-gpc-card-key" data-show-label="显示 GPC 卡密"
data-hide-label="隐藏 GPC 卡密" aria-label="显示 GPC 卡密" title="显示 GPC 卡密"></button>
</div>
<button id="btn-gpc-card-key-query" class="btn btn-outline btn-sm data-inline-btn" type="button">查询</button>
<span id="display-gpc-card-key-status" class="data-value mono">等待输入</span>
</div>
</div>
<div class="data-row" id="row-gopay-country-code" style="display:none;">
<span class="data-label">GoPay 区号</span>
<select id="select-gopay-country-code" class="data-select">
<option value="+86">中国 +86</option>
<option value="+62">印度尼西亚 +62</option>
<option value="+1">美国/加拿大 +1</option>
<option value="+852">香港 +852</option>
<option value="+853">澳门 +853</option>
<option value="+886">台湾 +886</option>
<option value="+60">马来西亚 +60</option>
<option value="+65">新加坡 +65</option>
<option value="+66">泰国 +66</option>
<option value="+84">越南 +84</option>
<option value="+63">菲律宾 +63</option>
<option value="+91">印度 +91</option>
</select>
</div>
<div class="data-row" id="row-gopay-phone" style="display:none;">
<span class="data-label">GoPay 手机</span>
<input type="text" id="input-gopay-phone" class="data-input"
placeholder="请输入不含区号的 GoPay / WhatsApp 手机号" autocomplete="tel" />
</div>
<div class="data-row" id="row-gopay-otp" style="display:none;">
<span class="data-label">GoPay 验证码</span>
<input type="text" id="input-gopay-otp" class="data-input"
placeholder="可选;留空时执行中会弹窗手动输入" inputmode="numeric" autocomplete="one-time-code" />
</div>
<div class="data-row" id="row-gopay-pin" style="display:none;">
<span class="data-label">GoPay PIN</span>
<div class="input-with-icon">
<input type="password" id="input-gopay-pin" class="data-input data-input-with-icon"
placeholder="请输入 GoPay PIN" autocomplete="off" />
<button id="btn-toggle-gopay-pin" class="input-icon-btn" type="button"
data-password-toggle="input-gopay-pin" data-show-label="显示 GoPay PIN"
data-hide-label="隐藏 GoPay PIN" aria-label="显示 GoPay PIN"
title="显示 GoPay PIN"></button>
</div>
</div>
<div class="data-row module-divider-start" id="row-mail-provider">
<span class="data-label">邮箱服务</span>
<div class="data-inline">
<select id="select-mail-provider" class="data-select">
<option value="custom">自定义邮箱</option>
<option value="hotmail-api">Hotmail(账号池)</option>
<option value="luckmail-api">LuckMailAPI 购邮)</option>
<option value="yyds-mail">YYDS Mail</option>
<option value="icloud">iCloud 邮箱</option>
<option value="163">163 邮箱 (mail.163.com) 版本老旧,请自行维护使用</option>
<option value="163-vip">163 VIP 邮箱 (vip.163.com) 版本老旧,请自行维护使用</option>
<option value="126">126 邮箱 (mail.126.com) 版本老旧,请自行维护使用</option>
<option value="qq">QQ 邮箱 (wx.mail.qq.com) 版本老旧,请自行维护使用</option>
<option value="inbucket">Inbucket(自定义主机)</option>
<option value="2925">2925 邮箱 (2925.com)(推荐)</option>
<option value="gmail">Gmail 邮箱 (mail.google.com)</option>
<option value="cloudflare-temp-email">Cloudflare Temp Email(推荐)</option>
<option value="cloudmail">Cloud Mail</option>
</select>
<button id="btn-mail-login" class="btn btn-outline btn-sm data-inline-btn" type="button" disabled>登录</button>
</div>
</div>
<div class="data-row" id="row-custom-mail-receive-mode" style="display:none;">
<span class="data-label">收码方式</span>
<select id="select-custom-mail-receive-mode" class="data-select">
<option value="manual">手动确认</option>
<option value="helper">本地 helper</option>
</select>
</div>
<div class="data-row" id="row-custom-mail-helper-base-url" style="display:none;">
<span class="data-label">helper 地址</span>
<input type="text" id="input-custom-mail-helper-base-url" class="data-input"
placeholder="http://127.0.0.1:17374" />
</div>
<div class="data-row data-check-row" id="row-custom-mail-provider-pool" style="display:none;">
<span class="data-label">自定义号池</span>
<textarea id="input-custom-mail-provider-pool" class="data-textarea"
placeholder="每行一个注册邮箱,例如&#10;alias001@example.com&#10;alias002@example.com"></textarea>
</div>
<div class="data-row" id="row-mail-2925-mode" style="display:none;">
<span class="data-label">2925 模式</span>
<div id="mail-2925-mode-group" class="choice-group" role="group" aria-label="2925 邮箱模式">
<button type="button" class="choice-btn" data-mail2925-mode="provide">提供邮箱</button>
<button type="button" class="choice-btn" data-mail2925-mode="receive">接收邮箱</button>
</div>
</div>
<div class="data-row" id="row-email-generator">
<span class="data-label">邮箱生成</span>
<select id="select-email-generator" class="data-select">
<option value="gmail-alias">Gmail +tag</option>
<option value="duck">DuckDuckGo</option>
<option value="custom-pool">自定义邮箱池</option>
<option value="cloudflare">Cloudflare</option>
<option value="icloud">iCloud 隐私邮箱</option>
<option value="cloudflare-temp-email">Cloudflare Temp Email(推荐)</option>
<option value="cloudmail">Cloud Mail</option>
</select>
</div>
<div class="data-row data-check-row" id="row-custom-email-pool" style="display:none;">
<span class="data-label">邮箱池</span>
<div class="hotmail-import-box">
<textarea id="input-custom-email-pool" class="data-textarea mono" hidden
placeholder="每行一个邮箱,例如&#10;alias001@gmail.com&#10;alias002@gmail.com"></textarea>
<div class="section-mini-header">
<div class="section-mini-copy">
<span class="section-label">自定义邮箱池</span>
</div>
<div class="section-mini-actions">
<button id="btn-custom-email-pool-refresh" class="btn btn-ghost btn-xs" type="button">刷新</button>
<button id="btn-custom-email-pool-clear-used" class="btn btn-ghost btn-xs" type="button">清空已用</button>
<button id="btn-custom-email-pool-delete-all" class="btn btn-ghost btn-xs" type="button">全部删除</button>
</div>
</div>
<textarea id="input-custom-email-pool-import" class="data-textarea mono" rows="4"
placeholder="每行一个邮箱,例如&#10;alias001@gmail.com&#10;alias002@gmail.com"></textarea>
<div class="data-inline">
<button id="btn-custom-email-pool-import" class="btn btn-primary btn-sm" type="button">导入邮箱</button>
</div>
<div class="icloud-card">
<div id="custom-email-pool-summary" class="icloud-summary">导入你提前准备好的注册邮箱,每行一个邮箱地址。</div>
<div class="icloud-toolbar">
<input id="input-custom-email-pool-search" class="data-input icloud-search" type="text"
placeholder="搜索邮箱 / 备注" />
<select id="select-custom-email-pool-filter" class="data-select icloud-filter">
<option value="all">全部</option>
<option value="current">当前</option>
<option value="enabled">启用</option>
<option value="disabled">停用</option>
<option value="used">已用</option>
<option value="unused">未用</option>
</select>
</div>
<div class="icloud-bulkbar">
<label class="option-toggle luckmail-select-all" for="checkbox-custom-email-pool-select-all">
<input type="checkbox" id="checkbox-custom-email-pool-select-all" />
<span id="custom-email-pool-selection-summary">已选 0 个</span>
</label>
<div class="luckmail-bulk-actions">
<button id="btn-custom-email-pool-bulk-used" class="btn btn-outline btn-xs" type="button">标记已用</button>
<button id="btn-custom-email-pool-bulk-unused" class="btn btn-outline btn-xs" type="button">标记未用</button>
<button id="btn-custom-email-pool-bulk-enable" class="btn btn-outline btn-xs" type="button">启用</button>
<button id="btn-custom-email-pool-bulk-disable" class="btn btn-outline btn-xs" type="button">停用</button>
<button id="btn-custom-email-pool-bulk-delete" class="btn btn-outline btn-xs" type="button">删除</button>
</div>
</div>
<div id="custom-email-pool-list" class="luckmail-list"></div>
</div>
</div>
</div>
<div class="data-row" id="row-cf-domain" style="display:none;">
<span class="data-label">CF 域名</span>
<div class="data-inline">
<input type="hidden" id="select-cf-domain" value="" />
<div id="cf-domain-picker" class="editable-list-picker">
<button id="btn-cf-domain-menu" class="data-select editable-list-trigger" type="button"
aria-haspopup="listbox" aria-expanded="false">
<span id="cf-domain-current" class="truncate">请先添加域名</span>
<span class="editable-list-caret" aria-hidden="true"></span>
</button>
<div id="cf-domain-menu" class="editable-list-menu" role="listbox" hidden></div>
</div>
<input type="text" id="input-cf-domain" class="data-input" placeholder="例如 yourdomain.xyz"
style="display:none;" />
<button id="btn-cf-domain-mode" class="btn btn-outline btn-sm data-inline-btn" type="button">添加</button>
</div>
</div>
<div class="data-row" id="row-mail2925-pool-settings" style="display:none;">
<span class="data-label">2925 号池</span>
<div class="data-inline mail2925-base-inline">
<label class="toggle-switch mail2925-pool-toggle" id="label-mail2925-use-account-pool"
for="input-mail2925-use-account-pool" style="display:none;" title="开启后启用 2925 账号池">
<input type="checkbox" id="input-mail2925-use-account-pool" />
<span class="toggle-switch-track" aria-hidden="true">
<span class="toggle-switch-thumb"></span>
</span>
<span>号池</span>
</label>
<select id="select-mail2925-pool-account" class="data-select mail2925-pool-select" style="display:none;">
<option value="">请选择号池邮箱</option>
</select>
</div>
</div>
<div class="data-row" id="row-email-prefix" style="display:none;">
<span class="data-label" id="label-email-prefix">别名基邮箱</span>
<div class="data-inline">
<input type="text" id="input-email-prefix" class="data-input mail2925-base-input"
placeholder="例如 yourname@example.com" />
</div>
</div>
<div class="data-row" id="row-inbucket-host" style="display:none;">
<span class="data-label">Inbucket</span>
<input type="text" id="input-inbucket-host" class="data-input" placeholder="填写主机或 https://主机地址" />
</div>
<div class="data-row" id="row-inbucket-mailbox" style="display:none;">
<span class="data-label">邮箱名</span>
<input type="text" id="input-inbucket-mailbox" class="data-input" placeholder="例如 zju2001" />
</div>
<div class="data-row" id="row-auto-run-controls">
<span class="data-label">注册邮箱</span>
<div class="data-inline">
<input type="text" id="input-email" class="data-input" placeholder="自动生成或手动粘贴邮箱" />
<button id="btn-fetch-email" class="btn btn-outline btn-sm data-inline-btn" type="button">获取</button>
</div>
</div>
<div class="data-row" id="row-step6-cookie-settings">
<span class="data-label">第六步</span>
<div class="data-inline">
<div class="setting-group setting-group-primary step6-cookie-cleanup-setting">
<span class="setting-caption setting-caption-left">清 Cookies</span>
<label class="toggle-switch" for="input-step6-cookie-cleanup-enabled">
<input type="checkbox" id="input-step6-cookie-cleanup-enabled" />
<span class="toggle-switch-track" aria-hidden="true">
<span class="toggle-switch-thumb"></span>
</span>
</label>
</div>
</div>
</div>
<div class="data-row module-divider-start" id="row-shared-auto-run">
<span class="data-label">自动重试</span>
<div class="data-inline setting-pair">
<div class="setting-group setting-group-primary">
<label class="toggle-switch" for="input-auto-skip-failures">
<input type="checkbox" id="input-auto-skip-failures" />
<span class="toggle-switch-track" aria-hidden="true">
<span class="toggle-switch-thumb"></span>
</span>
</label>
</div>
<div class="setting-group setting-group-secondary auto-step-delay-setting">
<span class="setting-caption">步间间隔</span>
<div class="setting-controls">
<input type="number" id="input-auto-step-delay-seconds" class="data-input auto-delay-input" value=""
min="0" max="600" step="1" title="步间延迟秒数,0 或留空则不延迟" />
<span class="data-unit"></span>
</div>
</div>
</div>
</div>
<div class="data-row" id="row-auto-run-thread-interval">
<span class="data-label">线程间隔</span>
<div class="data-inline">
<div class="setting-controls">
<input type="number" id="input-auto-skip-failures-thread-interval-minutes"
class="data-input auto-delay-input" value="0" min="0" max="1440" step="1" title="兜底模式下,两轮线程之间的等待分钟数" />
<span class="data-unit">分钟</span>
</div>
</div>
</div>
<div class="data-row" id="row-step-execution-range">
<span class="data-label">执行范围</span>
<div class="data-inline setting-pair step-execution-range-setting">
<div class="setting-group setting-group-primary">
<label class="toggle-switch" for="input-step-execution-range-enabled" title="开启后,只执行指定起止步骤,范围外步骤禁用">
<input type="checkbox" id="input-step-execution-range-enabled" />
<span class="toggle-switch-track" aria-hidden="true">
<span class="toggle-switch-thumb"></span>
</span>
<span>启用</span>
</label>
</div>
<div class="setting-group setting-group-secondary step-range-controls">
<span class="setting-caption">节点</span>
<select id="input-step-execution-range-from" class="data-select step-range-input" title="允许执行的起始节点"></select>
<span class="data-unit"></span>
<select id="input-step-execution-range-to" class="data-select step-range-input" title="允许执行的结束节点"></select>
</div>
</div>
</div>
<div class="data-row module-divider-start" id="row-oauth-display">
<span class="data-label">OAuth</span>
<span id="display-oauth-url" class="data-value mono truncate">等待中...</span>
</div>
<div class="data-row" id="row-oauth-callback">
<span class="data-label">回调</span>
<div class="data-inline data-value-actions">
<span id="display-localhost-url" class="data-value data-value-fill mono truncate">等待中...</span>
</div>
</div>
</div>
<div id="cloudflare-temp-email-section" class="data-card hotmail-card" style="display:none;">
<div class="section-mini-header">
<div class="section-mini-copy">
<span class="section-label">Cloudflare Temp Email</span>
<span class="data-value">用于生成邮箱或接收转发邮件</span>
</div>
<div class="section-mini-actions">
<button id="btn-cloudflare-temp-email-usage-guide" class="btn btn-ghost btn-xs" type="button">使用教程</button>
<button id="btn-cloudflare-temp-email-github" class="btn btn-ghost btn-xs" type="button">部署</button>
</div>
</div>
<div class="data-row" id="row-temp-email-base-url" style="display:none;">
<span class="data-label">Temp API</span>
<input type="text" id="input-temp-email-base-url" class="data-input" placeholder="https://your-worker-domain" />
</div>
<div class="data-row" id="row-temp-email-admin-auth" style="display:none;">
<span class="data-label">Admin Auth</span>
<div class="input-with-icon">
<input type="password" id="input-temp-email-admin-auth" class="data-input data-input-with-icon"
placeholder="Cloudflare Temp Email admin password" />
<button id="btn-toggle-temp-email-admin-auth" class="input-icon-btn" type="button"
data-password-toggle="input-temp-email-admin-auth" data-show-label="显示 Admin Auth"
data-hide-label="隐藏 Admin Auth" aria-label="显示 Admin Auth" title="显示 Admin Auth"></button>
</div>
</div>
<div class="data-row" id="row-temp-email-custom-auth" style="display:none;">
<span class="data-label">Custom Auth</span>
<div class="input-with-icon">
<input type="password" id="input-temp-email-custom-auth" class="data-input data-input-with-icon"
placeholder="仅当站点启用了访问密码时再填写;这是额外鉴权,不替代 Admin Auth。" />
<button id="btn-toggle-temp-email-custom-auth" class="input-icon-btn" type="button"
data-password-toggle="input-temp-email-custom-auth" data-show-label="显示 Custom Auth"
data-hide-label="隐藏 Custom Auth" aria-label="显示 Custom Auth" title="显示 Custom Auth"></button>
</div>
</div>
<div class="data-row" id="row-temp-email-lookup-mode" style="display:none;">
<span class="data-label">查信方式</span>
<div id="temp-email-lookup-mode-group" class="choice-group" role="group" aria-label="Cloudflare Temp Email 查信方式">
<button type="button" class="choice-btn" data-temp-email-lookup-mode="receive-mailbox">邮件接收</button>
<button type="button" class="choice-btn" data-temp-email-lookup-mode="registration-email">注册邮箱</button>
</div>
</div>
<div class="data-row" id="row-temp-email-receive-mailbox" style="display:none;">
<span class="data-label">邮件接收</span>
<input type="text" id="input-temp-email-receive-mailbox" class="data-input"
placeholder="用于接收转发邮件的邮箱,例如 1@email.example.com" />
</div>
<div class="data-row" id="row-temp-email-subdomain-mode" style="display:none;">
<span class="data-label">子域模式</span>
<div class="data-inline temp-email-subdomain-mode-wrap">
<input type="checkbox" id="input-temp-email-use-random-subdomain" hidden />
<input type="checkbox" id="input-temp-email-use-fixed-subdomain" hidden />
<div id="temp-email-subdomain-mode-group" class="choice-group" role="group"
aria-label="Cloudflare Temp Email 子域模式">
<button type="button" class="choice-btn" data-temp-email-subdomain-mode="none">不使用</button>
<button type="button" class="choice-btn" data-temp-email-subdomain-mode="random"
title="依赖后端 RANDOM_SUBDOMAIN_DOMAINS 配置">随机</button>
<button type="button" class="choice-btn" data-temp-email-subdomain-mode="fixed"
title="依赖后端 ENABLE_CREATE_ADDRESS_SUBDOMAIN_MATCH 配置">固定</button>
</div>
<span id="temp-email-subdomain-mode-caption" class="setting-caption setting-caption-left">按基础域名直接生成</span>
</div>
</div>
<div class="data-row" id="row-temp-email-fixed-subdomain-prefix" style="display:none;">
<span class="data-label">子域前缀</span>
<div class="data-inline temp-email-subdomain-prefix-wrap">
<input type="text" id="input-temp-email-subdomain-prefix" class="data-input"
placeholder="例如 team;基础域名为 mail.example.com 时生成 xxx@team.mail.example.com"
aria-describedby="temp-email-subdomain-prefix-feedback temp-email-effective-domain-preview" />
<span id="temp-email-subdomain-prefix-feedback" class="field-feedback" aria-live="polite"></span>
<span id="temp-email-effective-domain-preview" class="field-feedback field-feedback-muted"></span>
</div>
</div>
<div class="data-row" id="row-temp-email-domain" style="display:none;">
<span class="data-label" id="label-temp-email-domain">Temp 域名</span>
<div class="data-inline">
<input type="hidden" id="select-temp-email-domain" value="" />
<div id="temp-email-domain-picker" class="editable-list-picker">
<button id="btn-temp-email-domain-menu" class="data-select editable-list-trigger" type="button"
aria-haspopup="listbox" aria-expanded="false">
<span id="temp-email-domain-current" class="truncate">请先更新域名</span>
<span class="editable-list-caret" aria-hidden="true"></span>
</button>
<div id="temp-email-domain-menu" class="editable-list-menu" role="listbox" hidden></div>
</div>
<input type="text" id="input-temp-email-domain" class="data-input" placeholder="例如 mail.example.com"
style="display:none;" />
<button id="btn-temp-email-domain-mode" class="btn btn-outline btn-sm" type="button">更新</button>
</div>
</div>
</div>
<div id="cloud-mail-section" class="data-card hotmail-card" style="display:none;">
<div class="section-mini-header">
<div class="section-mini-copy">
<span class="section-label">Cloud Mail</span>
<span class="data-value">用于生成邮箱或接收转发邮件(skymail.ink API</span>
</div>
</div>
<div class="data-row" id="row-cloud-mail-base-url" style="display:none;">
<span class="data-label">API 地址</span>
<input type="text" id="input-cloud-mail-base-url" class="data-input" placeholder="https://your-cloudmail-domain" />
</div>
<div class="data-row" id="row-cloud-mail-admin-email" style="display:none;">
<span class="data-label">管理员邮箱</span>
<input type="text" id="input-cloud-mail-admin-email" class="data-input" placeholder="admin@example.com" />
</div>
<div class="data-row" id="row-cloud-mail-admin-password" style="display:none;">
<span class="data-label">管理员密码</span>
<div class="input-with-icon">
<input type="password" id="input-cloud-mail-admin-password" class="data-input data-input-with-icon"
placeholder="Cloud Mail 管理员密码" />
<button id="btn-toggle-cloud-mail-admin-password" class="input-icon-btn" type="button"
data-password-toggle="input-cloud-mail-admin-password" data-show-label="显示 Cloud Mail 密码"
data-hide-label="隐藏 Cloud Mail 密码" aria-label="显示 Cloud Mail 密码" title="显示 Cloud Mail 密码"></button>
</div>
</div>
<div class="data-row" id="row-cloud-mail-receive-mailbox" style="display:none;">
<span class="data-label">邮件接收</span>
<input type="text" id="input-cloud-mail-receive-mailbox" class="data-input"
placeholder="用于接收转发邮件的邮箱,例如 1@email.example.com" />
</div>
<div class="data-row" id="row-cloud-mail-domain" style="display:none;">
<span class="data-label">域名</span>
<input type="text" id="input-cloud-mail-domain" class="data-input" placeholder="例如 mail.example.com" />
</div>
</div>
<div id="yyds-mail-section" class="data-card hotmail-card" style="display:none;">
<div class="section-mini-header">
<div class="section-mini-copy">
<span class="section-label">YYDS Mail</span>
<span class="data-value">自动创建临时邮箱并通过 API 收取验证码</span>
</div>
</div>
<div class="data-row">
<span class="data-label">API Key</span>
<div class="input-with-icon">
<input type="password" id="input-yyds-mail-api-key" class="data-input data-input-with-icon mono"
placeholder="请输入 YYDS Mail API KeyAC-..." />
<button id="btn-toggle-yyds-mail-api-key" class="input-icon-btn" type="button"
data-password-toggle="input-yyds-mail-api-key" data-show-label="显示 YYDS Mail API Key"
data-hide-label="隐藏 YYDS Mail API Key" aria-label="显示 YYDS Mail API Key" title="显示 YYDS Mail API Key"></button>
</div>
</div>
<div class="data-row">
<span class="data-label">Base URL</span>
<input type="text" id="input-yyds-mail-base-url" class="data-input mono"
placeholder="https://maliapi.215.im/v1" />
</div>
</div>
<div id="hotmail-section" class="data-card hotmail-card" style="display:none;">
<div class="section-mini-header">
<div class="section-mini-copy">
<span class="section-label">Hotmail 账号池</span>
</div>
<div class="section-mini-actions">
<button id="btn-toggle-hotmail-form" class="btn btn-outline btn-xs" type="button"
aria-expanded="false">添加账号</button>
<button id="btn-hotmail-usage-guide" class="btn btn-ghost btn-xs" type="button">使用教程</button>
<button id="btn-clear-used-hotmail-accounts" class="btn btn-ghost btn-xs" type="button">清空已用</button>
<button id="btn-delete-all-hotmail-accounts" class="btn btn-ghost btn-xs" type="button">全部删除</button>
<button id="btn-toggle-hotmail-list" class="btn btn-ghost btn-xs" type="button"
aria-expanded="false">展开列表</button>
</div>
</div>
<div class="data-row" id="row-hotmail-service-mode">
<span class="data-label">接码模式</span>
<div id="hotmail-service-mode-group" class="choice-group" role="group" aria-label="Hotmail 接码模式">
<button type="button" class="choice-btn" data-hotmail-service-mode="remote">API对接</button>
<button type="button" class="choice-btn" data-hotmail-service-mode="local">本地助手</button>
</div>
</div>
<div class="data-row" id="row-hotmail-remote-base-url">
<span class="data-label">API对接</span>
<input type="text" id="input-hotmail-remote-base-url" class="data-input mono"
placeholder="微软邮箱 API 对接模式无需填写地址" />
</div>
<div class="data-row" id="row-hotmail-local-base-url" style="display:none;">
<span class="data-label">本地助手</span>
<input type="text" id="input-hotmail-local-base-url" class="data-input mono"
placeholder="http://127.0.0.1:17373" />
</div>
<div id="hotmail-form-shell" class="account-pool-form-shell" hidden>
<div class="data-row">
<span class="data-label">邮箱</span>
<input type="text" id="input-hotmail-email" class="data-input" placeholder="name@hotmail.com" />
</div>
<div class="data-row">
<span class="data-label">客户端 ID</span>
<input type="text" id="input-hotmail-client-id" class="data-input mono" placeholder="微软应用客户端 ID" />
</div>
<div class="data-row">
<span class="data-label">邮箱密码</span>
<div class="input-with-icon">
<input type="password" id="input-hotmail-password" class="data-input data-input-with-icon"
placeholder="可选,仅用于记录" />
<button id="btn-toggle-hotmail-password" class="input-icon-btn" type="button"
data-password-toggle="input-hotmail-password" data-show-label="显示 Hotmail 密码"
data-hide-label="隐藏 Hotmail 密码" aria-label="显示 Hotmail 密码" title="显示 Hotmail 密码"></button>
</div>
</div>
<div class="data-row">
<span class="data-label">刷新令牌</span>
<div class="input-with-icon">
<input type="password" id="input-hotmail-refresh-token" class="data-input data-input-with-icon mono"
placeholder="必填,粘贴刷新令牌(refresh token" />
<button id="btn-toggle-hotmail-refresh-token" class="input-icon-btn" type="button"
data-password-toggle="input-hotmail-refresh-token" data-show-label="显示 Hotmail 刷新令牌"
data-hide-label="隐藏 Hotmail 刷新令牌" aria-label="显示 Hotmail 刷新令牌"
title="显示 Hotmail 刷新令牌"></button>
</div>
</div>
<div class="data-row hotmail-actions-row">
<span class="data-label"></span>
<div class="data-inline account-pool-actions-inline">
<button id="btn-add-hotmail-account" class="btn btn-primary btn-sm" type="button">添加账号</button>
<button id="btn-import-hotmail-accounts" class="btn btn-outline btn-sm account-pool-import-action"
type="button">批量导入</button>
</div>
</div>
<div class="data-row hotmail-import-row">
<span class="data-label">批量导入</span>
<div class="hotmail-import-box">
<textarea id="input-hotmail-import" class="data-textarea mono"
placeholder="账号----密码----客户端ID----刷新令牌&#10;name@hotmail.com----password----client-id----refresh-token"></textarea>
</div>
</div>
</div>
<div id="hotmail-list-shell" class="hotmail-list-shell is-collapsed">
<div class="account-pool-toolbar">
<input id="input-hotmail-search" class="data-input account-pool-search" type="text"
placeholder="搜索邮箱 / 状态" />
<select id="select-hotmail-filter" class="data-select account-pool-filter">
<option value="all">全部</option>
<option value="current">当前</option>
<option value="available">可分配</option>
<option value="used">已用</option>
<option value="error">异常</option>
</select>
</div>
<div id="hotmail-accounts-list" class="hotmail-accounts-list"></div>
</div>
</div>
<div id="mail2925-section" class="data-card hotmail-card" style="display:none;">
<div class="section-mini-header">
<div class="section-mini-copy">
<span class="section-label">2925 账号池</span>
</div>
<div class="section-mini-actions">
<button id="btn-toggle-mail2925-form" class="btn btn-outline btn-xs" type="button"
aria-expanded="false">添加账号</button>
<button id="btn-delete-all-mail2925-accounts" class="btn btn-ghost btn-xs" type="button">全部删除</button>
<button id="btn-toggle-mail2925-list" class="btn btn-ghost btn-xs" type="button"
aria-expanded="false">展开列表</button>
</div>
</div>
<div id="mail2925-form-shell" class="account-pool-form-shell" hidden>
<div class="data-row">
<span class="data-label">邮箱</span>
<input type="text" id="input-mail2925-email" class="data-input" placeholder="name@2925.com" />
</div>
<div class="data-row">
<span class="data-label">密码</span>
<div class="input-with-icon">
<input type="password" id="input-mail2925-password" class="data-input data-input-with-icon"
placeholder="2925 登录密码" />
<button id="btn-toggle-mail2925-password" class="input-icon-btn" type="button"
data-password-toggle="input-mail2925-password" data-show-label="显示 2925 密码"
data-hide-label="隐藏 2925 密码" aria-label="显示 2925 密码" title="显示 2925 密码"></button>
</div>
</div>
<div class="data-row hotmail-actions-row">
<span class="data-label"></span>
<div class="data-inline account-pool-actions-inline">
<button id="btn-add-mail2925-account" class="btn btn-primary btn-sm" type="button">添加账号</button>
<button id="btn-import-mail2925-accounts" class="btn btn-outline btn-sm account-pool-import-action"
type="button">批量导入</button>
</div>
</div>
<div class="data-row hotmail-import-row">
<span class="data-label">批量导入</span>
<div class="hotmail-import-box">
<textarea id="input-mail2925-import" class="data-textarea mono"
placeholder="邮箱----密码&#10;name@2925.com----password"></textarea>
</div>
</div>
</div>
<div id="mail2925-list-shell" class="hotmail-list-shell is-collapsed">
<div class="account-pool-toolbar">
<input id="input-mail2925-search" class="data-input account-pool-search" type="text"
placeholder="搜索邮箱 / 状态" />
<select id="select-mail2925-filter" class="data-select account-pool-filter">
<option value="all">全部</option>
<option value="current">当前</option>
<option value="ready">可用</option>
<option value="cooldown">冷却中</option>
<option value="disabled">已禁用</option>
<option value="error">异常</option>
</select>
</div>
<div id="mail2925-accounts-list" class="hotmail-accounts-list"></div>
</div>
</div>
<div id="luckmail-section" class="data-card luckmail-card" style="display:none;">
<div class="section-mini-header">
<div class="section-mini-copy">
<span class="section-label">LuckMail 配置</span>
</div>
</div>
<div class="data-row">
<span class="data-label">API Key</span>
<div class="input-with-icon">
<input type="password" id="input-luckmail-api-key" class="data-input data-input-with-icon mono"
placeholder="请输入 LuckMail API Key" />
<button id="btn-toggle-luckmail-api-key" class="input-icon-btn" type="button"
data-password-toggle="input-luckmail-api-key" data-show-label="显示 LuckMail API Key"
data-hide-label="隐藏 LuckMail API Key" aria-label="显示 LuckMail API Key" title="显示 LuckMail API Key"></button>
</div>
</div>
<div class="data-row">
<span class="data-label">Base URL</span>
<input type="text" id="input-luckmail-base-url" class="data-input mono"
placeholder="https://mails.luckyous.com" />
</div>
<div class="data-row">
<span class="data-label">邮箱类型</span>
<select id="select-luckmail-email-type" class="data-select">
<option value="self_built">自建邮箱</option>
<option value="ms_imap">微软 IMAP</option>
<option value="ms_graph">微软 Graph</option>
<option value="google_variant">谷歌变种</option>
</select>
</div>
<div class="data-row">
<span class="data-label">域名</span>
<input type="text" id="input-luckmail-domain" class="data-input mono" placeholder="可选,留空则由 LuckMail 默认处理" />
</div>
<div class="data-row">
<span class="data-label">项目</span>
<span class="data-value mono">openai</span>
</div>
<div class="luckmail-manager-card">
<div class="section-mini-header">
<div class="section-mini-copy">
<span class="section-label">LuckMail 邮箱列表</span>
<span class="data-value">仅显示项目为 <span class="mono">openai</span> 的邮箱</span>
</div>
<div class="section-mini-actions">
<button id="btn-luckmail-refresh" class="btn btn-ghost btn-xs" type="button">刷新</button>
<button id="btn-luckmail-disable-used" class="btn btn-ghost btn-xs" type="button">禁用已用</button>
</div>
</div>
<div id="luckmail-summary" class="luckmail-summary">加载已购邮箱后可在这里管理 openai 项目的 LuckMail 邮箱。</div>
<div class="luckmail-toolbar">
<input id="input-luckmail-search" class="data-input luckmail-search" type="text"
placeholder="搜索邮箱 / 标签 / 项目" />
<select id="select-luckmail-filter" class="data-select luckmail-filter">
<option value="all">全部</option>
<option value="reusable">可复用</option>
<option value="used">已用</option>
<option value="unused">未用</option>
<option value="preserved">保留</option>
<option value="disabled">已禁用</option>
</select>
</div>
<div class="luckmail-bulkbar">
<label class="option-toggle luckmail-select-all" for="checkbox-luckmail-select-all">
<input type="checkbox" id="checkbox-luckmail-select-all" />
<span id="luckmail-selection-summary">已选 0 个</span>
</label>
<div class="luckmail-bulk-actions">
<button id="btn-luckmail-bulk-used" class="btn btn-outline btn-xs" type="button">标记已用</button>
<button id="btn-luckmail-bulk-unused" class="btn btn-outline btn-xs" type="button">标记未用</button>
<button id="btn-luckmail-bulk-preserve" class="btn btn-outline btn-xs" type="button">保留</button>
<button id="btn-luckmail-bulk-unpreserve" class="btn btn-outline btn-xs" type="button">取消保留</button>
<button id="btn-luckmail-bulk-disable" class="btn btn-outline btn-xs" type="button">禁用</button>
<button id="btn-luckmail-bulk-enable" class="btn btn-outline btn-xs" type="button">启用</button>
</div>
</div>
<div id="luckmail-list" class="luckmail-list"></div>
</div>
</div>
<div id="icloud-section" class="data-card hotmail-card" style="display:none;">
<div class="section-mini-header">
<div class="section-mini-copy">
<span class="section-label">iCloud 隐私邮箱</span>
</div>
<div class="section-mini-actions">
<button id="btn-icloud-refresh" class="btn btn-ghost btn-xs" type="button">刷新</button>
<button id="btn-icloud-delete-used" class="btn btn-ghost btn-xs" type="button">删除已用</button>
</div>
</div>
<div class="data-row">
<span class="data-label">iCloud</span>
<select id="select-icloud-host-preference" class="data-select">
<option value="auto">自动</option>
<option value="icloud.com">iCloud.com</option>
<option value="icloud.com.cn">iCloud.com.cn</option>
</select>
</div>
<div class="data-row" id="row-icloud-target-mailbox-type">
<span class="data-label">目标邮箱类型</span>
<select id="select-icloud-target-mailbox-type" class="data-select">
<option value="icloud-inbox">iCloud 收件箱</option>
<option value="forward-mailbox">转发到其他邮箱</option>
</select>
</div>
<div class="data-row" id="row-icloud-forward-mail-provider" style="display:none;">
<span class="data-label">转发邮箱</span>
<select id="select-icloud-forward-mail-provider" class="data-select">
<option value="qq">QQ 邮箱</option>
<option value="163">163 邮箱</option>
<option value="163-vip">163 VIP 邮箱</option>
<option value="126">126 邮箱</option>
<option value="gmail">Gmail 邮箱</option>
</select>
</div>
<div class="data-row">
<span class="data-label">获取策略</span>
<select id="select-icloud-fetch-mode" class="data-select">
<option value="reuse_existing">优先复用已有未用别名</option>
<option value="always_new">始终创建新别名</option>
</select>
</div>
<div class="data-row">
<span class="data-label">自动删除</span>
<label class="option-toggle" for="checkbox-auto-delete-icloud">
<input type="checkbox" id="checkbox-auto-delete-icloud" />
<span>成功使用后自动删除 iCloud 别名</span>
</label>
</div>
<div class="icloud-card">
<div id="icloud-summary" class="icloud-summary">加载你的 iCloud Hide My Email 别名以便在这里管理。</div>
<div id="icloud-login-help" class="icloud-login-help" style="display:none;">
<div class="icloud-login-help-main">
<div id="icloud-login-help-title" class="icloud-login-help-title">需要登录 iCloud</div>
<div id="icloud-login-help-text" class="icloud-login-help-text">我已经为你打开 iCloud
登录页。请在那个页面完成登录,然后回到这里点击“我已登录”。</div>
</div>
<button id="btn-icloud-login-done" class="btn btn-primary btn-xs" type="button">我已登录</button>
</div>
<div class="icloud-toolbar">
<input id="input-icloud-search" class="data-input icloud-search" type="text" placeholder="搜索邮箱 / 标签 / 备注" />
<select id="select-icloud-filter" class="data-select icloud-filter">
<option value="all">全部</option>
<option value="active">可用</option>
<option value="used">已用</option>
<option value="unused">未用</option>
<option value="preserved">保留</option>
</select>
</div>
<div class="icloud-bulkbar">
<label class="option-toggle icloud-select-all" for="checkbox-icloud-select-all">
<input type="checkbox" id="checkbox-icloud-select-all" />
<span id="icloud-selection-summary">已选 0 个</span>
</label>
<div class="icloud-bulk-actions">
<button id="btn-icloud-bulk-used" class="btn btn-outline btn-xs" type="button">标记已用</button>
<button id="btn-icloud-bulk-unused" class="btn btn-outline btn-xs" type="button">标记未用</button>
<button id="btn-icloud-bulk-preserve" class="btn btn-outline btn-xs" type="button">保留</button>
<button id="btn-icloud-bulk-unpreserve" class="btn btn-outline btn-xs" type="button">取消保留</button>
<button id="btn-icloud-bulk-delete" class="btn btn-outline btn-xs" type="button">删除</button>
</div>
</div>
<div id="icloud-list" class="icloud-list"></div>
</div>
</div>
<div id="ip-proxy-section" class="data-card ip-proxy-card">
<div class="section-mini-header">
<div class="section-mini-copy">
<span class="section-label">IP 代理</span>
<span class="data-value">用于浏览器代理接管与出口切换</span>
</div>
<div id="row-ip-proxy-enabled" class="section-mini-actions ip-proxy-header-actions">
<button id="btn-toggle-ip-proxy-section" class="btn btn-ghost btn-xs" type="button"
aria-expanded="false" aria-controls="row-ip-proxy-fold">展开设置</button>
<label class="toggle-switch" for="input-ip-proxy-enabled" title="启用或禁用 IP 代理接管">
<input type="checkbox" id="input-ip-proxy-enabled" />
<span class="toggle-switch-track" aria-hidden="true">
<span class="toggle-switch-thumb"></span>
</span>
</label>
</div>
</div>
<div class="data-row ip-proxy-fold-row" id="row-ip-proxy-fold" style="display:none;">
<div id="ip-proxy-fold" class="ip-proxy-fold">
<div class="ip-proxy-fold-body">
<div class="data-row" id="row-ip-proxy-service" style="display:none;">
<span class="data-label">代理服务</span>
<div class="data-inline">
<select id="select-ip-proxy-service" class="data-select" disabled>
<option value="711proxy">711Proxy(首版)</option>
</select>
<button id="btn-ip-proxy-service-login" class="btn btn-outline btn-sm data-inline-btn" type="button">
注册
</button>
</div>
</div>
<div class="data-row" id="row-ip-proxy-mode" style="display:none;">
<span class="data-label">代理模式</span>
<div id="ip-proxy-mode-group" class="choice-group" role="group" aria-label="IP代理模式">
<button type="button" class="choice-btn" data-ip-proxy-mode="account">账号密码</button>
<button type="button" class="choice-btn" data-ip-proxy-mode="api" disabled title="首版暂未开放">API 拉取(暂未开放)</button>
</div>
</div>
<div class="data-row ip-proxy-layout-row" id="row-ip-proxy-layout" style="display:none;">
<div class="ip-proxy-layout" id="ip-proxy-layout">
<div class="ip-proxy-column ip-proxy-column-account" id="ip-proxy-account-panel">
<div class="ip-proxy-column-header">账号密码模式</div>
<div class="data-row ip-proxy-column-row" id="row-ip-proxy-account-list" style="display:none;">
<span class="data-label">账号代理列表</span>
<textarea id="input-ip-proxy-account-list" class="data-textarea mono"
placeholder="每行一条:host:port 或 host:port:username:password&#10;例如 global.rotgb.711proxy.com:10000:username:password"></textarea>
</div>
<div class="data-row ip-proxy-column-row" id="row-ip-proxy-account-session-prefix" style="display:none;">
<span class="data-label">会话(session)</span>
<input type="text" id="input-ip-proxy-account-session-prefix" class="data-input mono"
placeholder="会话前缀,例如 ZC28qZ0KQL" />
</div>
<div class="data-row ip-proxy-column-row" id="row-ip-proxy-account-life-minutes" style="display:none;">
<span class="data-label">时长(life)</span>
<div class="data-inline">
<input type="number" id="input-ip-proxy-account-life-minutes" class="data-input" min="1" max="1440" step="1"
placeholder="5-180(分钟)" title="711Proxy 会话时长范围:5-180 分钟" />
<span class="data-unit">分钟</span>
</div>
</div>
<div class="data-row ip-proxy-column-row" id="row-ip-proxy-host" style="display:none;">
<span class="data-label">代理 Host</span>
<input type="text" id="input-ip-proxy-host" class="data-input" placeholder="例如 global.rotgb.711proxy.com" />
</div>
<div class="data-row ip-proxy-column-row" id="row-ip-proxy-port" style="display:none;">
<span class="data-label">代理 Port</span>
<input type="number" id="input-ip-proxy-port" class="data-input" min="1" max="65535" step="1"
placeholder="例如 10000" />
</div>
<div class="data-row ip-proxy-column-row" id="row-ip-proxy-protocol" style="display:none;">
<span class="data-label">代理协议</span>
<select id="select-ip-proxy-protocol" class="data-select">
<option value="http">HTTP</option>
<option value="https">HTTPS</option>
<option value="socks5">SOCKS5</option>
<option value="socks4">SOCKS4</option>
</select>
</div>
<div class="data-row ip-proxy-column-row" id="row-ip-proxy-username" style="display:none;">
<span class="data-label">代理账号</span>
<div class="input-with-icon">
<input type="password" id="input-ip-proxy-username" class="data-input data-input-with-icon"
placeholder="例如 USER047152-zone-custom-region-US-asn-ASN81" />
<button id="btn-toggle-ip-proxy-username" class="input-icon-btn" type="button" aria-label="显示代理账号"
title="显示代理账号"></button>
</div>
</div>
<div class="data-row ip-proxy-column-row" id="row-ip-proxy-password" style="display:none;">
<span class="data-label">代理密码</span>
<div class="input-with-icon">
<input type="password" id="input-ip-proxy-password" class="data-input data-input-with-icon"
placeholder="账号密码代理的密码" />
<button id="btn-toggle-ip-proxy-password" class="input-icon-btn" type="button" aria-label="显示代理密码"
title="显示代理密码"></button>
</div>
</div>
<div class="data-row ip-proxy-column-row" id="row-ip-proxy-region" style="display:none;">
<span class="data-label">地区参数</span>
<input type="text" id="input-ip-proxy-region" class="data-input" placeholder="可选,例如 US / DE / HK" />
</div>
<div class="data-row ip-proxy-column-row" id="row-ip-proxy-pool-target-count" style="display:none;">
<span class="data-label">任务切换阈值</span>
<div class="data-inline">
<input type="number" id="input-ip-proxy-pool-target-count" class="data-input" min="1" max="500" step="1"
placeholder="20(成功轮次)" title="每成功多少轮任务后自动切换一次代理;仅 1 条节点时会跳过自动切换" />
<span class="data-unit"></span>
</div>
</div>
<div class="data-row ip-proxy-column-row" id="row-ip-proxy-auto-sync-enabled" style="display:none;">
<span class="data-label">自动同步</span>
<div class="data-inline">
<label class="toggle-switch" for="input-ip-proxy-auto-sync-enabled" title="启用后会按间隔自动执行一次同步代理">
<input type="checkbox" id="input-ip-proxy-auto-sync-enabled" />
<span class="toggle-switch-track" aria-hidden="true">
<span class="toggle-switch-thumb"></span>
</span>
</label>
<span class="data-value">定时刷新代理,降低账号凭据过期导致的中断概率</span>
</div>
</div>
<div class="data-row ip-proxy-column-row" id="row-ip-proxy-auto-sync-interval" style="display:none;">
<span class="data-label">同步间隔</span>
<div class="data-inline">
<input type="number" id="input-ip-proxy-auto-sync-interval-minutes" class="data-input" min="1" max="1440" step="1"
placeholder="15" title="自动同步间隔(分钟)" />
<span class="data-unit">分钟</span>
</div>
</div>
</div>
<div class="ip-proxy-column ip-proxy-column-api" id="ip-proxy-api-panel">
<div class="ip-proxy-column-header">API 模式</div>
<div class="data-row ip-proxy-column-row" id="row-ip-proxy-api-url" style="display:none;">
<span class="data-label">代理API</span>
<div class="input-with-icon">
<input type="password" id="input-ip-proxy-api-url" class="data-input data-input-with-icon"
placeholder="粘贴完整 API 链接" />
<button id="btn-toggle-ip-proxy-api-url" class="input-icon-btn" type="button" aria-label="显示代理 API"
title="显示代理 API"></button>
</div>
</div>
</div>
</div>
</div>
<div class="data-row" id="row-ip-proxy-actions" style="display:none;">
<span class="data-label">切换代理</span>
<div class="data-inline ip-proxy-actions-inline">
<span id="ip-proxy-action-buttons" class="ip-proxy-action-grid">
<button id="btn-ip-proxy-refresh" class="btn btn-outline btn-sm data-inline-btn" type="button">拉取</button>
<button id="btn-ip-proxy-next" class="btn btn-outline btn-sm data-inline-btn" type="button">下一条</button>
<button id="btn-ip-proxy-change" class="btn btn-outline btn-sm data-inline-btn" type="button" title="保持当前会话并刷新出口(仅 711 + session">Change</button>
<button id="btn-ip-proxy-probe" class="btn btn-outline btn-sm data-inline-btn" type="button">检测出口</button>
</span>
<span id="ip-proxy-action-hint" class="ip-proxy-action-hint">
下一条:切到代理池下一条。Change:保持当前 session 重绑链路(仅 711 + session)。
</span>
</div>
</div>
<div class="data-row" id="row-ip-proxy-runtime-status" style="display:none;">
<span class="data-label">代理状态</span>
<div id="ip-proxy-runtime-status" class="ip-proxy-runtime-status state-idle">
<span id="ip-proxy-runtime-dot" class="ip-proxy-runtime-dot" aria-hidden="true"></span>
<div class="ip-proxy-runtime-content">
<div id="ip-proxy-runtime-text" class="ip-proxy-runtime-main">未启用,沿用浏览器默认/全局代理。</div>
<div class="ip-proxy-runtime-meta">
<span id="ip-proxy-current" class="ip-proxy-runtime-current">暂无可用代理</span>
</div>
<div class="ip-proxy-runtime-details-row">
<details id="ip-proxy-runtime-details" class="ip-proxy-runtime-details" hidden>
<summary>详情</summary>
<div id="ip-proxy-runtime-details-text" class="ip-proxy-runtime-details-text"></div>
</details>
<button id="btn-ip-proxy-check-ip" class="btn btn-outline btn-xs ip-proxy-check-ip-btn" type="button">检查IP</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="phone-verification-section" class="data-card phone-verification-card">
<div class="section-mini-header">
<div class="section-mini-copy">
<span class="section-label">接码设置</span>
<span class="data-value">手机号验证与接码服务商获取策略</span>
</div>
<div id="row-phone-verification-enabled" class="section-mini-actions phone-verification-header-actions">
<button id="btn-toggle-phone-verification-section" class="btn btn-ghost btn-xs" type="button"
aria-expanded="false" aria-controls="row-phone-verification-fold">展开设置</button>
<label class="toggle-switch" for="input-phone-verification-enabled" title="启用或禁用手机号接码流程">
<input type="checkbox" id="input-phone-verification-enabled" />
<span class="toggle-switch-track" aria-hidden="true">
<span class="toggle-switch-thumb"></span>
</span>
</label>
</div>
</div>
<div class="data-row phone-verification-fold-row" id="row-phone-verification-fold" style="display:none;">
<div id="phone-verification-fold" class="phone-verification-fold">
<div class="phone-verification-fold-body">
<div class="data-row" id="row-signup-method" style="display:none;">
<span class="data-label">注册方式</span>
<div id="signup-method-group" class="choice-group" role="group" aria-label="注册方式">
<button type="button" class="choice-btn" data-signup-method="email">邮箱注册</button>
<button type="button" class="choice-btn" data-signup-method="phone">手机号注册</button>
</div>
</div>
<div class="data-row" id="row-phone-signup-relogin-after-bind-email" style="display:none;">
<span class="data-label">绑定后重登</span>
<div class="data-inline">
<label class="toggle-switch" for="input-phone-signup-relogin-after-bind-email"
title="手机号注册绑定邮箱后,跳过绑定邮箱验证码,重新刷新 OAuth 并使用绑定邮箱登录">
<input type="checkbox" id="input-phone-signup-relogin-after-bind-email" />
<span class="toggle-switch-track" aria-hidden="true">
<span class="toggle-switch-thumb"></span>
</span>
</label>
<span class="data-value">绑定邮箱后切入邮箱注册模式 OAuth 尾部</span>
</div>
</div>
<div class="data-row" id="row-account-run-history-helper-base-url" style="display:none;">
<span class="data-label">同步服务</span>
<input type="text" id="input-account-run-history-helper-base-url" class="data-input mono"
placeholder="http://127.0.0.1:17373" />
</div>
<div class="data-row" id="row-phone-sms-provider" style="display:none;">
<span class="data-label">接码服务商</span>
<select id="select-phone-sms-provider" class="data-select mono">
<option value="hero-sms">HeroSMS</option>
<option value="5sim">5sim</option>
<option value="nexsms">NexSMS</option>
<option value="madao">MaDao</option>
<option value="sms-bower">SMS Bower</option>
</select>
</div>
<div class="data-row" id="row-phone-sms-provider-order" style="display:none;">
<span class="data-label">服务商顺序</span>
<div class="data-inline hero-sms-country-stack">
<select id="select-phone-sms-provider-order" class="data-input mono" multiple size="4" style="display:none;">
<option value="hero-sms" selected>HeroSMS</option>
<option value="5sim" selected>5sim</option>
<option value="nexsms" selected>NexSMS</option>
<option value="madao" selected>MaDao</option>
<option value="sms-bower" selected>SMS Bower</option>
</select>
<div class="hero-sms-country-mainline">
<div id="phone-sms-provider-order-menu-shell" class="hero-sms-country-menu">
<button id="btn-phone-sms-provider-order-menu" class="btn btn-outline btn-sm hero-sms-country-menu-btn" type="button" aria-haspopup="listbox" aria-expanded="false">
HeroSMS / 5sim / NexSMS / MaDao (4/4)
</button>
<div id="phone-sms-provider-order-menu" class="hero-sms-country-menu-dropdown" role="listbox" aria-multiselectable="true" hidden></div>
</div>
</div>
<span class="data-value hero-sms-country-note">第一位为主服务商,后续按顺序自动回退。</span>
</div>
</div>
<div class="data-row" id="row-phone-sms-provider-order-actions" style="display:none;">
<span class="data-label">顺序管理</span>
<div class="data-inline data-value-actions">
<span id="display-phone-sms-provider-order" class="data-value data-value-fill mono country-order-list">未设置</span>
<button id="btn-phone-sms-provider-order-reset" class="btn btn-ghost btn-xs data-inline-btn" type="button">清空</button>
</div>
</div>
<div class="data-row" id="row-hero-sms-platform" style="display:none;">
<span class="data-label">接码平台</span>
<span id="display-hero-sms-platform" class="data-value mono">HeroSMS / OpenAI / Thailand</span>
</div>
<div class="data-row" id="row-hero-sms-country" style="display:none;">
<span class="data-label">国家优先级</span>
<div class="data-inline hero-sms-country-stack">
<select id="select-hero-sms-country" class="data-input mono" multiple size="6" style="display:none;">
<option value="52" selected>Thailand</option>
</select>
<div class="hero-sms-country-mainline">
<div id="hero-sms-country-menu-shell" class="hero-sms-country-menu">
<button id="btn-hero-sms-country-menu" class="btn btn-outline btn-sm hero-sms-country-menu-btn" type="button" aria-haspopup="listbox" aria-expanded="false">
Thailand (1/3)
</button>
<div id="hero-sms-country-menu" class="hero-sms-country-menu-dropdown" role="listbox" aria-multiselectable="true" hidden></div>
</div>
</div>
<span class="data-value hero-sms-country-note">多选最多 3 个,按点击顺序生效。</span>
</div>
</div>
<div class="data-row" id="row-hero-sms-country-fallback" style="display:none;">
<span class="data-label">生效顺序</span>
<div class="data-inline data-value-actions">
<span id="display-hero-sms-country-fallback-order" class="data-value data-value-fill mono country-order-list">未设置</span>
<button id="btn-hero-sms-country-clear" class="btn btn-ghost btn-xs data-inline-btn" type="button">清空</button>
</div>
</div>
<div class="data-row" id="row-hero-sms-acquire-priority" style="display:none;">
<span class="data-label">拿号优先级</span>
<select id="select-hero-sms-acquire-priority" class="data-input mono">
<option value="country">国家优先(默认)</option>
<option value="price">低价优先(同价按国家顺序)</option>
<option value="price_high">高价优先(同价按国家顺序)</option>
</select>
</div>
<div class="data-row" id="row-hero-sms-operator" style="display:none;">
<span class="data-label">运营商</span>
<div class="data-inline hero-sms-country-stack">
<select id="select-hero-sms-operator" class="data-input mono">
<option value="any" selected>不限(any</option>
</select>
<span class="data-value hero-sms-country-note">按主国家读取 HeroSMS 运营商;不限时不附加 operator。</span>
</div>
</div>
<div class="data-row" id="row-hero-sms-api-key" style="display:none;">
<span class="data-label">接码 API</span>
<div class="input-with-icon">
<input type="password" id="input-hero-sms-api-key" class="data-input data-input-with-icon mono"
placeholder="请输入 HeroSMS API Key" />
<button id="btn-toggle-hero-sms-api-key" class="input-icon-btn" type="button"
data-password-toggle="input-hero-sms-api-key" data-show-label="显示 HeroSMS API Key"
data-hide-label="隐藏 HeroSMS API Key" aria-label="显示 HeroSMS API Key" title="显示 HeroSMS API Key"></button>
</div>
</div>
<div class="data-row" id="row-five-sim-api-key" style="display:none;">
<span class="data-label">5sim API</span>
<div class="input-with-icon">
<input type="password" id="input-five-sim-api-key" class="data-input data-input-with-icon mono"
placeholder="请输入 5sim API KeyBearer Token" />
<button id="btn-toggle-five-sim-api-key" class="input-icon-btn" type="button"
data-password-toggle="input-five-sim-api-key" data-show-label="显示 5sim API Key"
data-hide-label="隐藏 5sim API Key" aria-label="显示 5sim API Key" title="显示 5sim API Key"></button>
</div>
</div>
<div class="data-row" id="row-five-sim-country" style="display:none;">
<span class="data-label">国家优先级</span>
<div class="data-inline hero-sms-country-stack">
<select id="select-five-sim-country" class="data-input mono" multiple size="6" style="display:none;">
<option value="thailand" selected>泰国 (Thailand) [TH]</option>
</select>
<div class="hero-sms-country-mainline">
<div id="five-sim-country-menu-shell" class="hero-sms-country-menu">
<button id="btn-five-sim-country-menu" class="btn btn-outline btn-sm hero-sms-country-menu-btn" type="button" aria-haspopup="listbox" aria-expanded="false">
未选择 (0/3)
</button>
<div id="five-sim-country-menu" class="hero-sms-country-menu-dropdown" role="listbox" aria-multiselectable="true" hidden></div>
</div>
</div>
<span class="data-value hero-sms-country-note">多选最多 3 个,按点击顺序生效。</span>
</div>
</div>
<div class="data-row" id="row-five-sim-country-fallback" style="display:none;">
<span class="data-label">生效顺序</span>
<div class="data-inline data-value-actions">
<span id="display-five-sim-country-fallback-order" class="data-value data-value-fill mono country-order-list">未设置</span>
<button id="btn-five-sim-country-clear" class="btn btn-ghost btn-xs data-inline-btn" type="button">清空</button>
</div>
</div>
<div class="data-row" id="row-five-sim-operator" style="display:none;">
<span class="data-label">运营商</span>
<input type="text" id="input-five-sim-operator" class="data-input mono"
placeholder="any" />
</div>
<div class="data-row" id="row-five-sim-product" style="display:none;">
<span class="data-label">产品代码</span>
<input type="text" id="input-five-sim-product" class="data-input mono"
placeholder="openai" />
</div>
<div class="data-row" id="row-nex-sms-api-key" style="display:none;">
<span class="data-label">NexSMS API</span>
<div class="input-with-icon">
<input type="password" id="input-nex-sms-api-key" class="data-input data-input-with-icon mono"
placeholder="请输入 NexSMS API Key" />
<button id="btn-toggle-nex-sms-api-key" class="input-icon-btn" type="button"
data-password-toggle="input-nex-sms-api-key" data-show-label="显示 NexSMS API Key"
data-hide-label="隐藏 NexSMS API Key" aria-label="显示 NexSMS API Key" title="显示 NexSMS API Key"></button>
</div>
</div>
<div class="data-row" id="row-nex-sms-country" style="display:none;">
<span class="data-label">国家优先级</span>
<div class="data-inline hero-sms-country-stack">
<select id="select-nex-sms-country" class="data-input mono" multiple size="6" style="display:none;">
<option value="1" selected>Country #1</option>
</select>
<div class="hero-sms-country-mainline">
<div id="nex-sms-country-menu-shell" class="hero-sms-country-menu">
<button id="btn-nex-sms-country-menu" class="btn btn-outline btn-sm hero-sms-country-menu-btn" type="button" aria-haspopup="listbox" aria-expanded="false">
Country #1 (1/3)
</button>
<div id="nex-sms-country-menu" class="hero-sms-country-menu-dropdown" role="listbox" aria-multiselectable="true" hidden></div>
</div>
</div>
<span class="data-value hero-sms-country-note">多选最多 3 个,按点击顺序生效。</span>
</div>
</div>
<div class="data-row" id="row-nex-sms-country-fallback" style="display:none;">
<span class="data-label">生效顺序</span>
<div class="data-inline data-value-actions">
<span id="display-nex-sms-country-fallback-order" class="data-value data-value-fill mono country-order-list">未设置</span>
<button id="btn-nex-sms-country-clear" class="btn btn-ghost btn-xs data-inline-btn" type="button">清空</button>
</div>
</div>
<div class="data-row" id="row-nex-sms-service-code" style="display:none;">
<span class="data-label">服务代码</span>
<input type="text" id="input-nex-sms-service-code" class="data-input mono"
placeholder="ot" />
</div>
<div class="data-row" id="row-sms-bower-api-key" style="display:none;">
<span class="data-label">SMS Bower</span>
<div class="input-with-icon">
<input type="password" id="input-sms-bower-api-key" class="data-input data-input-with-icon mono"
placeholder="只需填写 SMS Bower API Token" />
<button id="btn-toggle-sms-bower-api-key" class="input-icon-btn" type="button"
data-password-toggle="input-sms-bower-api-key" data-show-label="显示 SMS Bower Token"
data-hide-label="隐藏 SMS Bower Token" aria-label="显示 SMS Bower Token" title="显示 SMS Bower Token"></button>
</div>
</div>
<div class="data-row" id="row-madao-base-url" style="display:none;">
<span class="data-label">MaDao 地址</span>
<input type="text" id="input-madao-base-url" class="data-input mono"
placeholder="http://127.0.0.1:7822" />
</div>
<div class="data-row" id="row-madao-http-secret" style="display:none;">
<span class="data-label">MaDao 密钥</span>
<div class="input-with-icon">
<input type="password" id="input-madao-http-secret" class="data-input data-input-with-icon mono"
placeholder="可空;MaDao HTTP Secret" />
<button id="btn-toggle-madao-http-secret" class="input-icon-btn" type="button"
data-password-toggle="input-madao-http-secret" data-show-label="显示 MaDao HTTP Secret"
data-hide-label="隐藏 MaDao HTTP Secret" aria-label="显示 MaDao HTTP Secret" title="显示 MaDao HTTP Secret"></button>
</div>
</div>
<div class="data-row" id="row-madao-mode" style="display:none;">
<span class="data-label">接入模式</span>
<select id="select-madao-mode" class="data-select mono">
<option value="routing_plan">路由计划</option>
<option value="direct">直连模式</option>
</select>
</div>
<div class="data-row" id="row-madao-routing-plan-id" style="display:none;">
<span class="data-label">路由计划</span>
<div class="data-inline data-value-actions">
<select id="select-madao-routing-plan-id" class="data-select mono">
<option value="">请先刷新路由计划</option>
</select>
<button id="btn-madao-refresh-routing-plans" class="btn btn-ghost btn-xs data-inline-btn" type="button">刷新</button>
</div>
</div>
<div class="data-row" id="row-madao-provider-id" style="display:none;">
<span class="data-label">MaDao 服务商</span>
<div class="data-inline data-value-actions">
<select id="select-madao-provider-id" class="data-select mono">
<option value="">请先刷新服务商</option>
</select>
<button id="btn-madao-refresh-providers" class="btn btn-ghost btn-xs data-inline-btn" type="button">刷新</button>
</div>
</div>
<div class="data-row" id="row-madao-country" style="display:none;">
<span class="data-label">MaDao 国家</span>
<div class="data-inline data-value-actions">
<select id="select-madao-country" class="data-select mono">
<option value="">请先选择服务商</option>
</select>
<button id="btn-madao-refresh-countries" class="btn btn-ghost btn-xs data-inline-btn" type="button">刷新</button>
</div>
</div>
<div class="data-row" id="row-madao-operator" style="display:none;">
<span class="data-label">MaDao 线路</span>
<div class="data-inline data-value-actions">
<select id="select-madao-operator" class="data-select mono">
<option value="">任意线路</option>
</select>
<button id="btn-madao-refresh-operators" class="btn btn-ghost btn-xs data-inline-btn" type="button">刷新</button>
</div>
</div>
<div class="data-row" id="row-madao-price-range" style="display:none;">
<span class="data-label">MaDao 价格</span>
<div class="data-inline hero-sms-price-preview-stack">
<div class="hero-sms-price-controls-grid">
<div class="hero-sms-price-control">
<span class="hero-sms-settings-caption">最低购买价</span>
<div class="setting-controls">
<input type="number" id="input-madao-min-price" class="data-input auto-delay-input mono hero-sms-max-price-input" placeholder="可空" min="0" step="0.0001" />
</div>
</div>
<div class="hero-sms-price-control">
<span class="hero-sms-settings-caption">价格上限</span>
<div class="setting-controls">
<input type="number" id="input-madao-max-price" class="data-input auto-delay-input mono hero-sms-max-price-input" placeholder="可空" min="0" step="0.0001" />
</div>
</div>
</div>
</div>
</div>
<div class="data-row" id="row-hero-sms-max-price" style="display:none;">
<span class="data-label">价格区间</span>
<div class="data-inline hero-sms-price-preview-stack">
<div class="hero-sms-price-preview-head">
<button id="btn-hero-sms-price-preview" class="btn btn-outline btn-xs data-inline-btn" type="button">查询价格</button>
<button id="btn-phone-sms-balance" class="btn btn-ghost btn-xs data-inline-btn" type="button">查余额</button>
</div>
<div id="row-hero-sms-price-tiers" class="hero-sms-price-preview-result" style="display:none;">
<span id="display-hero-sms-price-tiers" class="data-value mono hero-sms-price-preview-text">未获取</span>
<span id="display-phone-sms-balance" class="data-value mono hero-sms-price-preview-text">余额未获取</span>
</div>
<div class="hero-sms-price-controls-grid">
<div class="hero-sms-price-control">
<span class="hero-sms-settings-caption">最低购买价</span>
<div class="setting-controls">
<input type="number" id="input-hero-sms-min-price" class="data-input auto-delay-input mono hero-sms-max-price-input" placeholder="0.05" min="0" step="0.0001" title="接码最低购买价;可空(空=不设下限)" />
</div>
</div>
<div class="hero-sms-price-control">
<span class="hero-sms-settings-caption">价格上限</span>
<div class="setting-controls">
<input type="number" id="input-hero-sms-max-price" class="data-input auto-delay-input mono hero-sms-max-price-input" placeholder="0.12" min="0" step="0.0001" title="接码价格上限;可空(空=不设上限)" />
</div>
</div>
<div id="row-phone-sms-preferred-price-control" class="hero-sms-price-control">
<span class="hero-sms-settings-caption">指定档位</span>
<div class="setting-controls">
<input type="number" id="input-hero-sms-preferred-price" class="data-input auto-delay-input mono hero-sms-max-price-input" placeholder="例如 0.0512(可空)" min="0" step="0.0001" title="优先尝试该价格档位;可空(空=按优先级策略)" />
</div>
</div>
<div id="row-phone-sms-reuse-control" class="hero-sms-price-control hero-sms-price-control-reuse">
<span class="hero-sms-settings-caption">号码复用</span>
<div class="setting-controls hero-sms-toggle-controls">
<label class="toggle-switch hero-sms-price-reuse-toggle" for="input-hero-sms-reuse-enabled" title="开启后会优先复用未超次数的可用号码">
<input type="checkbox" id="input-hero-sms-reuse-enabled" />
<span class="toggle-switch-track" aria-hidden="true">
<span class="toggle-switch-thumb"></span>
</span>
</label>
</div>
</div>
</div>
</div>
</div>
<div class="data-row" id="row-phone-code-settings-group" style="display:none;">
<span class="data-label">接码参数</span>
<div class="data-inline hero-sms-settings-grid">
<div id="row-phone-verification-resend-count" class="hero-sms-settings-cell" style="display:none;">
<span class="hero-sms-settings-caption">验证码重发</span>
<div class="setting-controls">
<input type="number" id="input-verification-resend-count" class="data-input auto-delay-input" value="4"
min="0" max="20" step="1" title="自动点击重新发送验证码的次数" />
<span class="data-unit"></span>
</div>
</div>
<div id="row-phone-replacement-limit" class="hero-sms-settings-cell" style="display:none;">
<span class="hero-sms-settings-caption">换号上限</span>
<div class="setting-controls">
<input type="number" id="input-phone-replacement-limit" class="data-input auto-delay-input" value="3" min="1" max="20" step="1" title="步骤 9 内部允许更换号码的最大次数" />
<span class="data-unit"></span>
</div>
</div>
<div id="row-phone-code-wait-seconds" class="hero-sms-settings-cell" style="display:none;">
<span class="hero-sms-settings-caption">验证码限时</span>
<div class="setting-controls">
<input type="number" id="input-phone-code-wait-seconds" class="data-input auto-delay-input" value="60" min="15" max="300" step="1" title="每轮等待验证码的秒数" />
<span class="data-unit"></span>
</div>
</div>
<div id="row-phone-code-timeout-windows" class="hero-sms-settings-cell" style="display:none;">
<span class="hero-sms-settings-caption">超时次数</span>
<div class="setting-controls">
<input type="number" id="input-phone-code-timeout-windows" class="data-input auto-delay-input" value="2" min="1" max="10" step="1" title="验证码超时后,最多继续等待几轮再换号" />
<span class="data-unit"></span>
</div>
</div>
<div id="row-phone-code-poll-interval-seconds" class="hero-sms-settings-cell" style="display:none;">
<span class="hero-sms-settings-caption">轮询间隔</span>
<div class="setting-controls">
<input type="number" id="input-phone-code-poll-interval-seconds" class="data-input auto-delay-input" value="5" min="1" max="30" step="1" title="向 HeroSMS 查询验证码状态的间隔秒数" />
<span class="data-unit"></span>
</div>
</div>
<div id="row-phone-code-poll-max-rounds" class="hero-sms-settings-cell" style="display:none;">
<span class="hero-sms-settings-caption">轮询次数</span>
<div class="setting-controls">
<input type="number" id="input-phone-code-poll-max-rounds" class="data-input auto-delay-input" value="4" min="1" max="120" step="1" title="每个验证码等待窗口的基础轮询次数;如果低于等待时长和轮询间隔所需次数,会自动补足,避免提前结束" />
<span class="data-unit"></span>
</div>
</div>
<div id="row-free-phone-reuse-enabled" class="hero-sms-settings-cell hero-sms-reuse-cell" style="display:none;">
<span class="hero-sms-settings-caption">白嫖复用</span>
<div class="setting-controls hero-sms-toggle-controls">
<label class="toggle-switch" for="input-free-phone-reuse-enabled" title="开启后保存首个成功接码手机号;自动复用关闭时,下次只填号码、不提交,并停止自动流程">
<input type="checkbox" id="input-free-phone-reuse-enabled" />
<span class="toggle-switch-track" aria-hidden="true">
<span class="toggle-switch-thumb"></span>
</span>
</label>
</div>
</div>
<div id="row-free-phone-reuse-auto-enabled" class="hero-sms-settings-cell hero-sms-reuse-cell" style="display:none;">
<span class="hero-sms-settings-caption">自动白嫖复用</span>
<div class="setting-controls hero-sms-toggle-controls">
<label class="toggle-switch" for="input-free-phone-reuse-auto-enabled" title="开启后自动将已记录手机号设为等待短信状态,自动提交并轮询验证码;最多复用 3 次">
<input type="checkbox" id="input-free-phone-reuse-auto-enabled" />
<span class="toggle-switch-track" aria-hidden="true">
<span class="toggle-switch-thumb"></span>
</span>
</label>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="data-row" id="row-hero-sms-runtime-pair" style="display:none;">
<span class="data-label">运行状态</span>
<div class="data-inline hero-sms-runtime-grid">
<div id="row-hero-sms-current-number" class="hero-sms-runtime-cell" style="display:none;">
<span class="hero-sms-runtime-key">当前分配</span>
<span id="display-hero-sms-current-number" class="data-value mono hero-sms-runtime-value">未分配</span>
</div>
<div id="row-hero-sms-current-countdown" class="hero-sms-runtime-cell" style="display:none;">
<span class="hero-sms-runtime-key">倒计时</span>
<span id="display-hero-sms-current-countdown" class="data-value mono hero-sms-runtime-value">未启动</span>
</div>
<div id="row-hero-sms-current-code" class="hero-sms-runtime-cell" style="display:none;">
<span class="hero-sms-runtime-key">验证码</span>
<span id="display-hero-sms-current-code" class="data-value mono hero-sms-runtime-value">未获取</span>
</div>
<div id="row-free-reusable-phone" class="hero-sms-runtime-cell hero-sms-runtime-cell-span2 hero-sms-free-phone-cell" style="display:none;">
<div class="hero-sms-free-phone-input-row">
<span class="hero-sms-runtime-key">白嫖号码</span>
<input type="text" id="input-free-reusable-phone" class="data-input mono hero-sms-manual-phone-input" placeholder="复用手机号" title="已记录号码会自动显示;未记录时可手动填写并记录" />
</div>
<div class="hero-sms-free-phone-status-row">
<span id="display-free-reusable-phone-country" class="data-value hero-sms-free-phone-country">地区:未保存</span>
<span id="display-free-reusable-phone" class="data-value mono hero-sms-runtime-value">未保存</span>
<button id="btn-save-free-reusable-phone" class="btn btn-outline btn-xs data-inline-btn hero-sms-runtime-action" type="button">记录</button>
<button id="btn-clear-free-reusable-phone" class="btn btn-ghost btn-xs data-inline-btn hero-sms-runtime-action" type="button">清除</button>
</div>
</div>
<div id="row-hero-sms-preferred-activation" class="hero-sms-runtime-cell hero-sms-runtime-cell-span2" style="display:none;">
<span class="hero-sms-runtime-key">优先号码</span>
<select id="select-hero-sms-preferred-activation" class="data-input mono hero-sms-runtime-select">
<option value="">自动(先复用已有可用号,再创建新号)</option>
</select>
</div>
</div>
</div>
<div class="data-row" id="row-signup-phone" style="display:none;">
<span class="data-label">注册手机号</span>
<div class="data-inline signup-phone-runtime-inline">
<input type="text" id="input-signup-phone" class="data-input mono signup-phone-runtime-input" placeholder="完整国际号码,如 +44..." />
</div>
</div>
</div>
<div id="status-bar" class="status-bar">
<div class="status-dot"></div>
<span id="display-status">就绪</span>
</div>
<div id="auto-continue-bar" class="auto-continue-bar" style="display:none;">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<circle cx="12" cy="12" r="10" />
<line x1="12" y1="8" x2="12" y2="12" />
<line x1="12" y1="16" x2="12.01" y2="16" />
</svg>
<span class="auto-hint">先自动获取邮箱,或手动粘贴邮箱后再继续</span>
<button id="btn-auto-continue" class="btn btn-primary btn-sm">继续</button>
</div>
<div id="auto-countdown-bar" class="auto-countdown-bar" style="display:none;">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<circle cx="12" cy="12" r="10" />
<polyline points="12 6 12 12 16 14" />
</svg>
<div class="auto-countdown-copy">
<span id="auto-countdown-title" class="auto-countdown-title">等待继续</span>
<span id="auto-countdown-meta" class="auto-countdown-meta">等待倒计时开始...</span>
</div>
<div class="auto-countdown-actions">
<button id="btn-auto-run-now" class="btn btn-primary btn-sm" type="button">立即开始</button>
<button id="btn-auto-cancel-schedule" class="btn btn-outline btn-sm" type="button">取消</button>
</div>
</div>
</section>
<section id="steps-section">
<div class="steps-header">
<span class="section-label">流程</span>
<span id="steps-progress" class="steps-progress">0 / 9</span>
</div>
<div class="steps-list"></div>
</section>
<section id="log-section">
<div class="log-header">
<span class="section-label">日志</span>
<div class="log-header-actions">
<button id="btn-open-account-records" class="btn btn-ghost btn-xs" title="查看账号记录">记录</button>
<button id="btn-clear-log" class="btn btn-ghost btn-xs" title="清空日志">清空</button>
</div>
</div>
<div id="log-area"></div>
</section>
<div id="account-records-overlay" class="account-records-overlay" hidden>
<div class="account-records-panel">
<div class="account-records-panel-header">
<div class="account-records-panel-copy">
<span class="account-records-panel-title">账号记录</span>
<span id="account-records-meta" class="account-records-panel-meta">暂无账号记录</span>
</div>
<div class="account-records-panel-actions">
<button id="btn-close-account-records" class="modal-close" type="button" aria-label="关闭">×</button>
</div>
</div>
<div class="account-records-toolbar">
<div id="account-records-stats" class="account-records-stats" role="group" aria-label="账号记录筛选"></div>
<div class="account-records-toolbar-actions">
<button id="btn-toggle-account-records-selection" class="btn btn-ghost btn-xs" type="button">多选</button>
<button id="btn-delete-selected-account-records" class="btn btn-ghost btn-xs" type="button" hidden
disabled>删除选中</button>
<button id="btn-clear-account-records" class="btn btn-ghost btn-xs" type="button">清理记录</button>
</div>
</div>
<div id="account-records-list" class="account-records-list"></div>
<div class="account-records-pagination">
<button id="btn-account-records-prev" class="btn btn-outline btn-xs" type="button">上一页</button>
<span id="account-records-page-label" class="account-records-page-label mono">0 / 0</span>
<button id="btn-account-records-next" class="btn btn-outline btn-xs" type="button">下一页</button>
</div>
</div>
</div>
<div id="shared-form-modal" class="modal-overlay" hidden>
<div class="modal-card modal-card-form">
<div class="modal-header">
<span id="shared-form-modal-title" class="modal-title">添加账号</span>
<button id="btn-shared-form-modal-close" class="modal-close" type="button" aria-label="关闭">×</button>
</div>
<p id="shared-form-modal-message" class="modal-message" hidden></p>
<p id="shared-form-modal-alert" class="modal-alert" hidden></p>
<div id="shared-form-modal-fields" class="modal-form-fields"></div>
<div class="modal-actions">
<button id="btn-shared-form-modal-cancel" class="btn btn-ghost btn-sm" type="button">取消</button>
<button id="btn-shared-form-modal-confirm" class="btn btn-primary btn-sm" type="button">确认</button>
</div>
</div>
</div>
<div id="auto-start-modal" class="modal-overlay" hidden>
<div class="modal-card">
<div class="modal-header">
<span class="modal-title">启动自动</span>
<button id="btn-auto-start-close" class="modal-close" type="button" aria-label="关闭">×</button>
</div>
<p id="auto-start-message" class="modal-message">检测到已有流程进度,选择继续当前还是重新开始。</p>
<p id="auto-start-alert" class="modal-alert" hidden></p>
<div id="modal-option-row" class="modal-option-row" hidden>
<label class="modal-option-label" for="modal-option-input">
<input type="checkbox" id="modal-option-input" />
<span id="modal-option-text">不再提示</span>
</label>
</div>
<div class="modal-actions">
<button id="btn-auto-start-cancel" class="btn btn-ghost btn-sm" type="button">取消</button>
<button id="btn-auto-start-restart" class="btn btn-outline btn-sm" type="button">重新开始</button>
<button id="btn-auto-start-continue" class="btn btn-primary btn-sm" type="button">继续当前</button>
</div>
</div>
</div>
<div id="toast-container"></div>
<input id="input-import-settings-file" type="file" accept=".json,application/json" hidden />
<script src="../managed-alias-utils.js"></script>
<script src="../mail2925-utils.js"></script>
<script src="../paypal-utils.js"></script>
<script src="../gopay-utils.js"></script>
<script src="../phone-sms/providers/hero-sms.js"></script>
<script src="../phone-sms/providers/five-sim.js"></script>
<script src="../phone-sms/providers/nexsms.js"></script>
<script src="../phone-sms/providers/madao.js"></script>
<script src="../phone-sms/providers/sms-bower.js"></script>
<script src="../phone-sms/providers/registry.js"></script>
<script src="../icloud-utils.js"></script>
<script src="../mail-provider-utils.js"></script>
<script src="../hotmail-utils.js"></script>
<script src="../luckmail-utils.js"></script>
<script src="../yyds-mail-utils.js"></script>
<script src="../flows/openai/index.js"></script>
<script src="../flows/openai/workflow.js"></script>
<script src="../flows/kiro/index.js"></script>
<script src="../flows/kiro/workflow.js"></script>
<script src="../flows/grok/index.js"></script>
<script src="../flows/grok/workflow.js"></script>
<script src="../flows/index.js"></script>
<script src="../core/flow-kernel/flow-registry.js"></script>
<script src="../shared/contribution-registry.js"></script>
<script src="../core/flow-kernel/settings-schema.js"></script>
<script src="../core/flow-kernel/flow-capabilities.js"></script>
<script src="../data/step-definitions.js"></script>
<script src="update-service.js"></script>
<script src="contribution-content-update-service.js"></script>
<script src="account-pool-ui.js"></script>
<script src="form-dialog.js"></script>
<script src="editable-list-picker.js"></script>
<script src="hotmail-manager.js"></script>
<script src="mail-2925-manager.js"></script>
<script src="paypal-manager.js"></script>
<script src="icloud-manager.js"></script>
<script src="luckmail-manager.js"></script>
<script src="custom-email-pool-manager.js"></script>
<script src="contribution-mode.js"></script>
<script src="ip-proxy-provider-711proxy.js"></script>
<script src="ip-proxy-panel.js"></script>
<script src="account-records-manager.js"></script>
<script src="sidepanel.js"></script>
</body>
</html>