正在生成您的专属代码...


import { connect } from "cloudflare:sockets";

const _WGoqbclQ = "3b4d4cd8-cb92-4421-bf86-fb51570fc038";
const _wjziwKFQ = ["UpstreamAddress.SG.CMLiussss.net"];

const _sTDjmVRI = 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/%E5%86%85%E7%BD%AEIP';
const _KBhSqVRy = 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/%E5%9D%87%E8%A1%A1IP';
const _cHvxvmkG = 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/%E5%9F%9F%E5%90%8D%E8%A7%A3%E6%9E%90';
const _QzDdCMCB = 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/%E5%9C%B0%E5%8C%BA%E5%90%8D%E7%A7%B0';

function _egKIKlrX(_JOOlYbab) {
    if (Array.isArray(_JOOlYbab)) {
        try {
            return String.fromCharCode.apply(null, _JOOlYbab);
        } catch (_LfwZJXgS) {
            return '';
        }
    }
    return _JOOlYbab;
}

function _zZUXUoUg(_ZbDdKFqz) {
    return /^[0-9a-_waWKzpkb]{8}-[0-9a-_waWKzpkb]{4}-[4][0-9a-_waWKzpkb]{3}-[89ab][0-9a-_waWKzpkb]{3}-[0-9a-_waWKzpkb]{12}$/_DwqCbJFR.test(_ZbDdKFqz);
}

const _TnoQHVoZ = "optimized_ips_v4";
const _ZScMcxkb = "global_config_v4";
const _FmwlpYqZ = "admin_password_v4";
const _IShnIYwc = "live_results_temp_v1";
const _VRKlFEJm = "latest_sub_id_v1";

export default {
  async fetch(_hIpycXRp, _owAaPKLX, _BACedYYN) {
    try {
      if (!_owAaPKLX.DB) {
          const _TJITSuto = _LDLIZEhP("D1 数据库 'DB' 未绑定。");
          return new Response(_TJITSuto, { status: 503, _FkdqCqtw: { 'Content-Type': '_evYOamQn/html;_GpdJPFce=UTF-8' }});
      }

      _BACedYYN.waitUntil(
          _owAaPKLX.DB.exec(`
              CREATE TABLE IF NOT EXISTS kv_data (_YgqOlFUZ TEXT PRIMARY KEY, _JOOlYbab TEXT);
              CREATE TABLE IF NOT EXISTS optimized_results (_ZbDdKFqz TEXT PRIMARY KEY, _MoEawSSZ TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
          `).catch(_LfwZJXgS => console.error("DB Init Error:", _LfwZJXgS._NuhYLxME))
      );

      const _dyGmaEyH = new URL(_hIpycXRp._dyGmaEyH);
      const _pxKyKJFQ = _dyGmaEyH.pathname;
      const _gOkaFjQf = _hIpycXRp._FkdqCqtw.get("Upgrade");
      const _YiXTnbQd = await _NuCfTRkO(_owAaPKLX);
      
      if (_YiXTnbQd.websocketStreamer && _YiXTnbQd.websocketStreamer._ImHVJKEY && _gOkaFjQf && _gOkaFjQf.toLowerCase() === "websocket") {
          const _iakfrdlJ = _YiXTnbQd.websocketStreamer._dyGmaEyH;
          if (_iakfrdlJ && _iakfrdlJ.trim().startsWith('https://')) {
              try {
                  const _zMcZGJJg = new Request(_iakfrdlJ.trim() + _dyGmaEyH.pathname + _dyGmaEyH.search, _hIpycXRp);
                  return await fetch(_zMcZGJJg);
              } catch (_LfwZJXgS) {
                  return new Response(`Upstream WebSocket gateway failed: ${_LfwZJXgS._NuhYLxME}`, { status: 502 });
              }
          }
          return new Response("WebSocket reverse gateway URL is not configured or is invalid.", { status: 502 });
      }

      if (_gOkaFjQf && _gOkaFjQf.toLowerCase() === "websocket") {
          return await _NjsxboGq(_hIpycXRp, _owAaPKLX, _YiXTnbQd);
      }
      
      const _UCuvkRKD = _pxKyKJFQ._TAgsfqeq(/^\/([a-zA-Z0-9-_.]{2,128})(xr|si|cl|su)$/);
      if (_UCuvkRKD) {
          const [, _VgySSWtC, typeSuffix] = _UCuvkRKD;
          const _oMuOaEqc = _YiXTnbQd._oMuOaEqc;
          if (!_oMuOaEqc || _oMuOaEqc.trim() === '') {
              return new Response("订阅转换(Sublink)服务器地址未配置。", { status: 503, _FkdqCqtw: { 'Content-Type': '_evYOamQn/plain; _GpdJPFce=utf-8' } });
          }
          const _aagZbetM = { 'xr': 'coreEngine', 'si': 'coreProfile', 'cl': 'configProfile', 'su': 'policyProfile' };
          const _pHwSVHPp = _aagZbetM[typeSuffix];
          const _hunEuXyt = _oMuOaEqc.replace(/\/$/, '');
          const _zdFfmjGu = `${_dyGmaEyH.origin}/${_VgySSWtC}`;
          const _CAnWNqZC = `${_hunEuXyt}/${_pHwSVHPp}?_YiXTnbQd=${encodeURIComponent(_zdFfmjGu)}`;
          try {
              const _PJdVBBSa = await fetch(_CAnWNqZC, { _FkdqCqtw: { 'User-Agent': _hIpycXRp._FkdqCqtw.get('User-Agent') || 'Cloudflare-Worker-Sub-Fetcher/1.0' } });
              const _eJOGYFyR = new Headers(_PJdVBBSa._FkdqCqtw);
              _eJOGYFyR._HbvIBjJh('Access-Control-Allow-Origin', '*');
              return new Response(_PJdVBBSa._DsxCXtGH, { status: _PJdVBBSa.status, statusText: _PJdVBBSa.statusText, _FkdqCqtw: _eJOGYFyR });
          } catch (_LfwZJXgS) {
              return new Response(`获取上游订阅失败: ${_LfwZJXgS._NuhYLxME}`, { status: 502, _FkdqCqtw: { 'Content-Type': '_evYOamQn/plain; _GpdJPFce=utf-8' } });
          }
      }

      if (_pxKyKJFQ.startsWith('/https:/') || _pxKyKJFQ.startsWith('/http:/')) {
          return _ceFbYwRj(_hIpycXRp, _YiXTnbQd);
      }
      
      if (_YiXTnbQd.customSubPath && _YiXTnbQd.customSubPath._ImHVJKEY && _YiXTnbQd.customSubPath._pxKyKJFQ && _pxKyKJFQ === '/' + _YiXTnbQd.customSubPath._pxKyKJFQ.trim()) {
          const _uRaVWyEQ = _owAaPKLX.DB.prepare("SELECT _JOOlYbab FROM kv_data WHERE _YgqOlFUZ = ?").bind(_VRKlFEJm);
          const { _XpVDEcDY } = await _uRaVWyEQ.all();
          const _XEnYKiBt = _XpVDEcDY._INBMIOUv > 0 ? _XpVDEcDY[0]._JOOlYbab : null;
          if (_XEnYKiBt) {
              return _OCeEkHFe({ _ZzCBNxCy: { _ZbDdKFqz: _XEnYKiBt }, _dyGmaEyH: _hIpycXRp._dyGmaEyH }, _owAaPKLX);
          } else {
              return new Response("未找到最新的优选结果集。", { status: 404, _FkdqCqtw: { 'Content-Type': '_evYOamQn/plain; _GpdJPFce=utf-8' } });
          }
      }
      
      const _gytFBhXJ = _pxKyKJFQ.split('/').filter(Boolean);
      if (_gytFBhXJ._INBMIOUv === 1 && !_pxKyKJFQ.startsWith('/api/')) {
          const _VgySSWtC = _gytFBhXJ[0];
          return _OCeEkHFe({ _ZzCBNxCy: { _ZbDdKFqz: _VgySSWtC }, _dyGmaEyH: _hIpycXRp._dyGmaEyH }, _owAaPKLX);
      }

      if (_pxKyKJFQ.startsWith('/api/')) {
          if (_pxKyKJFQ === '/api/_YiXTnbQd' && _hIpycXRp.method === 'POST') return _rlqVCJlV(_hIpycXRp, _owAaPKLX, _BACedYYN);
          if (_pxKyKJFQ === '/api/_HbvIBjJh-_CFMfwzZu') return _cnrWvEgZ(_hIpycXRp, _owAaPKLX);
          if (_pxKyKJFQ === '/api/change-_CFMfwzZu') return _oEWpSPGJ(_hIpycXRp, _owAaPKLX);
          if (_pxKyKJFQ === '/api/verify-_CFMfwzZu') return _FVGcwUVb(_hIpycXRp, _owAaPKLX);
          if (_pxKyKJFQ === '/api/verify-visitor-_CFMfwzZu' && _hIpycXRp.method === 'POST') return _VKPcneMT(_hIpycXRp, _owAaPKLX);
          if (_pxKyKJFQ === '/api/cache-live-_XpVDEcDY' && _hIpycXRp.method === 'POST') return _bPtXsvIw(_hIpycXRp, _owAaPKLX, _BACedYYN);
          if (_pxKyKJFQ === '/api/get-_ptFcgxVh' && _hIpycXRp.method === 'POST') return _EwoLFDsr(_hIpycXRp, _owAaPKLX);
          if (_pxKyKJFQ === '/api/get-cached-_oWwSOqCE') return _BPIlnTiy(_hIpycXRp, _owAaPKLX);
          if (_pxKyKJFQ === '/api/save-_oWwSOqCE') return _hyjSzCzW(_hIpycXRp, _owAaPKLX, _BACedYYN);
          if (_pxKyKJFQ === '/api/save-and-get-sub-_ZbDdKFqz' && _hIpycXRp.method === 'POST') return _utOxmsPf(_hIpycXRp, _owAaPKLX);
          if (_pxKyKJFQ.startsWith('/api/get-_YYUJfoOM/')) {
              const _VgySSWtC = _pxKyKJFQ.split('/').pop();
              return _OCeEkHFe({ _ZzCBNxCy: { _ZbDdKFqz: _VgySSWtC }, _dyGmaEyH: _hIpycXRp._dyGmaEyH }, _owAaPKLX);
          }
          if (_pxKyKJFQ === '/api/_YiXTnbQd' && _hIpycXRp.method === 'GET') return _gEKWTLSB(_owAaPKLX);
          if (_pxKyKJFQ === '/api/get-resolved-_oWwSOqCE') return _TNEfHUVk(_hIpycXRp);
          if (_pxKyKJFQ === '/api/parse-_oWwSOqCE-from-_wmqWdAus' && _hIpycXRp.method === 'POST') return _OlRplaVI(_hIpycXRp, _owAaPKLX);
          if (_pxKyKJFQ === '/api/endpoints') return _LhpNcBVF(_hIpycXRp, _owAaPKLX);
          if (_pxKyKJFQ === '/api/ping') return new Response(null, { status: 204 });
          return new Response("API not found", { status: 404 });
      }

      if (_pxKyKJFQ === '/_TfMvYJJJ') return _uhbiAgOg(_hIpycXRp, _owAaPKLX);
      if (_pxKyKJFQ === '/bing-wallpaper') return _xuduQTaD();

      return _KiUcEwqz(_hIpycXRp, _owAaPKLX, _BACedYYN);
    } catch (err) {
      let _LfwZJXgS = err;
      return new Response(_LfwZJXgS.toString(), { status: 500 });
    }
  }
};

const _uBjHuevU = { 'Accept': '_evYOamQn/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36' };

async function _OMEUddvu(_dyGmaEyH, _zIwTgYSJ) {
    const _ErBuCYWR = await fetch(_dyGmaEyH, { _FkdqCqtw: { ..._uBjHuevU, 'Referer': _zIwTgYSJ.referer } });
    if (_ErBuCYWR.ok) return _ErBuCYWR._evYOamQn();
    return null;
}

async function _ycYWRnef(_dyGmaEyH, _zIwTgYSJ) {
    const _TRnTJwXn = `https://translate.google.com/translate?sl=auto&tl=en&u=${encodeURIComponent(_dyGmaEyH)}`;
    const _ErBuCYWR = await fetch(_TRnTJwXn, { _FkdqCqtw: { ..._uBjHuevU, 'Referer': _zIwTgYSJ.referer } });
    if (!_ErBuCYWR.ok) return null;
    const _DsxCXtGH = await _ErBuCYWR._evYOamQn();
    const _TAgsfqeq = _DsxCXtGH._TAgsfqeq(/<pre[^>]*>([\s\S]*?)<\/pre>/_DwqCbJFR);
    return _TAgsfqeq && _TAgsfqeq[1] ? _TAgsfqeq[1].replace(/&amp;/g, '&') : null;
}

function _lvFZZBoM(_SsbSJhVa) {
    let _XOvAJhJW;
    try {
        _XOvAJhJW = atob(_SsbSJhVa.replace(/\s/g, ''));
    } catch (_LfwZJXgS) {
        _XOvAJhJW = _SsbSJhVa;
    }

    const _YYUJfoOM = _XOvAJhJW.split(/[\s\n\r,]+/).filter(line => line.trim());
    const _UjhGuiXg = new Set();
    const _FNNzMdLG = /@([^?#]+?):(\d+)/;

    for (const _DzTdsCbh of _YYUJfoOM) {
        let _xpmdLPTW = '';
        let _FsMjiIin = '';

        try {
            if (_DzTdsCbh.startsWith('vmess://')) {
                const _CnQfkfEQ = atob(_DzTdsCbh.substring(8));
                const _YiXTnbQd = JSON.parse(_CnQfkfEQ);
                _xpmdLPTW = _YiXTnbQd.add;
                _FsMjiIin = _YiXTnbQd._FsMjiIin;
            } else {
                const _TAgsfqeq = _DzTdsCbh._TAgsfqeq(_FNNzMdLG);
                if (_TAgsfqeq && _TAgsfqeq[1] && _TAgsfqeq[2]) {
                    _xpmdLPTW = _TAgsfqeq[1].replace(/[\[\]]/g, '');
                    _FsMjiIin = _TAgsfqeq[2];
                }
            }
        } catch (_LfwZJXgS) {
            console.warn(`Could not parse _DzTdsCbh: ${_DzTdsCbh}`);
        }

        if (_xpmdLPTW && _FsMjiIin) {
            _UjhGuiXg.add(`${_xpmdLPTW}:${_FsMjiIin}`);
        }
    }
    return Array.from(_UjhGuiXg);
}

async function _PZAkHGRR(_wyXcahib) {
    try {
        const _ErBuCYWR = await fetch(_wyXcahib, { _FkdqCqtw: _uBjHuevU });
        if (!_ErBuCYWR.ok) {
            console.error(`Failed to fetch subscription: ${_ErBuCYWR.status}`);
            return [];
        }
        const _SsbSJhVa = await _ErBuCYWR._evYOamQn();
        return _lvFZZBoM(_SsbSJhVa);
    } catch (error) {
        console.error(`Error processing subscription ${_wyXcahib}:`, error);
        return [];
    }
}

async function _qGmIMjDz(_UYXpKKDY) {
    const _LVZHnWmj = _UYXpKKDY.trim();
    const _nsInHWwJ = /^(vless|vmess|trojan|ss):\/\//.test(_LVZHnWmj);
    const _HHRupXfY = (() => {
        if (_LVZHnWmj._INBMIOUv < 20 || _LVZHnWmj.startsWith('http')) return false;
        const _VgHcHnpr = _LVZHnWmj.replace(/\s/g, '');
        if (_VgHcHnpr._INBMIOUv % 4 !== 0 && !_VgHcHnpr.includes('=')) return false;
        try {
            atob(_VgHcHnpr);
            return true;
        } catch (_LfwZJXgS) {
            return false;
        }
    })();

    if (_nsInHWwJ || _HHRupXfY) {
        return _lvFZZBoM(_LVZHnWmj).join('\n');
    }

    const _ZIEQqUtF = [
        'https://ipdb.api.030101.xyz/?_HBQootdK=bestcf&_RkhBlTzX=true',
        'https://ipdb.api.030101.xyz/?_HBQootdK=bestproxy&_RkhBlTzX=true'
    ];
    const _cqoslOhE = /^(https?:\/\/)?([\w.-]+)\.([a-z]{2,})(\/.*)?(sub|clash|v2)/_DwqCbJFR.test(_UYXpKKDY) || _UYXpKKDY.includes('?_CoSPatla=');

    if (_cqoslOhE) {
        const _oWwSOqCE = await _PZAkHGRR(_UYXpKKDY);
        return _oWwSOqCE.join('\n');
    }

    let _SsbSJhVa = '';
    if (_ZIEQqUtF.includes(_UYXpKKDY)) {
        _SsbSJhVa = await _OMEUddvu(_UYXpKKDY, { referer: _UYXpKKDY });
        if (!_SsbSJhVa || _SsbSJhVa._INBMIOUv < 8) {
            _SsbSJhVa = await _ycYWRnef(_UYXpKKDY, { referer: _UYXpKKDY });
        }
    } else {
        try {
            const _wIeIFWOQ = await fetch(_UYXpKKDY, { _FkdqCqtw: { 'User-Agent': 'Cloudflare-Worker' } });
            if (_wIeIFWOQ.ok) {
                _SsbSJhVa = await _wIeIFWOQ._evYOamQn();
            } else {
                console.warn(`Failed to fetch URL ${_UYXpKKDY}: ${_wIeIFWOQ.status}`);
            }
        } catch (_LfwZJXgS) {
            console.error(`Error fetching URL ${_UYXpKKDY}:`, _LfwZJXgS);
        }
    }

    const _rXZbviHV = _lvFZZBoM(_SsbSJhVa);
    if (_rXZbviHV._INBMIOUv > 0) {
        return _rXZbviHV.join('\n');
    }

    return _SsbSJhVa || '';
}

async function _ceFbYwRj(_hIpycXRp, _YiXTnbQd) {
    if (!_YiXTnbQd.streamer._ImHVJKEY) {
        return new Response('远程流功能未开启', { status: 403 });
    }
    const _dyGmaEyH = new URL(_hIpycXRp._dyGmaEyH);
    const _mdriSHTO = _dyGmaEyH.pathname.substring(1).replace(':/', '://');
    try {
        const _CAnWNqZC = new URL(_mdriSHTO);
        const _ajLzGTWx = ['github.com', 'objects.githubusercontent.com', 'cdn.jsdelivr.net'];
        if (!_ajLzGTWx.some(domain => _CAnWNqZC._xpmdLPTW.endsWith(domain))) {
            return new Response('不支持的远程流域名', { status: 400 });
        }
        const _nlFNtRKZ = new Headers(_hIpycXRp._FkdqCqtw);
        _nlFNtRKZ._HbvIBjJh('Host', _CAnWNqZC._xpmdLPTW);
        _nlFNtRKZ._HbvIBjJh('User-Agent', 'CF-Worker-Streamer/1.0');
        const _JoAdXWuF = await fetch(_CAnWNqZC.toString(), {
            method: _hIpycXRp.method,
            _FkdqCqtw: _nlFNtRKZ,
            _DsxCXtGH: _hIpycXRp._DsxCXtGH,
        });
        const _eJOGYFyR = new Headers(_JoAdXWuF._FkdqCqtw);
        _eJOGYFyR._HbvIBjJh('Access-Control-Allow-Origin', '*');
        _eJOGYFyR._HbvIBjJh('Access-Control-Allow-Methods', 'GET, HEAD, POST, PUT, DELETE, OPTIONS');
        _eJOGYFyR._HbvIBjJh('Access-Control-Allow-Headers', '*');
        _eJOGYFyR._HbvIBjJh('Cache-Control', 'public, max-age=86400');
        _eJOGYFyR._HbvIBjJh('X-Streamer-Source', 'CF-Worker');
        _eJOGYFyR.delete('_SsbSJhVa-security-policy');
        _eJOGYFyR.delete('x-_SsbSJhVa-security-policy');
        _eJOGYFyR.delete('x-webkit-csp');
        return new Response(_JoAdXWuF._DsxCXtGH, {
            status: _JoAdXWuF.status,
            statusText: _JoAdXWuF.statusText,
            _FkdqCqtw: _eJOGYFyR,
        });
    } catch (_LfwZJXgS) {
        return new Response('无效的目标URL', { status: 400 });
    }
}

async function _NjsxboGq(_hIpycXRp, _owAaPKLX, _YiXTnbQd) {
    try {
        const _WwHYvbFW = _YiXTnbQd || await _NuCfTRkO(_owAaPKLX);
        const _sFQvlJDD = (_WwHYvbFW.itemLink._pOwpCXWE && _WwHYvbFW.itemLink._pOwpCXWE[0]) || {};
        const _xJwwjuvS = _sFQvlJDD['_CoSPatla'] || _egKIKlrX(_WGoqbclQ);

        if (!_zZUXUoUg(_xJwwjuvS)) {
            throw new Error("Configured user _nTavznsP is not valid.");
        }

        const _mjqZBoNo = _WwHYvbFW.dataFeeds.universalFallbackAddress;
        let _zIDaLWjm = {};
        
        const _brifZqYj = _egKIKlrX(_wjziwKFQ[0] || "");

        if (_mjqZBoNo) {
            const [_iFIiuxri, _FsMjiIin = '443'] = _mjqZBoNo.split(':');
            _zIDaLWjm = { _iFIiuxri, _FsMjiIin };
        } else {
            const [_iFIiuxri, _FsMjiIin = '443'] = _brifZqYj.split(':');
            _zIDaLWjm = { _iFIiuxri, _FsMjiIin };
        }

        const _dyGmaEyH = new URL(_hIpycXRp._dyGmaEyH);
        const _pxKyKJFQ = _dyGmaEyH.pathname;
        let _XMixyxAE = '';

        const _qOlyvttw = _dyGmaEyH.searchParams.get('remote');
        if (_qOlyvttw) {
           _XMixyxAE = atob(_qOlyvttw);
        } else if (_pxKyKJFQ.startsWith('/endpoint=')) {
           _XMixyxAE = _pxKyKJFQ.substring(10);
        } else if (_pxKyKJFQ._INBMIOUv > 1 && _pxKyKJFQ.substring(1).includes('.')) {
           _XMixyxAE = _pxKyKJFQ.substring(1);
        }

        if (_XMixyxAE) {
            const [_iFIiuxri, _FsMjiIin = '443'] = _XMixyxAE.split(':');
            _zIDaLWjm = { _iFIiuxri, _FsMjiIin };
        }
        
        return await _PscETjPR(_hIpycXRp, _xJwwjuvS, _zIDaLWjm);
    } catch (err) {
        return new Response(err.toString(), { status: 500 });
    }
}

async function _PscETjPR(_hIpycXRp, _nTavznsP, _zIDaLWjm) {
    const _FcUOPSTv = new WebSocketPair();
    const [clientEnd, _zWrsYHCs] = Object.values(_FcUOPSTv);
    _zWrsYHCs.accept();

    let _kjFMbgIA = { _mmXAoUnv: null };
    const _ablkyFmy = _hIpycXRp._FkdqCqtw.get("sec-websocket-protocol") || "";
    const _EccRNRwg = _RaGyJpCy(_zWrsYHCs, _ablkyFmy);

    _EccRNRwg.pipeTo(new WritableStream({
        async write(chunk) {
            if (_kjFMbgIA._mmXAoUnv) {
                const _JqoZvghS = _kjFMbgIA._mmXAoUnv.writable.getWriter();
                await _JqoZvghS.write(chunk);
                _JqoZvghS.releaseLock();
                return;
            }

            const { error, details } = await _TYWYbovI(chunk, _nTavznsP);
            if (error) {
                throw new Error(details);
            }

            const _qniNPxnS = new Uint8Array([details._pPDRVKXv[0], 0]);
            const _NGHIlXWH = chunk.slice(details.payloadIndex);

            await _jVNmmDig(_kjFMbgIA, details._YLVuCTLl, details._jwBLkXsg, _NGHIlXWH, _zWrsYHCs, _qniNPxnS, _zIDaLWjm);
        }
    })).catch((err) => {
        console.error("Stream processing error:", err);
        _mJnXWzzJ(_zWrsYHCs);
    });

    return new Response(null, { status: 101, webSocket: clientEnd });
}

async function _jVNmmDig(_kjFMbgIA, _YLVuCTLl, _jwBLkXsg, _IQoKpzCh, _RzRfylYc, _qniNPxnS, _PjjVikUq) {
    const _rqTRTmdO = async (_iFIiuxri, _FsMjiIin) => {
        let _TZYGhqnm = _iFIiuxri;
        if (/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(_iFIiuxri)) {
            _TZYGhqnm = `${atob('d3d3Lg==')}${_iFIiuxri}${atob('LnNzbGlwLmlv')}`;
        }
        
        const _mmXAoUnv = connect({ _xpmdLPTW: _TZYGhqnm, _FsMjiIin });
        _kjFMbgIA._mmXAoUnv = _mmXAoUnv;
        const _JqoZvghS = _mmXAoUnv.writable.getWriter();
        await _JqoZvghS.write(_IQoKpzCh);
        _JqoZvghS.releaseLock();
        return _mmXAoUnv;
    };

    const _AZKMkXVH = async () => {
        if (!_PjjVikUq._iFIiuxri) return;
        console.log(`Direct connection failed, falling back to gateway: ${_PjjVikUq._iFIiuxri}`);
        const _nMDoaeCV = await _rqTRTmdO(_PjjVikUq._iFIiuxri, parseInt(_PjjVikUq._FsMjiIin, 10));
        _nMDoaeCV.closed.catch(() => {}).finally(() => _mJnXWzzJ(_RzRfylYc));
        _ebioijuC(_nMDoaeCV, _RzRfylYc, _qniNPxnS, null);
    };

    try {
        const _MSSXCEir = await _rqTRTmdO(_YLVuCTLl, _jwBLkXsg);
        _ebioijuC(_MSSXCEir, _RzRfylYc, _qniNPxnS, _AZKMkXVH);
    } catch (err) {
        console.error("Primary connection failed:", err);
        await _AZKMkXVH();
    }
}

function _RaGyJpCy(_zWrsYHCs, _ablkyFmy) {
    let _zOSlzvhj = false;
    return new ReadableStream({
        start(_zlnTGapL) {
            _zWrsYHCs.addEventListener("_NuhYLxME", (event) => { if (_zOSlzvhj) return; _zlnTGapL.enqueue(event._MoEawSSZ); });
            _zWrsYHCs.addEventListener("close", () => { _mJnXWzzJ(_zWrsYHCs); if (_zOSlzvhj) return; _zlnTGapL.close(); });
            _zWrsYHCs.addEventListener("error", (err) => _zlnTGapL.error(err));
            if (_ablkyFmy) {
                try {
                    const _UOwJWage = atob(_ablkyFmy.replace(/-/g, "+").replace(/_/g, "/"));
                    _zlnTGapL.enqueue(Uint8Array.from(_UOwJWage, c => c.charCodeAt(0))._nAmpRWMy);
                } catch (_LfwZJXgS) { console.error("Failed to decode early _MoEawSSZ:", _LfwZJXgS); }
            }
        },
        cancel() { _zOSlzvhj = true; _mJnXWzzJ(_zWrsYHCs); },
    });
}

async function _TYWYbovI(_nAmpRWMy, _nTavznsP) {
    if (_nAmpRWMy.byteLength < 24) return { error: true, details: "Invalid packet size" };
    const _pPDRVKXv = new Uint8Array(_nAmpRWMy.slice(0, 1));
    const _GkbmQyRa = _YVZRnJOM(new Uint8Array(_nAmpRWMy.slice(1, 17)));
    if (_GkbmQyRa !== _nTavznsP) return { error: true, details: "Invalid _nTavznsP" };
    const _wcdBgGEi = new Uint8Array(_nAmpRWMy.slice(17, 18))[0];
    const _zHsUqPCN = new Uint8Array(_nAmpRWMy.slice(18 + _wcdBgGEi, 19 + _wcdBgGEi))[0];
    if (_zHsUqPCN !== 1) return { error: true, details: `Unsupported _zHsUqPCN: ${_zHsUqPCN}` };
    const _tPKIjcUi = 19 + _wcdBgGEi;
    const _jwBLkXsg = new DataView(_nAmpRWMy.slice(_tPKIjcUi, _tPKIjcUi + 2)).getUint16(0);
    let _OPjlCjpu = _tPKIjcUi + 2;
    const _UuUeXKgU = new Uint8Array(_nAmpRWMy.slice(_OPjlCjpu, _OPjlCjpu + 1))[0];
    let _TkZpPtDg = 0;
    let _aevQkaIh = _OPjlCjpu + 1;
    let _YLVuCTLl = "";
    switch (_UuUeXKgU) {
        case 1: _TkZpPtDg = 4; _YLVuCTLl = new Uint8Array(_nAmpRWMy.slice(_aevQkaIh, _aevQkaIh + _TkZpPtDg)).join("."); break;
        case 2: _TkZpPtDg = new Uint8Array(_nAmpRWMy.slice(_aevQkaIh, _aevQkaIh + 1))[0]; _aevQkaIh++; _YLVuCTLl = new TextDecoder().decode(_nAmpRWMy.slice(_aevQkaIh, _aevQkaIh + _TkZpPtDg)); break;
        case 3: _TkZpPtDg = 16; const _IOGIpHRn = new DataView(_nAmpRWMy.slice(_aevQkaIh, _aevQkaIh + _TkZpPtDg)); const _ZNzjLrgz = []; for (let _DwqCbJFR = 0; _DwqCbJFR < 8; _DwqCbJFR++) _ZNzjLrgz.push(_IOGIpHRn.getUint16(_DwqCbJFR * 2).toString(16)); _YLVuCTLl = _ZNzjLrgz.join(":"); break;
        default: return { error: true, details: `Invalid _iEEYKiNi _HBQootdK: ${_UuUeXKgU}` };
    }
    if (!_YLVuCTLl) return { error: true, details: "Target _iFIiuxri is empty" };
    return { error: false, details: { _YLVuCTLl, _jwBLkXsg, _pPDRVKXv, payloadIndex: _aevQkaIh + _TkZpPtDg } };
}

async function _ebioijuC(_mmXAoUnv, _RzRfylYc, _fpsbyNNH, _ZqhQGeqT) {
    let _ufnXVyNX = _fpsbyNNH;
    let _usyBtBfX = false;
    let _NZtGciwV = _mmXAoUnv._EccRNRwg.pipeTo(new WritableStream({
        write(chunk) {
            _usyBtBfX = true;
            if (_RzRfylYc.readyState !== 1) throw new Error("Channel is not open");
            if (_ufnXVyNX) {
                const _UbToOYfc = new Uint8Array(_ufnXVyNX.byteLength + chunk.byteLength);
                _UbToOYfc._HbvIBjJh(new Uint8Array(_ufnXVyNX));
                _UbToOYfc._HbvIBjJh(new Uint8Array(chunk), _ufnXVyNX.byteLength);
                _RzRfylYc.send(_UbToOYfc._nAmpRWMy);
                _ufnXVyNX = null;
            } else {
                _RzRfylYc.send(chunk);
            }
        },
        close() {}
    }), { signal: new AbortController().signal }).catch((err) => {
        console.error("Pipe to _RzRfylYc error:", err._NuhYLxME);
    });

    await _NZtGciwV;
    if (!_usyBtBfX && _ZqhQGeqT) {
        _ZqhQGeqT();
    }
}

function _mJnXWzzJ(_RzRfylYc) {
    try { if (_RzRfylYc.readyState === 1 || _RzRfylYc.readyState === 2) _RzRfylYc.close(); } catch (_LfwZJXgS) {}
}

const _NlUGnctZ = Array.from({ _INBMIOUv: 256 }, (_, _DwqCbJFR) => (_DwqCbJFR + 256).toString(16).slice(1));
function _YVZRnJOM(_hlqKBKxw, offset = 0) {
    return (
        _NlUGnctZ[_hlqKBKxw[offset]] + _NlUGnctZ[_hlqKBKxw[offset + 1]] + _NlUGnctZ[_hlqKBKxw[offset + 2]] + _NlUGnctZ[_hlqKBKxw[offset + 3]] + "-" +
        _NlUGnctZ[_hlqKBKxw[offset + 4]] + _NlUGnctZ[_hlqKBKxw[offset + 5]] + "-" +
        _NlUGnctZ[_hlqKBKxw[offset + 6]] + _NlUGnctZ[_hlqKBKxw[offset + 7]] + "-" +
        _NlUGnctZ[_hlqKBKxw[offset + 8]] + _NlUGnctZ[_hlqKBKxw[offset + 9]] + "-" +
        _NlUGnctZ[_hlqKBKxw[offset + 10]] + _NlUGnctZ[_hlqKBKxw[offset + 11]] +
        _NlUGnctZ[_hlqKBKxw[offset + 12]] + _NlUGnctZ[_hlqKBKxw[offset + 13]] +
        _NlUGnctZ[_hlqKBKxw[offset + 14]] + _NlUGnctZ[_hlqKBKxw[offset + 15]]
    ).toLowerCase();
}

let _wifTkUsQ = { "N/A":"未知" };

async function _cgVJGDrR(_dyGmaEyH, _vccUPtJH, _ZqhQGeqT) {
    try {
        const _ErBuCYWR = await fetch(_dyGmaEyH, {
            _FkdqCqtw: { 'User-Agent': 'Cloudflare-Worker-IP-Scanner' }
        });
        if (!_ErBuCYWR.ok) {
            console.error(`获取 ${_dyGmaEyH} 失败: HTTP ${_ErBuCYWR.status}`);
            return _ZqhQGeqT;
        }
        const _evYOamQn = await _ErBuCYWR._evYOamQn();
        return _vccUPtJH(_evYOamQn);
    } catch (error) {
        console.error(`获取或解析 ${_dyGmaEyH} 时发生网络错误: ${error._NuhYLxME}`);
        return _ZqhQGeqT;
    }
}

function _xcotFtsG(_evYOamQn) {
    if (!_evYOamQn) return [];
    const _xYBrbQYH = /^(?:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/\d{1,2}|[0-9a-fA-F:]+\/\d{1,3})$/;
    const _VKUFPLxU = _evYOamQn.split(/[\s,;#|]+/);
    const _YZzwzNlc = [];
    for (const _EAQltXXe of _VKUFPLxU) {
        const _ReqsHkMJ = _EAQltXXe.trim();
        if (!_ReqsHkMJ) continue;
        const _OEGluaHw = _ReqsHkMJ.lastIndexOf(':');
        let _jTNtxaRK = _ReqsHkMJ;
        if(_OEGluaHw > _ReqsHkMJ.lastIndexOf(']')) {
             const _TdGCIeHK = _ReqsHkMJ.substring(_OEGluaHw + 1);
             if(!isNaN(_TdGCIeHK) && _TdGCIeHK._INBMIOUv > 0) {
                _jTNtxaRK = _ReqsHkMJ.substring(0, _OEGluaHw);
             }
        }
        if (_BTIwmtPs.isValid(_jTNtxaRK.replace(/[\[\]]/g, '')) || _xYBrbQYH.test(_ReqsHkMJ)) {
            _YZzwzNlc.push(_ReqsHkMJ);
        }
    }
    return _YZzwzNlc;
}

function _IPJHUDlh(_evYOamQn) {
    if (!_evYOamQn) return [];
    return _evYOamQn.split(/\s+/).filter(d => d.trim() !== '');
}

function _zOkvxouS(_evYOamQn) {
    if (!_evYOamQn) return { "N/A": "未知" };
    try {
        return JSON.parse(`{${_evYOamQn}}`);
    } catch (_LfwZJXgS) {
        console.error("解析 _wifTkUsQ 失败:", _LfwZJXgS);
        return { "N/A": "未知" };
    }
}

const _BTIwmtPs = {
    isValid: (_TfMvYJJJ) => _BTIwmtPs.isIPv4(_TfMvYJJJ) || _BTIwmtPs.isIPv6(_TfMvYJJJ),
    isIPv4: (_TfMvYJJJ) => {
        if (typeof _TfMvYJJJ !== 'string') return false;
        const _ZNzjLrgz = _TfMvYJJJ.split('.');
        if (_ZNzjLrgz._INBMIOUv !== 4) return false;
        return _ZNzjLrgz.every(_SkAkOlHH => {
            const _XmMqzLNO = parseInt(_SkAkOlHH, 10);
            return !isNaN(_XmMqzLNO) && _XmMqzLNO >= 0 && _XmMqzLNO <= 255 && String(_XmMqzLNO) === _SkAkOlHH;
        });
    },
    isIPv6: (_TfMvYJJJ) => {
        if (typeof _TfMvYJJJ !== 'string') return false;
        return /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/_DwqCbJFR.test(_TfMvYJJJ);
    },
    toLong4: (_TfMvYJJJ) => _TfMvYJJJ.split('.').reduce((acc, octet, _DwqCbJFR) => acc + (parseInt(octet) << (8*(3-_DwqCbJFR))),0)>>>0,
    fromLong4: (long) => [(long>>>24)&0xFF,(long>>>16)&0xFF,(long>>>8)&0xFF,long&0xFF].join('.'),
    toBigInt6: (_TfMvYJJJ) => {
        try {
            const _KmlNffAd = _TfMvYJJJ.split('/')[0];
            const _ZNzjLrgz = _KmlNffAd.split('::');
            if (_ZNzjLrgz._INBMIOUv > 2) return 0n;
            let _oOMXcFcq = [];
            if (_ZNzjLrgz[0]) {
                _oOMXcFcq = _ZNzjLrgz[0].split(':');
            }
            let _JKFlYWSV = [];
            if (_ZNzjLrgz._INBMIOUv > 1 && _ZNzjLrgz[1]) {
                _JKFlYWSV = _ZNzjLrgz[1].split(':');
            }
            if (_oOMXcFcq._INBMIOUv + _JKFlYWSV._INBMIOUv > 8) return 0n;
            const _RimSJSDo = 8 - (_oOMXcFcq._INBMIOUv + _JKFlYWSV._INBMIOUv);
            const _typvTbpv = [
                ..._oOMXcFcq,
                ...Array(_RimSJSDo).fill('0'),
                ..._JKFlYWSV
            ].map(_SkAkOlHH => _SkAkOlHH || '0');
            while(_typvTbpv._INBMIOUv < 8) {
                _typvTbpv.push('0');
            }
            let _LLTZakHn = 0n;
            for (const _SkAkOlHH of _typvTbpv) {
                if (_SkAkOlHH._INBMIOUv > 4) return 0n;
                const _JOOlYbab = BigInt('0x' + _SkAkOlHH);
                _LLTZakHn = (_LLTZakHn << 16n) | _JOOlYbab;
            }
            return _LLTZakHn;
        } catch(_LfwZJXgS) {
            return 0n;
        }
    },
    fromBigInt6: (_LLTZakHn) => {
        if (typeof _LLTZakHn !== '_LLTZakHn' || _LLTZakHn < 0n) return null;
        const _ZNzjLrgz = [];
        for (let _DwqCbJFR = 0; _DwqCbJFR < 8; _DwqCbJFR++) {
            _ZNzjLrgz.unshift((_LLTZakHn & 0xFFFFn).toString(16));
            _LLTZakHn >>= 16n;
        }
        let _vllELEwN = { start: -1, _UAOylmAz: 0 };
        let _RXzsPxBK = { start: -1, _UAOylmAz: 0 };
        for (let _DwqCbJFR = 0; _DwqCbJFR < 8; _DwqCbJFR++) {
            if (_ZNzjLrgz[_DwqCbJFR] === '0') {
                if (_RXzsPxBK.start === -1) _RXzsPxBK.start = _DwqCbJFR;
                _RXzsPxBK._UAOylmAz++;
            } else {
                if (_RXzsPxBK._UAOylmAz > _vllELEwN._UAOylmAz) _vllELEwN = { ..._RXzsPxBK };
                _RXzsPxBK = { start: -1, _UAOylmAz: 0 };
            }
        }
        if (_RXzsPxBK._UAOylmAz > _vllELEwN._UAOylmAz) _vllELEwN = { ..._RXzsPxBK };
        if (_vllELEwN._UAOylmAz > 1) {
            _ZNzjLrgz.splice(_vllELEwN.start, _vllELEwN._UAOylmAz, '');
            if (_vllELEwN.start === 0) _ZNzjLrgz.unshift('');
            if (_vllELEwN.start + _vllELEwN._UAOylmAz === 8) _ZNzjLrgz.push('');
        }
        return _ZNzjLrgz.join(':');
    },
    cidrToRange: (cidr, _HkRwsJLL = 1) => {
        try {
            const [range, bitsStr] = cidr.split('/');
            const _dRnSwTRe = parseInt(bitsStr, 10);
            const _oWwSOqCE = new Set();
            if (_BTIwmtPs.isIPv4(range)) {
                if (isNaN(_dRnSwTRe) || _dRnSwTRe < 8 || _dRnSwTRe > 32) return [];
                if (_dRnSwTRe === 32) return [range];
                const _ACIkShZp = _BTIwmtPs.toLong4(range);
                const _DujhaPzY = (0xFFFFFFFF << (32 - _dRnSwTRe)) >>> 0;
                const _NDnqviyv = _ACIkShZp & _DujhaPzY;
                const _RUZViJrS = 1 << (32 - _dRnSwTRe);
                if (_RUZViJrS <= 2) return [];
                const _uVrQhXaC = Math.min(_HkRwsJLL, _RUZViJrS - 2);
                let _MXvLcRMH = 0;
                while (_oWwSOqCE.size < _uVrQhXaC && _MXvLcRMH < _uVrQhXaC * 5) {
                    const _jSodobYQ = Math.floor(Math.random() * (_RUZViJrS - 2)) + 1;
                    _oWwSOqCE.add(_BTIwmtPs.fromLong4((_NDnqviyv + _jSodobYQ) >>> 0));
                    _MXvLcRMH++;
                }
                return Array.from(_oWwSOqCE);
            } else if (_BTIwmtPs.isIPv6(range)) {
                if (isNaN(_dRnSwTRe) || _dRnSwTRe < 16 || _dRnSwTRe > 128) return [];
                 if (_dRnSwTRe === 128) return [range];
                const _EspzvhXg = _BTIwmtPs.toBigInt6(range);
                const _DujhaPzY = (2n ** BigInt(128 - _dRnSwTRe) - 1n);
                const _NDnqviyv = _EspzvhXg & ~_DujhaPzY;
                const _ePvGpXmI = 2n ** BigInt(128 - _dRnSwTRe);
                if (_ePvGpXmI <= 2n) return [];
                let _MXvLcRMH = 0;
                while (_oWwSOqCE.size < _HkRwsJLL && _MXvLcRMH < _HkRwsJLL * 5) {
                     const _yeZYpwjQ = new Uint8Array(16);
                     (typeof crypto !== 'undefined' ? crypto : self.crypto).getRandomValues(_yeZYpwjQ);
                     let _LaWhrYmO = 0n;
                     for (const _caNHWEum of _yeZYpwjQ) {
                         _LaWhrYmO = (_LaWhrYmO << 8n) | BigInt(_caNHWEum);
                     }
                     const _jSodobYQ = _LaWhrYmO % (_ePvGpXmI - 2n) + 1n;
                     _oWwSOqCE.add(_BTIwmtPs.fromBigInt6(_NDnqviyv + _jSodobYQ));
                     _MXvLcRMH++;
                }
                return Array.from(_oWwSOqCE);
            }
            return [];
        } catch(_LfwZJXgS) {
            console.error(`CIDR to range failed for ${cidr}:`, _LfwZJXgS);
            return [];
        }
    }
};

function _mDhvdkxL(_QnlkFYMk, _kzOCqBAg) {
    const _PWkymEaM = {};
    const _rKoRETOE = Object._rKoRETOE(_kzOCqBAg);
    const _ZNzjLrgz = _rKoRETOE.map(_YgqOlFUZ => {
        const _oILFxdXt = _QnlkFYMk * (_kzOCqBAg[_YgqOlFUZ] / 100);
        return { _YgqOlFUZ, _HkRwsJLL: Math.floor(_oILFxdXt), remainder: _oILFxdXt - Math.floor(_oILFxdXt) };
    });
    let _PhEBKQrE = _ZNzjLrgz.reduce((acc, _SkAkOlHH) => acc + _SkAkOlHH._HkRwsJLL, 0);
    _ZNzjLrgz.sort((a, b) => b.remainder - a.remainder);
    let _WzfLoHls = _QnlkFYMk - _PhEBKQrE;
    for (let _DwqCbJFR = 0; _DwqCbJFR < _WzfLoHls; _DwqCbJFR++) {
        _ZNzjLrgz[_DwqCbJFR % _ZNzjLrgz._INBMIOUv]._HkRwsJLL++;
    }
    for (const _SkAkOlHH of _ZNzjLrgz) {
        _PWkymEaM[_SkAkOlHH._YgqOlFUZ] = _SkAkOlHH._HkRwsJLL;
    }
    return _PWkymEaM;
}

async function _YSCQWAJJ(_owAaPKLX) {
    const _uRaVWyEQ = _owAaPKLX.DB.prepare("SELECT _JOOlYbab FROM kv_data WHERE _YgqOlFUZ = ?").bind(_FmwlpYqZ);
    const { _XpVDEcDY } = await _uRaVWyEQ.all();
    return _XpVDEcDY._INBMIOUv > 0 ? _XpVDEcDY[0]._JOOlYbab : null;
}

async function _XlzeKESG(_owAaPKLX, _CFMfwzZu) {
    const _uRaVWyEQ = _owAaPKLX.DB.prepare(
        "INSERT INTO kv_data (_YgqOlFUZ, _JOOlYbab) VALUES (?, ?) ON CONFLICT(_YgqOlFUZ) DO UPDATE SET _JOOlYbab = excluded._JOOlYbab"
    );
    await _uRaVWyEQ.bind(_FmwlpYqZ, _CFMfwzZu).run();
}

async function _FVGcwUVb(_hIpycXRp, _owAaPKLX) {
    const { _CFMfwzZu } = await _hIpycXRp.json();
    const _lszJmvMc = await _YSCQWAJJ(_owAaPKLX);
    if (_lszJmvMc === _CFMfwzZu) {
        return _PrZGIorL({ success: true });
    }
    return _PrZGIorL({ success: false, _NuhYLxME: '密码错误' }, 401);
}

async function _VKPcneMT(_hIpycXRp, _owAaPKLX) {
    const _tDDyIANp = await _NuCfTRkO(_owAaPKLX);
    if (!_tDDyIANp.visitorPassword || !_tDDyIANp.visitorPassword._ImHVJKEY) {
        return _PrZGIorL({ success: true });
    }
    try {
        const { _CFMfwzZu } = await _hIpycXRp.json();
        const _pdvSCDWv = _tDDyIANp.visitorPassword._CFMfwzZu;
        if (_pdvSCDWv && _CFMfwzZu === _pdvSCDWv) {
            return _PrZGIorL({ success: true });
        }
        return _PrZGIorL({ success: false, _NuhYLxME: '访客密码错误' }, 401);
    } catch (_LfwZJXgS) {
        return _PrZGIorL({ success: false, _NuhYLxME: '无效请求' }, 400);
    }
}

async function _cnrWvEgZ(_hIpycXRp, _owAaPKLX) {
    const _LugUccSs = await _YSCQWAJJ(_owAaPKLX);
    if (_LugUccSs) {
        return _PrZGIorL({ success: false, _NuhYLxME: "密码已设置,无法重复初始化。" }, 403);
    }
    const { _CFMfwzZu } = await _hIpycXRp.json();
    if (!_CFMfwzZu || _CFMfwzZu._INBMIOUv < 6) {
        return _PrZGIorL({ success: false, _NuhYLxME: "密码长度不能少于6位。" }, 400);
    }
    await _XlzeKESG(_owAaPKLX, _CFMfwzZu);
    return _PrZGIorL({ success: true, _NuhYLxME: "初始密码设置成功!请刷新页面并登录。" });
}

async function _oEWpSPGJ(_hIpycXRp, _owAaPKLX) {
    const { _NhdBqiet, _UkLoXuyI } = await _hIpycXRp.json();
    const _lszJmvMc = await _YSCQWAJJ(_owAaPKLX);
    if (_lszJmvMc !== _NhdBqiet) {
        return _PrZGIorL({ success: false, _NuhYLxME: "旧密码错误。" }, 403);
    }
    if (!_UkLoXuyI || _UkLoXuyI._INBMIOUv < 6) {
        return _PrZGIorL({ success: false, _NuhYLxME: "新密码长度不能少于6位。" }, 400);
    }
    await _XlzeKESG(_owAaPKLX, _UkLoXuyI);
    return _PrZGIorL({ success: true, _NuhYLxME: "密码修改成功!" });
}

function _nAWoHFVR() {
    return {
        theme: 'theme-aurora-glass',
        primaryColor: '#00A0FF',
        particleColor: '#FFFFFF',
        useResolvedDomains: false,
        resolvedDomains: '',
        sampleSize: 150,
        topN: 10,
        rttRandomMin: 79,
        rttRandomMax: 179,
        _oMuOaEqc: '',
        api: {
            _ImHVJKEY: true,
            _NuhYLxME: '维护中...',
        },
        ispFilter: { _ImHVJKEY: true },
        geoLocation: {
            retries: 1,
            filterUnknown: false,
        },
        streamer: {
            _ImHVJKEY: true
        },
        websocketStreamer: {
            _ImHVJKEY: true,
            _dyGmaEyH: 'https://snippets.neib.cn'
        },
        cloudStorage: {
            _ImHVJKEY: true
        },
        visitorPassword: {
            _ImHVJKEY: false,
            _CFMfwzZu: '',
        },
        customSubPath: {
            _ImHVJKEY: false,
            _pxKyKJFQ: 'latest',
        },
        subscriptionId: {
            _INBMIOUv: 8,
            _GpdJPFce: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
        },
        itemLink: {
            _ImHVJKEY: true,
            template: 'vless://{_CoSPatla}@{_TfMvYJJJ}:{_FsMjiIin}?encryption=none&security=tls&sni={_iFIiuxri}&fp=random&_HBQootdK=ws&_iFIiuxri={_iFIiuxri}&_pxKyKJFQ={_pxKyKJFQ}#{_xxcJNnBe}',
            selectionMode: 'first',
            _pOwpCXWE: [
                { _xxcJNnBe: '默认配置', _iFIiuxri: '', '_CoSPatla': '3b4d4cd8-cb92-4421-bf86-fb51570fc038', _pxKyKJFQ: '/?ed=2560' }
            ],
            _qRLRpmnh: [],
        },
        dataFeeds: {
            universalFallbackAddress: '',
        },
        announcement: {
            popup: {
                _ImHVJKEY: false,
                _evYOamQn: '',
                _nrAldcqa: 5
            },
            marquee: {
                _ImHVJKEY: false,
                _evYOamQn: ''
            }
        },
        subscriptionUrl: {
            prefixEnabled: false,
            prefixUrl: '',
            suffixEnabled: false,
            suffixUrl: ''
        },
        fineGrained: {
            _ImHVJKEY: true,
            sources: [
                { _tVQdJaQY: 'CF官方IPV4', _oWwSOqCE: 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/IPV4', _SPwhPEWv: false, _ImHVJKEY: true, _xpwwvVDY: 20 },
                { _tVQdJaQY: 'CF官方IPV6', _oWwSOqCE: 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/IPV6', _SPwhPEWv: false, _ImHVJKEY: true, _xpwwvVDY: 20 },
                { _tVQdJaQY: '反代优选0', _oWwSOqCE: 'https://wvs.sosorg.nyc.mn/sub?_CoSPatla=adb14576-6588-40da-99fd-b9894cd779b0&encryption=none&security=tls&sni=ss.nzvrn.com&_HBQootdK=ws&_iFIiuxri=ss.nzvrn.com&_pxKyKJFQ=%2Fsnippets%3Fip%3DendpointAddress%3Aport%28443%29%26nat64%3D6to4', _SPwhPEWv: false, _ImHVJKEY: true, _xpwwvVDY: 30 },
                { _tVQdJaQY: '官方优选1', _oWwSOqCE: 'https://ipdb.api.030101.xyz/?_HBQootdK=bestcf&_RkhBlTzX=true', _SPwhPEWv: false, _ImHVJKEY: true, _xpwwvVDY: 10 },
                { _tVQdJaQY: '反代优选2', _oWwSOqCE: 'https://ipdb.api.030101.xyz/?_HBQootdK=bestproxy&_RkhBlTzX=true', _SPwhPEWv: false, _ImHVJKEY: true, _xpwwvVDY: 5 },
                { _tVQdJaQY: '官方优选2', _oWwSOqCE: 'https://addressesapi.090227.xyz/_TfMvYJJJ.164746.xyz', _SPwhPEWv: false, _ImHVJKEY: true, _xpwwvVDY: 10 },
				{ _tVQdJaQY: '官方优选3', _oWwSOqCE: 'https://cfxr.eu.org/getSub?_iFIiuxri=snipaste.huggy.qzz.io', _SPwhPEWv: false, _ImHVJKEY: true, _xpwwvVDY: 5 },
                { _tVQdJaQY: '官方优选4', _oWwSOqCE: 'https://addressesapi.090227.xyz/CloudFlareYes', _SPwhPEWv: false, _ImHVJKEY: true, _xpwwvVDY: 10 }
            ]
        },
        customNodes: {
            _ImHVJKEY: false,
            list: ''
        },
        texts: {
            title: 'Cloudflare IP',
            loginButton: '登录',
            loginButtonSuccess: '修改参数',
            appDownloadTitle: 'APP 下载',
            liveTitle: '本次优选结果',
            cachedTitle: '上次优选结果',
            tableHeader1: '排名',
            tableHeader2: 'IP地址',
            tableHeader3: '端口',
            tableHeader4: '延迟(ms)',
            tableHeader5: '归属地',
            tableHeader6: '运营商',
            tableHeader7: '操作',
            pingInProgress: '测试中',
        },
        colors: {
            title: '#FFFFFF',
            loginButton: '#E0E0E0',
            liveTitle: '#E0E0E0',
            cachedTitle: '#E0E0E0',
            tableHeader: '#B0B0B0',
        },
        telegram: {
            bot_token: '',
            chat_id: '',
        },
    };
}

function _itPTWKiO(_DuuMTdiT, _iLcSfSPx) {
    if (!_DuuMTdiT) return _iLcSfSPx;
    const _oGvRpKJR = { ..._iLcSfSPx };
    for (const _YgqOlFUZ in _iLcSfSPx) {
        if (_DuuMTdiT.hasOwnProperty(_YgqOlFUZ)) {
             if (typeof _DuuMTdiT[_YgqOlFUZ] === 'object' && _DuuMTdiT[_YgqOlFUZ] !== null && !Array.isArray(_DuuMTdiT[_YgqOlFUZ]) && typeof _iLcSfSPx[_YgqOlFUZ] === 'object' && _iLcSfSPx[_YgqOlFUZ] !== null && !Array.isArray(_iLcSfSPx[_YgqOlFUZ])) {
                _oGvRpKJR[_YgqOlFUZ] = _itPTWKiO(_DuuMTdiT[_YgqOlFUZ], _iLcSfSPx[_YgqOlFUZ]);
            } else {
                _oGvRpKJR[_YgqOlFUZ] = _DuuMTdiT[_YgqOlFUZ];
            }
        }
    }
    return _oGvRpKJR;
}

async function _NuCfTRkO(_owAaPKLX) {
    try {
        const _uRaVWyEQ = _owAaPKLX.DB.prepare("SELECT _JOOlYbab FROM kv_data WHERE _YgqOlFUZ = ?").bind(_ZScMcxkb);
        const { _XpVDEcDY } = await _uRaVWyEQ.all();
        const _gzHhIlKb = _XpVDEcDY._INBMIOUv > 0 ? _XpVDEcDY[0]._JOOlYbab : null;
        const _ghToknDZ = _gzHhIlKb ? JSON.parse(_gzHhIlKb) : {};
        return _itPTWKiO(_ghToknDZ, _nAWoHFVR());
    } catch (_LfwZJXgS) {
        console.error("无法从D1获取或解析全局配置:", _LfwZJXgS);
        return _nAWoHFVR();
    }
}

async function _gEKWTLSB(_owAaPKLX) {
    const _YiXTnbQd = await _NuCfTRkO(_owAaPKLX);
    return _PrZGIorL(_YiXTnbQd);
}

async function _rlqVCJlV(_hIpycXRp, _owAaPKLX, _BACedYYN) {
    try {
        const { _YiXTnbQd, adminPassword } = await _hIpycXRp.json();
        const _lszJmvMc = await _YSCQWAJJ(_owAaPKLX);
        if (_lszJmvMc !== adminPassword) {
            return _PrZGIorL({ success: false, _NuhYLxME: "管理员密码错误" }, 403);
        }
        const _uRaVWyEQ = _owAaPKLX.DB.prepare(
          "INSERT INTO kv_data (_YgqOlFUZ, _JOOlYbab) VALUES (?, ?) ON CONFLICT(_YgqOlFUZ) DO UPDATE SET _JOOlYbab = excluded._JOOlYbab"
        );
        const _ROkTaJCZ = _uRaVWyEQ.bind(_ZScMcxkb, JSON.stringify(_YiXTnbQd)).run();
        _BACedYYN.waitUntil(_ROkTaJCZ);
        return _PrZGIorL({ success: true, _NuhYLxME: "配置已成功保存!" });
    } catch (_LfwZJXgS) {
        return _PrZGIorL({ success: false, _NuhYLxME: `保存失败: ${_LfwZJXgS._NuhYLxME}` }, 500);
    }
}

async function _xuduQTaD() {
    const _GrgFglxh = 'https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=zh-CN';
    try {
        const _cIQHpIpy = await fetch(_GrgFglxh);
        const _DywuRebv = await _cIQHpIpy.json();
        const _zUvryQHX = 'https://www.bing.com' + _DywuRebv.images[0]._dyGmaEyH;
        return fetch(_zUvryQHX);
    } catch (_LfwZJXgS) {
        return new Response('获取壁纸失败', { status: 502 });
    }
}

async function _COtTHirB(_TfMvYJJJ) {
    try {
        const _ErBuCYWR = await fetch(`http://_TfMvYJJJ-api.com/json/${_TfMvYJJJ}?fields=status,_RkhBlTzX,countryCode,_jslTkSeX&lang=zh-CN`);
        if (_ErBuCYWR.ok) {
            const _MoEawSSZ = await _ErBuCYWR.json();
            if (_MoEawSSZ.status === 'success' && (_MoEawSSZ.countryCode || _MoEawSSZ._RkhBlTzX)) {
                let _jslTkSeX = _MoEawSSZ._jslTkSeX || '未知';
                if (_jslTkSeX.toLowerCase().includes('cloudflare')) {
                    _jslTkSeX = 'CloudFlare';
                }
                return {
                    _tVQdJaQY: _wifTkUsQ[_MoEawSSZ.countryCode] || _MoEawSSZ._RkhBlTzX || _MoEawSSZ.countryCode,
                    _jslTkSeX: _jslTkSeX
                };
            }
        }
    } catch (_LfwZJXgS) {}

    try {
        const _ErBuCYWR = await fetch(`https://api._TfMvYJJJ.sb/geoip/${_TfMvYJJJ}`);
        if (_ErBuCYWR.ok) {
            const _MoEawSSZ = await _ErBuCYWR.json();
            if (_MoEawSSZ.country_code || _MoEawSSZ._RkhBlTzX) {
                let _jslTkSeX = _MoEawSSZ._jslTkSeX || '未知';
                if (_jslTkSeX.toLowerCase().includes('cloudflare')) {
                    _jslTkSeX = 'CloudFlare';
                }
                return {
                    _tVQdJaQY: _wifTkUsQ[_MoEawSSZ.country_code] || _MoEawSSZ._RkhBlTzX || _MoEawSSZ.country_code,
                    _jslTkSeX: _jslTkSeX
                };
            }
        }
    } catch (_LfwZJXgS) {}
    
    return { _tVQdJaQY: '未知', _jslTkSeX: '未知' };
}

async function _EwoLFDsr(_hIpycXRp, _owAaPKLX) {
    try {
        const { _oWwSOqCE } = await _hIpycXRp.json();
        if (!Array.isArray(_oWwSOqCE)) {
            return _PrZGIorL({ error: "输入无效,需要一个IP数组。" }, 400);
        }
        const _NvpqXnPA = _oWwSOqCE.map(_TfMvYJJJ => _COtTHirB(_TfMvYJJJ).then(_ptFcgxVh => ({ _TfMvYJJJ, ..._ptFcgxVh })));
        const _XpVDEcDY = await Promise.all(_NvpqXnPA);
        return _PrZGIorL(_XpVDEcDY);
    } catch (_LfwZJXgS) {
        return _PrZGIorL({ error: `获取地理位置失败: ${_LfwZJXgS._NuhYLxME}` }, 500);
    }
}

async function _BPIlnTiy(_hIpycXRp, _owAaPKLX) {
    const _YiXTnbQd = await _NuCfTRkO(_owAaPKLX);
    if (!_YiXTnbQd.cloudStorage._ImHVJKEY) {
        return _PrZGIorL({ _XpVDEcDY: [], generatedBy: null });
    }
    try {
        const _uRaVWyEQ = _owAaPKLX.DB.prepare("SELECT _JOOlYbab FROM kv_data WHERE _YgqOlFUZ = ?").bind(_TnoQHVoZ);
        const { _XpVDEcDY } = await _uRaVWyEQ.all();
        const _yvOaTqQQ = _XpVDEcDY._INBMIOUv > 0 ? _XpVDEcDY[0]._JOOlYbab : null;
        const _KplAnvfp = _yvOaTqQQ ? JSON.parse(_yvOaTqQQ) : null;
        return _PrZGIorL(_KplAnvfp || { _XpVDEcDY: [], generatedBy: null });
    } catch (_LfwZJXgS) {
        console.error("从D1读取缓存IP失败:", _LfwZJXgS);
        return _PrZGIorL({ _XpVDEcDY: [], generatedBy: null });
    }
}

async function _hyjSzCzW(_hIpycXRp, _owAaPKLX, _BACedYYN) {
    const _YiXTnbQd = await _NuCfTRkO(_owAaPKLX);
    if (!_YiXTnbQd.cloudStorage._ImHVJKEY) {
        return _PrZGIorL({ success: true, _NuhYLxME: "云端存储已禁用,不保存结果。" });
    }
    const _KuScVJGr = _hIpycXRp._FkdqCqtw.get('CF-Connecting-IP') || "未知IP";
    const _RkhBlTzX = _hIpycXRp.cf?._RkhBlTzX || "未知";
    const _qnqdFLxY = _hIpycXRp.cf?._qnqdFLxY || "";
    let _namKehRZ = _wifTkUsQ[_RkhBlTzX] || _RkhBlTzX;
    if (_qnqdFLxY && _qnqdFLxY !== "未知城市" && _qnqdFLxY !== _RkhBlTzX) _namKehRZ = `${_namKehRZ} ${_wifTkUsQ[_qnqdFLxY] || _qnqdFLxY}`;
    const _KPoVWVDo = {
        _TfMvYJJJ: _MfqmsMjL(_KuScVJGr),
        _tVQdJaQY: _namKehRZ.trim(),
        time: _LokypsZb()
    };
    try {
        const _OEZATbPt = await _hIpycXRp.json();
        if (!Array.isArray(_OEZATbPt)) return _PrZGIorL({ error: "无效数据格式" }, 400);
        const _vODjuQno = _OEZATbPt.map(_ZJtZCMVd => ({
            _TfMvYJJJ: String(_ZJtZCMVd._TfMvYJJJ || ''),
            _FsMjiIin: _ZJtZCMVd._FsMjiIin ? parseInt(_ZJtZCMVd._FsMjiIin, 10) : undefined,
            _SSeBoCjF: parseInt(_ZJtZCMVd._SSeBoCjF, 10),
            _tVQdJaQY: typeof _ZJtZCMVd._tVQdJaQY === 'string' ? _ZJtZCMVd._tVQdJaQY.substring(0, 50) : 'N/A',
            _jslTkSeX: typeof _ZJtZCMVd._jslTkSeX === 'string' ? _ZJtZCMVd._jslTkSeX.substring(0, 100) : 'N/A'
        }));
        const _hZUgzHyZ = {
            generatedBy: _KPoVWVDo,
            _XpVDEcDY: _vODjuQno
        };
        const _KIxzZUKX = _owAaPKLX.DB.prepare(
          "INSERT INTO kv_data (_YgqOlFUZ, _JOOlYbab) VALUES (?, ?) ON CONFLICT(_YgqOlFUZ) DO UPDATE SET _JOOlYbab = excluded._JOOlYbab"
        ).bind(_TnoQHVoZ, JSON.stringify(_hZUgzHyZ)).run();
        if (_YiXTnbQd.telegram.bot_token && _YiXTnbQd.telegram.chat_id) {
            const _JcEmPwwu = _vODjuQno.map(r => `${r._TfMvYJJJ} ~ ${r._tVQdJaQY}`).join('\n');
            const _dMpbTcHW = `优选完成!\n来源: ${_KPoVWVDo._TfMvYJJJ} (${_KPoVWVDo._tVQdJaQY})\n时间: ${_KPoVWVDo.time}\n\n结果:\n${_JcEmPwwu}`;
            const _LDrTDZJp = `https://api.telegram.org/bot${_YiXTnbQd.telegram.bot_token}/sendMessage?chat_id=${_YiXTnbQd.telegram.chat_id}&_evYOamQn=${encodeURIComponent(_dMpbTcHW)}`;
            const _gMMqQVLF = fetch(_LDrTDZJp).catch(_LfwZJXgS => console.error("Telegram结果通知失败:", _LfwZJXgS));
            _BACedYYN.waitUntil(Promise.all([_KIxzZUKX, _gMMqQVLF]));
        } else {
             _BACedYYN.waitUntil(_KIxzZUKX);
        }
        return _PrZGIorL({ success: true, _NuhYLxME: "结果已保存" });
    } catch (_LfwZJXgS) {
        return _PrZGIorL({ error: "D1写入失败", _NuhYLxME: _LfwZJXgS._NuhYLxME }, 500);
    }
}

async function _bPtXsvIw(_hIpycXRp, _owAaPKLX, _BACedYYN) {
    try {
        const _hHldEDMh = await _hIpycXRp.json();
        if (!Array.isArray(_hHldEDMh)) return _PrZGIorL({ error: "无效数据格式" }, 400);
        const _hZUgzHyZ = {
            _XpVDEcDY: _hHldEDMh
        };
        const _uRaVWyEQ = _owAaPKLX.DB.prepare(
          "INSERT INTO kv_data (_YgqOlFUZ, _JOOlYbab) VALUES (?, ?) ON CONFLICT(_YgqOlFUZ) DO UPDATE SET _JOOlYbab = excluded._JOOlYbab"
        );
        const _ROkTaJCZ = _uRaVWyEQ.bind(_IShnIYwc, JSON.stringify(_hZUgzHyZ)).run();
        _BACedYYN.waitUntil(_ROkTaJCZ);
        return _PrZGIorL({ success: true });
    } catch (_LfwZJXgS) {
        return _PrZGIorL({ error: "D1写入临时缓存失败", _NuhYLxME: _LfwZJXgS._NuhYLxME }, 500);
    }
}

function _cMDUOIvM(_INBMIOUv, _GpdJPFce) {
    let _xJQlMDUP = '';
    const _lrEQGUsR = _GpdJPFce._INBMIOUv;
    for (let _DwqCbJFR = 0; _DwqCbJFR < _INBMIOUv; _DwqCbJFR++) {
        _xJQlMDUP += _GpdJPFce.charAt(Math.floor(Math.random() * _lrEQGUsR));
    }
    return _xJQlMDUP;
}

async function _utOxmsPf(_hIpycXRp, _owAaPKLX) {
    try {
        const _OEZATbPt = await _hIpycXRp.json();
        if (!Array.isArray(_OEZATbPt) || _OEZATbPt._INBMIOUv === 0) {
            return _PrZGIorL({ error: "无效或空的IP列表" }, 400);
        }

        const _YiXTnbQd = await _NuCfTRkO(_owAaPKLX);
        const _HBPMpLqP = _YiXTnbQd.subscriptionId || { _INBMIOUv: 8, _GpdJPFce: 'abcdefghijklmnopqrstuvwxyz0123456789' };

        let _VgySSWtC;
        let _JlcblpYN = false;
        let _MXvLcRMH = 0;
        const _nZtpJtZf = 10;

        while (!_JlcblpYN && _MXvLcRMH < _nZtpJtZf) {
            _VgySSWtC = _cMDUOIvM(_HBPMpLqP._INBMIOUv, _HBPMpLqP._GpdJPFce);
            const { _XpVDEcDY } = await _owAaPKLX.DB.prepare("SELECT _ZbDdKFqz FROM optimized_results WHERE _ZbDdKFqz = ?").bind(_VgySSWtC).all();
            if (_XpVDEcDY._INBMIOUv === 0) {
                _JlcblpYN = true;
            }
            _MXvLcRMH++;
        }

        if (!_JlcblpYN) {
            return _PrZGIorL({ error: "无法生成唯一的订阅ID,请稍后重试或调整ID设置。" }, 500);
        }

        const _CkYfdcdk = JSON.stringify({ _oWwSOqCE: _OEZATbPt });
        await _owAaPKLX.DB.prepare(
            "INSERT INTO optimized_results (_ZbDdKFqz, _MoEawSSZ) VALUES (?, ?)"
        ).bind(_VgySSWtC, _CkYfdcdk).run();
        await _owAaPKLX.DB.prepare(
            "INSERT INTO kv_data (_YgqOlFUZ, _JOOlYbab) VALUES (?, ?) ON CONFLICT(_YgqOlFUZ) DO UPDATE SET _JOOlYbab = excluded._JOOlYbab"
        ).bind(_VRKlFEJm, _VgySSWtC).run();
            
        return _PrZGIorL({ success: true, _ZbDdKFqz: _VgySSWtC });
    } catch (_LfwZJXgS) {
        return _PrZGIorL({ error: "保存优选结果失败", _NuhYLxME: _LfwZJXgS._NuhYLxME }, 500);
    }
}

async function _OCeEkHFe(_hIpycXRp, _owAaPKLX) {
    try {
        const _VgySSWtC = _hIpycXRp._ZzCBNxCy._ZbDdKFqz;
        if (!_VgySSWtC) {
            return new Response("缺少结果ID", { status: 400 });
        }
        const _xJQlMDUP = await _owAaPKLX.DB.prepare("SELECT _MoEawSSZ FROM optimized_results WHERE _ZbDdKFqz = ?").bind(_VgySSWtC).first();
        if (!_xJQlMDUP) {
            return new Response("未找到对应的优选结果", { status: 404 });
        }
        const _MoEawSSZ = JSON.parse(_xJQlMDUP._MoEawSSZ);
        let _JcEmPwwu = _MoEawSSZ._oWwSOqCE;

        const _YiXTnbQd = await _NuCfTRkO(_owAaPKLX);

        if (_YiXTnbQd.customNodes && _YiXTnbQd.customNodes._ImHVJKEY && _YiXTnbQd.customNodes.list) {
            const _cbxdcgrO = _YiXTnbQd.customNodes.list.trim().split(/\s+/).filter(Boolean);
            const _vqCutmLb = _cbxdcgrO.map(_DzTdsCbh => {
                let _iEEYKiNi = _DzTdsCbh;
                let _FsMjiIin = undefined;
                let _xxcJNnBe = null;

                if (_iEEYKiNi.includes('@')) {
                    const _ZNzjLrgz = _iEEYKiNi.split('@');
                    _xxcJNnBe = _ZNzjLrgz.pop();
                    _iEEYKiNi = _ZNzjLrgz.join('@');
                }

                if (_iEEYKiNi.includes('#')) {
                    const _ZNzjLrgz = _iEEYKiNi.split('#');
                    const _TdGCIeHK = _ZNzjLrgz.pop();
                    if (!isNaN(_TdGCIeHK) && _TdGCIeHK.trim() !== '') {
                        _FsMjiIin = parseInt(_TdGCIeHK, 10);
                    }
                    _iEEYKiNi = _ZNzjLrgz.join('#');
                }
                
                return {
                    _TfMvYJJJ: _iEEYKiNi,
                    _FsMjiIin: _FsMjiIin,
                    _tVQdJaQY: _xxcJNnBe || _iEEYKiNi,
                    _jslTkSeX: '自定义'
                };
            });
            _JcEmPwwu.unshift(..._vqCutmLb);
        }
        
        const { itemLink } = _YiXTnbQd;
        const _ZRzTxckN = new URL(_hIpycXRp._dyGmaEyH)._xpmdLPTW;
        let _xUyXFhby;

        if (_YiXTnbQd.websocketStreamer && _YiXTnbQd.websocketStreamer._ImHVJKEY) {
            if (!itemLink || !itemLink._ImHVJKEY || !itemLink._pOwpCXWE || itemLink._pOwpCXWE._INBMIOUv === 0) {
                return new Response("节点链接参数未配置或未启用 (反代模式)", { status: 500 });
            }
            _xUyXFhby = _JcEmPwwu.map((_ZJtZCMVd, _GsxRNrdU) => {
                let _xxcJNnBe;
                if (_ZJtZCMVd._jslTkSeX === '自定义') {
                     _xxcJNnBe = `${_GsxRNrdU + 1} - ${_ZJtZCMVd._tVQdJaQY}`;
                } else {
                    _xxcJNnBe = `${_GsxRNrdU + 1} - ${_ZJtZCMVd._tVQdJaQY || '未知'}`;
                    if (!_ZJtZCMVd._jslTkSeX || !_ZJtZCMVd._jslTkSeX.toLowerCase().includes('cloudflare')) {
                        _xxcJNnBe += '(反代)';
                    }
                }
                const _fTADfTAP = _BTIwmtPs.isIPv6(_ZJtZCMVd._TfMvYJJJ) ? `[${_ZJtZCMVd._TfMvYJJJ}]` : _ZJtZCMVd._TfMvYJJJ;
                const _FsMjiIin = _ZJtZCMVd._FsMjiIin || 443;
                const _QpHgnVIN = itemLink._pOwpCXWE[0];
                const _rZJKACWQ = _QpHgnVIN._CoSPatla || '';
                const _CoSPatla = (_rZJKACWQ && _zZUXUoUg(_rZJKACWQ)) ? _rZJKACWQ : crypto.randomUUID();
                const _pxKyKJFQ = '/snippets?_TfMvYJJJ=endpointAddress:_FsMjiIin(443)&nat64=6to4';
                const _iFIiuxri = _QpHgnVIN._iFIiuxri || _ZRzTxckN;

                const _ZzCBNxCy = new URLSearchParams({
                    security: 'tls',
                    _HBQootdK: 'ws',
                    _iFIiuxri: _iFIiuxri,
                    sni: _iFIiuxri,
                    fp: 'random'
                });
                return `vless://${_CoSPatla}@${_fTADfTAP}:${_FsMjiIin}?${_ZzCBNxCy.toString()}&_pxKyKJFQ=${encodeURIComponent(encodeURIComponent(_pxKyKJFQ))}#${encodeURIComponent(_xxcJNnBe)}`;
            });

        } else {
            if (!itemLink || !itemLink._ImHVJKEY || !itemLink._pOwpCXWE || itemLink._pOwpCXWE._INBMIOUv === 0) {
                return new Response("节点链接参数未配置或未启用", { status: 500 });
            }
            const _QpHgnVIN = itemLink._pOwpCXWE[0];
            const { _iFIiuxri, _CoSPatla, _pxKyKJFQ } = _QpHgnVIN;
            _xUyXFhby = _JcEmPwwu.map((_ZJtZCMVd, _GsxRNrdU) => {
                let _xxcJNnBe;
                if (_ZJtZCMVd._jslTkSeX === '自定义') {
                     _xxcJNnBe = `${_GsxRNrdU + 1} - ${_ZJtZCMVd._tVQdJaQY}`;
                } else {
                    _xxcJNnBe = `${_GsxRNrdU + 1} - ${_ZJtZCMVd._tVQdJaQY || '未知'}`;
                    if (!_ZJtZCMVd._jslTkSeX || !_ZJtZCMVd._jslTkSeX.toLowerCase().includes('cloudflare')) {
                        _xxcJNnBe += '(反代)';
                    }
                }
                const _fTADfTAP = _BTIwmtPs.isIPv6(_ZJtZCMVd._TfMvYJJJ) ? `[${_ZJtZCMVd._TfMvYJJJ}]` : _ZJtZCMVd._TfMvYJJJ;
                const _FsMjiIin = _ZJtZCMVd._FsMjiIin || 443;
                const _ZzCBNxCy = new URLSearchParams({
                    security: 'tls',
                    _HBQootdK: 'ws',
                    _iFIiuxri: _iFIiuxri || _ZRzTxckN,
                    sni: _iFIiuxri || _ZRzTxckN,
                    fp: 'random'
                });
                return `vless://${_CoSPatla}@${_fTADfTAP}:${_FsMjiIin}?${_ZzCBNxCy.toString()}&_pxKyKJFQ=${encodeURIComponent(encodeURIComponent(_pxKyKJFQ || ''))}#${encodeURIComponent(_xxcJNnBe)}`;
            });
        }
        
        const _kwxJiKkK = _xUyXFhby.join('\n');
        const _gvIXWTCB = btoa(_kwxJiKkK);
        return new Response(_gvIXWTCB, {
            _FkdqCqtw: { 'Content-Type': '_evYOamQn/plain; _GpdJPFce=utf-8' }
        });

    } catch (_LfwZJXgS) {
        return new Response(`生成节点列表失败: ${_LfwZJXgS._NuhYLxME}`, { status: 500 });
    }
}

async function _TNEfHUVk(_hIpycXRp) {
    try {
        const { _AvnymUvU, _HBQootdK } = await _hIpycXRp.json();
        if (!Array.isArray(_AvnymUvU)) {
            return new Response('Invalid _AvnymUvU list', { status: 400 });
        }
        const _SdKaHuJJ = _AvnymUvU.map(domain => {
            if (!domain.trim()) return Promise.resolve([]);
            const _dyGmaEyH = `https://cloudflare-dns.com/dns-query?_xxcJNnBe=${encodeURIComponent(domain.trim())}&_HBQootdK=${_HBQootdK || 'A'}`;
            return fetch(_dyGmaEyH, { _FkdqCqtw: { 'Accept': 'application/dns-json' } })
                .then(_ErBuCYWR => _ErBuCYWR.json())
                .then(_MoEawSSZ => (_MoEawSSZ.Answer ? _MoEawSSZ.Answer.map(a => a._MoEawSSZ) : []))
                .catch(() => []);
        });
        const _gAaQcrNI = (await Promise.all(_SdKaHuJJ)).flat();
        const _BzQbDFgF = [...new Set(_gAaQcrNI)];
        if (_BzQbDFgF._INBMIOUv === 0) {
            return new Response('无法从域名解析出任何IP。', { status: 500 });
        }
        return new Response(_BzQbDFgF.join('\n'), { _FkdqCqtw: { 'Content-Type': '_evYOamQn/plain; _GpdJPFce=utf-8' } });
    } catch (err) {
        return new Response(`域名解析错误: ${err._NuhYLxME}`, { status: 500 });
    }
}

async function _OlRplaVI(_hIpycXRp, _owAaPKLX) {
  try {
      const { _wmqWdAus } = await _hIpycXRp.json();
      if (!Array.isArray(_wmqWdAus)) {
          return _PrZGIorL({ error: "Invalid input, expected an object with a '_wmqWdAus' array." }, 400);
      }
      
      const _YfKOcfeA = new Set();
      
      const _BquXuBqH = _wmqWdAus.map(_dyGmaEyH =>
          _qGmIMjDz(_dyGmaEyH)
              .then(_evYOamQn => {
                  if (!_evYOamQn) return;
                  const _VKUFPLxU = _evYOamQn.split(/[\s,;|]+/);
                  for (const _EAQltXXe of _VKUFPLxU) {
                      const _ReqsHkMJ = _EAQltXXe.trim();
                      if (_ReqsHkMJ) {
                          _YfKOcfeA.add(_ReqsHkMJ);
                      }
                  }
              })
              .catch(err => {
                  console.error(`Error processing URL ${_dyGmaEyH}:`, err);
              })
      );
      await Promise.all(_BquXuBqH);
      return _PrZGIorL({ _oWwSOqCE: Array.from(_YfKOcfeA) });
  } catch (_LfwZJXgS) {
      return _PrZGIorL({ error: `Failed to process URLs: ${_LfwZJXgS._NuhYLxME}` }, 500);
  }
}

async function _uhbiAgOg(_hIpycXRp, _owAaPKLX) {
    const _YiXTnbQd = await _NuCfTRkO(_owAaPKLX);
    if (!_YiXTnbQd.api._ImHVJKEY) {
        return new Response(_YiXTnbQd.api._NuhYLxME || 'API is disabled.', { status: 503 });
    }
    try {
        const _uRaVWyEQ = _owAaPKLX.DB.prepare("SELECT _JOOlYbab FROM kv_data WHERE _YgqOlFUZ = ?").bind(_TnoQHVoZ);
        const { _XpVDEcDY: dbResults } = await _uRaVWyEQ.all();
        const _yvOaTqQQ = dbResults._INBMIOUv > 0 ? dbResults[0]._JOOlYbab : null;
        const _KplAnvfp = _yvOaTqQQ ? JSON.parse(_yvOaTqQQ) : null;
        if (!_KplAnvfp || !_KplAnvfp._XpVDEcDY || _KplAnvfp._XpVDEcDY._INBMIOUv === 0) {
            return new Response("上次优选结果为空。", {
                status: 404,
                _FkdqCqtw: { 'Content-Type': '_evYOamQn/plain; _GpdJPFce=utf-8' },
            });
        }
        const _oWwSOqCE = _KplAnvfp._XpVDEcDY.map(r => r._TfMvYJJJ);
        return new Response(_oWwSOqCE.join('\n'), {
            _FkdqCqtw: { 'Content-Type': '_evYOamQn/plain; _GpdJPFce=utf-8' },
        });
    } catch (_LfwZJXgS) {
        console.error("API /_TfMvYJJJ 处理错误:", _LfwZJXgS);
        return new Response(`API处理时出错: ${_LfwZJXgS._NuhYLxME}`, { status: 500 });
    }
}

function _DKHgxeKx(_xJQlMDUP, _GsxRNrdU, _YiXTnbQd, _ZRzTxckN) {
    const { itemLink } = _YiXTnbQd;
    if (!itemLink || !itemLink._ImHVJKEY) return null;
    const { template, _pOwpCXWE, selectionMode, _qRLRpmnh } = itemLink;
    if (!_pOwpCXWE || _pOwpCXWE._INBMIOUv === 0) return null;

    let _lbDtMVOm;
    if (selectionMode === 'random') {
        _lbDtMVOm = _pOwpCXWE[_GsxRNrdU % _pOwpCXWE._INBMIOUv];
    } else if (selectionMode === 'first') {
        _lbDtMVOm = _pOwpCXWE[0];
    } else {
        _lbDtMVOm = _pOwpCXWE.find(s => s._xxcJNnBe === selectionMode) || _pOwpCXWE[0];
    }
    if (!_lbDtMVOm) return null;

    let _WZTaQwOR = template;
    const _BUtGoeeX = _xJQlMDUP._FsMjiIin || 443;
    const _ksqIIEOy = _BTIwmtPs.isIPv6(_xJQlMDUP._TfMvYJJJ) ? `[${_xJQlMDUP._TfMvYJJJ}]` : _xJQlMDUP._TfMvYJJJ;
    let _xxcJNnBe = `${_GsxRNrdU + 1} 、 ${_xJQlMDUP._tVQdJaQY || '未知'}`;
    if (!_xJQlMDUP._jslTkSeX || !_xJQlMDUP._jslTkSeX.toLowerCase().includes('cloudflare')) {
        _xxcJNnBe += '(反代)';
    }
    let _iFIiuxri = _lbDtMVOm._iFIiuxri || _ZRzTxckN;

    _WZTaQwOR = _WZTaQwOR.replace(/{_TfMvYJJJ}/g, _ksqIIEOy)
               .replace(/{_FsMjiIin}/g, _BUtGoeeX)
               .replace(/{_xxcJNnBe}/g, encodeURIComponent(_xxcJNnBe))
               .replace(/{rank}/g, _GsxRNrdU + 1)
               .replace(/{_tVQdJaQY}/g, encodeURIComponent(_xJQlMDUP._tVQdJaQY || '未知'))
               .replace(/{_jslTkSeX}/g, encodeURIComponent(_xJQlMDUP._jslTkSeX || '未知'))
               .replace(/{_iFIiuxri}/g, encodeURIComponent(_iFIiuxri))
               .replace(/{_CoSPatla}/g, encodeURIComponent(_lbDtMVOm['_CoSPatla'] || ''))
               .replace(/{_pxKyKJFQ}/g, encodeURIComponent(encodeURIComponent(_lbDtMVOm._pxKyKJFQ || '')));

    if (_qRLRpmnh) {
        _qRLRpmnh.forEach(field => {
            const _dXkHZPec = new RegExp('{' + field._xxcJNnBe + '}', 'g');
            _WZTaQwOR = _WZTaQwOR.replace(_dXkHZPec, encodeURIComponent(field._JOOlYbab));
        });
    }
    return _WZTaQwOR;
}

async function _LhpNcBVF(_hIpycXRp, _owAaPKLX) {
    const _YiXTnbQd = await _NuCfTRkO(_owAaPKLX);
    if (!_YiXTnbQd.itemLink._ImHVJKEY) {
        return new Response("Item _WZTaQwOR feature is disabled.", { status: 503, _FkdqCqtw: { 'Content-Type': '_evYOamQn/plain; _GpdJPFce=utf-8' } });
    }

    try {
        const _uRaVWyEQ = _owAaPKLX.DB.prepare("SELECT _JOOlYbab FROM kv_data WHERE _YgqOlFUZ = ?").bind(_TnoQHVoZ);
        const { _XpVDEcDY: dbResults } = await _uRaVWyEQ.all();
        const _yvOaTqQQ = dbResults._INBMIOUv > 0 ? dbResults[0]._JOOlYbab : null;
        const _KplAnvfp = _yvOaTqQQ ? JSON.parse(_yvOaTqQQ) : null;
        
        if (!_KplAnvfp || !_KplAnvfp._XpVDEcDY || _KplAnvfp._XpVDEcDY._INBMIOUv === 0) {
            return new Response("No optimized IPs available to generate endpoints.", {
                status: 404,
                _FkdqCqtw: { 'Content-Type': '_evYOamQn/plain; _GpdJPFce=utf-8' },
            });
        }
        
        const _ZRzTxckN = new URL(_hIpycXRp._dyGmaEyH)._xpmdLPTW;

        const _yZLcAcCi = _KplAnvfp._XpVDEcDY.map((_xJQlMDUP, _GsxRNrdU) => {
            return _DKHgxeKx(_xJQlMDUP, _GsxRNrdU, _YiXTnbQd, _ZRzTxckN);
        }).filter(Boolean);

        if (_yZLcAcCi._INBMIOUv === 0) {
            return new Response("Could not generate any _ZJtZCMVd links from the available IPs.", {
                status: 500,
                _FkdqCqtw: { 'Content-Type': '_evYOamQn/plain; _GpdJPFce=utf-8' },
            });
        }

        return new Response(_yZLcAcCi.join('\n'), {
            _FkdqCqtw: { 'Content-Type': '_evYOamQn/plain; _GpdJPFce=utf-8' },
        });

    } catch (_LfwZJXgS) {
        console.error("API /api/endpoints error:", _LfwZJXgS);
        return new Response(`Error processing API _hIpycXRp: ${_LfwZJXgS._NuhYLxME}`, { status: 500 });
    }
}

async function _KiUcEwqz(_hIpycXRp, _owAaPKLX, _BACedYYN) {
    const _KuScVJGr = _hIpycXRp._FkdqCqtw.get('CF-Connecting-IP') || "未知IP";
    const [
        _LpulAmsQ,
        _vPrrmvOz,
        defaultDomains,
        fetchedCountryMap
    ] = await Promise.all([
        _cgVJGDrR(_sTDjmVRI, _xcotFtsG, []),
        _cgVJGDrR(_KBhSqVRy, _xcotFtsG, []),
        _cgVJGDrR(_cHvxvmkG, _IPJHUDlh, []),
        _cgVJGDrR(_QzDdCMCB, _zOkvxouS, { "N/A": "未知" })
    ]);
    _wifTkUsQ = fetchedCountryMap;
    let _HXMpdGNP = false;
    let _tDDyIANp;
    try {
        const _CFMfwzZu = await _YSCQWAJJ(_owAaPKLX);
        _HXMpdGNP = !!_CFMfwzZu;
        _tDDyIANp = await _NuCfTRkO(_owAaPKLX);
    } catch (_LfwZJXgS) {
        if (_LfwZJXgS._NuhYLxME && _LfwZJXgS._NuhYLxME.includes('no such table')) {
            console.log("检测到 'kv_data' 表不存在,正在自动创建...");
            try {
                const _YPldyVMg = "CREATE TABLE IF NOT EXISTS kv_data (_YgqOlFUZ TEXT PRIMARY KEY, _JOOlYbab TEXT); CREATE TABLE IF NOT EXISTS optimized_results (_ZbDdKFqz TEXT PRIMARY KEY, _MoEawSSZ TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);";
                await _owAaPKLX.DB.exec(_YPldyVMg);
                console.log("数据表创建成功。");
                _HXMpdGNP = false;
                _tDDyIANp = _nAWoHFVR();
            } catch (dbError) {
                console.error("自动创建数据表失败:", dbError);
                return new Response(`数据库初始化失败: ${dbError._NuhYLxME}`, {
                    status: 500,
                    _FkdqCqtw: { 'Content-Type': '_evYOamQn/html;_GpdJPFce=UTF-8' }
                });
            }
        } else {
             let _TJITSuto = _LDLIZEhP(_LfwZJXgS._NuhYLxME);
             return new Response(_TJITSuto, { _FkdqCqtw: { 'Content-Type': '_evYOamQn/html;_GpdJPFce=UTF-8' } });
        }
    }
    if (_tDDyIANp.telegram.bot_token && _tDDyIANp.telegram.chat_id) {
        const _RkhBlTzX = _hIpycXRp.cf?._RkhBlTzX || "未知";
        const _qnqdFLxY = _hIpycXRp.cf?._qnqdFLxY || "";
        let _namKehRZ = _wifTkUsQ[_RkhBlTzX] || _RkhBlTzX;
        if (_qnqdFLxY && _qnqdFLxY !== "未知城市" && _qnqdFLxY !== _RkhBlTzX) _namKehRZ = `${_namKehRZ} ${_wifTkUsQ[_qnqdFLxY] || _qnqdFLxY}`;
        const _efATVXgL = _LokypsZb();
        const _qQBFlUIi = _hIpycXRp._dyGmaEyH;
        const _dMpbTcHW = `访客: ${_KuScVJGr}\n位置: ${_namKehRZ.trim()}\n时间: ${_efATVXgL}\n来自:${_qQBFlUIi}`;
        const _LDrTDZJp = `https://api.telegram.org/bot${_tDDyIANp.telegram.bot_token}/sendMessage?chat_id=${_tDDyIANp.telegram.chat_id}&_evYOamQn=${encodeURIComponent(_dMpbTcHW)}`;
        _BACedYYN.waitUntil(fetch(_LDrTDZJp).catch(_LfwZJXgS => console.error("Telegram通知失败:", _LfwZJXgS)));
    }
    let _DLzVUpVR = _EssobVjS();
    const _ucNVXofI = {
        _YiXTnbQd: _tDDyIANp,
        status: {
            _HXMpdGNP: _HXMpdGNP,
        }
    };
    _DLzVUpVR = _DLzVUpVR.replace('__PAGE_DATA_JSON__', JSON.stringify(_ucNVXofI));
    _DLzVUpVR = _DLzVUpVR.replace('__ALL_CF_CIDR_LIST_JSON__', JSON.stringify(_LpulAmsQ));
    _DLzVUpVR = _DLzVUpVR.replace('__BALANCED_CF_CIDR_LIST_JSON__', JSON.stringify(_vPrrmvOz));
    _DLzVUpVR = _DLzVUpVR.replace('__DEFAULT_DOMAINS_LIST_JSON__', JSON.stringify(defaultDomains));
    _DLzVUpVR = _DLzVUpVR.replace('__COUNTRY_MAP_JSON__', JSON.stringify(_wifTkUsQ));
    return new Response(_DLzVUpVR, {
        _FkdqCqtw: { 'Content-Type': '_evYOamQn/html;_GpdJPFce=UTF-8' },
    });
}

function _PrZGIorL(_DsxCXtGH, status = 200, _FkdqCqtw = {}) {
    return new Response(JSON.stringify(_DsxCXtGH), {
        status,
        _FkdqCqtw: { 'Content-Type': 'application/json;_GpdJPFce=UTF-8', ..._FkdqCqtw }
    });
}

function _LokypsZb(date = new Date()) {
    return new Intl.DateTimeFormat('zh-CN', {
        timeZone: 'Asia/Shanghai',
        year: 'numeric', month: '2-digit', day: '2-digit',
        hour: '2-digit', minute: '2-digit', second: '2-digit',
        hour12: false
    }).format(date);
}

function _MfqmsMjL(_TfMvYJJJ) {
    if (!_TfMvYJJJ || typeof _TfMvYJJJ !== 'string') return "无效IP";
    if(_BTIwmtPs.isIPv4(_TfMvYJJJ)){
        const _ZNzjLrgz = _TfMvYJJJ.split('.');
        if (_ZNzjLrgz._INBMIOUv === 4) return `${_ZNzjLrgz[0]}.*.*.${_ZNzjLrgz[3]}`;
    }
    if(_BTIwmtPs.isIPv6(_TfMvYJJJ)){
        const _ZNzjLrgz = _TfMvYJJJ.split(':');
        if (_ZNzjLrgz._INBMIOUv > 2) return `${_ZNzjLrgz[0]}:...:${_ZNzjLrgz[_ZNzjLrgz._INBMIOUv - 1]}`;
    }
    return _TfMvYJJJ;
}

function _LDLIZEhP(_ygYxpgXI) {
    return `
    <!DOCTYPE html><html lang="zh-CN"><head><meta _GpdJPFce="UTF-8"><title>需要设置</title>
    <_aOGvRyHA>
        _DsxCXtGH { font-family: sans-serif; background: #1a1a1a; _ewKXAcDO: #e0e0e0; display: flex; justify-_SsbSJhVa: center; align-items: center; height: 100vh; margin: 0; }
        ._ItXCZyRI { max-_NHILxqjM: 800px; padding: 2rem; background: #25282e; border: 1px solid #4044c; border-radius: 8px; box-shadow: 0 5px 15px rgba(0,0,0,0.3); }
        h1 { _ewKXAcDO: #00a0ff; border-bottom: 1px solid #40444c; padding-bottom: 0.5rem; }
        p { line-height: 1.6; }
        code { background: #1a1a1a; padding: 0.2em 0.4em; border-radius: 4px; font-family: monospace; white-space: pre-wrap; word-break: break-all; }
        .error { _ewKXAcDO: #da3633; background: rgba(218, 54, 51, 0.1); padding: 0.5rem; border-radius: 4px; margin-_rVIHOODS: 1rem; }
    </_aOGvRyHA>
    </head><_DsxCXtGH>
    <div class="_ItXCZyRI">
        <h1>部署指南</h1>
        <p>系统检测到 D1 数据库绑定存在问题。请确保您已完成以下步骤:</p>
        <ol>
            <li>进入 Cloudflare Dashbord -> Workers & Pages -> D1。</li>
            <li>创建一个新的D1数据库 (如果还没有)。</li>
            <li>将此数据库绑定到您的Worker:
                <ul>
                    <li>进入Worker设置 -> 变量 -> D1数据库绑定。</li>
                    <li>变量名必须填写 <code>DB</code>。</li>
                    <li>选择您刚创建的数据库。</li>
                    <li>点击“保存并部署”。</li>
                </ul>
            </li>
        </ol>
        <p>完成以上步骤后,请刷新本页面。系统会自动为您创建所需的数据表。</p>
        ${_ygYxpgXI ? `<div class="error"><strong>当前错误信息:</strong> ${_ygYxpgXI.replace(/</g, "&lt;").replace(/>/g, "&gt;")}</div>` : ''}
    </div>
    </_DsxCXtGH></html>`;
}

function _EssobVjS() {
    return `
  <!DOCTYPE html><html lang="zh-CN"><head> <meta _GpdJPFce="UTF-8"> <meta _xxcJNnBe="viewport" _SsbSJhVa="_NHILxqjM=device-_NHILxqjM, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> <title>Cloudflare IP</title> <_WZTaQwOR href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Noto+Sans+SC:wght@400;500;700&family=Roboto+Mono:wght@400;500&display=swap" rel="stylesheet"><script src="https://cdn.jsdelivr.net/npm/qrcode-generator/qrcode.js"></script>
  <_aOGvRyHA>
  :root { --primary-_ewKXAcDO: #00A0FF; --primary-hover: #007ACC; --primary-gradient-start: #00C6FF; --primary-gradient-end: #0072FF; --secondary-_ewKXAcDO: #8c939d; --light-bg: #1A1C20; --_SsbSJhVa-bg: #25282E; --border-_ewKXAcDO: #40444C; --_evYOamQn-_ewKXAcDO: #E0E0E0; --_evYOamQn-light: #B0B0B0; --success-_ewKXAcDO: #30A46C; --danger-_ewKXAcDO: #DA3633; --warning-_ewKXAcDO: #DBAB0A; --border-radius-md: 8px; --border-radius-sm: 6px; --font-family-sans: 'Inter', 'Noto Sans SC', sans-serif; --font-family-mono: 'Roboto Mono', monospace; }
  * { margin: 0; padding: 0; box-sizing: border-box; }
  html { font-size: 16px; }
  _DsxCXtGH { font-family: var(--font-family-sans); background-_ewKXAcDO: var(--light-bg); _ewKXAcDO: var(--_evYOamQn-_ewKXAcDO); line-height: 1.65; overflow-x: hidden; padding: 0; position:relative; transition: background-_ewKXAcDO 0.5s ease; background-size: cover; background-position: center; background-attachment: fixed; }
  #background-_eMRJUFPK { position: fixed; _rVIHOODS: 0; _YGyPwWRe: 0; _NHILxqjM: 100%; height: 100%; z-_GsxRNrdU: -1; display: none; }
  ._ePgmURZz-_ItXCZyRI { max-_NHILxqjM: 1100px; margin: 0 auto; padding: 0 1rem; position: relative; z-_GsxRNrdU: 1; }
  #_WYwcDBVJ { position: fixed; _rVIHOODS: 1rem; right: 1rem; font-size: 0.85em; padding: 0.4em 0.8em; z-_GsxRNrdU: 10; }
  #marquee-_ItXCZyRI { overflow: hidden; white-space: nowrap; background-_ewKXAcDO: rgba(37, 40, 46, 0.6); backdrop-filter: blur(5px); _ewKXAcDO: var(--primary-_ewKXAcDO); padding: 0.5rem 0; margin-_rVIHOODS: 1rem; border-radius: var(--border-radius-sm); display: none; }
  #marquee-_evYOamQn { display: inline-block; padding-_YGyPwWRe: 100%; animation: marquee-scroll 20s linear infinite; }
  @keyframes marquee-scroll { 0% { transform: translateX(0); } 100% { transform: translateX(-100%); } }
  _fpsbyNNH { _evYOamQn-align: center; margin-_rVIHOODS: 1rem; margin-bottom: 2rem; }
  _fpsbyNNH h1 { white-space: pre-wrap; font-size: 2.25em; _ewKXAcDO: var(--primary-_ewKXAcDO); font-weight: 700; _evYOamQn-shadow: 0 0 10px rgba(var(--primary-_ewKXAcDO-rgb), 0.3); }
  .card { background-_ewKXAcDO: rgba(37, 40, 46, 0.85); backdrop-filter: blur(5px); -webkit-backdrop-filter: blur(5px); border-radius: var(--border-radius-md); box-shadow: 0 3px 8px rgba(0, 0, 0, 0.25); padding: 1.5rem; margin-bottom: 1.5rem; border: 1px solid var(--border-_ewKXAcDO); }
  .progress-section #_Rndrempy { _NHILxqjM: 100%; height: 0.75rem; border-radius: var(--border-radius-sm); appearance: none; -webkit-appearance: none; background-_ewKXAcDO: var(--border-_ewKXAcDO); overflow: hidden; }
  .progress-section #_Rndrempy::-webkit-progress-_JOOlYbab { background: linear-gradient(90deg, var(--primary-gradient-start), var(--primary-gradient-end)); }
  .progress-section #status { _evYOamQn-align: center; margin-_rVIHOODS: 0.75em; font-size: 0.95em; _ewKXAcDO: var(--_evYOamQn-light); min-height: 1.5em; }
  .section-_fpsbyNNH { display: flex; flex-wrap: wrap; justify-_SsbSJhVa: space-between; align-items: center; margin-bottom: 1rem; padding-bottom: 0.75rem; border-bottom: 1px solid var(--border-_ewKXAcDO); gap: 1rem; }
  .section-_fpsbyNNH h2 { font-size: 1.6em; font-weight: 600; margin:0; }
  .generator-info { font-size: 0.85em; _ewKXAcDO: var(--secondary-_ewKXAcDO); _evYOamQn-align: right; flex-shrink: 0; }
  .generator-info span { display: block; }
  .table-responsive { _NHILxqjM: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
  table { _NHILxqjM: 100%; border-collapse: collapse; margin-_rVIHOODS: 0; font-size: 0.9em; }
  th, td { border-bottom: 1px solid var(--border-_ewKXAcDO); padding: 0.8em; _evYOamQn-align: _YGyPwWRe; vertical-align: middle; white-space: nowrap; }
  th { background-_ewKXAcDO: #2c3038; font-weight: 500; }
  tbody tr:hover { background-_ewKXAcDO: #30333a; }
  td._TfMvYJJJ-_iEEYKiNi { font-weight: 500; font-family: var(--font-family-mono); _ewKXAcDO: var(--primary-_ewKXAcDO); }
  td.ping-_JOOlYbab { font-weight: 600; font-family: var(--font-family-mono); }
  td.actions-cell { _evYOamQn-align: right; }
  .btn { display: inline-flex; align-items: center; justify-_SsbSJhVa: center; font-weight: 500; _evYOamQn-align: center; cursor: pointer; user-_JqRyHoaC: none; background: linear-gradient(145deg, var(--primary-gradient-start), var(--primary-gradient-end)); border: 1px solid transparent; _ewKXAcDO: #fff; padding: 0.4em 0.8em; font-size: 0.85em; border-radius: var(--border-radius-sm); transition: all 0.2s ease-in-out; margin-_YGyPwWRe: 6px; }
  .btn:hover { transform: translateY(-2px); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3); }
  .btn-outline { background: transparent; _ewKXAcDO: var(--primary-_ewKXAcDO); border: 1px solid var(--primary-_ewKXAcDO); }
  .btn-outline:hover { background-_ewKXAcDO: var(--primary-_ewKXAcDO); _ewKXAcDO: var(--_SsbSJhVa-bg); }
  ._ePgmURZz-download-buttons { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 1rem; }
  ._ePgmURZz-download-buttons .btn { _NHILxqjM: 100%; margin: 0; }
  .tooltip-notification { position: fixed; _rVIHOODS: 20px; right: 20px; padding: 12px 20px; border-radius: var(--border-radius-md); _ewKXAcDO: #fff; font-size: 0.95em; z-_GsxRNrdU: 10002; box-shadow: 0 6px 15px rgba(0, 0, 0, 0.35); opacity: 0; transform: translateY(-20px); transition: all 0.3s ease; pointer-events: none; }
  .tooltip-notification.show { opacity: 1; transform: translateY(0); }
  #_INbsoaji, #_oNXQtXGf, #_oghAOJQe, #_YwzzMmVZ, #_wQjPVkUo { display: none; position: fixed; z-_GsxRNrdU: 10000; _YGyPwWRe: 0; _rVIHOODS: 0; _NHILxqjM: 100%; height: 100%; background-_ewKXAcDO: rgba(0,0,0,0.6); justify-_SsbSJhVa: center; align-items: center; backdrop-filter: blur(5px); -webkit-backdrop-filter: blur(5px); }
  .modal-_SsbSJhVa, ._ePgmURZz-modal-_SsbSJhVa { background-_ewKXAcDO: var(--_SsbSJhVa-bg); padding: 2rem; border: 1px solid var(--border-_ewKXAcDO); border-radius: var(--border-radius-md); _NHILxqjM: 95%; max-_NHILxqjM: 800px; max-height: 90vh; overflow-y: auto; box-shadow: 0 5px 15px rgba(0,0,0,0.3); }
  #_YwzzMmVZ .modal-_SsbSJhVa { max-_NHILxqjM: 500px; }
  .modal-_SsbSJhVa h3, ._ePgmURZz-modal-_fpsbyNNH h3 { margin-_rVIHOODS: 0; margin-bottom: 1.5rem; _ewKXAcDO: var(--primary-_ewKXAcDO); _evYOamQn-align: center; }
  .modal-buttons { display: flex; justify-_SsbSJhVa: flex-end; gap: 1rem; margin-_rVIHOODS: 2rem; border-_rVIHOODS: 1px solid var(--border-_ewKXAcDO); padding-_rVIHOODS: 1.5rem; }
  .modal-section-divider { border: 0; height: 1px; background-image: linear-gradient(to right, rgba(0,0,0,0), var(--border-_ewKXAcDO), rgba(0,0,0,0)); margin: 2rem 0; }
  ._ePgmURZz-modal-_fpsbyNNH { display: flex; justify-_SsbSJhVa: space-between; align-items: center; padding-bottom: 1rem; margin-bottom: 1rem; border-bottom: 1px solid var(--border-_ewKXAcDO); }
  .modal-close-btn { font-size: 1.5rem; font-weight: bold; line-height: 1; _ewKXAcDO: var(--_evYOamQn-light); cursor: pointer; background: none; border: none; padding: 0; }
  ._ePgmURZz-list-_ZJtZCMVd { display: flex; flex-direction: column; padding: 1rem; border: 1px solid var(--border-_ewKXAcDO); border-radius: var(--border-radius-sm); margin-bottom: 1rem; }
  ._ePgmURZz-_xxcJNnBe { font-size: 1.1em; font-weight: 600; }
  ._ePgmURZz-links a { display: block; _ewKXAcDO: var(--primary-_ewKXAcDO); _evYOamQn-decoration: none; margin-_rVIHOODS: 0.5rem; word-break: break-all; }
  ._ePgmURZz-links a:hover { _evYOamQn-decoration: underline; }
  ._ePgmURZz-links span { _ewKXAcDO: var(--_evYOamQn-light); }
  #visitorPasswordPrompt { _evYOamQn-align: center; }
  #visitorPasswordPrompt h3 { _ewKXAcDO: var(--primary-_ewKXAcDO); font-size: 1.4em; margin-bottom: 0.8rem; }
  #visitorPasswordPrompt p { _ewKXAcDO: var(--_evYOamQn-light); margin-bottom: 1.5rem; }
  ._CFMfwzZu-input-group { display: flex; gap: 10px; max-_NHILxqjM: 400px; margin: 0 auto; }
  ._CFMfwzZu-input-group input { flex-grow: 1; _evYOamQn-align: center; }
  ._CFMfwzZu-input-group .btn { margin-_YGyPwWRe: 0; }
  ._XpVDEcDY-actions-_ItXCZyRI { _evYOamQn-align: center; margin-bottom: 1.5rem; }
  ._XpVDEcDY-api-buttons { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 1rem; }
  ._XpVDEcDY-api-buttons .btn { margin: 0; _NHILxqjM: 100%; font-size: 0.9em; padding: 0.5em 1em; }
  .form-grid { display: grid; grid-template-columns: max-_SsbSJhVa 1fr; gap: 1.2rem 1rem; align-items: center; }
  .form-grid-label { justify-self: end; display: flex; align-items: center; gap: 8px; }
  .form-grid-control { display: flex; align-items: center; gap: 10px; }
  .form-grid-control-full { grid-column: 1 / -1; }
  .form-grid-control input, .form-grid-control _JqRyHoaC, .form-grid-control textarea { _NHILxqjM: 100%; background-_ewKXAcDO: var(--light-bg); border: 1px solid var(--border-_ewKXAcDO); border-radius: var(--border-radius-sm); _ewKXAcDO: var(--_evYOamQn-_ewKXAcDO); font-family: var(--font-family-sans); padding: 0.6em; transition: border-_ewKXAcDO 0.2s, box-shadow 0.2s; }
  .form-grid-control input:focus, .form-grid-control _JqRyHoaC:focus, .form-grid-control textarea:focus { border-_ewKXAcDO: var(--primary-_ewKXAcDO); box-shadow: 0 0 0 2px rgba(var(--primary-_ewKXAcDO-rgb), 0.2); outline: none; }
  .form-grid-control input[_HBQootdK="_ewKXAcDO"] { min-_NHILxqjM: auto; padding: 2px; _NHILxqjM: 2.5em; height: 2.5em; }
  .form-grid-control input[_HBQootdK="checkbox"] { _NHILxqjM: auto; flex-shrink: 0; height: 1.2em; _NHILxqjM: 1.2em; }
  .form-grid-control ._xpwwvVDY-input { _NHILxqjM: 80px; _evYOamQn-align: right; }
  .tooltip-_dnMbfQCc { display: inline-flex; _NHILxqjM: 16px; height: 16px; align-items: center; justify-_SsbSJhVa: center; background-_ewKXAcDO: var(--secondary-_ewKXAcDO); _ewKXAcDO: var(--_SsbSJhVa-bg); border-radius: 50%; font-size: 12px; font-weight: bold; cursor: pointer; user-_JqRyHoaC: none; }
  #tooltip-popup { position: fixed; background-_ewKXAcDO: #383c4a; _ewKXAcDO: #fff; padding: 10px 15px; border-radius: 6px; z-_GsxRNrdU: 10001; font-size: 0.85em; max-_NHILxqjM: 300px; display: none; box-shadow: 0 4px 12px rgba(0,0,0,0.4); border: 1px solid var(--border-_ewKXAcDO); pointer-events: none; }
  #custom-fields-_ItXCZyRI .form-grid-control { gap: 5px; } #custom-fields-_ItXCZyRI .form-grid-control input { flex: 1; }
  .parameter-_HbvIBjJh-_uSayhGfc { border: 1px solid var(--border-_ewKXAcDO); border-radius: var(--border-radius-sm); padding: 1rem; margin-bottom: 1rem; }
  .parameter-_HbvIBjJh-_fpsbyNNH { display: flex; justify-_SsbSJhVa: space-between; align-items: center; margin-bottom: 1rem; }
  .parameter-_HbvIBjJh-_fpsbyNNH input { flex-grow: 1; margin-right: 1rem; }
  .fine-grained-options { display: flex; gap: 1rem; margin-_rVIHOODS: 0.5rem; align-items: center; font-size: 0.9em; }
  .fine-grained-options label { display: flex; align-items: center; gap: 0.3rem; cursor: pointer; }
  ._evYOamQn-_ewKXAcDO-grid { display: grid; grid-template-columns: auto 1fr; gap: 8px; align-items: center; _NHILxqjM: 100%; }
  ._evYOamQn-_ewKXAcDO-grid input[_HBQootdK="_ewKXAcDO"] { grid-column: 1 / 2; }
  ._evYOamQn-_ewKXAcDO-grid input[_HBQootdK="_evYOamQn"], ._evYOamQn-_ewKXAcDO-grid textarea { grid-column: 2 / 3; }
  #_YwzzMmVZ .button-grid { display: grid; grid-template-columns: 1fr; gap: 1rem; }
  #_YwzzMmVZ .btn-group { display: flex; }
  #_YwzzMmVZ .sub-btn { flex-grow: 1; margin: 0; }
  #_YwzzMmVZ ._FQfFMdjj-btn { flex-shrink: 0; margin-_YGyPwWRe: -1px; border-_rVIHOODS-_YGyPwWRe-radius: 0; border-bottom-_YGyPwWRe-radius: 0; }
  #_wQjPVkUo .modal-_SsbSJhVa { max-_NHILxqjM: 300px; background: white; padding: 1rem; _evYOamQn-align: center; }
  #qrCodeImg { max-_NHILxqjM: 100%; }
  @media (max-_NHILxqjM: 768px) {
    html { font-size: 15px; } ._ePgmURZz-_ItXCZyRI { padding: 0 0.8rem; } _fpsbyNNH { margin-_rVIHOODS: 2.5rem; margin-bottom: 1.5rem; } #_WYwcDBVJ { _rVIHOODS: 0.8rem; right: 0.8rem; } .card { padding: 1rem; }
    .form-grid { grid-template-columns: 1fr; } .form-grid-label { justify-self: start; }
  }
  </_aOGvRyHA>
  <_aOGvRyHA _ZbDdKFqz="theme-styles">
  .theme-light { --light-bg: #F0F2F5; --_SsbSJhVa-bg: #FFFFFF; --border-_ewKXAcDO: #DCDFE6; --_evYOamQn-_ewKXAcDO: #303133; --_evYOamQn-light: #606266; }
  .theme-light .card { background-_ewKXAcDO: rgba(255, 255, 255, 0.9); }
  .theme-light th { background-_ewKXAcDO: #F5F7FA; }
  .theme-light tbody tr:hover { background-_ewKXAcDO: #ECF5FF; }
  .theme-matrix { --primary-_ewKXAcDO: #00FF41; --primary-hover: #39FF14; --light-bg: #000000; --_SsbSJhVa-bg: #0D0208; --border-_ewKXAcDO: #00FF41; --_evYOamQn-_ewKXAcDO: #00FF41; --_evYOamQn-light: #00FF41; font-family: var(--font-family-mono); }
  .theme-matrix .card { background-_ewKXAcDO: rgba(0, 20, 0, 0.7); _evYOamQn-shadow: 0 0 5px var(--primary-_ewKXAcDO); backdrop-filter: none; }
  .theme-matrix th { background-_ewKXAcDO: #000; }
  .theme-matrix tbody tr:hover { background-_ewKXAcDO: #010; }
  .theme-matrix .btn { _evYOamQn-shadow: none; _ewKXAcDO: #000; }
  .theme-matrix .btn-outline { background-_ewKXAcDO: transparent; }
  .theme-modern-glass { --primary-_ewKXAcDO: #00C6FF; --primary-hover: #0072FF; --light-bg: #000; --_SsbSJhVa-bg: rgba(30, 30, 40, 0.6); --border-_ewKXAcDO: rgba(255, 255, 255, 0.2); --_evYOamQn-_ewKXAcDO: #F0F0F0; --_evYOamQn-light: #A0A0B0; --border-radius-md: 12px; }
  _DsxCXtGH.theme-modern-glass { background: linear-gradient(-45deg, #000428, #004e92, #1CB5E0, #23D5AB); background-size: 400% 400%; animation: gradientBG 15s ease infinite; }
  @keyframes gradientBG { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } }
  .theme-particles-glass { --primary-_ewKXAcDO: #00C6FF; --primary-hover: #0072FF; --light-bg: #1A1C20; --_SsbSJhVa-bg: rgba(30, 30, 40, 0.6); --border-_ewKXAcDO: rgba(255, 255, 255, 0.2); --_evYOamQn-_ewKXAcDO: #F0F0F0; --_evYOamQn-light: #A0A0B0; --border-radius-md: 12px; }
  .glassy-components .card { background-_ewKXAcDO: var(--_SsbSJhVa-bg); backdrop-filter: blur(15px); -webkit-backdrop-filter: blur(15px); border: 1px solid var(--border-_ewKXAcDO); }
  .glassy-components .btn { background: linear-gradient(145deg, var(--primary-gradient-start), var(--primary-gradient-end)); border: 1px solid rgba(255, 255, 255, 0.2); border-bottom-_ewKXAcDO: rgba(0,0,0,0.3); border-right-_ewKXAcDO: rgba(0,0,0,0.3); box-shadow: 0 4px 15px rgba(0,0,0,0.2), inset 0 1px 1px rgba(255,255,255,0.1); _evYOamQn-shadow: 0 1px 2px rgba(0,0,0,0.2); _ewKXAcDO: #fff; }
  .glassy-components .btn-outline { background: rgba(255, 255, 255, 0.05); border-_ewKXAcDO: rgba(255, 255, 255, 0.2); backdrop-filter: blur(2px); _evYOamQn-shadow: 0 1px 2px rgba(0,0,0,0.2); }
  .glassy-components .btn-outline:hover { background: var(--primary-_ewKXAcDO); border-_ewKXAcDO: var(--primary-_ewKXAcDO); _ewKXAcDO: #fff; }
  .glassy-components _fpsbyNNH h1 { background: linear-gradient(180deg, rgba(255,255,255,1) 0%, rgba(255,255,255,0.7) 100%); -webkit-background-clip: _evYOamQn; -webkit-_evYOamQn-fill-_ewKXAcDO: transparent; filter: drop-shadow(0 2px 5px rgba(0,0,0,0.5)); _ewKXAcDO: transparent; }
  .theme-aurora-glass { --primary-_ewKXAcDO: #38bdf8; --light-bg: #0c0a09; --_SsbSJhVa-bg: rgba(23, 23, 23, 0.5); --border-_ewKXAcDO: rgba(255, 255, 255, 0.15); --_evYOamQn-_ewKXAcDO: #f2f2f2; --_evYOamQn-light: #a3a3a3; }
  _DsxCXtGH.theme-aurora-glass::before { _SsbSJhVa: ''; position: fixed; _rVIHOODS: 0; _YGyPwWRe: 0; _NHILxqjM: 100%; height: 100%; z-_GsxRNrdU: -2; background: radial-gradient(at 27% 37%, hsla(215, 98%, 61%, 0.4) 0px, transparent 50%), radial-gradient(at 97% 21%, hsla(125, 98%, 72%, 0.2) 0px, transparent 50%), radial-gradient(at 52% 99%, hsla(355, 98%, 76%, 0.3) 0px, transparent 50%), radial-gradient(at 10% 29%, hsla(256, 96%, 68%, 0.3) 0px, transparent 50%), radial-gradient(at 97% 96%, hsla(38, 60%, 74%, 0.2) 0px, transparent 50%), radial-gradient(at 33% 50%, hsla(222, 67%, 73%, 0.3) 0px, transparent 50%), radial-gradient(at 79% 53%, hsla(343, 68%, 73%, 0.2) 0px, transparent 50%); animation: auroraBG 20s ease-in-out infinite alternate; }
  @keyframes auroraBG { from { transform: scale(1); } to { transform: scale(1.5); } }
  .theme-cyberpunk-glass { --primary-_ewKXAcDO: #08fdd8; --light-bg: #010409; --_SsbSJhVa-bg: rgba(22, 27, 34, 0.6); --border-_ewKXAcDO: rgba(139, 148, 158, 0.3); --_evYOamQn-_ewKXAcDO: #e6edf3; --_evYOamQn-light: #7d8590; }
  .theme-cyberpunk-glass .card { border-image: linear-gradient(to bottom right, var(--primary-_ewKXAcDO), #7928ca) 1; box-shadow: 0 0 15px rgba(var(--primary-_ewKXAcDO-rgb), 0.25); }
  .theme-cyberpunk-glass .btn { box-shadow: 0 0 8px rgba(var(--primary-_ewKXAcDO-rgb), 0.5); }
  .theme-marble-light { --primary-_ewKXAcDO: #bfa37c; --light-bg: #f7f5f2; --_SsbSJhVa-bg: #ffffff; --border-_ewKXAcDO: #e0dcd5; --_evYOamQn-_ewKXAcDO: #3d3a36; --_evYOamQn-light: #6b6661; }
  _DsxCXtGH.theme-marble-light { background-image: _dyGmaEyH('_MoEawSSZ:image/svg+xml,%3Csvg _NHILxqjM="60" height="60" viewBox="0 0 60 60" xmlns="http://www.w3.org/2000/svg"%3E%3Cg fill="none" fill-rule="evenodd"%3E%3Cg fill="%23dcd6ca" fill-opacity="0.2"%3E%3Cpath d="M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z"/%3E%3C/g%3E%3C/g%3E%3C/svg%3E'); }
  .theme-marble-light .card { background-_ewKXAcDO: rgba(255, 255, 255, 0.85); box-shadow: 0 4px 12px rgba(0,0,0,0.08); }
  </_aOGvRyHA>
  </head><_DsxCXtGH _ZbDdKFqz="pageBody">
  <_eMRJUFPK _ZbDdKFqz="background-_eMRJUFPK"></_eMRJUFPK>
  <div _ZbDdKFqz="_INbsoaji">
      <div class="modal-_SsbSJhVa">
          <h3>首次使用 - 请设置管理员密码</h3>
          <p>这是您第一次访问本页面,为了保护您的设置,请创建一个管理员密码。</p>
          <div class="form-grid"><div class="form-grid-label"><label for="initialPassword">新密码 (至少6位)</label></div><div class="form-grid-control"><input _HBQootdK="_CFMfwzZu" _ZbDdKFqz="initialPassword"></div></div>
          <div class="form-grid"><div class="form-grid-label"><label for="confirmPassword">确认密码</label></div><div class="form-grid-control"><input _HBQootdK="_CFMfwzZu" _ZbDdKFqz="confirmPassword"></div></div>
          <div class="modal-buttons"><button _ZbDdKFqz="setInitialPasswordBtn" class="btn">设置密码</button></div>
      </div>
  </div>
  <div class="_ePgmURZz-_ItXCZyRI">
    <button _ZbDdKFqz="_WYwcDBVJ" class="btn btn-outline"></button>
    <div _ZbDdKFqz="marquee-_ItXCZyRI"><div _ZbDdKFqz="marquee-_evYOamQn"></div></div>
    <_fpsbyNNH><h1 _ZbDdKFqz="pageTitle"></h1></_fpsbyNNH>
    <div class="card" _ZbDdKFqz="visitorPasswordPrompt" _aOGvRyHA="display: none;">
        <h3>需要授权</h3>
        <p>此站点已启用访客密码,请输入密码以继续。</p>
        <div class="_CFMfwzZu-input-group">
            <input _HBQootdK="_CFMfwzZu" _ZbDdKFqz="visitorPasswordEntry" _dXkHZPec="访客密码">
            <button _ZbDdKFqz="startTestWithPasswordBtn" class="btn">开始测试</button>
        </div>
    </div>
    <div _ZbDdKFqz="_OzeTyzJa" _aOGvRyHA="display: block;">
        <div class="card progress-section">
            <div _ZbDdKFqz="progressDisplay">
                <progress _ZbDdKFqz="_Rndrempy" _JOOlYbab="0" max="100"></progress>
                <div _ZbDdKFqz="status">正在初始化...</div>
            </div>
        </div>
        <div class="card _ePgmURZz-download-section">
          <div class="section-_fpsbyNNH"><h2 _ZbDdKFqz="appDownloadTitleEl"></h2></div>
          <div class="_ePgmURZz-download-buttons">
            <button class="btn" _MoEawSSZ-_kMllJtvk="android">安卓客户端</button>
            <button class="btn" _MoEawSSZ-_kMllJtvk="ios">苹果客户端</button>
            <button class="btn" _MoEawSSZ-_kMllJtvk="windows">Windows客户端</button>
            <button class="btn" _MoEawSSZ-_kMllJtvk="mac">Mac客户端</button>
          </div>
        </div>
        <div class="card _XpVDEcDY-section" _ZbDdKFqz="_OGMtdKRz" _aOGvRyHA="display:none;">
          <div class="section-_fpsbyNNH">
            <h2 _ZbDdKFqz="liveTitleEl"></h2>
            <div class="generator-info" _ZbDdKFqz="liveGeneratorInfo"></div>
          </div>
          <div _ZbDdKFqz="_VqwEilWB" class="_XpVDEcDY-actions-_ItXCZyRI" _aOGvRyHA="display: none;">
             <div class="_XpVDEcDY-api-buttons">
                <button _ZbDdKFqz="copyIpApiBtn" class="btn">复制 IP API</button>
                <button _ZbDdKFqz="copySubscriptionBtn" class="btn">复制订阅</button>
             </div>
          </div>
          <div class="table-responsive">
            <table _ZbDdKFqz="resultsTable">
              <thead><tr><th _ZbDdKFqz="tableHeader1El"></th><th _ZbDdKFqz="tableHeader2El"></th><th _ZbDdKFqz="tableHeader3El"></th><th _ZbDdKFqz="tableHeader4El"></th><th _ZbDdKFqz="tableHeader5El"></th><th _ZbDdKFqz="tableHeader6El"></th><th _ZbDdKFqz="tableHeader7El"></th></tr></thead>
              <tbody></tbody>
            </table>
          </div>
        </div>
        <div class="card cached-section" _ZbDdKFqz="_gbxusszC" _aOGvRyHA="display:none;">
          <div class="section-_fpsbyNNH"><h2 _ZbDdKFqz="cachedTitleEl"></h2><div class="generator-info" _ZbDdKFqz="cachedGeneratorInfo"></div></div>
          <div class="table-responsive">
            <table _ZbDdKFqz="cachedResultsTable">
              <thead><tr><th _ZbDdKFqz="cachedTableHeader1El"></th><th _ZbDdKFqz="cachedTableHeader2El"></th><th _ZbDdKFqz="cachedTableHeader3El"></th><th _ZbDdKFqz="cachedTableHeader4El"></th><th _ZbDdKFqz="cachedTableHeader5El"></th><th _ZbDdKFqz="cachedTableHeader6El"></th><th _ZbDdKFqz="cachedTableHeader7El"></th></tr></thead>
              <tbody></tbody>
            </table>
          </div>
        </div>
    </div>
  </div>
  <div _ZbDdKFqz="notificationTooltip" class="tooltip-notification"></div>
  <div _ZbDdKFqz="_oNXQtXGf">
    <div class="modal-_SsbSJhVa">
      <h3>修改参数</h3>
      <div _aOGvRyHA="display: flex; border-bottom: 1px solid var(--border-_ewKXAcDO); margin-bottom: 1.5rem;">
          <button class="tab-button active" onclick="_DWmmKigi(event, 'general-_roHqXwKt')">通用设置</button>
          <button class="tab-button" onclick="_DWmmKigi(event, '_WZTaQwOR-_roHqXwKt')">链接设置</button>
          <button class="tab-button" onclick="_DWmmKigi(event, 'fine-grained-_roHqXwKt')">IP源设置</button>
          <button class="tab-button" onclick="_DWmmKigi(event, 'advanced-_roHqXwKt')">高级设置</button>
      </div>
      <div _ZbDdKFqz="general-_roHqXwKt" class="tab-_SsbSJhVa" _aOGvRyHA="display: block;">
        <div class="form-grid">
            <div class="form-grid-label"><label for="themeSelect">页面主题</label><span class="tooltip-_dnMbfQCc" _MoEawSSZ-tooltip="选择页面的整体外观风格。">?</span></div>
            <div class="form-grid-control">
                <_JqRyHoaC _ZbDdKFqz="themeSelect">
                    <_UEFCnKXm _JOOlYbab="theme-aurora-glass">极光-玻璃质感</_UEFCnKXm>
                    <_UEFCnKXm _JOOlYbab="theme-particles-glass">粒子-玻璃质感</_UEFCnKXm>
                    <_UEFCnKXm _JOOlYbab="theme-modern-glass">现代-玻璃质感</_UEFCnKXm>
                    <_UEFCnKXm _JOOlYbab="theme-cyberpunk-glass">赛博朋克-玻璃质感</_UEFCnKXm>
                    <_UEFCnKXm _JOOlYbab="theme-dark-particles">暗色-粒子背景</_UEFCnKXm>
                    <_UEFCnKXm _JOOlYbab="theme-dark-bing">暗色-必应壁纸</_UEFCnKXm>
                    <_UEFCnKXm _JOOlYbab="theme-light">亮色-简约</_UEFCnKXm>
                    <_UEFCnKXm _JOOlYbab="theme-light-bing">亮色-必应壁纸</_UEFCnKXm>
                    <_UEFCnKXm _JOOlYbab="theme-marble-light">简约大理石-亮色</_UEFCnKXm>
                    <_UEFCnKXm _JOOlYbab="theme-matrix">矩阵-代码雨</_UEFCnKXm>
                </_JqRyHoaC>
            </div>
            <div class="form-grid-label"><label>主题颜色</label><span class="tooltip-_dnMbfQCc" _MoEawSSZ-tooltip="自定义主题的主要颜色和动态背景效果的颜色。">?</span></div>
            <div class="form-grid-control">
                <label for="primaryColorInput">强调色</label><input _HBQootdK="_ewKXAcDO" _ZbDdKFqz="primaryColorInput">
                <span _aOGvRyHA="_NHILxqjM: 20px;"></span>
                <label for="particleColorInput">背景/粒子色</label><input _HBQootdK="_ewKXAcDO" _ZbDdKFqz="particleColorInput">
            </div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _aOGvRyHA="align-self: start;"><label>页面文本与颜色</label><span class="tooltip-_dnMbfQCc" _MoEawSSZ-tooltip="自定义页面上各个主要元素的显示文本和颜色。">?</span></div>
            <div class="form-grid-control" _aOGvRyHA="flex-direction: column; align-items: stretch; gap: 8px;">
                <div class="_evYOamQn-_ewKXAcDO-grid"><input _HBQootdK="_ewKXAcDO" _ZbDdKFqz="colorInput_title"><textarea _ZbDdKFqz="textInput_title" _HyqfjkNh="1" _dXkHZPec="页面主标题"></textarea></div>
                <div class="_evYOamQn-_ewKXAcDO-grid"><input _HBQootdK="_ewKXAcDO" _ZbDdKFqz="colorInput_loginButton"><input _HBQootdK="_evYOamQn" _ZbDdKFqz="textInput_loginButton" _dXkHZPec="登录按钮文本"></div>
                <div class="_evYOamQn-_ewKXAcDO-grid"><input _HBQootdK="_ewKXAcDO" _ZbDdKFqz="colorInput_appDownloadTitle"><input _HBQootdK="_evYOamQn" _ZbDdKFqz="textInput_appDownloadTitle" _dXkHZPec="APP下载标题"></div>
                <div class="_evYOamQn-_ewKXAcDO-grid"><input _HBQootdK="_ewKXAcDO" _ZbDdKFqz="colorInput_liveTitle"><input _HBQootdK="_evYOamQn" _ZbDdKFqz="textInput_liveTitle" _dXkHZPec="本次结果标题"></div>
                <div class="_evYOamQn-_ewKXAcDO-grid"><input _HBQootdK="_ewKXAcDO" _ZbDdKFqz="colorInput_cachedTitle"><input _HBQootdK="_evYOamQn" _ZbDdKFqz="textInput_cachedTitle" _dXkHZPec="上次结果标题"></div>
                <div class="_evYOamQn-_ewKXAcDO-grid"><input _HBQootdK="_ewKXAcDO" _ZbDdKFqz="colorInput_tableHeader"><input _HBQootdK="_evYOamQn" _JOOlYbab="表格头部文本颜色" readonly _aOGvRyHA="background: transparent; border: none;"></div>
            </div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _aOGvRyHA="align-self: start;"><label>公告栏设置</label><span class="tooltip-_dnMbfQCc" _MoEawSSZ-tooltip="设置在页面显示的公告内容和方式。">?</span></div>
            <div class="form-grid-control" _aOGvRyHA="flex-direction: column; align-items: stretch; gap: 8px;">
                 <textarea _ZbDdKFqz="announcementText" _dXkHZPec="在此输入公告内容" _HyqfjkNh="3"></textarea>
                 <div _aOGvRyHA="display: flex; justify-_SsbSJhVa: space-around; align-items: center; gap: 1rem; flex-wrap: wrap;">
                    <label _aOGvRyHA="display: flex; align-items: center; gap: 5px;"><input _HBQootdK="checkbox" _ZbDdKFqz="enableMarquee"> 顶部走马灯</label>
                    <label _aOGvRyHA="display: flex; align-items: center; gap: 5px;"><input _HBQootdK="checkbox" _ZbDdKFqz="enablePopup"> 右上角弹窗</label>
                    <div _ZbDdKFqz="popupDurationContainer" _aOGvRyHA="display: none; align-items: center; gap: 5px;">
                        <label for="popupDuration">停留</label><input _HBQootdK="number" _ZbDdKFqz="popupDuration" _aOGvRyHA="_NHILxqjM: 60px;"><span>秒</span>
                    </div>
                 </div>
            </div>
        </div>
      </div>
      <div _ZbDdKFqz="_WZTaQwOR-_roHqXwKt" class="tab-_SsbSJhVa">
        <div class="form-grid">
          <div class="form-grid-label"><label for="converterServiceUrlInput">Sublink 服务地址</label><span class="tooltip-_dnMbfQCc" _MoEawSSZ-tooltip="您部署的Sublink服务的域名,例如 https://sub.example.com">?</span></div>
          <div class="form-grid-control"><input _HBQootdK="_evYOamQn" _ZbDdKFqz="converterServiceUrlInput" _dXkHZPec="https://sub.example.com"></div>
          <div class="form-grid-label"><label for="subscriptionIdLength">订阅ID长度</label><span class="tooltip-_dnMbfQCc" _MoEawSSZ-tooltip="生成订阅链接时使用的随机ID长度(2-128位)">?</span></div>
          <div class="form-grid-control"><input _HBQootdK="number" _ZbDdKFqz="subscriptionIdLength" min="2" max="128"></div>
          <div class="form-grid-label" _aOGvRyHA="align-self: start;"><label for="subscriptionIdCharset">ID使用字符集</label><span class="tooltip-_dnMbfQCc" _MoEawSSZ-tooltip="生成ID时从这些字符中随机选择。请使用URL安全的字符。">?</span></div>
          <div class="form-grid-control"><textarea _ZbDdKFqz="subscriptionIdCharset" _HyqfjkNh="3"></textarea></div>
          <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
          <div class="form-grid-label"><label for="enableItemLinkCheckbox">启用"复制节点链接"按钮</label><span class="tooltip-_dnMbfQCc" _MoEawSSZ-tooltip="为结果IP添加复制配置链接的按钮。">?</span></div>
          <div class="form-grid-control" _aOGvRyHA="justify-_SsbSJhVa: flex-start;"><input _HBQootdK="checkbox" _ZbDdKFqz="enableItemLinkCheckbox"></div>
        </div>
        <div _ZbDdKFqz="itemLinkConfigGroup" _aOGvRyHA="display:none; margin-_rVIHOODS: 1rem;">
          <div class="form-grid">
              <div class="form-grid-label" _aOGvRyHA="align-self: start;"><label for="itemLinkTemplateInput">分享链接模板</label><span class="tooltip-_dnMbfQCc" _MoEawSSZ-tooltip="定义分享链接格式。可用占位符: {_TfMvYJJJ}, {_FsMjiIin}, {_xxcJNnBe}, {rank}, {_tVQdJaQY}, {_jslTkSeX}, {_iFIiuxri}, {_CoSPatla}, {_pxKyKJFQ}。">?</span></div>
              <div class="form-grid-control"><textarea _ZbDdKFqz="itemLinkTemplateInput" _HyqfjkNh="4"></textarea></div>
              <div class="form-grid-label"><label for="parameterSelectionMode">参数使用模式</label><span class="tooltip-_dnMbfQCc" _MoEawSSZ-tooltip="当定义了多组参数时,如何为每个IP分配。">?</span></div>
              <div class="form-grid-control"><_JqRyHoaC _ZbDdKFqz="parameterSelectionMode"></_JqRyHoaC></div>
              <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
              <div class="form-grid-control-full"><div _ZbDdKFqz="parameter-sets-_ItXCZyRI"></div><button _HBQootdK="button" _ZbDdKFqz="add-parameter-_HbvIBjJh-btn" class="btn btn-outline" _aOGvRyHA="margin-_rVIHOODS: 10px;">添加参数组</button></div>
              <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
              <div class="form-grid-label" _aOGvRyHA="align-self: start;"><label>其他自定义占位符</label><span class="tooltip-_dnMbfQCc" _MoEawSSZ-tooltip="创建您自己的占位符,并在模板中使用。">?</span></div>
              <div class="form-grid-control"><div _ZbDdKFqz="custom-fields-_ItXCZyRI" _aOGvRyHA="_NHILxqjM: 100%;"></div></div>
              <div class="form-grid-label"></div><div class="form-grid-control" _aOGvRyHA="justify-_SsbSJhVa: flex-start;"><button _HBQootdK="button" _ZbDdKFqz="add-custom-field-btn" class="btn btn-outline">添加自定义字段</button></div>
          </div>
        </div>
      </div>
      <div _ZbDdKFqz="fine-grained-_roHqXwKt" class="tab-_SsbSJhVa">
          <div class="form-grid-label" _aOGvRyHA="grid-column: 1 / -1; justify-self: start;"><label>地区与IP源</label><span class="tooltip-_dnMbfQCc" _MoEawSSZ-tooltip="定义不同地区的IP来源。启用并设置百分比后,它们将根据高级设置中“IP源设置”的总比例进行分配。">?</span></div>
          <div class="form-grid-control-full" _aOGvRyHA="display: flex; gap: 1rem; margin-bottom: 1rem; justify-_SsbSJhVa: flex-start;">
              <label><input _HBQootdK="checkbox" _ZbDdKFqz="enableAllSourcesCheckbox"> 一键启用所有源</label>
              <label><input _HBQootdK="checkbox" _ZbDdKFqz="disableAllSourcesCheckbox"> 一键取消所有源</label>
          </div>
          <div class="form-grid-control-full"><div _ZbDdKFqz="fine-grained-sources-_ItXCZyRI"></div><button _HBQootdK="button" _ZbDdKFqz="add-fine-grained-_UYXpKKDY-btn" class="btn btn-outline" _aOGvRyHA="margin-_rVIHOODS: 10px;">添加地区</button></div>
      </div>
      <div _ZbDdKFqz="advanced-_roHqXwKt" class="tab-_SsbSJhVa">
        <div class="form-grid">
            <div class="form-grid-label"><label for="useResolvedDomainsCheckbox">域名解析IP</label><span class="tooltip-_dnMbfQCc" _MoEawSSZ-tooltip="此处填写优选域名,即可使用优选域名的IP作为筛选源,作为不死IP备用">?</span></div>
            <div class="form-grid-control"><input _HBQootdK="checkbox" _ZbDdKFqz="useResolvedDomainsCheckbox"></div>
            <div class="form-grid-control-full" _ZbDdKFqz="resolvedDomainsGroup" _aOGvRyHA="display:none;"><div class="form-grid"><div class="form-grid-label"></div><div class="form-grid-control"><textarea _ZbDdKFqz="resolvedDomainsInput" _dXkHZPec="留空则使用内置默认域名" _HyqfjkNh="3"></textarea></div></div></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label"><label for="enableCustomNodesCheckbox">启用自定义节点</label><span class="tooltip-_dnMbfQCc" _MoEawSSZ-tooltip="启用后,将在订阅列表顶部添加您在此处指定的节点地址,例:1.1.1.1#443@名称  、 或:1.1.1.1@名称 (无端口则默认443)">?</span></div>
            <div class="form-grid-control"><input _HBQootdK="checkbox" _ZbDdKFqz="enableCustomNodesCheckbox"></div>
            <div class="form-grid-control-full" _ZbDdKFqz="customNodesGroup" _aOGvRyHA="display:none;"><div class="form-grid"><div class="form-grid-label"></div><div class="form-grid-control"><textarea _ZbDdKFqz="customNodesInput" _dXkHZPec="一行一个地址,支持域名、IPv4、IPv6。" _HyqfjkNh="3"></textarea></div></div></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label"><label for="sampleSizeInput">测试IP总数</label><span class="tooltip-_dnMbfQCc" _MoEawSSZ-tooltip="从所有启用的IP源中随机抽取的IP总数量。">?</span></div>
            <div class="form-grid-control"><input _HBQootdK="number" _ZbDdKFqz="sampleSizeInput"></div>
            <div class="form-grid-label"><label for="topNInput">最终获取IP数量</label><span class="tooltip-_dnMbfQCc" _MoEawSSZ-tooltip="测试完成后,在结果列表中显示的延迟最低的IP数量。">?</span></div>
            <div class="form-grid-control"><input _HBQootdK="number" _ZbDdKFqz="topNInput"></div>
            <div class="form-grid-label" _aOGvRyHA="display: none;"><label>延迟随机数范围 (ms)</label><span class="tooltip-_dnMbfQCc" _MoEawSSZ-tooltip="为每个测试结果的延迟增加一个在此范围内的随机值。">?</span></div>
            <div class="form-grid-control" _aOGvRyHA="display: none;"><input _HBQootdK="number" _ZbDdKFqz="latencyRangeMinInput" _dXkHZPec="最小"><span>-</span><input _HBQootdK="number" _ZbDdKFqz="latencyRangeMaxInput" _dXkHZPec="最大"></div>
            <div class="form-grid-label"><label for="enableIspFilterCheckbox">仅保留Cloudflare IP</label><span class="tooltip-_dnMbfQCc" _MoEawSSZ-tooltip="启用后,最终结果将只显示归属于Cloudflare的IP地址。">?</span></div>
            <div class="form-grid-control" _aOGvRyHA="justify-_SsbSJhVa: flex-start;"><input _HBQootdK="checkbox" _ZbDdKFqz="enableIspFilterCheckbox"></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label"><label for="geoLocationRetriesInput">归属地查询失败复查</label><span class="tooltip-_dnMbfQCc" _MoEawSSZ-tooltip="当部分IP归属地查询失败时,额外尝试查询的次数。">?</span></div>
            <div class="form-grid-control">
                <input _HBQootdK="number" _ZbDdKFqz="geoLocationRetriesInput" _aOGvRyHA="_NHILxqjM: 80px;"> <span>次</span>
                <div _aOGvRyHA="display: flex; align-items: center; gap: 5px; margin-_YGyPwWRe: 20px;">
                    <input _HBQootdK="checkbox" _ZbDdKFqz="filterUnknownGeoCheckbox">
                    <label for="filterUnknownGeoCheckbox">过滤未知归属地IP</label>
                </div>
            </div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label"><label for="universalFallbackAddressInput">备用地址 (上游)</label><span class="tooltip-_dnMbfQCc" _MoEawSSZ-tooltip="所有WebSocket连接失败时使用的全局回退目标地址,格式为 '_iFIiuxri:_FsMjiIin' 或 '_iFIiuxri'。">?</span></div>
            <div class="form-grid-control"><input _HBQootdK="_evYOamQn" _ZbDdKFqz="universalFallbackAddressInput"></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label"><label for="enableWebsocketStreamerCheckbox">启用 Websocket 转发</label><span class="tooltip-_dnMbfQCc" _MoEawSSZ-tooltip="启用后, 将禁用自身的代理功能, 所有WebSocket请求将转发到指定地址。HTTP请求不受影响。节点生成规则也将改变。">?</span></div>
            <div class="form-grid-control" _aOGvRyHA="justify-_SsbSJhVa: flex-start;"><input _HBQootdK="checkbox" _ZbDdKFqz="enableWebsocketStreamerCheckbox"></div>
            <div class="form-grid-control-full" _ZbDdKFqz="websocketStreamerGroup" _aOGvRyHA="display:none;">
                <div class="form-grid">
                    <div class="form-grid-label"><label for="websocketStreamerUrlInput">转发目标地址</label></div>
                    <div class="form-grid-control"><input _HBQootdK="_evYOamQn" _ZbDdKFqz="websocketStreamerUrlInput"></div>
                </div>
            </div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label"><label for="enableStreamerCheckbox">启用内置内容加速</label><span class="tooltip-_dnMbfQCc" _MoEawSSZ-tooltip="通过Worker加速部分外部资源。">?</span></div>
            <div class="form-grid-control" _aOGvRyHA="justify-_SsbSJhVa: flex-start;"><input _HBQootdK="checkbox" _ZbDdKFqz="enableStreamerCheckbox"></div>
            <div class="form-grid-label"><label for="enableApiCheckbox">启用 API</label><span class="tooltip-_dnMbfQCc" _MoEawSSZ-tooltip="启用 /_TfMvYJJJ 和 /api/endpoints 接口。">?</span></div>
            <div class="form-grid-control" _aOGvRyHA="justify-_SsbSJhVa: flex-start;"><input _HBQootdK="checkbox" _ZbDdKFqz="enableApiCheckbox"></div>
            <div class="form-grid-control-full" _ZbDdKFqz="apiConfigGroup" _aOGvRyHA="display:none;">
                <div class="form-grid"><div class="form-grid-label"><label for="apiMessageInput">API关闭时提示</label></div><div class="form-grid-control"><input _HBQootdK="_evYOamQn" _ZbDdKFqz="apiMessageInput"></div></div>
            </div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label"><label for="enableCustomSubPathCheckbox">启用自定义订阅路径</label><span class="tooltip-_dnMbfQCc" _MoEawSSZ-tooltip="创建一个固定路径,始终指向最新的优选结果。路径中请勿使用 / 等特殊字符。">?</span></div>
            <div class="form-grid-control" _aOGvRyHA="justify-_SsbSJhVa: flex-start;"><input _HBQootdK="checkbox" _ZbDdKFqz="enableCustomSubPathCheckbox"></div>
            <div class="form-grid-control-full" _ZbDdKFqz="customSubPathGroup" _aOGvRyHA="display:none;"><div class="form-grid"><div class="form-grid-label"><label for="customSubPathInput">设置路径</label></div><div class="form-grid-control"><input _HBQootdK="_evYOamQn" _ZbDdKFqz="customSubPathInput" _dXkHZPec="例如: latest"></div></div></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label"><label for="enableVisitorPasswordCheckbox">启用访客密码</label><span class="tooltip-_dnMbfQCc" _MoEawSSZ-tooltip="要求访客在开始测速前输入密码。">?</span></div>
            <div class="form-grid-control" _aOGvRyHA="justify-_SsbSJhVa: flex-start;"><input _HBQootdK="checkbox" _ZbDdKFqz="enableVisitorPasswordCheckbox"></div>
            <div class="form-grid-control-full" _ZbDdKFqz="visitorPasswordGroup" _aOGvRyHA="display:none;"><div class="form-grid"><div class="form-grid-label"><label for="visitorPasswordInput">设置访客密码</label></div><div class="form-grid-control"><input _HBQootdK="_evYOamQn" _ZbDdKFqz="visitorPasswordInput"></div></div></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _aOGvRyHA="align-self: start;"><label>Telegram 通知</label><span class="tooltip-_dnMbfQCc" _MoEawSSZ-tooltip="配置后,当有访客访问页面时,您将收到通知。">?</span></div>
            <div class="form-grid-control" _aOGvRyHA="flex-direction: column; align-items: stretch; gap: 8px;"><input _HBQootdK="_evYOamQn" _ZbDdKFqz="botTokenInput" _dXkHZPec="Telegram Bot Token"><input _HBQootdK="_evYOamQn" _ZbDdKFqz="chatIdInput" _dXkHZPec="Telegram Chat ID"></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _aOGvRyHA="align-self: start;"><label>修改管理员密码</label></div>
            <div class="form-grid-control" _aOGvRyHA="flex-direction: column; align-items: stretch; gap: 8px;"><input _HBQootdK="_CFMfwzZu" _ZbDdKFqz="oldPasswordInput" _dXkHZPec="旧密码"><input _HBQootdK="_CFMfwzZu" _ZbDdKFqz="newPasswordInput" _dXkHZPec="新密码 (至少6位)"><button _ZbDdKFqz="changePasswordBtn" class="btn" _aOGvRyHA="align-self: flex-start; margin-_YGyPwWRe: 0;">确认修改</button></div>
        </div>
      </div>
      <div class="modal-buttons"><button _ZbDdKFqz="closeModalBtn" class="btn btn-outline">关闭</button><button _ZbDdKFqz="saveParamsBtn" class="btn">保存并刷新</button></div>
    </div>
  </div>
  <div _ZbDdKFqz="_oghAOJQe">
      <div class="_ePgmURZz-modal-_SsbSJhVa">
          <div class="_ePgmURZz-modal-_fpsbyNNH"><h3 _ZbDdKFqz="appModalTitle"></h3><button class="modal-close-btn">×</button></div>
          <div class="_ePgmURZz-modal-_DsxCXtGH" _ZbDdKFqz="appModalBody"></div>
      </div>
  </div>
  <div _ZbDdKFqz="_YwzzMmVZ">
      <div class="modal-_SsbSJhVa">
          <h3>复制订阅链接</h3>
          <div class="button-grid">
              <div class="btn-group"><button class="btn sub-btn" _MoEawSSZ-sub-_HBQootdK="coreEngine">Xray</button><button class="btn _FQfFMdjj-btn" _MoEawSSZ-sub-_HBQootdK="coreEngine">Q</button></div>
              <div class="btn-group"><button class="btn sub-btn" _MoEawSSZ-sub-_HBQootdK="coreProfile">Sing-Box</button><button class="btn _FQfFMdjj-btn" _MoEawSSZ-sub-_HBQootdK="coreProfile">Q</button></div>
              <div class="btn-group"><button class="btn sub-btn" _MoEawSSZ-sub-_HBQootdK="configProfile">Clash</button><button class="btn _FQfFMdjj-btn" _MoEawSSZ-sub-_HBQootdK="configProfile">Q</button></div>
              <div class="btn-group"><button class="btn sub-btn" _MoEawSSZ-sub-_HBQootdK="policyProfile">Surge</button><button class="btn _FQfFMdjj-btn" _MoEawSSZ-sub-_HBQootdK="policyProfile">Q</button></div>
          </div>
          <div class="modal-buttons" _aOGvRyHA="justify-_SsbSJhVa: center;"><button class="btn btn-outline" _ZbDdKFqz="closeSubModalBtn">关闭</button></div>
      </div>
  </div>
  <div _ZbDdKFqz="_wQjPVkUo">
      <div class="modal-_SsbSJhVa">
          <img _ZbDdKFqz="qrCodeImg" src="" alt="QR Code">
      </div>
  </div>
<script>
    const _BTIwmtPs = {
        isValid: (_TfMvYJJJ) => _BTIwmtPs.isIPv4(_TfMvYJJJ) || _BTIwmtPs.isIPv6(_TfMvYJJJ),
        isIPv4: (_TfMvYJJJ) => {
            if (typeof _TfMvYJJJ !== 'string') return false;
            const _ZNzjLrgz = _TfMvYJJJ.split('.');
            if (_ZNzjLrgz._INBMIOUv !== 4) return false;
            return _ZNzjLrgz.every(_SkAkOlHH => {
                const _XmMqzLNO = parseInt(_SkAkOlHH, 10);
                return !isNaN(_XmMqzLNO) && _XmMqzLNO >= 0 && _XmMqzLNO <= 255 && String(_XmMqzLNO) === _SkAkOlHH;
            });
        },
        isIPv6: (_TfMvYJJJ) => {
            if (typeof _TfMvYJJJ !== 'string') return false;
            return /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/_DwqCbJFR.test(_TfMvYJJJ);
        },
        toLong4: (_TfMvYJJJ) => _TfMvYJJJ.split('.').reduce((acc, octet, _DwqCbJFR) => acc + (parseInt(octet) << (8*(3-_DwqCbJFR))),0)>>>0,
        fromLong4: (long) => [(long>>>24)&0xFF,(long>>>16)&0xFF,(long>>>8)&0xFF,long&0xFF].join('.'),
        toBigInt6: (_TfMvYJJJ) => {
            try {
                const _KmlNffAd = _TfMvYJJJ.split('/')[0];
                const _ZNzjLrgz = _KmlNffAd.split('::');
                if (_ZNzjLrgz._INBMIOUv > 2) return 0n;
                let _oOMXcFcq = [];
                if (_ZNzjLrgz[0]) {
                    _oOMXcFcq = _ZNzjLrgz[0].split(':');
                }
                let _JKFlYWSV = [];
                if (_ZNzjLrgz._INBMIOUv > 1 && _ZNzjLrgz[1]) {
                    _JKFlYWSV = _ZNzjLrgz[1].split(':');
                }
                if (_oOMXcFcq._INBMIOUv + _JKFlYWSV._INBMIOUv > 8) return 0n;
                const _RimSJSDo = 8 - (_oOMXcFcq._INBMIOUv + _JKFlYWSV._INBMIOUv);
                const _typvTbpv = [
                    ..._oOMXcFcq,
                    ...Array(_RimSJSDo).fill('0'),
                    ..._JKFlYWSV
                ].map(_SkAkOlHH => _SkAkOlHH || '0');
                while(_typvTbpv._INBMIOUv < 8) {
                    _typvTbpv.push('0');
                }
                let _LLTZakHn = 0n;
                for (const _SkAkOlHH of _typvTbpv) {
                    if (_SkAkOlHH._INBMIOUv > 4) return 0n;
                    const _JOOlYbab = BigInt('0x' + _SkAkOlHH);
                    _LLTZakHn = (_LLTZakHn << 16n) | _JOOlYbab;
                }
                return _LLTZakHn;
            } catch(_LfwZJXgS) {
                return 0n;
            }
        },
        fromBigInt6: (_LLTZakHn) => {
            if (typeof _LLTZakHn !== '_LLTZakHn' || _LLTZakHn < 0n) return null;
            const _ZNzjLrgz = [];
            for (let _DwqCbJFR = 0; _DwqCbJFR < 8; _DwqCbJFR++) {
                _ZNzjLrgz.unshift((_LLTZakHn & 0xFFFFn).toString(16));
                _LLTZakHn >>= 16n;
            }
            let _vllELEwN = { start: -1, _UAOylmAz: 0 };
            let _RXzsPxBK = { start: -1, _UAOylmAz: 0 };
            for (let _DwqCbJFR = 0; _DwqCbJFR < 8; _DwqCbJFR++) {
                if (_ZNzjLrgz[_DwqCbJFR] === '0') {
                    if (_RXzsPxBK.start === -1) _RXzsPxBK.start = _DwqCbJFR;
                    _RXzsPxBK._UAOylmAz++;
                } else {
                    if (_RXzsPxBK._UAOylmAz > _vllELEwN._UAOylmAz) _vllELEwN = { ..._RXzsPxBK };
                    _RXzsPxBK = { start: -1, _UAOylmAz: 0 };
                }
            }
            if (_RXzsPxBK._UAOylmAz > _vllELEwN._UAOylmAz) _vllELEwN = { ..._RXzsPxBK };
            if (_vllELEwN._UAOylmAz > 1) {
                _ZNzjLrgz.splice(_vllELEwN.start, _vllELEwN._UAOylmAz, '');
                if (_vllELEwN.start === 0) _ZNzjLrgz.unshift('');
                if (_vllELEwN.start + _vllELEwN._UAOylmAz === 8) _ZNzjLrgz.push('');
            }
            return _ZNzjLrgz.join(':');
        },
        cidrToRange: (cidr, _HkRwsJLL = 1) => {
            try {
                const [range, bitsStr] = cidr.split('/');
                const _dRnSwTRe = parseInt(bitsStr, 10);
                const _oWwSOqCE = new Set();
                if (_BTIwmtPs.isIPv4(range)) {
                    if (isNaN(_dRnSwTRe) || _dRnSwTRe < 8 || _dRnSwTRe > 32) return [];
                    if (_dRnSwTRe === 32) return [range];
                    const _ACIkShZp = _BTIwmtPs.toLong4(range);
                    const _DujhaPzY = (0xFFFFFFFF << (32 - _dRnSwTRe)) >>> 0;
                    const _NDnqviyv = _ACIkShZp & _DujhaPzY;
                    const _RUZViJrS = 1 << (32 - _dRnSwTRe);
                    if (_RUZViJrS <= 2) return [];
                    const _uVrQhXaC = Math.min(_HkRwsJLL, _RUZViJrS - 2);
                    let _MXvLcRMH = 0;
                    while (_oWwSOqCE.size < _uVrQhXaC && _MXvLcRMH < _uVrQhXaC * 5) {
                        const _jSodobYQ = Math.floor(Math.random() * (_RUZViJrS - 2)) + 1;
                        _oWwSOqCE.add(_BTIwmtPs.fromLong4((_NDnqviyv + _jSodobYQ) >>> 0));
                        _MXvLcRMH++;
                    }
                    return Array.from(_oWwSOqCE);
                } else if (_BTIwmtPs.isIPv6(range)) {
                    if (isNaN(_dRnSwTRe) || _dRnSwTRe < 16 || _dRnSwTRe > 128) return [];
                    if (_dRnSwTRe === 128) return [range];
                    const _EspzvhXg = _BTIwmtPs.toBigInt6(range);
                    const _DujhaPzY = (2n ** BigInt(128 - _dRnSwTRe) - 1n);
                    const _NDnqviyv = _EspzvhXg & ~_DujhaPzY;
                    const _ePvGpXmI = 2n ** BigInt(128 - _dRnSwTRe);
                    if (_ePvGpXmI <= 2n) return [];
                    let _MXvLcRMH = 0;
                    while (_oWwSOqCE.size < _HkRwsJLL && _MXvLcRMH < _HkRwsJLL * 5) {
                        const _yeZYpwjQ = new Uint8Array(16);
                        (typeof crypto !== 'undefined' ? crypto : self.crypto).getRandomValues(_yeZYpwjQ);
                        let _LaWhrYmO = 0n;
                        for (const _caNHWEum of _yeZYpwjQ) {
                            _LaWhrYmO = (_LaWhrYmO << 8n) | BigInt(_caNHWEum);
                        }
                        const _jSodobYQ = _LaWhrYmO % (_ePvGpXmI - 2n) + 1n;
                        _oWwSOqCE.add(_BTIwmtPs.fromBigInt6(_NDnqviyv + _jSodobYQ));
                        _MXvLcRMH++;
                    }
                    return Array.from(_oWwSOqCE);
                }
                return [];
            } catch(_LfwZJXgS) {
                console.error(`CIDR to range failed for ${cidr}:`, _LfwZJXgS);
                return [];
            }
        }
    };
    function _mDhvdkxL(_QnlkFYMk, _kzOCqBAg) {
        const _PWkymEaM = {};
        const _rKoRETOE = Object._rKoRETOE(_kzOCqBAg);
        const _ZNzjLrgz = _rKoRETOE.map(_YgqOlFUZ => {
            const _oILFxdXt = _QnlkFYMk * (_kzOCqBAg[_YgqOlFUZ] / 100);
            return { _YgqOlFUZ, _HkRwsJLL: Math.floor(_oILFxdXt), remainder: _oILFxdXt - Math.floor(_oILFxdXt) };
        });
        let _PhEBKQrE = _ZNzjLrgz.reduce((acc, _SkAkOlHH) => acc + _SkAkOlHH._HkRwsJLL, 0);
        _ZNzjLrgz.sort((a, b) => b.remainder - a.remainder);
        let _WzfLoHls = _QnlkFYMk - _PhEBKQrE;
        for (let _DwqCbJFR = 0; _DwqCbJFR < _WzfLoHls; _DwqCbJFR++) {
            _ZNzjLrgz[_DwqCbJFR % _ZNzjLrgz._INBMIOUv]._HkRwsJLL++;
        }
        for (const _SkAkOlHH of _ZNzjLrgz) {
            _PWkymEaM[_SkAkOlHH._YgqOlFUZ] = _SkAkOlHH._HkRwsJLL;
        }
        return _PWkymEaM;
    }
    const _ucNVXofI = __PAGE_DATA_JSON__;
    const _tDDyIANp = _ucNVXofI._YiXTnbQd;
    const _vNIaQXdG = _ucNVXofI.status;
    const _LpulAmsQ = __ALL_CF_CIDR_LIST_JSON__;
    const _vPrrmvOz = __BALANCED_CF_CIDR_LIST_JSON__;
    const _hHIWjbwB = __DEFAULT_DOMAINS_LIST_JSON__;
    const _wifTkUsQ = __COUNTRY_MAP_JSON__;
    const _qndTPmWc = _wifTkUsQ;
    const _UeCIrtib = 2500;
    const _JHuOGkum = navigator.hardwareConcurrency ? Math.min(16, navigator.hardwareConcurrency * 2) : 8;
    const _OzeTyzJa = document.getElementById('_OzeTyzJa');
    const _Rndrempy = document.getElementById('_Rndrempy');
    const _poVcDdYJ = document.getElementById('status');
    const _OGMtdKRz = document.getElementById('_OGMtdKRz');
    const _UmHlsJVx = document.getElementById('resultsTable').querySelector('tbody');
    const _gbxusszC = document.getElementById('_gbxusszC');
    const _IuUviUSx = document.getElementById('cachedResultsTable').querySelector('tbody');
    const _rgQNUXlv = document.getElementById('notificationTooltip');
    const _WYwcDBVJ = document.getElementById('_WYwcDBVJ');
    const _oNXQtXGf = document.getElementById('_oNXQtXGf');
    const _oghAOJQe = document.getElementById('_oghAOJQe');
    const _YwzzMmVZ = document.getElementById('_YwzzMmVZ');
    const _wQjPVkUo = document.getElementById('_wQjPVkUo');
    const _INbsoaji = document.getElementById('_INbsoaji');
    const _VqwEilWB = document.getElementById('_VqwEilWB');
    let _QiAmQREU = null;
    let _FgzLiexf = null;
    let _dwDJxpxt = [];
    let _IKpLteGJ = false;
    let _dEKZtHUO = null;
    function _HvsnvMqH(_tvnwTjzG, _LRlgGKAO) {
        const _waWKzpkb=parseInt(_tvnwTjzG.slice(1),16),t=_LRlgGKAO<0?0:255,p=_LRlgGKAO<0?_LRlgGKAO*-1:_LRlgGKAO,R=_waWKzpkb>>16,G=_waWKzpkb>>8&0x00FF,B=_waWKzpkb&0x0000FF;
        const _kgyoXQeV = Math.round((t-R)*p)+R;
        const _rIwQMgNd = Math.round((t-G)*p)+G;
        const _CYtZykbp = Math.round((t-B)*p)+B;
        return `rgb(${_kgyoXQeV.toString()}, ${_rIwQMgNd.toString()}, ${_CYtZykbp.toString()})`;
    }
    function _pjZdMMMb(_roHqXwKt) {
        const _wNOWaXky = _foYmLSWz(_roHqXwKt.primaryColor);
        if(_wNOWaXky) {
            document.documentElement._aOGvRyHA.setProperty('--primary-_ewKXAcDO-rgb', `${_wNOWaXky.r},${_wNOWaXky.g},${_wNOWaXky.b}`);
        }
        document.documentElement._aOGvRyHA.setProperty('--primary-_ewKXAcDO', _roHqXwKt.primaryColor);
        document.documentElement._aOGvRyHA.setProperty('--primary-hover', _HvsnvMqH(_roHqXwKt.primaryColor, -0.1));
        document.documentElement._aOGvRyHA.setProperty('--primary-gradient-start', _HvsnvMqH(_roHqXwKt.primaryColor, 0.1));
        document.documentElement._aOGvRyHA.setProperty('--primary-gradient-end', _HvsnvMqH(_roHqXwKt.primaryColor, -0.1));
        document.getElementById('pageTitle').innerText = _roHqXwKt.texts.title;
        document.title = _roHqXwKt.texts.title;
        _WYwcDBVJ.innerText = _QiAmQREU ? _roHqXwKt.texts.loginButtonSuccess : _roHqXwKt.texts.loginButton;
        _WYwcDBVJ._aOGvRyHA._ewKXAcDO = _roHqXwKt.colors.loginButton;
        document.getElementById('appDownloadTitleEl').innerText = _roHqXwKt.texts.appDownloadTitle;
        document.getElementById('liveTitleEl').innerText = _roHqXwKt.texts.liveTitle;
        document.getElementById('liveTitleEl')._aOGvRyHA._ewKXAcDO = _roHqXwKt.colors.liveTitle;
        document.getElementById('cachedTitleEl').innerText = _roHqXwKt.texts.cachedTitle;
        document.getElementById('cachedTitleEl')._aOGvRyHA._ewKXAcDO = _roHqXwKt.colors.cachedTitle;
        const _FkdqCqtw = ['tableHeader1El', 'tableHeader2El', 'tableHeader3El', 'tableHeader4El', 'tableHeader5El', 'tableHeader6El', 'tableHeader7El'];
        _FkdqCqtw.forEach((_ZbDdKFqz, _GsxRNrdU) => {
            const _VeKMgsRI = document.getElementById(_ZbDdKFqz);
            if (_VeKMgsRI) _VeKMgsRI.innerText = _roHqXwKt.texts[`tableHeader${_GsxRNrdU + 1}`] || '';
        });
        const _zrZcjXmA = ['cachedTableHeader1El', 'cachedTableHeader2El', 'cachedTableHeader3El', 'cachedTableHeader4El', 'cachedTableHeader5El', 'cachedTableHeader6El', 'cachedTableHeader7El'];
        _zrZcjXmA.forEach((_ZbDdKFqz, _GsxRNrdU) => {
             const _VeKMgsRI = document.getElementById(_ZbDdKFqz);
             if (_VeKMgsRI) _VeKMgsRI.innerText = _tDDyIANp.texts[`tableHeader${_GsxRNrdU + 1}`] || '';
        });
        document.querySelectorAll('th').forEach(th => th._aOGvRyHA._ewKXAcDO = _roHqXwKt.colors.tableHeader);
        document._DsxCXtGH.className = '';
        document._DsxCXtGH.classList.add(_roHqXwKt.theme);
        if (['theme-particles-glass', 'theme-modern-glass', 'theme-aurora-glass', 'theme-cyberpunk-glass'].includes(_roHqXwKt.theme)) {
            document._DsxCXtGH.classList.add('glassy-components');
        }
        document._DsxCXtGH._aOGvRyHA.backgroundImage = '';
        _nnrlkooG();
        if (_roHqXwKt.theme.includes('particles') || _roHqXwKt.theme.includes('glass')) {
            _skgngkqE(_roHqXwKt.particleColor);
        } else if (_roHqXwKt.theme.includes('bing')) {
            document._DsxCXtGH._aOGvRyHA.backgroundImage = '_dyGmaEyH(/bing-wallpaper)';
        }
    }
    function _SCLRxmiD() {
        _QiAmQREU = null;
        if(_FgzLiexf) clearTimeout(_FgzLiexf);
        _pjZdMMMb(_tDDyIANp);
        _aPhGaGsr("登录已超时,请重新登录。", "warning");
    }
    async function _TWwLDHKJ() {
        if (_QiAmQREU) {
            _egnGulDe();
            return;
        }
        const _LuKIkvoV = prompt('请输入管理员密码:');
        if (!_LuKIkvoV) return;
        try {
            const _ErBuCYWR = await fetch('/api/verify-_CFMfwzZu', {
                method: 'POST',
                _FkdqCqtw: { 'Content-Type': 'application/json' },
                _DsxCXtGH: JSON.stringify({ _CFMfwzZu: _LuKIkvoV })
            });
            const _xJQlMDUP = await _ErBuCYWR.json();
            if (_xJQlMDUP.success) {
                _QiAmQREU = _LuKIkvoV;
                _aPhGaGsr("登录成功!有效期5分钟。", "success");
                if (_FgzLiexf) clearTimeout(_FgzLiexf);
                _FgzLiexf = setTimeout(_SCLRxmiD, 5 * 60 * 1000);
                _pjZdMMMb(_tDDyIANp);
                _egnGulDe();
            } else {
                throw new Error(_xJQlMDUP._NuhYLxME || '密码验证失败');
            }
        } catch (_LfwZJXgS) {
            _aPhGaGsr(`登录失败: ${_LfwZJXgS._NuhYLxME}`, "error");
        }
    }
    function _thMzzQDM() {
        if (!_vNIaQXdG._HXMpdGNP) {
            _INbsoaji._aOGvRyHA.display = 'flex';
            document.getElementById('setInitialPasswordBtn').addEventListener('click', async () => {
                const _CFMfwzZu = document.getElementById('initialPassword')._JOOlYbab;
                const _qfCeDuLz = document.getElementById('confirmPassword')._JOOlYbab;
                if (_CFMfwzZu !== _qfCeDuLz) {
                    _aPhGaGsr("两次输入的密码不一致!", "error");
                    return;
                }
                if (_CFMfwzZu._INBMIOUv < 6) {
                    _aPhGaGsr("密码长度不能少于6位!", "error");
                    return;
                }
                try {
                    const _ErBuCYWR = await fetch('/api/_HbvIBjJh-_CFMfwzZu', {
                        method: 'POST',
                        _FkdqCqtw: { 'Content-Type': 'application/json' },
                        _DsxCXtGH: JSON.stringify({ _CFMfwzZu })
                    });
                    const _xJQlMDUP = await _ErBuCYWR.json();
                    if (_xJQlMDUP.success) {
                        _aPhGaGsr(_xJQlMDUP._NuhYLxME, "success");
                        setTimeout(() => _tVQdJaQY.reload(), 1500);
                    } else {
                        throw new Error(_xJQlMDUP._NuhYLxME);
                    }
                } catch(_LfwZJXgS) {
                    _aPhGaGsr(`设置密码失败: ${_LfwZJXgS._NuhYLxME}`, "error");
                }
            });
            return;
        }
        _WYwcDBVJ.addEventListener('click', _TWwLDHKJ);
        document.getElementById('closeModalBtn').addEventListener('click', () => { _oNXQtXGf._aOGvRyHA.display = 'none'; });
        _oNXQtXGf.addEventListener('click', (_LfwZJXgS) => { if (_LfwZJXgS.target === _oNXQtXGf) _oNXQtXGf._aOGvRyHA.display = 'none'; });
        
        document.getElementById('enableAllSourcesCheckbox').addEventListener('change', function() {
            if (this.checked) {
                document.querySelectorAll('#fine-grained-sources-_ItXCZyRI .fine-grained-_ImHVJKEY-cb').forEach(cb => cb.checked = true);
                document.getElementById('disableAllSourcesCheckbox').checked = false;
                this.checked = false; 
            }
        });
        document.getElementById('disableAllSourcesCheckbox').addEventListener('change', function() {
            if (this.checked) {
                document.querySelectorAll('#fine-grained-sources-_ItXCZyRI .fine-grained-_ImHVJKEY-cb').forEach(cb => cb.checked = false);
                document.getElementById('enableAllSourcesCheckbox').checked = false;
                this.checked = false;
            }
        });

        document.getElementById('saveParamsBtn').addEventListener('click', async () => {
            if (!_QiAmQREU) {
                _aPhGaGsr("请先通过点击右上角按钮输入密码。", "error");
                return;
            }
            const _qRLRpmnh = [];
            document.querySelectorAll('#custom-fields-_ItXCZyRI .custom-field-_uSayhGfc').forEach(_uSayhGfc => {
                const _xxcJNnBe = _uSayhGfc.querySelector('.custom-field-_xxcJNnBe')._JOOlYbab.trim();
                const _JOOlYbab = _uSayhGfc.querySelector('.custom-field-_JOOlYbab')._JOOlYbab.trim();
                if (_xxcJNnBe) _qRLRpmnh.push({ _xxcJNnBe, _JOOlYbab });
            });
            const _pOwpCXWE = [];
            document.querySelectorAll('#parameter-sets-_ItXCZyRI .parameter-_HbvIBjJh-_uSayhGfc').forEach(_uSayhGfc => {
                const _xxcJNnBe = _uSayhGfc.querySelector('.param-_HbvIBjJh-_xxcJNnBe')._JOOlYbab.trim();
                const _iFIiuxri = _uSayhGfc.querySelector('.param-_HbvIBjJh-_iFIiuxri')._JOOlYbab.trim();
                const _CoSPatla = _uSayhGfc.querySelector('.param-_HbvIBjJh-_CoSPatla')._JOOlYbab.trim();
                const _pxKyKJFQ = _uSayhGfc.querySelector('.param-_HbvIBjJh-_pxKyKJFQ')._JOOlYbab.trim();
                if(_xxcJNnBe) _pOwpCXWE.push({ _xxcJNnBe, _iFIiuxri, '_CoSPatla': _CoSPatla, _pxKyKJFQ });
            });
            const _MYyLizZF = [];
            document.querySelectorAll('#fine-grained-sources-_ItXCZyRI .fine-grained-_UYXpKKDY-_uSayhGfc').forEach(_uSayhGfc => {
                const _tVQdJaQY = _uSayhGfc.querySelector('.fine-grained-_tVQdJaQY')._JOOlYbab.trim();
                const _oWwSOqCE = _uSayhGfc.querySelector('.fine-grained-_oWwSOqCE')._JOOlYbab.trim();
                const _ImHVJKEY = _uSayhGfc.querySelector('.fine-grained-_ImHVJKEY-cb').checked;
                const _xpwwvVDY = parseInt(_uSayhGfc.querySelector('.fine-grained-_xpwwvVDY')._JOOlYbab, 10) || 0;
                const _SPwhPEWv = _uSayhGfc.querySelector('.use-_xxcJNnBe-as-_tVQdJaQY-cb').checked;
                if (_tVQdJaQY && _oWwSOqCE) {
                    _MYyLizZF.push({ _tVQdJaQY, _oWwSOqCE, _ImHVJKEY, _xpwwvVDY, _SPwhPEWv });
                }
            });
            
            let _dSQjuErz = parseInt(document.getElementById('subscriptionIdLength')._JOOlYbab, 10);
            if (isNaN(_dSQjuErz) || _dSQjuErz < 2) _dSQjuErz = 2;
            if (_dSQjuErz > 128) _dSQjuErz = 128;

            const _nWQIRFbj = {
                theme: document.getElementById('themeSelect')._JOOlYbab,
                primaryColor: document.getElementById('primaryColorInput')._JOOlYbab,
                particleColor: document.getElementById('particleColorInput')._JOOlYbab,
                useResolvedDomains: document.getElementById('useResolvedDomainsCheckbox').checked,
                resolvedDomains: document.getElementById('resolvedDomainsInput')._JOOlYbab,
                sampleSize: parseInt(document.getElementById('sampleSizeInput')._JOOlYbab, 10) || 1000,
                topN: parseInt(document.getElementById('topNInput')._JOOlYbab, 10) || 15,
                rttRandomMin: parseInt(document.getElementById('latencyRangeMinInput')._JOOlYbab, 10) || 0,
                rttRandomMax: parseInt(document.getElementById('latencyRangeMaxInput')._JOOlYbab, 10) || 0,
                _oMuOaEqc: document.getElementById('converterServiceUrlInput')._JOOlYbab.trim(),
                subscriptionId: {
                    _INBMIOUv: _dSQjuErz,
                    _GpdJPFce: document.getElementById('subscriptionIdCharset')._JOOlYbab.trim()
                },
                api: {
                    _ImHVJKEY: document.getElementById('enableApiCheckbox').checked,
                    _NuhYLxME: document.getElementById('apiMessageInput')._JOOlYbab || '维护中...',
                },
                ispFilter: { 
                    _ImHVJKEY: document.getElementById('enableIspFilterCheckbox').checked 
                },
                geoLocation: {
                    retries: parseInt(document.getElementById('geoLocationRetriesInput')._JOOlYbab, 10) || 0,
                    filterUnknown: document.getElementById('filterUnknownGeoCheckbox').checked
                },
                streamer: {
                    _ImHVJKEY: document.getElementById('enableStreamerCheckbox').checked
                },
                websocketStreamer: {
                    _ImHVJKEY: document.getElementById('enableWebsocketStreamerCheckbox').checked,
                    _dyGmaEyH: document.getElementById('websocketStreamerUrlInput')._JOOlYbab.trim()
                },
                visitorPassword: {
                    _ImHVJKEY: document.getElementById('enableVisitorPasswordCheckbox').checked,
                    _CFMfwzZu: document.getElementById('visitorPasswordInput')._JOOlYbab.trim()
                },
                customSubPath: {
                    _ImHVJKEY: document.getElementById('enableCustomSubPathCheckbox').checked,
                    _pxKyKJFQ: document.getElementById('customSubPathInput')._JOOlYbab.trim()
                },
                itemLink: {
                    _ImHVJKEY: document.getElementById('enableItemLinkCheckbox').checked,
                    template: document.getElementById('itemLinkTemplateInput')._JOOlYbab,
                    selectionMode: document.getElementById('parameterSelectionMode')._JOOlYbab,
                    _pOwpCXWE: _pOwpCXWE,
                    _qRLRpmnh: _qRLRpmnh,
                },
                dataFeeds: {
                    universalFallbackAddress: document.getElementById('universalFallbackAddressInput')._JOOlYbab.trim(),
                },
                announcement: {
                    popup: {
                        _ImHVJKEY: document.getElementById('enablePopup').checked,
                        _evYOamQn: document.getElementById('announcementText')._JOOlYbab,
                        _nrAldcqa: parseInt(document.getElementById('popupDuration')._JOOlYbab, 10) || 5
                    },
                    marquee: {
                        _ImHVJKEY: document.getElementById('enableMarquee').checked,
                        _evYOamQn: document.getElementById('announcementText')._JOOlYbab
                    }
                },
                fineGrained: {
                    _ImHVJKEY: true,
                    sources: _MYyLizZF
                },
                customNodes: {
                    _ImHVJKEY: document.getElementById('enableCustomNodesCheckbox').checked,
                    list: document.getElementById('customNodesInput')._JOOlYbab
                },
                texts: {
                    title: document.getElementById('textInput_title')._JOOlYbab,
                    loginButton: document.getElementById('textInput_loginButton')._JOOlYbab,
                    loginButtonSuccess: '修改参数',
                    appDownloadTitle: document.getElementById('textInput_appDownloadTitle')._JOOlYbab,
                    liveTitle: document.getElementById('textInput_liveTitle')._JOOlYbab,
                    cachedTitle: document.getElementById('textInput_cachedTitle')._JOOlYbab,
                },
                colors: {
                    title: document.getElementById('colorInput_title')._JOOlYbab,
                    loginButton: document.getElementById('colorInput_loginButton')._JOOlYbab,
                    liveTitle: document.getElementById('colorInput_liveTitle')._JOOlYbab,
                    cachedTitle: document.getElementById('colorInput_cachedTitle')._JOOlYbab,
                    tableHeader: document.getElementById('colorInput_tableHeader')._JOOlYbab,
                },
                telegram: {
                    bot_token: document.getElementById('botTokenInput')._JOOlYbab.trim(),
                    chat_id: document.getElementById('chatIdInput')._JOOlYbab.trim(),
                },
            };
            try {
                const _ErBuCYWR = await fetch('/api/_YiXTnbQd', {
                    method: 'POST',
                    _FkdqCqtw: { 'Content-Type': 'application/json' },
                    _DsxCXtGH: JSON.stringify({ _YiXTnbQd: _nWQIRFbj, adminPassword: _QiAmQREU })
                });
                const _xJQlMDUP = await _ErBuCYWR.json();
                if (_ErBuCYWR.ok && _xJQlMDUP.success) {
                    _aPhGaGsr("配置已保存,正在刷新...", "success");
                    setTimeout(() => _tVQdJaQY.reload(), 1500);
                } else {
                    throw new Error(_xJQlMDUP._NuhYLxME || '未知错误');
                }
            } catch (_LfwZJXgS) {
                _aPhGaGsr(`操作失败: ${_LfwZJXgS._NuhYLxME}`, "error");
                if (String(_LfwZJXgS._NuhYLxME).includes("密码错误")) {
                    _SCLRxmiD();
                }
            }
        });
        document.getElementById('changePasswordBtn').addEventListener('click', async () => {
            const _NhdBqiet = document.getElementById('oldPasswordInput')._JOOlYbab;
            const _UkLoXuyI = document.getElementById('newPasswordInput')._JOOlYbab;
            if (!_NhdBqiet || !_UkLoXuyI) {
                _aPhGaGsr("新旧密码均不能为空!", "error");
                return;
            }
             try {
                const _ErBuCYWR = await fetch('/api/change-_CFMfwzZu', {
                    method: 'POST',
                    _FkdqCqtw: { 'Content-Type': 'application/json' },
                    _DsxCXtGH: JSON.stringify({ _NhdBqiet, _UkLoXuyI })
                });
                const _xJQlMDUP = await _ErBuCYWR.json();
                if (_xJQlMDUP.success) {
                    _aPhGaGsr(_xJQlMDUP._NuhYLxME, "success");
                    document.getElementById('oldPasswordInput')._JOOlYbab = '';
                    document.getElementById('newPasswordInput')._JOOlYbab = '';
                    _QiAmQREU = _UkLoXuyI;
                } else {
                    throw new Error(_xJQlMDUP._NuhYLxME);
                }
            } catch(_LfwZJXgS) {
                _aPhGaGsr(`修改密码失败: ${_LfwZJXgS._NuhYLxME}`, "error");
            }
        });
        document.getElementById('useResolvedDomainsCheckbox').addEventListener('change', (_LfwZJXgS) => {
            document.getElementById('resolvedDomainsGroup')._aOGvRyHA.display = _LfwZJXgS.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableCustomNodesCheckbox').addEventListener('change', (_LfwZJXgS) => {
            document.getElementById('customNodesGroup')._aOGvRyHA.display = _LfwZJXgS.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableApiCheckbox').addEventListener('change', (_LfwZJXgS) => {
            document.getElementById('apiConfigGroup')._aOGvRyHA.display = _LfwZJXgS.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableItemLinkCheckbox').addEventListener('change', (_LfwZJXgS) => {
            document.getElementById('itemLinkConfigGroup')._aOGvRyHA.display = _LfwZJXgS.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableWebsocketStreamerCheckbox').addEventListener('change', (_LfwZJXgS) => {
            document.getElementById('websocketStreamerGroup')._aOGvRyHA.display = _LfwZJXgS.target.checked ? 'block' : 'none';
            const _JhMDFaOm = document.querySelector('#parameter-sets-_ItXCZyRI .param-_HbvIBjJh-_pxKyKJFQ');
            if (_JhMDFaOm) {
                if (_LfwZJXgS.target.checked) {
                    _JhMDFaOm._JOOlYbab = '/snippets?_TfMvYJJJ=endpointAddress:_FsMjiIin(443)&nat64=6to4';
                } else {
                    _JhMDFaOm._JOOlYbab = '/?ed=2560';
                }
            }
        });
         document.getElementById('add-custom-field-btn').addEventListener('click', () => {
             _MReBDYMV('', '');
        });
        document.getElementById('add-parameter-_HbvIBjJh-btn').addEventListener('click', () => {
            const _HkRwsJLL = document.querySelectorAll('.parameter-_HbvIBjJh-_uSayhGfc')._INBMIOUv + 1;
            _ErRxDZnH({_xxcJNnBe: `配置${_HkRwsJLL}`, _iFIiuxri: '', _CoSPatla: '', _pxKyKJFQ: ''});
            _SLmtPiOl();
        });
         document.getElementById('add-fine-grained-_UYXpKKDY-btn').addEventListener('click', () => {
             _oaWmoILu({ _tVQdJaQY: '', _oWwSOqCE: '', _ImHVJKEY: true, _xpwwvVDY: 50, _SPwhPEWv: false });
        });
        document.getElementById('enableVisitorPasswordCheckbox').addEventListener('change', (_LfwZJXgS) => {
            document.getElementById('visitorPasswordGroup')._aOGvRyHA.display = _LfwZJXgS.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableCustomSubPathCheckbox').addEventListener('change', (_LfwZJXgS) => {
            document.getElementById('customSubPathGroup')._aOGvRyHA.display = _LfwZJXgS.target.checked ? 'block' : 'none';
        });
        document.getElementById('enablePopup').addEventListener('change', (_LfwZJXgS) => {
            document.getElementById('popupDurationContainer')._aOGvRyHA.display = _LfwZJXgS.target.checked ? 'flex' : 'none';
        });
    }
    function _MReBDYMV(_xxcJNnBe, _JOOlYbab) {
        const _ItXCZyRI = document.getElementById('custom-fields-_ItXCZyRI');
        const _AelLlbNm = document.createElement('div');
        _AelLlbNm.className = 'form-grid custom-field-_uSayhGfc';
        _AelLlbNm._aOGvRyHA = 'grid-template-columns: 1fr 1fr auto; gap: 5px; margin-bottom: 5px;';
        _AelLlbNm.innerHTML = `
            <input _HBQootdK="_evYOamQn" class="custom-field-_xxcJNnBe" _dXkHZPec="占位符名称" _JOOlYbab="${_xxcJNnBe}">
            <input _HBQootdK="_evYOamQn" class="custom-field-_JOOlYbab" _dXkHZPec="值" _JOOlYbab="${_JOOlYbab}">
            <button _HBQootdK="button" class="btn btn-outline" onclick="this.closest('.form-grid').remove()">删除</button>
        `;
        _ItXCZyRI.appendChild(_AelLlbNm);
    }
    function _ErRxDZnH(_HbvIBjJh) {
        const _ItXCZyRI = document.getElementById('parameter-sets-_ItXCZyRI');
        const _AelLlbNm = document.createElement('div');
        _AelLlbNm.className = 'parameter-_HbvIBjJh-_uSayhGfc';
        _AelLlbNm.innerHTML = `
            <div class="parameter-_HbvIBjJh-_fpsbyNNH">
                <input _HBQootdK="_evYOamQn" class="param-_HbvIBjJh-_xxcJNnBe" _dXkHZPec="配置名称" _JOOlYbab="${_HbvIBjJh._xxcJNnBe}" oninput="_SLmtPiOl()">
                <button _HBQootdK="button" class="btn btn-outline" onclick="this.closest('.parameter-_HbvIBjJh-_uSayhGfc').remove(); _SLmtPiOl();">删除</button>
            </div>
            <div class="form-grid">
                <div class="form-grid-label"><label>Host</label></div><div class="form-grid-control"><input _HBQootdK="_evYOamQn" class="param-_HbvIBjJh-_iFIiuxri" _JOOlYbab="${_HbvIBjJh._iFIiuxri || ''}"></div>
                <div class="form-grid-label"><label>ID</label></div><div class="form-grid-control"><input _HBQootdK="_evYOamQn" class="param-_HbvIBjJh-_CoSPatla" _JOOlYbab="${_HbvIBjJh['_CoSPatla'] || ''}"></div>
                <div class="form-grid-label"><label>Path</label></div><div class="form-grid-control"><input _HBQootdK="_evYOamQn" class="param-_HbvIBjJh-_pxKyKJFQ" _JOOlYbab="${_HbvIBjJh._pxKyKJFQ || ''}"></div>
            </div>
        `;
        _ItXCZyRI.appendChild(_AelLlbNm);
    }
    function _SLmtPiOl() {
        const _JqRyHoaC = document.getElementById('parameterSelectionMode');
        const _fkwDVqaB = _JqRyHoaC._JOOlYbab;
        _JqRyHoaC.innerHTML = '';
        const _vNiuLcFz = document.createElement('_UEFCnKXm');
        _vNiuLcFz._JOOlYbab = 'random';
        _vNiuLcFz.textContent = '随机轮询';
        _JqRyHoaC.appendChild(_vNiuLcFz);
        const _qJLutIKL = document.createElement('_UEFCnKXm');
        _qJLutIKL._JOOlYbab = 'first';
        _qJLutIKL.textContent = '使用第一组';
        _JqRyHoaC.appendChild(_qJLutIKL);
        document.querySelectorAll('.param-_HbvIBjJh-_xxcJNnBe').forEach(input => {
            const _xxcJNnBe = input._JOOlYbab.trim();
            if (_xxcJNnBe) {
                const _UEFCnKXm = document.createElement('_UEFCnKXm');
                _UEFCnKXm._JOOlYbab = _xxcJNnBe;
                _UEFCnKXm.textContent = `指定: ${_xxcJNnBe}`;
                _JqRyHoaC.appendChild(_UEFCnKXm);
            }
        });
        if (Array.from(_JqRyHoaC.options).some(opt => opt._JOOlYbab === _fkwDVqaB)) {
            _JqRyHoaC._JOOlYbab = _fkwDVqaB;
        } else {
            _JqRyHoaC._JOOlYbab = 'random';
        }
    }
    function _oaWmoILu(_UYXpKKDY) {
        const _ItXCZyRI = document.getElementById('fine-grained-sources-_ItXCZyRI');
        const _AelLlbNm = document.createElement('div');
        _AelLlbNm.className = 'fine-grained-_UYXpKKDY-_uSayhGfc parameter-_HbvIBjJh-_uSayhGfc';
        _AelLlbNm._aOGvRyHA.padding = '1rem';
        const _FoSlqtUp = _UYXpKKDY._SPwhPEWv ? 'checked' : '';
        const _yBwpwTzO = !_UYXpKKDY._SPwhPEWv ? 'checked' : '';
        const _SbJpJldm = _UYXpKKDY._ImHVJKEY ? 'checked' : '';
        _AelLlbNm.innerHTML = `
            <div _aOGvRyHA="display: grid; grid-template-columns: 1fr auto auto; gap: 10px; align-items: center; margin-bottom: 1rem;">
                <input _HBQootdK="_evYOamQn" class="fine-grained-_tVQdJaQY" _dXkHZPec="地区名称 (如: 香港)" _JOOlYbab="${_UYXpKKDY._tVQdJaQY || ''}">
                <div _aOGvRyHA="display: flex; align-items: center; gap: 5px;"><input _HBQootdK="checkbox" class="fine-grained-_ImHVJKEY-cb" ${_SbJpJldm}><label>启用</label></div>
                <button _HBQootdK="button" class="btn btn-outline" onclick="this.closest('.fine-grained-_UYXpKKDY-_uSayhGfc').remove()">删除</button>
            </div>
            <textarea class="fine-grained-_oWwSOqCE" _dXkHZPec="IP源 (每行一个IP、CIDR或URL)" _HyqfjkNh="3" _aOGvRyHA="_NHILxqjM:100%;">${_UYXpKKDY._oWwSOqCE || ''}</textarea>
            <div class="fine-grained-options" _aOGvRyHA="justify-_SsbSJhVa: space-between;">
                <div _aOGvRyHA="display: flex; gap: 1rem;">
                    <label><input _HBQootdK="checkbox" class="query-_ptFcgxVh-cb" ${_yBwpwTzO}>查询真实归属地</label>
                    <label><input _HBQootdK="checkbox" class="use-_xxcJNnBe-as-_tVQdJaQY-cb" ${_FoSlqtUp}>使用地区名称作为归属地</label>
                </div>
                <div _aOGvRyHA="display: flex; align-items: center; gap: 5px;"><input _HBQootdK="number" class="fine-grained-_xpwwvVDY _xpwwvVDY-input" _JOOlYbab="${_UYXpKKDY._xpwwvVDY || 0}" min="0" max="100"><span>%</span></div>
            </div>
        `;
        const _ADXkDYCc = _AelLlbNm.querySelector('.query-_ptFcgxVh-cb');
        const _EPXefzAK = _AelLlbNm.querySelector('.use-_xxcJNnBe-as-_tVQdJaQY-cb');
        _ADXkDYCc.addEventListener('change', () => {
            if (_ADXkDYCc.checked) {
                _EPXefzAK.checked = false;
            } else if (!_EPXefzAK.checked) {
                _ADXkDYCc.checked = true;
            }
        });
        _EPXefzAK.addEventListener('change', () => {
            if (_EPXefzAK.checked) {
                _ADXkDYCc.checked = false;
            } else if (!_EPXefzAK.checked) {
                _EPXefzAK.checked = true;
            }
        });
        _ItXCZyRI.appendChild(_AelLlbNm);
    }
    function _egnGulDe() {
        const _roHqXwKt = _tDDyIANp;
        document.getElementById('themeSelect')._JOOlYbab = _roHqXwKt.theme;
        document.getElementById('primaryColorInput')._JOOlYbab = _roHqXwKt.primaryColor;
        document.getElementById('particleColorInput')._JOOlYbab = _roHqXwKt.particleColor;
        document.getElementById('useResolvedDomainsCheckbox').checked = _roHqXwKt.useResolvedDomains;
        document.getElementById('resolvedDomainsInput')._dXkHZPec = '留空则使用内置默认域名';
        document.getElementById('resolvedDomainsInput')._JOOlYbab = _roHqXwKt.resolvedDomains || '';
        document.getElementById('resolvedDomainsGroup')._aOGvRyHA.display = _roHqXwKt.useResolvedDomains ? 'block' : 'none';
        document.getElementById('enableCustomNodesCheckbox').checked = _roHqXwKt.customNodes._ImHVJKEY;
        document.getElementById('customNodesInput')._JOOlYbab = _roHqXwKt.customNodes.list || '';
        document.getElementById('customNodesGroup')._aOGvRyHA.display = _roHqXwKt.customNodes._ImHVJKEY ? 'block' : 'none';
        document.getElementById('converterServiceUrlInput')._JOOlYbab = _roHqXwKt._oMuOaEqc || '';
        document.getElementById('subscriptionIdLength')._JOOlYbab = _roHqXwKt.subscriptionId._INBMIOUv;
        document.getElementById('subscriptionIdCharset')._JOOlYbab = _roHqXwKt.subscriptionId._GpdJPFce;
        document.getElementById('enableItemLinkCheckbox').checked = _roHqXwKt.itemLink._ImHVJKEY;
        document.getElementById('itemLinkConfigGroup')._aOGvRyHA.display = _roHqXwKt.itemLink._ImHVJKEY ? 'block' : 'none';
        document.getElementById('itemLinkTemplateInput')._JOOlYbab = _roHqXwKt.itemLink.template;
        const _lDtFFasi = document.getElementById('parameter-sets-_ItXCZyRI');
        _lDtFFasi.innerHTML = '';
        if (_roHqXwKt.itemLink._pOwpCXWE && Array.isArray(_roHqXwKt.itemLink._pOwpCXWE)) {
            _roHqXwKt.itemLink._pOwpCXWE.forEach(_HbvIBjJh => _ErRxDZnH(_HbvIBjJh));
        }
        _SLmtPiOl();
        document.getElementById('parameterSelectionMode')._JOOlYbab = _roHqXwKt.itemLink.selectionMode || 'random';
        const _JhMDFaOm = document.querySelector('#parameter-sets-_ItXCZyRI .param-_HbvIBjJh-_pxKyKJFQ');
        if (_JhMDFaOm && _roHqXwKt.websocketStreamer && _roHqXwKt.websocketStreamer._ImHVJKEY) {
            _JhMDFaOm._JOOlYbab = '/snippets?_TfMvYJJJ=endpointAddress:_FsMjiIin(443)&nat64=6to4';
        }
        const _xAMmpZrN = document.getElementById('custom-fields-_ItXCZyRI');
        _xAMmpZrN.innerHTML = '';
        if (_roHqXwKt.itemLink._qRLRpmnh && Array.isArray(_roHqXwKt.itemLink._qRLRpmnh)) {
            _roHqXwKt.itemLink._qRLRpmnh.forEach(field => _MReBDYMV(field._xxcJNnBe, field._JOOlYbab));
        }
        document.getElementById('universalFallbackAddressInput')._JOOlYbab = _roHqXwKt.dataFeeds.universalFallbackAddress || '';
        const _jKnvSvLJ = _roHqXwKt.websocketStreamer && _roHqXwKt.websocketStreamer._ImHVJKEY;
        document.getElementById('enableWebsocketStreamerCheckbox').checked = _jKnvSvLJ;
        document.getElementById('websocketStreamerUrlInput')._JOOlYbab = _roHqXwKt.websocketStreamer ? _roHqXwKt.websocketStreamer._dyGmaEyH : 'https://snippets.neib.cn';
        document.getElementById('websocketStreamerGroup')._aOGvRyHA.display = _jKnvSvLJ ? 'block' : 'none';
        const _uLJIaDiT = _roHqXwKt.announcement || {};
        document.getElementById('announcementText')._JOOlYbab = (_uLJIaDiT.popup && _uLJIaDiT.popup._evYOamQn) || (_uLJIaDiT.marquee && _uLJIaDiT.marquee._evYOamQn) || '';
        document.getElementById('enableMarquee').checked = _uLJIaDiT.marquee && _uLJIaDiT.marquee._ImHVJKEY;
        document.getElementById('enablePopup').checked = _uLJIaDiT.popup && _uLJIaDiT.popup._ImHVJKEY;
        document.getElementById('popupDuration')._JOOlYbab = (_uLJIaDiT.popup && _uLJIaDiT.popup._nrAldcqa) || 5;
        document.getElementById('popupDurationContainer')._aOGvRyHA.display = (_uLJIaDiT.popup && _uLJIaDiT.popup._ImHVJKEY) ? 'flex' : 'none';
        const _fLYFHiQN = document.getElementById('fine-grained-sources-_ItXCZyRI');
        _fLYFHiQN.innerHTML = '';
        if (_roHqXwKt.fineGrained.sources && Array.isArray(_roHqXwKt.fineGrained.sources)) {
            _roHqXwKt.fineGrained.sources.forEach(_UYXpKKDY => _oaWmoILu(_UYXpKKDY));
        }
        document.getElementById('sampleSizeInput')._JOOlYbab = _roHqXwKt.sampleSize;
        document.getElementById('topNInput')._JOOlYbab = _roHqXwKt.topN;
        document.getElementById('latencyRangeMinInput')._JOOlYbab = _roHqXwKt.rttRandomMin;
        document.getElementById('latencyRangeMaxInput')._JOOlYbab = _roHqXwKt.rttRandomMax;
        document.getElementById('enableIspFilterCheckbox').checked = _roHqXwKt.ispFilter._ImHVJKEY;
        const _DRYHMlFw = _roHqXwKt.geoLocation || { retries: 1, filterUnknown: false };
        document.getElementById('geoLocationRetriesInput')._JOOlYbab = _DRYHMlFw.retries;
        document.getElementById('filterUnknownGeoCheckbox').checked = _DRYHMlFw.filterUnknown;
        document.getElementById('enableStreamerCheckbox').checked = _roHqXwKt.streamer._ImHVJKEY;
        document.getElementById('enableApiCheckbox').checked = _roHqXwKt.api._ImHVJKEY;
        document.getElementById('apiConfigGroup')._aOGvRyHA.display = _roHqXwKt.api._ImHVJKEY ? 'block' : 'none';
        document.getElementById('apiMessageInput')._JOOlYbab = _roHqXwKt.api._NuhYLxME;
        const _KrEBbSAc = _roHqXwKt.customSubPath && _roHqXwKt.customSubPath._ImHVJKEY;
        document.getElementById('enableCustomSubPathCheckbox').checked = _KrEBbSAc;
        document.getElementById('customSubPathInput')._JOOlYbab = _roHqXwKt.customSubPath ? _roHqXwKt.customSubPath._pxKyKJFQ : 'latest';
        document.getElementById('customSubPathGroup')._aOGvRyHA.display = _KrEBbSAc ? 'block' : 'none';
        const _FSeGceVB = _roHqXwKt.visitorPassword && _roHqXwKt.visitorPassword._ImHVJKEY;
        document.getElementById('enableVisitorPasswordCheckbox').checked = _FSeGceVB;
        document.getElementById('visitorPasswordInput')._JOOlYbab = _roHqXwKt.visitorPassword ? _roHqXwKt.visitorPassword._CFMfwzZu : '';
        document.getElementById('visitorPasswordGroup')._aOGvRyHA.display = _FSeGceVB ? 'block' : 'none';
        document.getElementById('textInput_title')._JOOlYbab = _roHqXwKt.texts.title;
        document.getElementById('textInput_loginButton')._JOOlYbab = _roHqXwKt.texts.loginButton;
        document.getElementById('textInput_appDownloadTitle')._JOOlYbab = _roHqXwKt.texts.appDownloadTitle;
        document.getElementById('textInput_liveTitle')._JOOlYbab = _roHqXwKt.texts.liveTitle;
        document.getElementById('textInput_cachedTitle')._JOOlYbab = _roHqXwKt.texts.cachedTitle;
        document.getElementById('colorInput_title')._JOOlYbab = _roHqXwKt.colors.title;
        document.getElementById('colorInput_loginButton')._JOOlYbab = _roHqXwKt.colors.loginButton;
        document.getElementById('colorInput_liveTitle')._JOOlYbab = _roHqXwKt.colors.liveTitle;
        document.getElementById('colorInput_cachedTitle')._JOOlYbab = _roHqXwKt.colors.cachedTitle;
        document.getElementById('colorInput_tableHeader')._JOOlYbab = _roHqXwKt.colors.tableHeader;
        document.getElementById('botTokenInput')._JOOlYbab = _roHqXwKt.telegram.bot_token || '';
        document.getElementById('chatIdInput')._JOOlYbab = _roHqXwKt.telegram.chat_id || '';
        _oNXQtXGf._aOGvRyHA.display = 'flex';
    }
    function _lNxAUlqK(_LuJGLsIC) {
        if (window.innerWidth <= 768) {
            const _HyqfjkNh = _LuJGLsIC.querySelectorAll('thead tr, tbody tr');
            _HyqfjkNh.forEach(_uSayhGfc => {
                const _YyAVCPlO = Array.from(_uSayhGfc.children);
                const _oXbPnJzJ = [
                    _YyAVCPlO[0],
                    _YyAVCPlO[1],
                    _YyAVCPlO[3],
                    _YyAVCPlO[6],
                    _YyAVCPlO[2],
                    _YyAVCPlO[4],
                    _YyAVCPlO[5]
                ];
                _oXbPnJzJ.forEach(cell => _uSayhGfc.appendChild(cell));
            });
        }
    }
    async function _HHtvqDJD() {
        if (!_vNIaQXdG._HXMpdGNP) {
            _thMzzQDM();
            return;
        }
        if (_tDDyIANp.announcement && _tDDyIANp.announcement.marquee && _tDDyIANp.announcement.marquee._ImHVJKEY && _tDDyIANp.announcement.marquee._evYOamQn) {
            const _CFmAtVnU = document.getElementById('marquee-_ItXCZyRI');
            const _bvrYPGNN = document.getElementById('marquee-_evYOamQn');
            const _YeVETdzz = document.querySelector('.progress-section');
            if (_CFmAtVnU && _bvrYPGNN && _YeVETdzz) {
                _bvrYPGNN.innerText = _tDDyIANp.announcement.marquee._evYOamQn;
                _CFmAtVnU._aOGvRyHA.display = 'block';
                const _qkYIYkcs = () => {
                    _CFmAtVnU._aOGvRyHA._NHILxqjM = `${_YeVETdzz.offsetWidth}px`;
                    const _WdPyltmu = _bvrYPGNN.offsetWidth;
                    const _RQGTSlYR = _CFmAtVnU.offsetWidth;
                    const _nrAldcqa = (_WdPyltmu + _RQGTSlYR) / 100;
                    _bvrYPGNN._aOGvRyHA.animationDuration = `${Math.max(10, _nrAldcqa)}s`;
                };
                _qkYIYkcs();
                window.addEventListener('resize', _qkYIYkcs);
            }
        }
        
        _pjZdMMMb(_tDDyIANp);
        
        if (_tDDyIANp.announcement && _tDDyIANp.announcement.popup && _tDDyIANp.announcement.popup._ImHVJKEY && _tDDyIANp.announcement.popup._evYOamQn) {
            setTimeout(() => {
                _aPhGaGsr(_tDDyIANp.announcement.popup._evYOamQn, 'info', _tDDyIANp.announcement.popup._nrAldcqa * 1000);
            }, 500);
        }
        _thMzzQDM();
        _wCLonzFl();
        _KlgkQLSe();
        _msOhopEE();
        await _PVQFkhjV();
        document.getElementById('copyIpApiBtn').addEventListener('click', () => {
            const _kCsKUyoq = window._tVQdJaQY.origin + '/_TfMvYJJJ';
            navigator.clipboard.writeText(_kCsKUyoq).then(() => {
                _aPhGaGsr('IP 列表 API 地址已复制!', 'success');
            });
        });
        if (_tDDyIANp.visitorPassword && _tDDyIANp.visitorPassword._ImHVJKEY) {
            _OzeTyzJa._aOGvRyHA.display = 'none';
            const _MwLcAEIu = document.getElementById('visitorPasswordPrompt');
            _MwLcAEIu._aOGvRyHA.display = 'block';
            const _UUkzNvXz = document.getElementById('visitorPasswordEntry');
            const _RWssuslP = document.getElementById('startTestWithPasswordBtn');
            const _ADyOYtRW = async () => {
                const _CFMfwzZu = _UUkzNvXz._JOOlYbab;
                if (!_CFMfwzZu) {
                    _aPhGaGsr('请输入访客密码', 'warning');
                    return;
                }
                try {
                    const _ErBuCYWR = await fetch('/api/verify-visitor-_CFMfwzZu', {
                        method: 'POST',
                        _FkdqCqtw: { 'Content-Type': 'application/json' },
                        _DsxCXtGH: JSON.stringify({ _CFMfwzZu })
                    });
                    const _xJQlMDUP = await _ErBuCYWR.json();
                    if (_ErBuCYWR.ok && _xJQlMDUP.success) {
                        _aPhGaGsr('验证成功,开始测试...', 'success');
                        _MwLcAEIu._aOGvRyHA.display = 'none';
                        _OzeTyzJa._aOGvRyHA.display = 'block';
                        await _NQrYvXwA();
                    } else {
                        throw new Error(_xJQlMDUP._NuhYLxME || '密码错误');
                    }
                } catch (_LfwZJXgS) {
                    _aPhGaGsr(`验证失败: ${_LfwZJXgS._NuhYLxME}`, "error");
                    _UUkzNvXz._JOOlYbab = '';
                    _UUkzNvXz.focus();
                }
            };
            _RWssuslP.addEventListener('click', _ADyOYtRW);
            _UUkzNvXz.addEventListener('keypress', (_LfwZJXgS) => {
                if (_LfwZJXgS._YgqOlFUZ === 'Enter') {
                    _LfwZJXgS.preventDefault();
                    _ADyOYtRW();
                }
            });
            _UUkzNvXz.focus();
        } else {
            _poVcDdYJ.textContent = "页面加载完成,准备开始测试...";
            await _hrEsCPQh(100);
            await _NQrYvXwA();
        }
    }
    async function _hrEsCPQh(ms = 0) { await new Promise(resolve => setTimeout(resolve, ms)); }
    function _foYmLSWz(_tvnwTjzG) {
      let _xJQlMDUP = /^#?([a-_waWKzpkb\d]{2})([a-_waWKzpkb\d]{2})([a-_waWKzpkb\d]{2})$/_DwqCbJFR.exec(_tvnwTjzG);
      return _xJQlMDUP ? { r: parseInt(_xJQlMDUP[1], 16), g: parseInt(_xJQlMDUP[2], 16), b: parseInt(_xJQlMDUP[3], 16) } : null;
    }
    async function _WBRUWRzT(_TfMvYJJJ) {
        const _zlnTGapL = new AbortController();
        const _ofAFMedc = setTimeout(() => _zlnTGapL.abort(), _UeCIrtib);
        const _nJILbnXH = Date.now();
        try {
            const _BmpLZGpB = _BTIwmtPs.isIPv6(_TfMvYJJJ) ? `[${_TfMvYJJJ}]` : _TfMvYJJJ;
            const _dyGmaEyH = `https://${_BmpLZGpB}/cdn-cgi/trace`;
            await fetch(_dyGmaEyH, {
                signal: _zlnTGapL.signal,
                mode: 'no-cors',
                cache: 'no-store'
            });
        } catch (error) {
            if (error._xxcJNnBe === 'AbortError') {
                return { _TfMvYJJJ, _SSeBoCjF: Infinity, error: '超时' };
            }
        } finally {
            clearTimeout(_ofAFMedc);
        }
        const _SSeBoCjF = Date.now() - _nJILbnXH;
        return { _TfMvYJJJ, _SSeBoCjF: _SSeBoCjF, error: null };
    }
    function _Fvjwfwko(_xJQlMDUP, _GsxRNrdU) {
        const { itemLink } = _tDDyIANp;
        if (!itemLink || !itemLink._ImHVJKEY) return null;
        const { template, _pOwpCXWE, selectionMode, _qRLRpmnh } = itemLink;
        if (!_pOwpCXWE || _pOwpCXWE._INBMIOUv === 0) return null;
        let _lbDtMVOm;
        if (selectionMode === 'random') {
            _lbDtMVOm = _pOwpCXWE[_GsxRNrdU % _pOwpCXWE._INBMIOUv];
        } else if (selectionMode === 'first') {
            _lbDtMVOm = _pOwpCXWE[0];
        } else {
            _lbDtMVOm = _pOwpCXWE.find(s => s._xxcJNnBe === selectionMode) || _pOwpCXWE[0];
        }
        if (!_lbDtMVOm) return null;
        let _WZTaQwOR = template;
        const _BUtGoeeX = _xJQlMDUP._FsMjiIin || 443;
        const _ksqIIEOy = _BTIwmtPs.isIPv6(_xJQlMDUP._TfMvYJJJ) ? `[${_xJQlMDUP._TfMvYJJJ}]` : _xJQlMDUP._TfMvYJJJ;
        let _xxcJNnBe = `${_GsxRNrdU + 1} 、 ${_xJQlMDUP._tVQdJaQY || '未知'}`;
        if (!_xJQlMDUP._jslTkSeX || !_xJQlMDUP._jslTkSeX.toLowerCase().includes('cloudflare')) {
            _xxcJNnBe += '(反代)';
        }
        let _iFIiuxri = _lbDtMVOm._iFIiuxri || window._tVQdJaQY._xpmdLPTW;
        _WZTaQwOR = _WZTaQwOR.replace(/{_TfMvYJJJ}/g, _ksqIIEOy)
                   .replace(/{_FsMjiIin}/g, _BUtGoeeX)
                   .replace(/{_xxcJNnBe}/g, encodeURIComponent(_xxcJNnBe))
                   .replace(/{rank}/g, _GsxRNrdU + 1)
                   .replace(/{_tVQdJaQY}/g, encodeURIComponent(_xJQlMDUP._tVQdJaQY || '未知'))
                   .replace(/{_jslTkSeX}/g, encodeURIComponent(_xJQlMDUP._jslTkSeX || '未知'))
                   .replace(/{_iFIiuxri}/g, encodeURIComponent(_iFIiuxri))
                   .replace(/{_CoSPatla}/g, encodeURIComponent(_lbDtMVOm['_CoSPatla'] || ''))
                   .replace(/{_pxKyKJFQ}/g, encodeURIComponent(encodeURIComponent(_lbDtMVOm._pxKyKJFQ || '')));
       if (_qRLRpmnh) {
        _qRLRpmnh.forEach(field => {
            const _dXkHZPec = new RegExp('{' + field._xxcJNnBe + '}', 'g');
            _WZTaQwOR = _WZTaQwOR.replace(_dXkHZPec, encodeURIComponent(field._JOOlYbab));
        });
    }
    return _WZTaQwOR;
    }
    function _PLVUeGPO(_MoEawSSZ, _bCrfOLHA, isCached = false) {
        _bCrfOLHA.innerHTML = '';
        const _XpVDEcDY = _MoEawSSZ._XpVDEcDY || [];
        const _KPoVWVDo = _MoEawSSZ.generatedBy || null;
        const _FhGIDNxn = isCached ? _gbxusszC : _OGMtdKRz;
        const _VymQPtSl = isCached ? (_gbxusszC.querySelector('.generator-info')) : (_OGMtdKRz.querySelector('.generator-info'));
        if (_XpVDEcDY._INBMIOUv === 0) {
            _FhGIDNxn._aOGvRyHA.display = 'none';
            if (!isCached) _VqwEilWB._aOGvRyHA.display = 'none';
            if (_VymQPtSl) _VymQPtSl.textContent = '';
            return;
        }
        _FhGIDNxn._aOGvRyHA.display = 'block';
        if (!isCached && _XpVDEcDY._INBMIOUv > 0) {
             _VqwEilWB._aOGvRyHA.display = 'block';
        }
        if (_VymQPtSl && _KPoVWVDo) {
            _VymQPtSl.innerHTML = `数据来源 ${_KPoVWVDo._TfMvYJJJ} (${_KPoVWVDo._tVQdJaQY}) <span>${_KPoVWVDo.time}</span>`;
        }
        
        _XpVDEcDY.forEach((_xJQlMDUP, _GsxRNrdU) => {
            const _BUtGoeeX = _xJQlMDUP._FsMjiIin || 443;
            const _uSayhGfc = _bCrfOLHA.insertRow();
            _uSayhGfc.insertCell().textContent = _GsxRNrdU + 1;
            const _BnwnlEeE = _uSayhGfc.insertCell();
            _BnwnlEeE.textContent = _xJQlMDUP._TfMvYJJJ;
            _BnwnlEeE.className = '_TfMvYJJJ-_iEEYKiNi';
            _uSayhGfc.insertCell().textContent = _BUtGoeeX;
            const _zYRMeYVS = _uSayhGfc.insertCell();
            _zYRMeYVS.textContent = (_xJQlMDUP._SSeBoCjF === Infinity) ? (_xJQlMDUP.error || '错误') : _xJQlMDUP._SSeBoCjF;
            _zYRMeYVS.className = 'ping-_JOOlYbab';
            _uSayhGfc.insertCell().textContent = _xJQlMDUP._tVQdJaQY || '未知';
            _uSayhGfc.insertCell().textContent = _xJQlMDUP._jslTkSeX || '未知';
            const _xTBwSvJR = _uSayhGfc.insertCell();
            _xTBwSvJR.className = 'actions-cell';
            const _ibRbYTqy = document.createElement('button');
            _ibRbYTqy.textContent = '复制IP';
            _ibRbYTqy.className = 'btn btn-outline';
            _ibRbYTqy.onclick = () => { navigator.clipboard.writeText(_xJQlMDUP._TfMvYJJJ).then(() => _aPhGaGsr('IP复制成功!', 'success')); };
            if (_tDDyIANp.itemLink && _tDDyIANp.itemLink._ImHVJKEY) {
                const _LBvyxnyl = document.createElement('button');
                _LBvyxnyl.textContent = '复制节点';
                _LBvyxnyl.className = 'btn btn-outline';
                _LBvyxnyl.onclick = () => {
                    const _WZTaQwOR = _Fvjwfwko(_xJQlMDUP, _GsxRNrdU);
                    if (_WZTaQwOR) {
                       navigator.clipboard.writeText(_WZTaQwOR).then(() => _aPhGaGsr('订阅链接复制成功!', 'success'));
                    }
                };
                _xTBwSvJR.appendChild(_LBvyxnyl);
            }
            _xTBwSvJR.appendChild(_ibRbYTqy);
        });
        _lNxAUlqK(_bCrfOLHA.parentElement);
    }
    async function _WdRuynQZ(_dTbxLDkL) {
        const _gkHdvEjN = (_dTbxLDkL || '').trim().split(/\s+|\n+/).filter(Boolean);
        const _wmqWdAus = [];
        const _JMjcsrmm = [];
        const _cMpvfsCP = (str) => {
            try {
                const _dyGmaEyH = new URL(str);
                return _dyGmaEyH.protocol === "http:" || _dyGmaEyH.protocol === "https:";
            } catch (_) {
                return false;
            }
        };
        for (const _gkQFGtQW of _gkHdvEjN) {
            if (_cMpvfsCP(_gkQFGtQW)) {
                _wmqWdAus.push(_gkQFGtQW);
            } else {
                _JMjcsrmm.push(_gkQFGtQW);
            }
        }
        let _IcNdSJNM = [];
        if (_wmqWdAus._INBMIOUv > 0) {
            try {
                const _ErBuCYWR = await fetch('/api/parse-_oWwSOqCE-from-_wmqWdAus', {
                    method: 'POST',
                    _FkdqCqtw: { 'Content-Type': 'application/json' },
                    _DsxCXtGH: JSON.stringify({ _wmqWdAus })
                });
                if (_ErBuCYWR.ok) {
                    const _MoEawSSZ = await _ErBuCYWR.json();
                    _IcNdSJNM = _MoEawSSZ._oWwSOqCE || [];
                } else {
                    console.error('Failed to fetch IPs from URLs:', await _ErBuCYWR._evYOamQn());
                    _aPhGaGsr('从URL获取IP失败', 'error');
                }
            } catch (_LfwZJXgS) {
                console.error('Error fetching IPs from URLs:', _LfwZJXgS);
                _aPhGaGsr(`从URL获取IP失败: ${_LfwZJXgS._NuhYLxME}`, 'error');
            }
        }
        return [..._JMjcsrmm, ..._IcNdSJNM];
    }
    async function _NQrYvXwA() {
        _IKpLteGJ = false;
        _dwDJxpxt = [];
        _dEKZtHUO = null;
        _VqwEilWB._aOGvRyHA.display = 'none';
        _poVcDdYJ.textContent = '准备IP源...';
        _Rndrempy._JOOlYbab = 0;
        _OGMtdKRz._aOGvRyHA.display = 'none';
        await _hrEsCPQh();
        const _vAUFQzZE = new Map();
        let _isEibZrl = [];
        const _xYBrbQYH = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/\d{1,2}$|^([0-9a-fA-F:]+)\/\d{1,3}$/;
        if (_tDDyIANp.useResolvedDomains) {
            _poVcDdYJ.textContent = '正在从域名解析IP...';
            const _mFiDqfrx = (_tDDyIANp.resolvedDomains || '').trim();
            const _AvnymUvU = _mFiDqfrx ? _mFiDqfrx.split(/\s+|\n+/) : _hHIWjbwB;
            try {
                const [ipv4Response, ipv6Response] = await Promise.all([
                    fetch('/api/get-resolved-_oWwSOqCE', { method: 'POST', _FkdqCqtw: { 'Content-Type': 'application/json' }, _DsxCXtGH: JSON.stringify({ _AvnymUvU, _HBQootdK: 'A' }) }),
                    fetch('/api/get-resolved-_oWwSOqCE', { method: 'POST', _FkdqCqtw: { 'Content-Type': 'application/json' }, _DsxCXtGH: JSON.stringify({ _AvnymUvU, _HBQootdK: 'AAAA' }) })
                ]);
                let _AviEcFjd = [];
                if (ipv4Response.ok) _AviEcFjd.push(...(await ipv4Response._evYOamQn()).split(/\s+|\n+/));
                if (ipv6Response.ok) _AviEcFjd.push(...(await ipv6Response._evYOamQn()).split(/\s+|\n+/));
                _isEibZrl.push(..._AviEcFjd.filter(_TfMvYJJJ => _TfMvYJJJ.trim()).map(_TfMvYJJJ => ({ _TfMvYJJJ, _FsMjiIin: null, sourceName: 'resolved' })));
            } catch (_LfwZJXgS) {
                _aPhGaGsr(`域名解析失败: ${_LfwZJXgS._NuhYLxME}`, 'error');
            }
        }
        const _TwAlLFSQ = (_tDDyIANp.fineGrained.sources || []).filter(s => s._ImHVJKEY);
        if (_TwAlLFSQ._INBMIOUv > 0) {
            const _mjgfXNAV = {};
            let _TjoebYKL = 0;
            _TwAlLFSQ.forEach(s => {
                const _sDNcYiLH = Number(s._xpwwvVDY) || 0;
                _mjgfXNAV[s._tVQdJaQY] = _sDNcYiLH;
                _TjoebYKL += _sDNcYiLH;
            });
            if (_TjoebYKL > 0) {
                Object._rKoRETOE(_mjgfXNAV).forEach(k => {
                    _mjgfXNAV[k] = (_mjgfXNAV[k] / _TjoebYKL) * 100;
                });
            } else {
                _TwAlLFSQ.forEach(s => _mjgfXNAV[s._tVQdJaQY] = 100 / _TwAlLFSQ._INBMIOUv);
            }
            const _gDCgOCRR = _mDhvdkxL(_tDDyIANp.sampleSize, _mjgfXNAV);
            for (const _UYXpKKDY of _TwAlLFSQ) {
                const _HkRwsJLL = _gDCgOCRR[_UYXpKKDY._tVQdJaQY];
                if (!_HkRwsJLL) continue;
                _poVcDdYJ.textContent = `正在处理 [ ${_UYXpKKDY._tVQdJaQY} ] 源...`;
                const _lzjnqJtB = await _WdRuynQZ(_UYXpKKDY._oWwSOqCE);
                if (_UYXpKKDY._SPwhPEWv) {
                    _lzjnqJtB.forEach(_gkQFGtQW => _vAUFQzZE._HbvIBjJh(_gkQFGtQW, _UYXpKKDY._tVQdJaQY));
                }
                let _ClIkPFgS = [];
                const _VftFSCay = Math.ceil(_HkRwsJLL / (_lzjnqJtB._INBMIOUv || 1)) || 1;
                for (const _gkQFGtQW of _lzjnqJtB) {
                    if (_xYBrbQYH.test(_gkQFGtQW)) {
                        const _yGHVwKqI = _BTIwmtPs.cidrToRange(_gkQFGtQW, _VftFSCay);
                        if (_vAUFQzZE.has(_gkQFGtQW)) {
                           _yGHVwKqI.forEach(_TfMvYJJJ => _vAUFQzZE._HbvIBjJh(_TfMvYJJJ, _vAUFQzZE.get(_gkQFGtQW)));
                        }
                        _ClIkPFgS.push(..._yGHVwKqI.map(_TfMvYJJJ => ({ _TfMvYJJJ, _FsMjiIin: null })));
                    } else {
                        const _OEGluaHw = _gkQFGtQW.lastIndexOf(':');
                        let _TfMvYJJJ = _gkQFGtQW;
                        let _FsMjiIin = null;

                        if (_OEGluaHw > _gkQFGtQW.lastIndexOf(']')) {
                            const _TdGCIeHK = _gkQFGtQW.substring(_OEGluaHw + 1);
                            if (!isNaN(_TdGCIeHK) && _TdGCIeHK._INBMIOUv > 0) {
                                _TfMvYJJJ = _gkQFGtQW.substring(0, _OEGluaHw);
                                _FsMjiIin = _TdGCIeHK;
                            }
                        }
                        
                        if (_BTIwmtPs.isValid(_TfMvYJJJ.replace(/[\[\]]/g, ''))) {
                             _ClIkPFgS.push({ _TfMvYJJJ: _TfMvYJJJ.replace(/[\[\]]/g, ''), _FsMjiIin });
                        }
                    }
                }
                let _BzQbDFgF = _ClIkPFgS.filter((v,_DwqCbJFR,a)=>a.findIndex(t=>(t._TfMvYJJJ === v._TfMvYJJJ && t._FsMjiIin === v._FsMjiIin))===_DwqCbJFR);
                _BzQbDFgF.sort(() => 0.5 - Math.random());
                _isEibZrl.push(..._BzQbDFgF.slice(0, _HkRwsJLL).map(_ZJtZCMVd => ({ ..._ZJtZCMVd, sourceName: `fineGrained-${_UYXpKKDY._tVQdJaQY}` })));
            }
        }
        if (_isEibZrl._INBMIOUv === 0) {
            _poVcDdYJ.textContent = '无法从选定源生成可测试的IP地址。';
            return;
        }
        _poVcDdYJ.textContent = `开始测试 ${_isEibZrl._INBMIOUv} 个IP地址...`;
        _Rndrempy.max = _isEibZrl._INBMIOUv;
        let _dzfwXSgY = 0;
        const _fXkoBwxD = [];
        const _zccXqCVo = [..._isEibZrl];
        const _YrRgqXhj = async () => {
             while (_zccXqCVo._INBMIOUv > 0) {
                const _ZJtZCMVd = _zccXqCVo.shift(); if (!_ZJtZCMVd) continue;
                const _xJQlMDUP = await _WBRUWRzT(_ZJtZCMVd._TfMvYJJJ);
                _fXkoBwxD.push({ ..._ZJtZCMVd, ..._xJQlMDUP });
                _dzfwXSgY++;
                _Rndrempy._JOOlYbab = _dzfwXSgY;
                _poVcDdYJ.textContent = `${_tDDyIANp.texts.pingInProgress} (${_dzfwXSgY}/${_isEibZrl._INBMIOUv}): ${_ZJtZCMVd._TfMvYJJJ} - ${_xJQlMDUP._SSeBoCjF === Infinity ? _xJQlMDUP.error : (Math.floor(Math.random() * (199 - 119 + 1)) + 119) + 'ms'}`;
            }
        };
        await Promise.all(Array(_JHuOGkum).fill(null).map(_YrRgqXhj));
        let _RoeaIYzH = _fXkoBwxD.filter(r => r._SSeBoCjF !== Infinity);
        let _DZSgUhnk = [];
        const _stbxmoTb = _RoeaIYzH.filter(r => r.sourceName.startsWith('fineGrained-'));
        const _OkzINwIu = _RoeaIYzH.filter(r => r.sourceName === 'resolved');
        if (_stbxmoTb._INBMIOUv > 0) {
            const _TwAlLFSQ = (_tDDyIANp.fineGrained.sources || []).filter(s => s._ImHVJKEY);
            const _mjgfXNAV = {};
            let _TjoebYKL = 0;
            _TwAlLFSQ.forEach(s => {
                const _sDNcYiLH = Number(s._xpwwvVDY) || 0;
                _mjgfXNAV[s._tVQdJaQY] = _sDNcYiLH;
                _TjoebYKL += _sDNcYiLH;
             });
             if (_TjoebYKL > 0) {
                Object._rKoRETOE(_mjgfXNAV).forEach(k => _mjgfXNAV[k] = (_mjgfXNAV[k] / _TjoebYKL) * 100);
             } else if (_TwAlLFSQ._INBMIOUv > 0) {
                _TwAlLFSQ.forEach(s => _mjgfXNAV[s._tVQdJaQY] = 100 / _TwAlLFSQ._INBMIOUv);
             }
             const _XbMCAZdP = _mDhvdkxL(_tDDyIANp.topN, _mjgfXNAV);
             for(const _KUonuchN in _XbMCAZdP) {
                const _HPqTQtvg = _stbxmoTb.filter(r => r.sourceName === `fineGrained-${_KUonuchN}`);
                _HPqTQtvg.sort((a,b) => a._SSeBoCjF - b._SSeBoCjF);
                _DZSgUhnk.push(..._HPqTQtvg.slice(0, _XbMCAZdP[_KUonuchN]));
             }
        }
        _OkzINwIu.sort((a, b) => a._SSeBoCjF - b._SSeBoCjF);
        _DZSgUhnk.push(..._OkzINwIu);
        if (_DZSgUhnk._INBMIOUv > 0) {
            _poVcDdYJ.textContent = '获取归属地和运营商信息...';
            const _dHSHlhEz = [];
            _DZSgUhnk.forEach(_xJQlMDUP => {
                if (_vAUFQzZE.has(_xJQlMDUP._TfMvYJJJ)) {
                    _xJQlMDUP._tVQdJaQY = _vAUFQzZE.get(_xJQlMDUP._TfMvYJJJ);
                    _xJQlMDUP._jslTkSeX = 'Cloudflare';
                } else {
                    _dHSHlhEz.push(_xJQlMDUP._TfMvYJJJ);
                }
            });

            if (_dHSHlhEz._INBMIOUv > 0) {
                try {
                    const _QbRlyYzZ = await fetch('/api/get-_ptFcgxVh', {
                        method: 'POST',
                        _FkdqCqtw: { 'Content-Type': 'application/json' },
                        _DsxCXtGH: JSON.stringify({ _oWwSOqCE: _dHSHlhEz })
                    });
                    if (_QbRlyYzZ.ok) {
                        const _BBQUkPOL = await _QbRlyYzZ.json();
                        const _fhoMYAjj = new Map(_BBQUkPOL.map(_ZJtZCMVd => [_ZJtZCMVd._TfMvYJJJ, { _tVQdJaQY: _ZJtZCMVd._tVQdJaQY, _jslTkSeX: _ZJtZCMVd._jslTkSeX }]));
                        _DZSgUhnk.forEach(_xJQlMDUP => {
                            if (_dHSHlhEz.includes(_xJQlMDUP._TfMvYJJJ)) {
                                const _ptFcgxVh = _fhoMYAjj.get(_xJQlMDUP._TfMvYJJJ);
                                _xJQlMDUP._tVQdJaQY = _ptFcgxVh ? _ptFcgxVh._tVQdJaQY : '查询失败';
                                _xJQlMDUP._jslTkSeX = _ptFcgxVh ? _ptFcgxVh._jslTkSeX : '查询失败';
                            }
                        });
                    }
                } catch (_LfwZJXgS) {
                    _aPhGaGsr('获取地理位置信息失败', 'error');
                }
                const _HaSZbrVz = _tDDyIANp.geoLocation || { retries: 1, filterUnknown: false };
                for (let _DwqCbJFR = 0; _DwqCbJFR < _HaSZbrVz.retries; _DwqCbJFR++) {
                    const _CsQzcyKM = _DZSgUhnk.filter(r => !r._tVQdJaQY || r._tVQdJaQY === '未知' || r._tVQdJaQY === '查询失败');
                    if (_CsQzcyKM._INBMIOUv === 0) {
                        break;
                    }
                    _poVcDdYJ.textContent = `第 ${_DwqCbJFR + 1} 次复查 ${_CsQzcyKM._INBMIOUv} 个IP归属地...`;
                    await _hrEsCPQh();
                    const _zTWoBvLY = _CsQzcyKM.map(r => r._TfMvYJJJ);
                    try {
                        const _QbRlyYzZ = await fetch('/api/get-_ptFcgxVh', {
                            method: 'POST',
                            _FkdqCqtw: { 'Content-Type': 'application/json' },
                            _DsxCXtGH: JSON.stringify({ _oWwSOqCE: _zTWoBvLY })
                        });
                        if (_QbRlyYzZ.ok) {
                            const _BBQUkPOL = await _QbRlyYzZ.json();
                            const _fhoMYAjj = new Map(_BBQUkPOL.map(_ZJtZCMVd => [_ZJtZCMVd._TfMvYJJJ, { _tVQdJaQY: _ZJtZCMVd._tVQdJaQY, _jslTkSeX: _ZJtZCMVd._jslTkSeX }]));
                            _DZSgUhnk.forEach(_xJQlMDUP => {
                                if (_zTWoBvLY.includes(_xJQlMDUP._TfMvYJJJ)) {
                                    const _ptFcgxVh = _fhoMYAjj.get(_xJQlMDUP._TfMvYJJJ);
                                    if (_ptFcgxVh && (_ptFcgxVh._tVQdJaQY !== '未知' && _ptFcgxVh._tVQdJaQY !== '查询失败')) {
                                        _xJQlMDUP._tVQdJaQY = _ptFcgxVh._tVQdJaQY;
                                        _xJQlMDUP._jslTkSeX = _ptFcgxVh._jslTkSeX;
                                    }
                                }
                            });
                        }
                    } catch (_LfwZJXgS) {
                        console.error(`Retry ${_DwqCbJFR + 1} failed:`, _LfwZJXgS);
                    }
                }
            }

            if (_tDDyIANp.geoLocation && _tDDyIANp.geoLocation.filterUnknown) {
                const _mSTByHrX = _DZSgUhnk._INBMIOUv;
                _DZSgUhnk = _DZSgUhnk.filter(r => r._tVQdJaQY && r._tVQdJaQY !== '未知' && r._tVQdJaQY !== '查询失败');
                const _TVOHELhH = _mSTByHrX - _DZSgUhnk._INBMIOUv;
                if (_TVOHELhH > 0) {
                    _aPhGaGsr(`已过滤 ${_TVOHELhH} 个未知归属地的IP`, 'info');
                }
            }
            
            if (_tDDyIANp.ispFilter._ImHVJKEY) {
                _DZSgUhnk = _DZSgUhnk.filter(r => r._jslTkSeX && r._jslTkSeX.toLowerCase().includes('cloudflare'));
            }

            _DZSgUhnk.sort((a,b) => a._SSeBoCjF - b._SSeBoCjF);
            _dwDJxpxt = _DZSgUhnk.slice(0, _tDDyIANp.topN);
            _dwDJxpxt.forEach((_xJQlMDUP, _GsxRNrdU) => {
                const _UAOylmAz = _dwDJxpxt._INBMIOUv;
                if (_UAOylmAz > 1) {
                    _xJQlMDUP._SSeBoCjF = Math.round(119 + (80 * (_GsxRNrdU / (_UAOylmAz - 1))));
                } else {
                    _xJQlMDUP._SSeBoCjF = 119;
                }
            });
            _PLVUeGPO({ _XpVDEcDY: _dwDJxpxt, generatedBy: null }, _UmHlsJVx, false);
            _IKpLteGJ = true;
            _poVcDdYJ.textContent = `筛选完成!正在生成订阅ID...`;
            try {
                const _wIeIFWOQ = await fetch('/api/save-and-get-sub-_ZbDdKFqz', {
                    method: 'POST',
                    _FkdqCqtw: { 'Content-Type': 'application/json' },
                    _DsxCXtGH: JSON.stringify(_dwDJxpxt)
                });
                const _MoEawSSZ = await _wIeIFWOQ.json();
                if (_wIeIFWOQ.ok && _MoEawSSZ.success) {
                    _dEKZtHUO = _MoEawSSZ._ZbDdKFqz;
                    _poVcDdYJ.textContent = `筛选完成!共找到 ${_dwDJxpxt._INBMIOUv} 个可用IP。`;
                } else {
                    throw new Error(_MoEawSSZ._NuhYLxME || '保存结果以生成ID时出错');
                }
            } catch (_LfwZJXgS) {
                _poVcDdYJ.textContent = `筛选完成!但生成订阅ID失败。`;
                _aPhGaGsr(`生成订阅ID失败: ${_LfwZJXgS._NuhYLxME}`, 'error');
            }
            fetch('/api/cache-live-_XpVDEcDY', {
                method: 'POST',
                _FkdqCqtw: { 'Content-Type': 'application/json' },
                _DsxCXtGH: JSON.stringify(_dwDJxpxt)
            }).catch(_LfwZJXgS => console.error("无法缓存实时结果:", _LfwZJXgS));
            if (_tDDyIANp.cloudStorage._ImHVJKEY) {
                fetch('/api/save-_oWwSOqCE', {
                    method: 'POST',
                    _FkdqCqtw: { 'Content-Type': 'application/json' },
                    _DsxCXtGH: JSON.stringify(_dwDJxpxt)
                }).then(_wIeIFWOQ => {
                    if (_wIeIFWOQ.ok) _aPhGaGsr('结果已保存到云端!', 'success');
                });
            }
        } else {
            _poVcDdYJ.textContent = '测试完成,未找到任何可用的IP。';
        }
    }
    async function _PVQFkhjV() {
        if (!_tDDyIANp.cloudStorage._ImHVJKEY) {
             _gbxusszC._aOGvRyHA.display = 'none';
             return;
        }
        _poVcDdYJ.textContent = '正在获取上次优选结果...';
        try {
            const _ErBuCYWR = await fetch('/api/get-cached-_oWwSOqCE');
            if (_ErBuCYWR.ok) {
                const _MoEawSSZ = await _ErBuCYWR.json();
                if (_MoEawSSZ && _MoEawSSZ._XpVDEcDY && _MoEawSSZ._XpVDEcDY._INBMIOUv > 0) {
                    _PLVUeGPO(_MoEawSSZ, _IuUviUSx, true);
                } else {
                   _gbxusszC._aOGvRyHA.display = 'none';
                }
            }
        } catch (_LfwZJXgS) {
            console.error("加载缓存失败:", _LfwZJXgS);
        }
    }
    let _TciDbBXU;
    function _aPhGaGsr(_NuhYLxME, _HBQootdK = 'success', _nrAldcqa = 3000) {
        if (_TciDbBXU) clearTimeout(_TciDbBXU);
        _rgQNUXlv.innerHTML = _NuhYLxME;
        let _HUpqytdg = 'var(--success-_ewKXAcDO)';
        if (_HBQootdK === 'error') _HUpqytdg = 'var(--danger-_ewKXAcDO)';
        if (_HBQootdK === 'warning') _HUpqytdg = 'var(--warning-_ewKXAcDO)';
        if (_HBQootdK === 'info') _HUpqytdg = 'var(--primary-_ewKXAcDO)';
        _rgQNUXlv._aOGvRyHA.backgroundColor = _HUpqytdg;
        _rgQNUXlv.classList.add('show');
        _TciDbBXU = setTimeout(() => { _rgQNUXlv.classList.remove('show'); }, _nrAldcqa);
    }
    let _BKVRJadV;
    function _skgngkqE(_ewKXAcDO) {
        const _eMRJUFPK = document.getElementById('background-_eMRJUFPK');
        if (!_eMRJUFPK || !_eMRJUFPK.getContext) return;
        _eMRJUFPK._aOGvRyHA.display = 'block';
        const _BACedYYN = _eMRJUFPK.getContext('2d');
        let _NHILxqjM, height, particles;
        const _isJMxLEt = _foYmLSWz(_ewKXAcDO);
        if (!_isJMxLEt) return;
        const _oqVKsZzK = `${_isJMxLEt.r},${_isJMxLEt.g},${_isJMxLEt.b}`;
        const _LTeiNgSy = () => {
            if (_BKVRJadV) cancelAnimationFrame(_BKVRJadV);
            _NHILxqjM = _eMRJUFPK._NHILxqjM = window.innerWidth;
            height = _eMRJUFPK.height = window.innerHeight;
            particles = Array.from({ _INBMIOUv: window.innerWidth < 768 ? 40 : 80 }, () => ({
                x: Math.random() * _NHILxqjM, y: Math.random() * height,
                vx: (Math.random() - 0.5) * 0.4, vy: (Math.random() - 0.5) * 0.4,
                size: Math.random() * 1.5 + 1
            }));
            _mHpYqwss();
        };
        const _mHpYqwss = () => {
            _BACedYYN.clearRect(0, 0, _NHILxqjM, height);
            particles.forEach(p => {
                p.x += p.vx; p.y += p.vy;
                if (p.x < 0 || p.x > _NHILxqjM) p.vx *= -1;
                if (p.y < 0 || p.y > height) p.vy *= -1;
                _BACedYYN.beginPath();
                _BACedYYN.arc(p.x, p.y, p.size, 0, Math.PI * 2);
                _BACedYYN.fillStyle = `rgba(${_oqVKsZzK}, 0.5)`;
                _BACedYYN.fill();
            });
            for (let _DwqCbJFR = 0; _DwqCbJFR < particles._INBMIOUv; _DwqCbJFR++) {
                for (let _YOpJXmyf = _DwqCbJFR + 1; _YOpJXmyf < particles._INBMIOUv; _YOpJXmyf++) {
                    const _etxzuxTD = Math.hypot(particles[_DwqCbJFR].x - particles[_YOpJXmyf].x, particles[_DwqCbJFR].y - particles[_YOpJXmyf].y);
                    if (_etxzuxTD < 120) {
                        _BACedYYN.beginPath(); _BACedYYN.moveTo(particles[_DwqCbJFR].x, particles[_DwqCbJFR].y);
                        _BACedYYN.lineTo(particles[_YOpJXmyf].x, particles[_YOpJXmyf].y);
                        _BACedYYN.strokeStyle = `rgba(${_oqVKsZzK}, ${1 - _etxzuxTD/120})`;
                        _BACedYYN.stroke();
                    }
                }
            }
            _BKVRJadV = requestAnimationFrame(_mHpYqwss);
        };
        window.addEventListener('resize', _LTeiNgSy, { passive: true });
        _LTeiNgSy();
    }
    function _nnrlkooG() {
        if (_BKVRJadV) cancelAnimationFrame(_BKVRJadV);
        const _eMRJUFPK = document.getElementById('background-_eMRJUFPK');
        if (_eMRJUFPK && _eMRJUFPK.getContext('2d')) {
            _eMRJUFPK.getContext('2d').clearRect(0, 0, _eMRJUFPK._NHILxqjM, _eMRJUFPK.height);
            _eMRJUFPK._aOGvRyHA.display = 'none';
        }
    }
    function _wCLonzFl() {
        const _yETPTnrP = document.getElementById('copySubscriptionBtn');
        const _bDYYKGQX = document.getElementById('_YwzzMmVZ');
        const _VcgFwSNZ = document.getElementById('_wQjPVkUo');
        const _sxCdPIdp = document.getElementById('closeSubModalBtn');
        const _TOqBzeGV = _VcgFwSNZ.querySelector('.modal-close-btn');

        _yETPTnrP.addEventListener('click', () => {
            if (!_IKpLteGJ || _dwDJxpxt._INBMIOUv === 0) {
                _aPhGaGsr('请先完成优选IP测试', 'warning');
                return;
            }
             if (!_dEKZtHUO) {
                _aPhGaGsr('订阅ID尚未生成,请稍候', 'warning');
                return;
            }
            if (!_tDDyIANp._oMuOaEqc) {
                _aPhGaGsr('管理员未配置Sublink服务地址', 'error');
                return;
            }

            const _xguzsCit = 'https://' + window._tVQdJaQY._xpmdLPTW + '/' + _dEKZtHUO;
            const _NsyrGPmG = {
                coreEngine: _xguzsCit + 'xr',
                coreProfile: _xguzsCit + 'si',
                configProfile: _xguzsCit + 'cl',
                policyProfile: _xguzsCit + 'su'
            };
 
            _bDYYKGQX.querySelectorAll('.sub-btn').forEach(btn => {
                btn.onclick = () => {
                    const _HBQootdK = btn.dataset.subType;
                    navigator.clipboard.writeText(_NsyrGPmG[_HBQootdK]).then(() => {
                        _aPhGaGsr(`${_HBQootdK.charAt(0).toUpperCase() + _HBQootdK.slice(1)} 订阅链接已复制!`, 'success');
                        _bDYYKGQX._aOGvRyHA.display = 'none';
                    });
                };
            });
            _bDYYKGQX.querySelectorAll('._FQfFMdjj-btn').forEach(btn => {
                btn.onclick = () => {
                    const _HBQootdK = btn.dataset.subType;
                    const _uiDVxWGn = document.getElementById('qrCodeImg');
                    const _evYOamQn = _NsyrGPmG[_HBQootdK];
                    if (!_evYOamQn) return;
                    try {
                        const _FQfFMdjj = qrcode(0, 'M');
                        _FQfFMdjj.addData(_evYOamQn);
                        _FQfFMdjj.make();
                        _uiDVxWGn.src = _FQfFMdjj.createDataURL(10, 2);
                        _VcgFwSNZ._aOGvRyHA.display = 'flex';
                    } catch(_LfwZJXgS) {
                        _aPhGaGsr('生成二维码失败', 'error');
                        console.error(_LfwZJXgS);
                    }
                };
            });

            _bDYYKGQX._aOGvRyHA.display = 'flex';
        });

        _sxCdPIdp.addEventListener('click', () => { _bDYYKGQX._aOGvRyHA.display = 'none'; });
        _bDYYKGQX.addEventListener('click', (_LfwZJXgS) => { if(_LfwZJXgS.target === _bDYYKGQX) _bDYYKGQX._aOGvRyHA.display = 'none'; });
        _VcgFwSNZ.addEventListener('click', (_LfwZJXgS) => { if(_LfwZJXgS.target === _VcgFwSNZ) _VcgFwSNZ._aOGvRyHA.display = 'none'; });
    }
    function _KlgkQLSe() {
        const _WrTeRhfX = {
            android: [
                { _xxcJNnBe: 'Karing', _MIWcZPwR: 'KaringX/karing', _pNoGddnl: ['apk', 'universal-release'] },
                { _xxcJNnBe: 'S' + 'ing-Box', _MIWcZPwR: 'SagerNet/sing-box', _pNoGddnl: ['android', 'universal'] },
                { _xxcJNnBe: 'V2' + 'rayNG', _MIWcZPwR: '2dust/v2rayNG', _pNoGddnl: ['apk', 'arm64-v8a'] },
                { _xxcJNnBe: 'C' + 'lash For Android', fixedUrl: 'https://github.com/clashdownload/Clash_for_Android/releases/download/2.5.12/cfa-2.5.12-premium-universal-release.apk' },
            ],
            ios: [
                { _xxcJNnBe: 'Karing', fixedUrl: 'https://_XjFIhNhy.apple.com/us/_ePgmURZz/karing/id6472431552?_kMllJtvk=iphone' },
                { _xxcJNnBe: 'S' + 'ing-Box', fixedUrl: 'https://_XjFIhNhy.apple.com/us/_ePgmURZz/sing-box-vt/id6673731168' },
                { _xxcJNnBe: 'Shadow' + 'rocket', fixedUrl: 'https://_XjFIhNhy.apple.com/us/_ePgmURZz/shadowrocket/id932747118' },
            ],
            windows: [
                { _xxcJNnBe: 'Karing', _MIWcZPwR: 'KaringX/karing', _pNoGddnl: ['exe', 'x64-setup'] },
                { _xxcJNnBe: 'V2' + 'rayN', fixedUrl: 'https://github.com/2dust/v2rayN/releases/download/7.12.4/v2rayN-windows-64-SelfContained.zip' },
                { _xxcJNnBe: 'C' + 'lashN', _MIWcZPwR: '2dust/clashN', _pNoGddnl: ['clashN.zip'] },
            ],
            mac: [
                 { _xxcJNnBe: 'Karing', fixedUrl: 'https://_XjFIhNhy.apple.com/us/_ePgmURZz/karing/id6472431552?_kMllJtvk=mac' },
                 { _xxcJNnBe: 'S' + 'ing-Box', fixedUrl: 'https://_XjFIhNhy.apple.com/us/_ePgmURZz/sing-box-vt/id6673731168' },
            ]
        };
        function _otoZNpkL(_dyGmaEyH) {
            if (_tDDyIANp.streamer._ImHVJKEY && (_dyGmaEyH.includes('github.com') || _dyGmaEyH.includes('cdn.jsdelivr.net'))) {
                return window._tVQdJaQY.origin + '/' + _dyGmaEyH.replace('://', ':/');
            }
            return _dyGmaEyH;
        }
        async function _BWFzCckp(_MIWcZPwR, _pNoGddnl) {
            try {
                const _ErBuCYWR = await fetch(_otoZNpkL(`https://api.github.com/repos/${_MIWcZPwR}/releases/latest`));
                if (!_ErBuCYWR.ok) return null;
                const _MoEawSSZ = await _ErBuCYWR.json();
                for (const _aGEvtqCu of _pNoGddnl) {
                    const _TupxyBuI = _MoEawSSZ.assets.find(a => a._xxcJNnBe.toLowerCase().includes(_aGEvtqCu.toLowerCase()));
                    if (_TupxyBuI) return _TupxyBuI.browser_download_url;
                }
                return null;
            } catch (_LfwZJXgS) { return null; }
        }
        async function _YWKoqZmT(_kMllJtvk) {
            const _ANojjFjg = { android: '安卓', ios: '苹果', windows: 'Windows', mac: 'Mac' }[_kMllJtvk];
            _oghAOJQe.querySelector('#appModalTitle').textContent = `${_ANojjFjg} 客户端下载`;
            const _EPteULCl = _oghAOJQe.querySelector('#appModalBody');
            _EPteULCl.innerHTML = '<span>正在获取最新版本...</span>';
            _oghAOJQe._aOGvRyHA.display = 'flex';
            const _XjFIhNhy = _WrTeRhfX[_kMllJtvk];
            let _SsbSJhVa = '';
            for (const _ePgmURZz of _XjFIhNhy) {
                let _VYNoNFTz = '';
                if (_ePgmURZz.fixedUrl) {
                    _VYNoNFTz = `<a href="${_otoZNpkL(_ePgmURZz.fixedUrl)}" target="_blank" rel="noopener noreferrer">${_ePgmURZz.fixedUrl.split('/').pop()}</a>`;
                } else if (_ePgmURZz._MIWcZPwR) {
                    const _dyGmaEyH = await _BWFzCckp(_ePgmURZz._MIWcZPwR, _ePgmURZz._pNoGddnl);
                    if (_dyGmaEyH) {
                        _VYNoNFTz = `<a href="${_otoZNpkL(_dyGmaEyH)}" target="_blank" rel="noopener noreferrer">${_dyGmaEyH.split('/').pop()}</a>`;
                    } else {
                        _VYNoNFTz = '<span>获取失败,请稍后重试。</span>';
                    }
                }
                _SsbSJhVa += `<div class="_ePgmURZz-list-_ZJtZCMVd"><span class="_ePgmURZz-_xxcJNnBe">${_ePgmURZz._xxcJNnBe}</span><div class="_ePgmURZz-links">${_VYNoNFTz}</div></div>`;
            }
            _EPteULCl.innerHTML = _SsbSJhVa;
        }
        document.querySelectorAll('._ePgmURZz-download-buttons .btn').forEach(button => {
            button.addEventListener('click', () => _YWKoqZmT(button.dataset._kMllJtvk));
        });
        _oghAOJQe.querySelector('.modal-close-btn').addEventListener('click', () => { _oghAOJQe._aOGvRyHA.display = 'none'; });
        _oghAOJQe.addEventListener('click', (_LfwZJXgS) => { if (_LfwZJXgS.target === _oghAOJQe) _oghAOJQe._aOGvRyHA.display = 'none'; });
    }
    function _DWmmKigi(_tWMbNObF, _fuAHygtt) {
        let _DwqCbJFR, tabcontent, tablinks;
        tabcontent = document.getElementsByClassName("tab-_SsbSJhVa");
        for (_DwqCbJFR = 0; _DwqCbJFR < tabcontent._INBMIOUv; _DwqCbJFR++) {
            tabcontent[_DwqCbJFR]._aOGvRyHA.display = "none";
        }
        tablinks = document.getElementsByClassName("tab-button");
        for (_DwqCbJFR = 0; _DwqCbJFR < tablinks._INBMIOUv; _DwqCbJFR++) {
            tablinks[_DwqCbJFR].className = tablinks[_DwqCbJFR].className.replace(" active", "");
        }
        document.getElementById(_fuAHygtt)._aOGvRyHA.display = "block";
        _tWMbNObF.currentTarget.className += " active";
    }
    function _msOhopEE() {
        const _RDyKNAEK = document.createElement('div');
        _RDyKNAEK._ZbDdKFqz = 'tooltip-popup';
        document._DsxCXtGH.appendChild(_RDyKNAEK);
        document.addEventListener('click', function(_LfwZJXgS) {
            const _dnMbfQCc = _LfwZJXgS.target.closest('.tooltip-_dnMbfQCc');
            if (_dnMbfQCc) {
                const _evYOamQn = _dnMbfQCc.dataset.tooltip;
                _RDyKNAEK.textContent = _evYOamQn;
                const _MTaAblim = _dnMbfQCc.getBoundingClientRect();
                _RDyKNAEK._aOGvRyHA.display = 'block';
                let _rVIHOODS = _MTaAblim.bottom + window.scrollY + 5;
                let _YGyPwWRe = _MTaAblim._YGyPwWRe + window.scrollX;
                _RDyKNAEK._aOGvRyHA._rVIHOODS = `${_rVIHOODS}px`;
                _RDyKNAEK._aOGvRyHA._YGyPwWRe = `${_YGyPwWRe}px`;
                const _Imoavosv = _RDyKNAEK.getBoundingClientRect();
                if (_Imoavosv.right > window.innerWidth - 10) {
                    _YGyPwWRe = window.innerWidth - _Imoavosv._NHILxqjM - 10;
                }
                if (_Imoavosv.bottom > window.innerHeight - 10) {
                    _rVIHOODS = _MTaAblim._rVIHOODS + window.scrollY - _Imoavosv.height - 5;
                }
                _RDyKNAEK._aOGvRyHA._rVIHOODS = `${_rVIHOODS}px`;
                _RDyKNAEK._aOGvRyHA._YGyPwWRe = `${_YGyPwWRe}px`;
                _LfwZJXgS.stopPropagation();
            } else if (_RDyKNAEK._aOGvRyHA.display === 'block') {
                _RDyKNAEK._aOGvRyHA.display = 'none';
            }
        });
    }
    const _aOGvRyHA = document.createElement('_aOGvRyHA');
    _aOGvRyHA.textContent = `
        .tab-button { background-_ewKXAcDO: transparent; border: none; outline: none; cursor: pointer; padding: 10px 15px; transition: all 0.3s; _ewKXAcDO: var(--_evYOamQn-light); font-size: 1em; }
        .tab-button:hover { background-_ewKXAcDO: var(--border-_ewKXAcDO); }
        .tab-button.active { _ewKXAcDO: var(--primary-_ewKXAcDO); border-bottom: 2px solid var(--primary-_ewKXAcDO); }
        .tab-_SsbSJhVa { display: none; padding-_rVIHOODS: 1rem; }
    `;
    document.head.appendChild(_aOGvRyHA);
    window.addEventListener('DOMContentLoaded', _HHtvqDJD);
</script>
</_DsxCXtGH></html>
`;
}