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


import { connect } from "cloudflare:sockets";

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

const _HzwSSWdE = 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/%E5%86%85%E7%BD%AEIP';
const _LeyPwlqk = 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/%E5%9D%87%E8%A1%A1IP';
const _PNjrzQzC = '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 _fuOymmIv = '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 _vkRmgbyW(_vfHUiPZP) {
    if (Array.isArray(_vfHUiPZP)) {
        try {
            return String.fromCharCode.apply(null, _vfHUiPZP);
        } catch (_tvxkpUEP) {
            return '';
        }
    }
    return _vfHUiPZP;
}

function _tXedwNyv(_KcwRLXII) {
    return /^[0-9a-_UzQeKIUL]{8}-[0-9a-_UzQeKIUL]{4}-[4][0-9a-_UzQeKIUL]{3}-[89ab][0-9a-_UzQeKIUL]{3}-[0-9a-_UzQeKIUL]{12}$/_TrDDfKiX.test(_KcwRLXII);
}

const _ScVRJfpK = "optimized_ips_v4";
const _wstZEgGt = "global_config_v4";
const _hUWofvaB = "admin_password_v4";
const _zUmBAJkh = "live_results_temp_v1";
const _SaksCYPQ = "latest_sub_id_v1";

export default {
  async fetch(_opVZERQd, _LnYLwDru, _fLeXDIno) {
    try {
      if (!_LnYLwDru.DB) {
          const _tFFlkNTx = _LowRxWEu("D1 数据库 'DB' 未绑定。");
          return new Response(_tFFlkNTx, { status: 503, _HkeZcJzJ: { 'Content-Type': '_qHDXNHKk/html;_WjjQYTfR=UTF-8' }});
      }

      _fLeXDIno.waitUntil(
          _LnYLwDru.DB.exec(`
              CREATE TABLE IF NOT EXISTS kv_data (_cKnSaaNg TEXT PRIMARY KEY, _vfHUiPZP TEXT);
              CREATE TABLE IF NOT EXISTS optimized_results (_KcwRLXII TEXT PRIMARY KEY, _aoBtofgp TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
          `).catch(_tvxkpUEP => console.error("DB Init Error:", _tvxkpUEP._wNfQiTXI))
      );

      const _gSrsDldw = new URL(_opVZERQd._gSrsDldw);
      const _kzDNrvFw = _gSrsDldw.pathname;
      const _fznQlFlk = _opVZERQd._HkeZcJzJ.get("Upgrade");
      const _lAnBRGEp = await _QheuDrLk(_LnYLwDru);
      
      if (_lAnBRGEp.websocketStreamer && _lAnBRGEp.websocketStreamer._JffIBwcN && _fznQlFlk && _fznQlFlk.toLowerCase() === "websocket") {
          const _KtOBuFrW = _lAnBRGEp.websocketStreamer._gSrsDldw;
          if (_KtOBuFrW && _KtOBuFrW.trim().startsWith('https://')) {
              try {
                  const _LlkcguHo = new Request(_KtOBuFrW.trim() + _gSrsDldw.pathname + _gSrsDldw.search, _opVZERQd);
                  return await fetch(_LlkcguHo);
              } catch (_tvxkpUEP) {
                  return new Response(`Upstream WebSocket gateway failed: ${_tvxkpUEP._wNfQiTXI}`, { status: 502 });
              }
          }
          return new Response("WebSocket reverse gateway URL is not configured or is invalid.", { status: 502 });
      }

      if (_fznQlFlk && _fznQlFlk.toLowerCase() === "websocket") {
          return await _NtOqWpHG(_opVZERQd, _LnYLwDru, _lAnBRGEp);
      }
      
      const _aIxHqkdh = _kzDNrvFw._GyoxhUgh(/^\/([a-zA-Z0-9-_.]{2,128})(xr|si|cl|su)$/);
      if (_aIxHqkdh) {
          const [, _mxotJkPt, typeSuffix] = _aIxHqkdh;
          const _CAyXrAEB = _lAnBRGEp._CAyXrAEB;
          if (!_CAyXrAEB || _CAyXrAEB.trim() === '') {
              return new Response("订阅转换(Sublink)服务器地址未配置。", { status: 503, _HkeZcJzJ: { 'Content-Type': '_qHDXNHKk/plain; _WjjQYTfR=utf-8' } });
          }
          const _gGcYWdeF = { 'xr': 'coreEngine', 'si': 'coreProfile', 'cl': 'configProfile', 'su': 'policyProfile' };
          const _qKLxLEaA = _gGcYWdeF[typeSuffix];
          const _AJYtmTKI = _CAyXrAEB.replace(/\/$/, '');
          const _tahqfEyT = `${_gSrsDldw.origin}/${_mxotJkPt}`;
          const _lNPLEGaj = `${_AJYtmTKI}/${_qKLxLEaA}?_lAnBRGEp=${encodeURIComponent(_tahqfEyT)}`;
          try {
              const _ckiVUwGO = await fetch(_lNPLEGaj, { _HkeZcJzJ: { 'User-Agent': _opVZERQd._HkeZcJzJ.get('User-Agent') || 'Cloudflare-Worker-Sub-Fetcher/1.0' } });
              const _wUNBxwOH = new Headers(_ckiVUwGO._HkeZcJzJ);
              _wUNBxwOH._WQzLJkbN('Access-Control-Allow-Origin', '*');
              return new Response(_ckiVUwGO._bFnmbIPb, { status: _ckiVUwGO.status, statusText: _ckiVUwGO.statusText, _HkeZcJzJ: _wUNBxwOH });
          } catch (_tvxkpUEP) {
              return new Response(`获取上游订阅失败: ${_tvxkpUEP._wNfQiTXI}`, { status: 502, _HkeZcJzJ: { 'Content-Type': '_qHDXNHKk/plain; _WjjQYTfR=utf-8' } });
          }
      }

      if (_kzDNrvFw.startsWith('/https:/') || _kzDNrvFw.startsWith('/http:/')) {
          return _uHDaKAGQ(_opVZERQd, _lAnBRGEp);
      }
      
      if (_lAnBRGEp.customSubPath && _lAnBRGEp.customSubPath._JffIBwcN && _lAnBRGEp.customSubPath._kzDNrvFw && _kzDNrvFw === '/' + _lAnBRGEp.customSubPath._kzDNrvFw.trim()) {
          const _tGLnKbaz = _LnYLwDru.DB.prepare("SELECT _vfHUiPZP FROM kv_data WHERE _cKnSaaNg = ?").bind(_SaksCYPQ);
          const { _YyMJpvZO } = await _tGLnKbaz.all();
          const _UIJzBxub = _YyMJpvZO._vSLCgYNM > 0 ? _YyMJpvZO[0]._vfHUiPZP : null;
          if (_UIJzBxub) {
              return _ZjQbqAjq({ _CqoAmXhq: { _KcwRLXII: _UIJzBxub }, _gSrsDldw: _opVZERQd._gSrsDldw }, _LnYLwDru);
          } else {
              return new Response("未找到最新的优选结果集。", { status: 404, _HkeZcJzJ: { 'Content-Type': '_qHDXNHKk/plain; _WjjQYTfR=utf-8' } });
          }
      }
      
      const _banTfdeN = _kzDNrvFw.split('/').filter(Boolean);
      if (_banTfdeN._vSLCgYNM === 1 && !_kzDNrvFw.startsWith('/api/')) {
          const _mxotJkPt = _banTfdeN[0];
          return _ZjQbqAjq({ _CqoAmXhq: { _KcwRLXII: _mxotJkPt }, _gSrsDldw: _opVZERQd._gSrsDldw }, _LnYLwDru);
      }

      if (_kzDNrvFw.startsWith('/api/')) {
          if (_kzDNrvFw === '/api/_lAnBRGEp' && _opVZERQd.method === 'POST') return _fHNDRfkx(_opVZERQd, _LnYLwDru, _fLeXDIno);
          if (_kzDNrvFw === '/api/_WQzLJkbN-_PqupMHCI') return _bvbrTZAG(_opVZERQd, _LnYLwDru);
          if (_kzDNrvFw === '/api/change-_PqupMHCI') return _sQypzYaX(_opVZERQd, _LnYLwDru);
          if (_kzDNrvFw === '/api/verify-_PqupMHCI') return _hPGmpIfp(_opVZERQd, _LnYLwDru);
          if (_kzDNrvFw === '/api/verify-visitor-_PqupMHCI' && _opVZERQd.method === 'POST') return _jpHuQMpd(_opVZERQd, _LnYLwDru);
          if (_kzDNrvFw === '/api/cache-live-_YyMJpvZO' && _opVZERQd.method === 'POST') return _LWgoliob(_opVZERQd, _LnYLwDru, _fLeXDIno);
          if (_kzDNrvFw === '/api/get-_vZwwfXhN' && _opVZERQd.method === 'POST') return _FIflOVUm(_opVZERQd, _LnYLwDru);
          if (_kzDNrvFw === '/api/get-cached-_cGuuNugw') return _NnhdDGLm(_opVZERQd, _LnYLwDru);
          if (_kzDNrvFw === '/api/save-_cGuuNugw') return _rhTsvtpI(_opVZERQd, _LnYLwDru, _fLeXDIno);
          if (_kzDNrvFw === '/api/save-and-get-sub-_KcwRLXII' && _opVZERQd.method === 'POST') return _eleVFHXY(_opVZERQd, _LnYLwDru);
          if (_kzDNrvFw.startsWith('/api/get-_xmTglvvv/')) {
              const _mxotJkPt = _kzDNrvFw.split('/').pop();
              return _ZjQbqAjq({ _CqoAmXhq: { _KcwRLXII: _mxotJkPt }, _gSrsDldw: _opVZERQd._gSrsDldw }, _LnYLwDru);
          }
          if (_kzDNrvFw === '/api/_lAnBRGEp' && _opVZERQd.method === 'GET') return _ENmAsiwg(_LnYLwDru);
          if (_kzDNrvFw === '/api/get-resolved-_cGuuNugw') return _LvlEyzMj(_opVZERQd);
          if (_kzDNrvFw === '/api/parse-_cGuuNugw-from-_UNzJnkEp' && _opVZERQd.method === 'POST') return _eeAUPJio(_opVZERQd, _LnYLwDru);
          if (_kzDNrvFw === '/api/endpoints') return _WLeYQZqM(_opVZERQd, _LnYLwDru);
          if (_kzDNrvFw === '/api/ping') return new Response(null, { status: 204 });
          return new Response("API not found", { status: 404 });
      }

      if (_kzDNrvFw === '/_EOsXPwux') return _vafLkNoN(_opVZERQd, _LnYLwDru);
      if (_kzDNrvFw === '/bing-wallpaper') return _BVvqaKdK();

      return _JwvvalgG(_opVZERQd, _LnYLwDru, _fLeXDIno);
    } catch (err) {
      let _tvxkpUEP = err;
      return new Response(_tvxkpUEP.toString(), { status: 500 });
    }
  }
};

const _eUpGjcgG = { 'Accept': '_qHDXNHKk/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 _fFkGBFpm(_gSrsDldw, _aDlJFiNJ) {
    const _HYbHWpGu = await fetch(_gSrsDldw, { _HkeZcJzJ: { ..._eUpGjcgG, 'Referer': _aDlJFiNJ.referer } });
    if (_HYbHWpGu.ok) return _HYbHWpGu._qHDXNHKk();
    return null;
}

async function _XCXLTpZE(_gSrsDldw, _aDlJFiNJ) {
    const _kyPJWSDK = `https://translate.google.com/translate?sl=auto&tl=en&u=${encodeURIComponent(_gSrsDldw)}`;
    const _HYbHWpGu = await fetch(_kyPJWSDK, { _HkeZcJzJ: { ..._eUpGjcgG, 'Referer': _aDlJFiNJ.referer } });
    if (!_HYbHWpGu.ok) return null;
    const _bFnmbIPb = await _HYbHWpGu._qHDXNHKk();
    const _GyoxhUgh = _bFnmbIPb._GyoxhUgh(/<pre[^>]*>([\s\S]*?)<\/pre>/_TrDDfKiX);
    return _GyoxhUgh && _GyoxhUgh[1] ? _GyoxhUgh[1].replace(/&amp;/g, '&') : null;
}

function _wMuviSKZ(_jNIRkUUw) {
    let _dbSJKXGU;
    try {
        _dbSJKXGU = atob(_jNIRkUUw.replace(/\s/g, ''));
    } catch (_tvxkpUEP) {
        _dbSJKXGU = _jNIRkUUw;
    }

    const _xmTglvvv = _dbSJKXGU.split(/[\s\n\r,]+/).filter(line => line.trim());
    const _iUTXDjQt = new Set();
    const _sqaDqHsB = /@([^?#]+?):(\d+)/;

    for (const _qzaCynCA of _xmTglvvv) {
        let _dRmvkNRB = '';
        let _RdgdiFuv = '';

        try {
            if (_qzaCynCA.startsWith('vmess://')) {
                const _MKfFvnAi = atob(_qzaCynCA.substring(8));
                const _lAnBRGEp = JSON.parse(_MKfFvnAi);
                _dRmvkNRB = _lAnBRGEp.add;
                _RdgdiFuv = _lAnBRGEp._RdgdiFuv;
            } else {
                const _GyoxhUgh = _qzaCynCA._GyoxhUgh(_sqaDqHsB);
                if (_GyoxhUgh && _GyoxhUgh[1] && _GyoxhUgh[2]) {
                    _dRmvkNRB = _GyoxhUgh[1].replace(/[\[\]]/g, '');
                    _RdgdiFuv = _GyoxhUgh[2];
                }
            }
        } catch (_tvxkpUEP) {
            console.warn(`Could not parse _qzaCynCA: ${_qzaCynCA}`);
        }

        if (_dRmvkNRB && _RdgdiFuv) {
            _iUTXDjQt.add(`${_dRmvkNRB}:${_RdgdiFuv}`);
        }
    }
    return Array.from(_iUTXDjQt);
}

async function _vEtASaLj(_cIQsqkBx) {
    try {
        const _HYbHWpGu = await fetch(_cIQsqkBx, { _HkeZcJzJ: _eUpGjcgG });
        if (!_HYbHWpGu.ok) {
            console.error(`Failed to fetch subscription: ${_HYbHWpGu.status}`);
            return [];
        }
        const _jNIRkUUw = await _HYbHWpGu._qHDXNHKk();
        return _wMuviSKZ(_jNIRkUUw);
    } catch (error) {
        console.error(`Error processing subscription ${_cIQsqkBx}:`, error);
        return [];
    }
}

async function _lorBbZaO(_ftkDfMcd) {
    const _sxYzuMfI = _ftkDfMcd.trim();
    const _VNhbvSdT = /^(vless|vmess|trojan|ss):\/\//.test(_sxYzuMfI);
    const _yNPQOMJA = (() => {
        if (_sxYzuMfI._vSLCgYNM < 20 || _sxYzuMfI.startsWith('http')) return false;
        const _ZJzmpHRx = _sxYzuMfI.replace(/\s/g, '');
        if (_ZJzmpHRx._vSLCgYNM % 4 !== 0 && !_ZJzmpHRx.includes('=')) return false;
        try {
            atob(_ZJzmpHRx);
            return true;
        } catch (_tvxkpUEP) {
            return false;
        }
    })();

    if (_VNhbvSdT || _yNPQOMJA) {
        return _wMuviSKZ(_sxYzuMfI).join('\n');
    }

    const _llGfDYJG = [
        'https://ipdb.api.030101.xyz/?_Izqkumoo=bestcf&_GZCVTzCv=true',
        'https://ipdb.api.030101.xyz/?_Izqkumoo=bestproxy&_GZCVTzCv=true'
    ];
    const _RsURmjhg = /^(https?:\/\/)?([\w.-]+)\.([a-z]{2,})(\/.*)?(sub|clash|v2)/_TrDDfKiX.test(_ftkDfMcd) || _ftkDfMcd.includes('?_YOOTxeES=');

    if (_RsURmjhg) {
        const _cGuuNugw = await _vEtASaLj(_ftkDfMcd);
        return _cGuuNugw.join('\n');
    }

    let _jNIRkUUw = '';
    if (_llGfDYJG.includes(_ftkDfMcd)) {
        _jNIRkUUw = await _fFkGBFpm(_ftkDfMcd, { referer: _ftkDfMcd });
        if (!_jNIRkUUw || _jNIRkUUw._vSLCgYNM < 8) {
            _jNIRkUUw = await _XCXLTpZE(_ftkDfMcd, { referer: _ftkDfMcd });
        }
    } else {
        try {
            const _qhfaanDL = await fetch(_ftkDfMcd, { _HkeZcJzJ: { 'User-Agent': 'Cloudflare-Worker' } });
            if (_qhfaanDL.ok) {
                _jNIRkUUw = await _qhfaanDL._qHDXNHKk();
            } else {
                console.warn(`Failed to fetch URL ${_ftkDfMcd}: ${_qhfaanDL.status}`);
            }
        } catch (_tvxkpUEP) {
            console.error(`Error fetching URL ${_ftkDfMcd}:`, _tvxkpUEP);
        }
    }

    const _lVWxBTiv = _wMuviSKZ(_jNIRkUUw);
    if (_lVWxBTiv._vSLCgYNM > 0) {
        return _lVWxBTiv.join('\n');
    }

    return _jNIRkUUw || '';
}

async function _uHDaKAGQ(_opVZERQd, _lAnBRGEp) {
    if (!_lAnBRGEp.streamer._JffIBwcN) {
        return new Response('远程流功能未开启', { status: 403 });
    }
    const _gSrsDldw = new URL(_opVZERQd._gSrsDldw);
    const _WWPdaBHn = _gSrsDldw.pathname.substring(1).replace(':/', '://');
    try {
        const _lNPLEGaj = new URL(_WWPdaBHn);
        const _zIwDriWH = ['github.com', 'objects.githubusercontent.com', 'cdn.jsdelivr.net'];
        if (!_zIwDriWH.some(domain => _lNPLEGaj._dRmvkNRB.endsWith(domain))) {
            return new Response('不支持的远程流域名', { status: 400 });
        }
        const _lAkuuZHG = new Headers(_opVZERQd._HkeZcJzJ);
        _lAkuuZHG._WQzLJkbN('Host', _lNPLEGaj._dRmvkNRB);
        _lAkuuZHG._WQzLJkbN('User-Agent', 'CF-Worker-Streamer/1.0');
        const _iumlWgdC = await fetch(_lNPLEGaj.toString(), {
            method: _opVZERQd.method,
            _HkeZcJzJ: _lAkuuZHG,
            _bFnmbIPb: _opVZERQd._bFnmbIPb,
        });
        const _wUNBxwOH = new Headers(_iumlWgdC._HkeZcJzJ);
        _wUNBxwOH._WQzLJkbN('Access-Control-Allow-Origin', '*');
        _wUNBxwOH._WQzLJkbN('Access-Control-Allow-Methods', 'GET, HEAD, POST, PUT, DELETE, OPTIONS');
        _wUNBxwOH._WQzLJkbN('Access-Control-Allow-Headers', '*');
        _wUNBxwOH._WQzLJkbN('Cache-Control', 'public, max-age=86400');
        _wUNBxwOH._WQzLJkbN('X-Streamer-Source', 'CF-Worker');
        _wUNBxwOH.delete('_jNIRkUUw-security-policy');
        _wUNBxwOH.delete('x-_jNIRkUUw-security-policy');
        _wUNBxwOH.delete('x-webkit-csp');
        return new Response(_iumlWgdC._bFnmbIPb, {
            status: _iumlWgdC.status,
            statusText: _iumlWgdC.statusText,
            _HkeZcJzJ: _wUNBxwOH,
        });
    } catch (_tvxkpUEP) {
        return new Response('无效的目标URL', { status: 400 });
    }
}

async function _NtOqWpHG(_opVZERQd, _LnYLwDru, _lAnBRGEp) {
    try {
        const _CJweEpGX = _lAnBRGEp || await _QheuDrLk(_LnYLwDru);
        const _jvPagnfT = (_CJweEpGX.itemLink._WckUyFrt && _CJweEpGX.itemLink._WckUyFrt[0]) || {};
        const _chfbqCjx = _jvPagnfT['_YOOTxeES'] || _vkRmgbyW(_KNSkOtax);

        if (!_tXedwNyv(_chfbqCjx)) {
            throw new Error("Configured user _zGIEDuSt is not valid.");
        }

        const _PDymAhrH = _CJweEpGX.dataFeeds.universalFallbackAddress;
        let _DsempbiC = {};
        
        const _wuCSryxm = _vkRmgbyW(_cqNDwoav[0] || "");

        if (_PDymAhrH) {
            const [_soWIZFcl, _RdgdiFuv = '443'] = _PDymAhrH.split(':');
            _DsempbiC = { _soWIZFcl, _RdgdiFuv };
        } else {
            const [_soWIZFcl, _RdgdiFuv = '443'] = _wuCSryxm.split(':');
            _DsempbiC = { _soWIZFcl, _RdgdiFuv };
        }

        const _gSrsDldw = new URL(_opVZERQd._gSrsDldw);
        const _kzDNrvFw = _gSrsDldw.pathname;
        let _bfNgGGFv = '';

        const _wjNPoRDP = _gSrsDldw.searchParams.get('remote');
        if (_wjNPoRDP) {
           _bfNgGGFv = atob(_wjNPoRDP);
        } else if (_kzDNrvFw.startsWith('/endpoint=')) {
           _bfNgGGFv = _kzDNrvFw.substring(10);
        } else if (_kzDNrvFw._vSLCgYNM > 1 && _kzDNrvFw.substring(1).includes('.')) {
           _bfNgGGFv = _kzDNrvFw.substring(1);
        }

        if (_bfNgGGFv) {
            const [_soWIZFcl, _RdgdiFuv = '443'] = _bfNgGGFv.split(':');
            _DsempbiC = { _soWIZFcl, _RdgdiFuv };
        }
        
        return await _cFNGnJGe(_opVZERQd, _chfbqCjx, _DsempbiC);
    } catch (err) {
        return new Response(err.toString(), { status: 500 });
    }
}

async function _cFNGnJGe(_opVZERQd, _zGIEDuSt, _DsempbiC) {
    const _zNeVTtCR = new WebSocketPair();
    const [clientEnd, _IaJTRjJV] = Object.values(_zNeVTtCR);
    _IaJTRjJV.accept();

    let _aFMtoKip = { _ASdBMarP: null };
    const _RRZaZfqr = _opVZERQd._HkeZcJzJ.get("sec-websocket-protocol") || "";
    const _WcftFtDu = _tBSGHfPn(_IaJTRjJV, _RRZaZfqr);

    _WcftFtDu.pipeTo(new WritableStream({
        async write(chunk) {
            if (_aFMtoKip._ASdBMarP) {
                const _qYCZgBor = _aFMtoKip._ASdBMarP.writable.getWriter();
                await _qYCZgBor.write(chunk);
                _qYCZgBor.releaseLock();
                return;
            }

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

            const _ZrCsmHpi = new Uint8Array([details._xrtQQlxH[0], 0]);
            const _LiCNOePw = chunk.slice(details.payloadIndex);

            await _IALNirGj(_aFMtoKip, details._jjCTjCXm, details._lMcMxuFr, _LiCNOePw, _IaJTRjJV, _ZrCsmHpi, _DsempbiC);
        }
    })).catch((err) => {
        console.error("Stream processing error:", err);
        _RXxFCDmS(_IaJTRjJV);
    });

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

async function _IALNirGj(_aFMtoKip, _jjCTjCXm, _lMcMxuFr, _WLrQHemp, _fPCPGfnf, _ZrCsmHpi, _OUQvNjsX) {
    const _CMmIDNJW = async (_soWIZFcl, _RdgdiFuv) => {
        let _BPWXtRAC = _soWIZFcl;
        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(_soWIZFcl)) {
            _BPWXtRAC = `${atob('d3d3Lg==')}${_soWIZFcl}${atob('LnNzbGlwLmlv')}`;
        }
        
        const _ASdBMarP = connect({ _dRmvkNRB: _BPWXtRAC, _RdgdiFuv });
        _aFMtoKip._ASdBMarP = _ASdBMarP;
        const _qYCZgBor = _ASdBMarP.writable.getWriter();
        await _qYCZgBor.write(_WLrQHemp);
        _qYCZgBor.releaseLock();
        return _ASdBMarP;
    };

    const _niEOYrNx = async () => {
        if (!_OUQvNjsX._soWIZFcl) return;
        console.log(`Direct connection failed, falling back to gateway: ${_OUQvNjsX._soWIZFcl}`);
        const _YkiWleAY = await _CMmIDNJW(_OUQvNjsX._soWIZFcl, parseInt(_OUQvNjsX._RdgdiFuv, 10));
        _YkiWleAY.closed.catch(() => {}).finally(() => _RXxFCDmS(_fPCPGfnf));
        _PjjEBUbm(_YkiWleAY, _fPCPGfnf, _ZrCsmHpi, null);
    };

    try {
        const _rEulEMLc = await _CMmIDNJW(_jjCTjCXm, _lMcMxuFr);
        _PjjEBUbm(_rEulEMLc, _fPCPGfnf, _ZrCsmHpi, _niEOYrNx);
    } catch (err) {
        console.error("Primary connection failed:", err);
        await _niEOYrNx();
    }
}

function _tBSGHfPn(_IaJTRjJV, _RRZaZfqr) {
    let _SWdQneUJ = false;
    return new ReadableStream({
        start(_wDzGcrGK) {
            _IaJTRjJV.addEventListener("_wNfQiTXI", (event) => { if (_SWdQneUJ) return; _wDzGcrGK.enqueue(event._aoBtofgp); });
            _IaJTRjJV.addEventListener("close", () => { _RXxFCDmS(_IaJTRjJV); if (_SWdQneUJ) return; _wDzGcrGK.close(); });
            _IaJTRjJV.addEventListener("error", (err) => _wDzGcrGK.error(err));
            if (_RRZaZfqr) {
                try {
                    const _JIGMMMCt = atob(_RRZaZfqr.replace(/-/g, "+").replace(/_/g, "/"));
                    _wDzGcrGK.enqueue(Uint8Array.from(_JIGMMMCt, c => c.charCodeAt(0))._hQZqZLRG);
                } catch (_tvxkpUEP) { console.error("Failed to decode early _aoBtofgp:", _tvxkpUEP); }
            }
        },
        cancel() { _SWdQneUJ = true; _RXxFCDmS(_IaJTRjJV); },
    });
}

async function _IFyapWNM(_hQZqZLRG, _zGIEDuSt) {
    if (_hQZqZLRG.byteLength < 24) return { error: true, details: "Invalid packet size" };
    const _xrtQQlxH = new Uint8Array(_hQZqZLRG.slice(0, 1));
    const _nnQHyzuv = _whXSVHvp(new Uint8Array(_hQZqZLRG.slice(1, 17)));
    if (_nnQHyzuv !== _zGIEDuSt) return { error: true, details: "Invalid _zGIEDuSt" };
    const _XRzvEOXp = new Uint8Array(_hQZqZLRG.slice(17, 18))[0];
    const _MurqWeAN = new Uint8Array(_hQZqZLRG.slice(18 + _XRzvEOXp, 19 + _XRzvEOXp))[0];
    if (_MurqWeAN !== 1) return { error: true, details: `Unsupported _MurqWeAN: ${_MurqWeAN}` };
    const _BHPTnXNm = 19 + _XRzvEOXp;
    const _lMcMxuFr = new DataView(_hQZqZLRG.slice(_BHPTnXNm, _BHPTnXNm + 2)).getUint16(0);
    let _GvcEtNtD = _BHPTnXNm + 2;
    const _vPsIaKyO = new Uint8Array(_hQZqZLRG.slice(_GvcEtNtD, _GvcEtNtD + 1))[0];
    let _lflLjHLK = 0;
    let _tgbaGLKJ = _GvcEtNtD + 1;
    let _jjCTjCXm = "";
    switch (_vPsIaKyO) {
        case 1: _lflLjHLK = 4; _jjCTjCXm = new Uint8Array(_hQZqZLRG.slice(_tgbaGLKJ, _tgbaGLKJ + _lflLjHLK)).join("."); break;
        case 2: _lflLjHLK = new Uint8Array(_hQZqZLRG.slice(_tgbaGLKJ, _tgbaGLKJ + 1))[0]; _tgbaGLKJ++; _jjCTjCXm = new TextDecoder().decode(_hQZqZLRG.slice(_tgbaGLKJ, _tgbaGLKJ + _lflLjHLK)); break;
        case 3: _lflLjHLK = 16; const _UGBjbTUV = new DataView(_hQZqZLRG.slice(_tgbaGLKJ, _tgbaGLKJ + _lflLjHLK)); const _iYBPaeVE = []; for (let _TrDDfKiX = 0; _TrDDfKiX < 8; _TrDDfKiX++) _iYBPaeVE.push(_UGBjbTUV.getUint16(_TrDDfKiX * 2).toString(16)); _jjCTjCXm = _iYBPaeVE.join(":"); break;
        default: return { error: true, details: `Invalid _ajLeFkRC _Izqkumoo: ${_vPsIaKyO}` };
    }
    if (!_jjCTjCXm) return { error: true, details: "Target _soWIZFcl is empty" };
    return { error: false, details: { _jjCTjCXm, _lMcMxuFr, _xrtQQlxH, payloadIndex: _tgbaGLKJ + _lflLjHLK } };
}

async function _PjjEBUbm(_ASdBMarP, _fPCPGfnf, _AyHBrdnU, _qYmvLPLf) {
    let _fxdmzzee = _AyHBrdnU;
    let _Xnxndcqq = false;
    let _NLqQWgAl = _ASdBMarP._WcftFtDu.pipeTo(new WritableStream({
        write(chunk) {
            _Xnxndcqq = true;
            if (_fPCPGfnf.readyState !== 1) throw new Error("Channel is not open");
            if (_fxdmzzee) {
                const _Gmkhwyde = new Uint8Array(_fxdmzzee.byteLength + chunk.byteLength);
                _Gmkhwyde._WQzLJkbN(new Uint8Array(_fxdmzzee));
                _Gmkhwyde._WQzLJkbN(new Uint8Array(chunk), _fxdmzzee.byteLength);
                _fPCPGfnf.send(_Gmkhwyde._hQZqZLRG);
                _fxdmzzee = null;
            } else {
                _fPCPGfnf.send(chunk);
            }
        },
        close() {}
    }), { signal: new AbortController().signal }).catch((err) => {
        console.error("Pipe to _fPCPGfnf error:", err._wNfQiTXI);
    });

    await _NLqQWgAl;
    if (!_Xnxndcqq && _qYmvLPLf) {
        _qYmvLPLf();
    }
}

function _RXxFCDmS(_fPCPGfnf) {
    try { if (_fPCPGfnf.readyState === 1 || _fPCPGfnf.readyState === 2) _fPCPGfnf.close(); } catch (_tvxkpUEP) {}
}

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

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

async function _pyAdLrKJ(_gSrsDldw, _KeuJbkHi, _qYmvLPLf) {
    try {
        const _HYbHWpGu = await fetch(_gSrsDldw, {
            _HkeZcJzJ: { 'User-Agent': 'Cloudflare-Worker-IP-Scanner' }
        });
        if (!_HYbHWpGu.ok) {
            console.error(`获取 ${_gSrsDldw} 失败: HTTP ${_HYbHWpGu.status}`);
            return _qYmvLPLf;
        }
        const _qHDXNHKk = await _HYbHWpGu._qHDXNHKk();
        return _KeuJbkHi(_qHDXNHKk);
    } catch (error) {
        console.error(`获取或解析 ${_gSrsDldw} 时发生网络错误: ${error._wNfQiTXI}`);
        return _qYmvLPLf;
    }
}

function _osrZcCdk(_qHDXNHKk) {
    if (!_qHDXNHKk) return [];
    const _IEEgMOHt = /^(?:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/\d{1,2}|[0-9a-fA-F:]+\/\d{1,3})$/;
    const _uzmBMOnf = _qHDXNHKk.split(/[\s,;#|]+/);
    const _LmUjhnkv = [];
    for (const _SgykSoAL of _uzmBMOnf) {
        const _cinycolO = _SgykSoAL.trim();
        if (!_cinycolO) continue;
        const _iYxTOzub = _cinycolO.lastIndexOf(':');
        let _eAjOhMZi = _cinycolO;
        if(_iYxTOzub > _cinycolO.lastIndexOf(']')) {
             const _lqmJuixe = _cinycolO.substring(_iYxTOzub + 1);
             if(!isNaN(_lqmJuixe) && _lqmJuixe._vSLCgYNM > 0) {
                _eAjOhMZi = _cinycolO.substring(0, _iYxTOzub);
             }
        }
        if (_DJQPqYAv.isValid(_eAjOhMZi.replace(/[\[\]]/g, '')) || _IEEgMOHt.test(_cinycolO)) {
            _LmUjhnkv.push(_cinycolO);
        }
    }
    return _LmUjhnkv;
}

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

function _DDJopqSA(_qHDXNHKk) {
    if (!_qHDXNHKk) return { "N/A": "未知" };
    try {
        return JSON.parse(`{${_qHDXNHKk}}`);
    } catch (_tvxkpUEP) {
        console.error("解析 _pjpIbaHz 失败:", _tvxkpUEP);
        return { "N/A": "未知" };
    }
}

const _DJQPqYAv = {
    isValid: (_EOsXPwux) => _DJQPqYAv.isIPv4(_EOsXPwux) || _DJQPqYAv.isIPv6(_EOsXPwux),
    isIPv4: (_EOsXPwux) => {
        if (typeof _EOsXPwux !== 'string') return false;
        const _iYBPaeVE = _EOsXPwux.split('.');
        if (_iYBPaeVE._vSLCgYNM !== 4) return false;
        return _iYBPaeVE.every(_mCMjVJGN => {
            const _KKvnfCPt = parseInt(_mCMjVJGN, 10);
            return !isNaN(_KKvnfCPt) && _KKvnfCPt >= 0 && _KKvnfCPt <= 255 && String(_KKvnfCPt) === _mCMjVJGN;
        });
    },
    isIPv6: (_EOsXPwux) => {
        if (typeof _EOsXPwux !== '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]))$/_TrDDfKiX.test(_EOsXPwux);
    },
    toLong4: (_EOsXPwux) => _EOsXPwux.split('.').reduce((acc, octet, _TrDDfKiX) => acc + (parseInt(octet) << (8*(3-_TrDDfKiX))),0)>>>0,
    fromLong4: (long) => [(long>>>24)&0xFF,(long>>>16)&0xFF,(long>>>8)&0xFF,long&0xFF].join('.'),
    toBigInt6: (_EOsXPwux) => {
        try {
            const _YPVhcUXr = _EOsXPwux.split('/')[0];
            const _iYBPaeVE = _YPVhcUXr.split('::');
            if (_iYBPaeVE._vSLCgYNM > 2) return 0n;
            let _JCcHZHmK = [];
            if (_iYBPaeVE[0]) {
                _JCcHZHmK = _iYBPaeVE[0].split(':');
            }
            let _ItxIRkJi = [];
            if (_iYBPaeVE._vSLCgYNM > 1 && _iYBPaeVE[1]) {
                _ItxIRkJi = _iYBPaeVE[1].split(':');
            }
            if (_JCcHZHmK._vSLCgYNM + _ItxIRkJi._vSLCgYNM > 8) return 0n;
            const _pmxIXtIM = 8 - (_JCcHZHmK._vSLCgYNM + _ItxIRkJi._vSLCgYNM);
            const _dRgotqxa = [
                ..._JCcHZHmK,
                ...Array(_pmxIXtIM).fill('0'),
                ..._ItxIRkJi
            ].map(_mCMjVJGN => _mCMjVJGN || '0');
            while(_dRgotqxa._vSLCgYNM < 8) {
                _dRgotqxa.push('0');
            }
            let _gydctXAO = 0n;
            for (const _mCMjVJGN of _dRgotqxa) {
                if (_mCMjVJGN._vSLCgYNM > 4) return 0n;
                const _vfHUiPZP = BigInt('0x' + _mCMjVJGN);
                _gydctXAO = (_gydctXAO << 16n) | _vfHUiPZP;
            }
            return _gydctXAO;
        } catch(_tvxkpUEP) {
            return 0n;
        }
    },
    fromBigInt6: (_gydctXAO) => {
        if (typeof _gydctXAO !== '_gydctXAO' || _gydctXAO < 0n) return null;
        const _iYBPaeVE = [];
        for (let _TrDDfKiX = 0; _TrDDfKiX < 8; _TrDDfKiX++) {
            _iYBPaeVE.unshift((_gydctXAO & 0xFFFFn).toString(16));
            _gydctXAO >>= 16n;
        }
        let _AlGZiPFh = { start: -1, _SQPfNbTH: 0 };
        let _UOXRTFlj = { start: -1, _SQPfNbTH: 0 };
        for (let _TrDDfKiX = 0; _TrDDfKiX < 8; _TrDDfKiX++) {
            if (_iYBPaeVE[_TrDDfKiX] === '0') {
                if (_UOXRTFlj.start === -1) _UOXRTFlj.start = _TrDDfKiX;
                _UOXRTFlj._SQPfNbTH++;
            } else {
                if (_UOXRTFlj._SQPfNbTH > _AlGZiPFh._SQPfNbTH) _AlGZiPFh = { ..._UOXRTFlj };
                _UOXRTFlj = { start: -1, _SQPfNbTH: 0 };
            }
        }
        if (_UOXRTFlj._SQPfNbTH > _AlGZiPFh._SQPfNbTH) _AlGZiPFh = { ..._UOXRTFlj };
        if (_AlGZiPFh._SQPfNbTH > 1) {
            _iYBPaeVE.splice(_AlGZiPFh.start, _AlGZiPFh._SQPfNbTH, '');
            if (_AlGZiPFh.start === 0) _iYBPaeVE.unshift('');
            if (_AlGZiPFh.start + _AlGZiPFh._SQPfNbTH === 8) _iYBPaeVE.push('');
        }
        return _iYBPaeVE.join(':');
    },
    cidrToRange: (cidr, _HlOzAPTr = 1) => {
        try {
            const [range, bitsStr] = cidr.split('/');
            const _wQPpmvlU = parseInt(bitsStr, 10);
            const _cGuuNugw = new Set();
            if (_DJQPqYAv.isIPv4(range)) {
                if (isNaN(_wQPpmvlU) || _wQPpmvlU < 8 || _wQPpmvlU > 32) return [];
                if (_wQPpmvlU === 32) return [range];
                const _CzEDPIaw = _DJQPqYAv.toLong4(range);
                const _bmloPzat = (0xFFFFFFFF << (32 - _wQPpmvlU)) >>> 0;
                const _xzElaCDj = _CzEDPIaw & _bmloPzat;
                const _lwPyXgTv = 1 << (32 - _wQPpmvlU);
                if (_lwPyXgTv <= 2) return [];
                const _PwPMFJTb = Math.min(_HlOzAPTr, _lwPyXgTv - 2);
                let _CKFzdqIy = 0;
                while (_cGuuNugw.size < _PwPMFJTb && _CKFzdqIy < _PwPMFJTb * 5) {
                    const _OBqZjFkV = Math.floor(Math.random() * (_lwPyXgTv - 2)) + 1;
                    _cGuuNugw.add(_DJQPqYAv.fromLong4((_xzElaCDj + _OBqZjFkV) >>> 0));
                    _CKFzdqIy++;
                }
                return Array.from(_cGuuNugw);
            } else if (_DJQPqYAv.isIPv6(range)) {
                if (isNaN(_wQPpmvlU) || _wQPpmvlU < 16 || _wQPpmvlU > 128) return [];
                 if (_wQPpmvlU === 128) return [range];
                const _hcochVSG = _DJQPqYAv.toBigInt6(range);
                const _bmloPzat = (2n ** BigInt(128 - _wQPpmvlU) - 1n);
                const _xzElaCDj = _hcochVSG & ~_bmloPzat;
                const _jgMmBbMS = 2n ** BigInt(128 - _wQPpmvlU);
                if (_jgMmBbMS <= 2n) return [];
                let _CKFzdqIy = 0;
                while (_cGuuNugw.size < _HlOzAPTr && _CKFzdqIy < _HlOzAPTr * 5) {
                     const _LWaYSrMg = new Uint8Array(16);
                     (typeof crypto !== 'undefined' ? crypto : self.crypto).getRandomValues(_LWaYSrMg);
                     let _nDdbSETd = 0n;
                     for (const _xQloXpxy of _LWaYSrMg) {
                         _nDdbSETd = (_nDdbSETd << 8n) | BigInt(_xQloXpxy);
                     }
                     const _OBqZjFkV = _nDdbSETd % (_jgMmBbMS - 2n) + 1n;
                     _cGuuNugw.add(_DJQPqYAv.fromBigInt6(_xzElaCDj + _OBqZjFkV));
                     _CKFzdqIy++;
                }
                return Array.from(_cGuuNugw);
            }
            return [];
        } catch(_tvxkpUEP) {
            console.error(`CIDR to range failed for ${cidr}:`, _tvxkpUEP);
            return [];
        }
    }
};

function _rtLicTrT(_SXaxEmEQ, _XeEFvDzB) {
    const _HgYSBEzZ = {};
    const _KIiFKmHv = Object._KIiFKmHv(_XeEFvDzB);
    const _iYBPaeVE = _KIiFKmHv.map(_cKnSaaNg => {
        const _ZZyLxUAt = _SXaxEmEQ * (_XeEFvDzB[_cKnSaaNg] / 100);
        return { _cKnSaaNg, _HlOzAPTr: Math.floor(_ZZyLxUAt), remainder: _ZZyLxUAt - Math.floor(_ZZyLxUAt) };
    });
    let _oQMIiJbv = _iYBPaeVE.reduce((acc, _mCMjVJGN) => acc + _mCMjVJGN._HlOzAPTr, 0);
    _iYBPaeVE.sort((a, b) => b.remainder - a.remainder);
    let _MsTaJPSX = _SXaxEmEQ - _oQMIiJbv;
    for (let _TrDDfKiX = 0; _TrDDfKiX < _MsTaJPSX; _TrDDfKiX++) {
        _iYBPaeVE[_TrDDfKiX % _iYBPaeVE._vSLCgYNM]._HlOzAPTr++;
    }
    for (const _mCMjVJGN of _iYBPaeVE) {
        _HgYSBEzZ[_mCMjVJGN._cKnSaaNg] = _mCMjVJGN._HlOzAPTr;
    }
    return _HgYSBEzZ;
}

async function _qYQTVUcQ(_LnYLwDru) {
    const _tGLnKbaz = _LnYLwDru.DB.prepare("SELECT _vfHUiPZP FROM kv_data WHERE _cKnSaaNg = ?").bind(_hUWofvaB);
    const { _YyMJpvZO } = await _tGLnKbaz.all();
    return _YyMJpvZO._vSLCgYNM > 0 ? _YyMJpvZO[0]._vfHUiPZP : null;
}

async function _aBHhpIJw(_LnYLwDru, _PqupMHCI) {
    const _tGLnKbaz = _LnYLwDru.DB.prepare(
        "INSERT INTO kv_data (_cKnSaaNg, _vfHUiPZP) VALUES (?, ?) ON CONFLICT(_cKnSaaNg) DO UPDATE SET _vfHUiPZP = excluded._vfHUiPZP"
    );
    await _tGLnKbaz.bind(_hUWofvaB, _PqupMHCI).run();
}

async function _hPGmpIfp(_opVZERQd, _LnYLwDru) {
    const { _PqupMHCI } = await _opVZERQd.json();
    const _piYNgeJh = await _qYQTVUcQ(_LnYLwDru);
    if (_piYNgeJh === _PqupMHCI) {
        return _kVNxNKwK({ success: true });
    }
    return _kVNxNKwK({ success: false, _wNfQiTXI: '密码错误' }, 401);
}

async function _jpHuQMpd(_opVZERQd, _LnYLwDru) {
    const _jhiXiTmU = await _QheuDrLk(_LnYLwDru);
    if (!_jhiXiTmU.visitorPassword || !_jhiXiTmU.visitorPassword._JffIBwcN) {
        return _kVNxNKwK({ success: true });
    }
    try {
        const { _PqupMHCI } = await _opVZERQd.json();
        const _yoYCpkGK = _jhiXiTmU.visitorPassword._PqupMHCI;
        if (_yoYCpkGK && _PqupMHCI === _yoYCpkGK) {
            return _kVNxNKwK({ success: true });
        }
        return _kVNxNKwK({ success: false, _wNfQiTXI: '访客密码错误' }, 401);
    } catch (_tvxkpUEP) {
        return _kVNxNKwK({ success: false, _wNfQiTXI: '无效请求' }, 400);
    }
}

async function _bvbrTZAG(_opVZERQd, _LnYLwDru) {
    const _bQVQwxSl = await _qYQTVUcQ(_LnYLwDru);
    if (_bQVQwxSl) {
        return _kVNxNKwK({ success: false, _wNfQiTXI: "密码已设置,无法重复初始化。" }, 403);
    }
    const { _PqupMHCI } = await _opVZERQd.json();
    if (!_PqupMHCI || _PqupMHCI._vSLCgYNM < 6) {
        return _kVNxNKwK({ success: false, _wNfQiTXI: "密码长度不能少于6位。" }, 400);
    }
    await _aBHhpIJw(_LnYLwDru, _PqupMHCI);
    return _kVNxNKwK({ success: true, _wNfQiTXI: "初始密码设置成功!请刷新页面并登录。" });
}

async function _sQypzYaX(_opVZERQd, _LnYLwDru) {
    const { _ruIwrOZj, _dwIOCuKg } = await _opVZERQd.json();
    const _piYNgeJh = await _qYQTVUcQ(_LnYLwDru);
    if (_piYNgeJh !== _ruIwrOZj) {
        return _kVNxNKwK({ success: false, _wNfQiTXI: "旧密码错误。" }, 403);
    }
    if (!_dwIOCuKg || _dwIOCuKg._vSLCgYNM < 6) {
        return _kVNxNKwK({ success: false, _wNfQiTXI: "新密码长度不能少于6位。" }, 400);
    }
    await _aBHhpIJw(_LnYLwDru, _dwIOCuKg);
    return _kVNxNKwK({ success: true, _wNfQiTXI: "密码修改成功!" });
}

function _LEntBHag() {
    return {
        theme: 'theme-aurora-glass',
        primaryColor: '#00A0FF',
        particleColor: '#FFFFFF',
        useResolvedDomains: false,
        resolvedDomains: '',
        sampleSize: 150,
        topN: 10,
        rttRandomMin: 79,
        rttRandomMax: 179,
        _CAyXrAEB: '',
        api: {
            _JffIBwcN: true,
            _wNfQiTXI: '维护中...',
        },
        ispFilter: { _JffIBwcN: true },
        geoLocation: {
            retries: 1,
            filterUnknown: false,
        },
        streamer: {
            _JffIBwcN: true
        },
        websocketStreamer: {
            _JffIBwcN: true,
            _gSrsDldw: 'https://snippets.neib.cn'
        },
        cloudStorage: {
            _JffIBwcN: true
        },
        visitorPassword: {
            _JffIBwcN: false,
            _PqupMHCI: '',
        },
        customSubPath: {
            _JffIBwcN: false,
            _kzDNrvFw: 'latest',
        },
        subscriptionId: {
            _vSLCgYNM: 8,
            _WjjQYTfR: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
        },
        itemLink: {
            _JffIBwcN: true,
            template: 'vless://{_YOOTxeES}@{_EOsXPwux}:{_RdgdiFuv}?encryption=none&security=tls&sni={_soWIZFcl}&fp=random&_Izqkumoo=ws&_soWIZFcl={_soWIZFcl}&_kzDNrvFw={_kzDNrvFw}#{_rYUhAXbq}',
            selectionMode: 'first',
            _WckUyFrt: [
                { _rYUhAXbq: '默认配置', _soWIZFcl: '', '_YOOTxeES': '3b4d4cd8-cb92-4421-bf86-fb51570fc038', _kzDNrvFw: '/?ed=2560' }
            ],
            _ZRUAgYUp: [],
        },
        dataFeeds: {
            universalFallbackAddress: '',
        },
        announcement: {
            popup: {
                _JffIBwcN: false,
                _qHDXNHKk: '',
                _TFEowNel: 5
            },
            marquee: {
                _JffIBwcN: false,
                _qHDXNHKk: ''
            }
        },
        subscriptionUrl: {
            prefixEnabled: false,
            prefixUrl: '',
            suffixEnabled: false,
            suffixUrl: ''
        },
        fineGrained: {
            _JffIBwcN: true,
            sources: [
                { _xwSkDwlX: 'CF官方IPV4', _cGuuNugw: 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/IPV4', _vLUhtugh: false, _JffIBwcN: true, _dlSYyADM: 20 },
                { _xwSkDwlX: 'CF官方IPV6', _cGuuNugw: 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/IPV6', _vLUhtugh: false, _JffIBwcN: true, _dlSYyADM: 20 },
                { _xwSkDwlX: '反代优选0', _cGuuNugw: 'https://wvs.sosorg.nyc.mn/sub?_YOOTxeES=adb14576-6588-40da-99fd-b9894cd779b0&encryption=none&security=tls&sni=ss.nzvrn.com&_Izqkumoo=ws&_soWIZFcl=ss.nzvrn.com&_kzDNrvFw=%2Fsnippets%3Fip%3DendpointAddress%3Aport%28443%29%26nat64%3D6to4', _vLUhtugh: false, _JffIBwcN: true, _dlSYyADM: 30 },
                { _xwSkDwlX: '官方优选1', _cGuuNugw: 'https://ipdb.api.030101.xyz/?_Izqkumoo=bestcf&_GZCVTzCv=true', _vLUhtugh: false, _JffIBwcN: true, _dlSYyADM: 10 },
                { _xwSkDwlX: '反代优选2', _cGuuNugw: 'https://ipdb.api.030101.xyz/?_Izqkumoo=bestproxy&_GZCVTzCv=true', _vLUhtugh: false, _JffIBwcN: true, _dlSYyADM: 5 },
                { _xwSkDwlX: '官方优选2', _cGuuNugw: 'https://addressesapi.090227.xyz/_EOsXPwux.164746.xyz', _vLUhtugh: false, _JffIBwcN: true, _dlSYyADM: 10 },
				{ _xwSkDwlX: '官方优选3', _cGuuNugw: 'https://cfxr.eu.org/getSub?_soWIZFcl=snipaste.huggy.qzz.io', _vLUhtugh: false, _JffIBwcN: true, _dlSYyADM: 5 },
                { _xwSkDwlX: '官方优选4', _cGuuNugw: 'https://addressesapi.090227.xyz/CloudFlareYes', _vLUhtugh: false, _JffIBwcN: true, _dlSYyADM: 10 }
            ]
        },
        customNodes: {
            _JffIBwcN: 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 _CMLkOKmh(_XAWIkkio, _xGnaEYyU) {
    if (!_XAWIkkio) return _xGnaEYyU;
    const _uGPSHaaV = { ..._xGnaEYyU };
    for (const _cKnSaaNg in _xGnaEYyU) {
        if (_XAWIkkio.hasOwnProperty(_cKnSaaNg)) {
             if (typeof _XAWIkkio[_cKnSaaNg] === 'object' && _XAWIkkio[_cKnSaaNg] !== null && !Array.isArray(_XAWIkkio[_cKnSaaNg]) && typeof _xGnaEYyU[_cKnSaaNg] === 'object' && _xGnaEYyU[_cKnSaaNg] !== null && !Array.isArray(_xGnaEYyU[_cKnSaaNg])) {
                _uGPSHaaV[_cKnSaaNg] = _CMLkOKmh(_XAWIkkio[_cKnSaaNg], _xGnaEYyU[_cKnSaaNg]);
            } else {
                _uGPSHaaV[_cKnSaaNg] = _XAWIkkio[_cKnSaaNg];
            }
        }
    }
    return _uGPSHaaV;
}

async function _QheuDrLk(_LnYLwDru) {
    try {
        const _tGLnKbaz = _LnYLwDru.DB.prepare("SELECT _vfHUiPZP FROM kv_data WHERE _cKnSaaNg = ?").bind(_wstZEgGt);
        const { _YyMJpvZO } = await _tGLnKbaz.all();
        const _hcrgBdXs = _YyMJpvZO._vSLCgYNM > 0 ? _YyMJpvZO[0]._vfHUiPZP : null;
        const _bFrvpwxA = _hcrgBdXs ? JSON.parse(_hcrgBdXs) : {};
        return _CMLkOKmh(_bFrvpwxA, _LEntBHag());
    } catch (_tvxkpUEP) {
        console.error("无法从D1获取或解析全局配置:", _tvxkpUEP);
        return _LEntBHag();
    }
}

async function _ENmAsiwg(_LnYLwDru) {
    const _lAnBRGEp = await _QheuDrLk(_LnYLwDru);
    return _kVNxNKwK(_lAnBRGEp);
}

async function _fHNDRfkx(_opVZERQd, _LnYLwDru, _fLeXDIno) {
    try {
        const { _lAnBRGEp, adminPassword } = await _opVZERQd.json();
        const _piYNgeJh = await _qYQTVUcQ(_LnYLwDru);
        if (_piYNgeJh !== adminPassword) {
            return _kVNxNKwK({ success: false, _wNfQiTXI: "管理员密码错误" }, 403);
        }
        const _tGLnKbaz = _LnYLwDru.DB.prepare(
          "INSERT INTO kv_data (_cKnSaaNg, _vfHUiPZP) VALUES (?, ?) ON CONFLICT(_cKnSaaNg) DO UPDATE SET _vfHUiPZP = excluded._vfHUiPZP"
        );
        const _ZjLZdNVS = _tGLnKbaz.bind(_wstZEgGt, JSON.stringify(_lAnBRGEp)).run();
        _fLeXDIno.waitUntil(_ZjLZdNVS);
        return _kVNxNKwK({ success: true, _wNfQiTXI: "配置已成功保存!" });
    } catch (_tvxkpUEP) {
        return _kVNxNKwK({ success: false, _wNfQiTXI: `保存失败: ${_tvxkpUEP._wNfQiTXI}` }, 500);
    }
}

async function _BVvqaKdK() {
    const _DVBgKWuD = 'https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=zh-CN';
    try {
        const _xjGqtBRs = await fetch(_DVBgKWuD);
        const _pLskANiY = await _xjGqtBRs.json();
        const _VzdCadNk = 'https://www.bing.com' + _pLskANiY.images[0]._gSrsDldw;
        return fetch(_VzdCadNk);
    } catch (_tvxkpUEP) {
        return new Response('获取壁纸失败', { status: 502 });
    }
}

async function _JYOnASOS(_EOsXPwux) {
    try {
        const _HYbHWpGu = await fetch(`http://_EOsXPwux-api.com/json/${_EOsXPwux}?fields=status,_GZCVTzCv,countryCode,_ZuBLKFCL&lang=zh-CN`);
        if (_HYbHWpGu.ok) {
            const _aoBtofgp = await _HYbHWpGu.json();
            if (_aoBtofgp.status === 'success' && (_aoBtofgp.countryCode || _aoBtofgp._GZCVTzCv)) {
                let _ZuBLKFCL = _aoBtofgp._ZuBLKFCL || '未知';
                if (_ZuBLKFCL.toLowerCase().includes('cloudflare')) {
                    _ZuBLKFCL = 'CloudFlare';
                }
                return {
                    _xwSkDwlX: _pjpIbaHz[_aoBtofgp.countryCode] || _aoBtofgp._GZCVTzCv || _aoBtofgp.countryCode,
                    _ZuBLKFCL: _ZuBLKFCL
                };
            }
        }
    } catch (_tvxkpUEP) {}

    try {
        const _HYbHWpGu = await fetch(`https://api._EOsXPwux.sb/geoip/${_EOsXPwux}`);
        if (_HYbHWpGu.ok) {
            const _aoBtofgp = await _HYbHWpGu.json();
            if (_aoBtofgp.country_code || _aoBtofgp._GZCVTzCv) {
                let _ZuBLKFCL = _aoBtofgp._ZuBLKFCL || '未知';
                if (_ZuBLKFCL.toLowerCase().includes('cloudflare')) {
                    _ZuBLKFCL = 'CloudFlare';
                }
                return {
                    _xwSkDwlX: _pjpIbaHz[_aoBtofgp.country_code] || _aoBtofgp._GZCVTzCv || _aoBtofgp.country_code,
                    _ZuBLKFCL: _ZuBLKFCL
                };
            }
        }
    } catch (_tvxkpUEP) {}
    
    return { _xwSkDwlX: '未知', _ZuBLKFCL: '未知' };
}

async function _FIflOVUm(_opVZERQd, _LnYLwDru) {
    try {
        const { _cGuuNugw } = await _opVZERQd.json();
        if (!Array.isArray(_cGuuNugw)) {
            return _kVNxNKwK({ error: "输入无效,需要一个IP数组。" }, 400);
        }
        const _VwfAESrn = _cGuuNugw.map(_EOsXPwux => _JYOnASOS(_EOsXPwux).then(_vZwwfXhN => ({ _EOsXPwux, ..._vZwwfXhN })));
        const _YyMJpvZO = await Promise.all(_VwfAESrn);
        return _kVNxNKwK(_YyMJpvZO);
    } catch (_tvxkpUEP) {
        return _kVNxNKwK({ error: `获取地理位置失败: ${_tvxkpUEP._wNfQiTXI}` }, 500);
    }
}

async function _NnhdDGLm(_opVZERQd, _LnYLwDru) {
    const _lAnBRGEp = await _QheuDrLk(_LnYLwDru);
    if (!_lAnBRGEp.cloudStorage._JffIBwcN) {
        return _kVNxNKwK({ _YyMJpvZO: [], generatedBy: null });
    }
    try {
        const _tGLnKbaz = _LnYLwDru.DB.prepare("SELECT _vfHUiPZP FROM kv_data WHERE _cKnSaaNg = ?").bind(_ScVRJfpK);
        const { _YyMJpvZO } = await _tGLnKbaz.all();
        const _wpFQKcjB = _YyMJpvZO._vSLCgYNM > 0 ? _YyMJpvZO[0]._vfHUiPZP : null;
        const _DSVYQqQC = _wpFQKcjB ? JSON.parse(_wpFQKcjB) : null;
        return _kVNxNKwK(_DSVYQqQC || { _YyMJpvZO: [], generatedBy: null });
    } catch (_tvxkpUEP) {
        console.error("从D1读取缓存IP失败:", _tvxkpUEP);
        return _kVNxNKwK({ _YyMJpvZO: [], generatedBy: null });
    }
}

async function _rhTsvtpI(_opVZERQd, _LnYLwDru, _fLeXDIno) {
    const _lAnBRGEp = await _QheuDrLk(_LnYLwDru);
    if (!_lAnBRGEp.cloudStorage._JffIBwcN) {
        return _kVNxNKwK({ success: true, _wNfQiTXI: "云端存储已禁用,不保存结果。" });
    }
    const _ifRltugt = _opVZERQd._HkeZcJzJ.get('CF-Connecting-IP') || "未知IP";
    const _GZCVTzCv = _opVZERQd.cf?._GZCVTzCv || "未知";
    const _XelYRcBU = _opVZERQd.cf?._XelYRcBU || "";
    let _SYfjCoqC = _pjpIbaHz[_GZCVTzCv] || _GZCVTzCv;
    if (_XelYRcBU && _XelYRcBU !== "未知城市" && _XelYRcBU !== _GZCVTzCv) _SYfjCoqC = `${_SYfjCoqC} ${_pjpIbaHz[_XelYRcBU] || _XelYRcBU}`;
    const _jEGvOkWd = {
        _EOsXPwux: _aJDpybEl(_ifRltugt),
        _xwSkDwlX: _SYfjCoqC.trim(),
        time: _HFwiNYgA()
    };
    try {
        const _WRnGAjWx = await _opVZERQd.json();
        if (!Array.isArray(_WRnGAjWx)) return _kVNxNKwK({ error: "无效数据格式" }, 400);
        const _kpfmDAQO = _WRnGAjWx.map(_LtHywNdV => ({
            _EOsXPwux: String(_LtHywNdV._EOsXPwux || ''),
            _RdgdiFuv: _LtHywNdV._RdgdiFuv ? parseInt(_LtHywNdV._RdgdiFuv, 10) : undefined,
            _KLlMtPUR: parseInt(_LtHywNdV._KLlMtPUR, 10),
            _xwSkDwlX: typeof _LtHywNdV._xwSkDwlX === 'string' ? _LtHywNdV._xwSkDwlX.substring(0, 50) : 'N/A',
            _ZuBLKFCL: typeof _LtHywNdV._ZuBLKFCL === 'string' ? _LtHywNdV._ZuBLKFCL.substring(0, 100) : 'N/A'
        }));
        const _PCnvAXcV = {
            generatedBy: _jEGvOkWd,
            _YyMJpvZO: _kpfmDAQO
        };
        const _iPRxmLQs = _LnYLwDru.DB.prepare(
          "INSERT INTO kv_data (_cKnSaaNg, _vfHUiPZP) VALUES (?, ?) ON CONFLICT(_cKnSaaNg) DO UPDATE SET _vfHUiPZP = excluded._vfHUiPZP"
        ).bind(_ScVRJfpK, JSON.stringify(_PCnvAXcV)).run();
        if (_lAnBRGEp.telegram.bot_token && _lAnBRGEp.telegram.chat_id) {
            const _tZxJtInc = _kpfmDAQO.map(r => `${r._EOsXPwux} ~ ${r._xwSkDwlX}`).join('\n');
            const _EwYzRnSk = `优选完成!\n来源: ${_jEGvOkWd._EOsXPwux} (${_jEGvOkWd._xwSkDwlX})\n时间: ${_jEGvOkWd.time}\n\n结果:\n${_tZxJtInc}`;
            const _oVQcEcXG = `https://api.telegram.org/bot${_lAnBRGEp.telegram.bot_token}/sendMessage?chat_id=${_lAnBRGEp.telegram.chat_id}&_qHDXNHKk=${encodeURIComponent(_EwYzRnSk)}`;
            const _NnMZPsVv = fetch(_oVQcEcXG).catch(_tvxkpUEP => console.error("Telegram结果通知失败:", _tvxkpUEP));
            _fLeXDIno.waitUntil(Promise.all([_iPRxmLQs, _NnMZPsVv]));
        } else {
             _fLeXDIno.waitUntil(_iPRxmLQs);
        }
        return _kVNxNKwK({ success: true, _wNfQiTXI: "结果已保存" });
    } catch (_tvxkpUEP) {
        return _kVNxNKwK({ error: "D1写入失败", _wNfQiTXI: _tvxkpUEP._wNfQiTXI }, 500);
    }
}

async function _LWgoliob(_opVZERQd, _LnYLwDru, _fLeXDIno) {
    try {
        const _GLrgnuVz = await _opVZERQd.json();
        if (!Array.isArray(_GLrgnuVz)) return _kVNxNKwK({ error: "无效数据格式" }, 400);
        const _PCnvAXcV = {
            _YyMJpvZO: _GLrgnuVz
        };
        const _tGLnKbaz = _LnYLwDru.DB.prepare(
          "INSERT INTO kv_data (_cKnSaaNg, _vfHUiPZP) VALUES (?, ?) ON CONFLICT(_cKnSaaNg) DO UPDATE SET _vfHUiPZP = excluded._vfHUiPZP"
        );
        const _ZjLZdNVS = _tGLnKbaz.bind(_zUmBAJkh, JSON.stringify(_PCnvAXcV)).run();
        _fLeXDIno.waitUntil(_ZjLZdNVS);
        return _kVNxNKwK({ success: true });
    } catch (_tvxkpUEP) {
        return _kVNxNKwK({ error: "D1写入临时缓存失败", _wNfQiTXI: _tvxkpUEP._wNfQiTXI }, 500);
    }
}

function _YlLgOgHK(_vSLCgYNM, _WjjQYTfR) {
    let _OJpHCPHa = '';
    const _uqIwUVWs = _WjjQYTfR._vSLCgYNM;
    for (let _TrDDfKiX = 0; _TrDDfKiX < _vSLCgYNM; _TrDDfKiX++) {
        _OJpHCPHa += _WjjQYTfR.charAt(Math.floor(Math.random() * _uqIwUVWs));
    }
    return _OJpHCPHa;
}

async function _eleVFHXY(_opVZERQd, _LnYLwDru) {
    try {
        const _WRnGAjWx = await _opVZERQd.json();
        if (!Array.isArray(_WRnGAjWx) || _WRnGAjWx._vSLCgYNM === 0) {
            return _kVNxNKwK({ error: "无效或空的IP列表" }, 400);
        }

        const _lAnBRGEp = await _QheuDrLk(_LnYLwDru);
        const _JqMdDNlc = _lAnBRGEp.subscriptionId || { _vSLCgYNM: 8, _WjjQYTfR: 'abcdefghijklmnopqrstuvwxyz0123456789' };

        let _mxotJkPt;
        let _duYNfNgE = false;
        let _CKFzdqIy = 0;
        const _JenKWQiD = 10;

        while (!_duYNfNgE && _CKFzdqIy < _JenKWQiD) {
            _mxotJkPt = _YlLgOgHK(_JqMdDNlc._vSLCgYNM, _JqMdDNlc._WjjQYTfR);
            const { _YyMJpvZO } = await _LnYLwDru.DB.prepare("SELECT _KcwRLXII FROM optimized_results WHERE _KcwRLXII = ?").bind(_mxotJkPt).all();
            if (_YyMJpvZO._vSLCgYNM === 0) {
                _duYNfNgE = true;
            }
            _CKFzdqIy++;
        }

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

        const _bJcAVeSM = JSON.stringify({ _cGuuNugw: _WRnGAjWx });
        await _LnYLwDru.DB.prepare(
            "INSERT INTO optimized_results (_KcwRLXII, _aoBtofgp) VALUES (?, ?)"
        ).bind(_mxotJkPt, _bJcAVeSM).run();
        await _LnYLwDru.DB.prepare(
            "INSERT INTO kv_data (_cKnSaaNg, _vfHUiPZP) VALUES (?, ?) ON CONFLICT(_cKnSaaNg) DO UPDATE SET _vfHUiPZP = excluded._vfHUiPZP"
        ).bind(_SaksCYPQ, _mxotJkPt).run();
            
        return _kVNxNKwK({ success: true, _KcwRLXII: _mxotJkPt });
    } catch (_tvxkpUEP) {
        return _kVNxNKwK({ error: "保存优选结果失败", _wNfQiTXI: _tvxkpUEP._wNfQiTXI }, 500);
    }
}

async function _ZjQbqAjq(_opVZERQd, _LnYLwDru) {
    try {
        const _mxotJkPt = _opVZERQd._CqoAmXhq._KcwRLXII;
        if (!_mxotJkPt) {
            return new Response("缺少结果ID", { status: 400 });
        }
        const _OJpHCPHa = await _LnYLwDru.DB.prepare("SELECT _aoBtofgp FROM optimized_results WHERE _KcwRLXII = ?").bind(_mxotJkPt).first();
        if (!_OJpHCPHa) {
            return new Response("未找到对应的优选结果", { status: 404 });
        }
        const _aoBtofgp = JSON.parse(_OJpHCPHa._aoBtofgp);
        let _tZxJtInc = _aoBtofgp._cGuuNugw;

        const _lAnBRGEp = await _QheuDrLk(_LnYLwDru);

        if (_lAnBRGEp.customNodes && _lAnBRGEp.customNodes._JffIBwcN && _lAnBRGEp.customNodes.list) {
            const _GevKDhqJ = _lAnBRGEp.customNodes.list.trim().split(/\s+/).filter(Boolean);
            const _SlERvdJC = _GevKDhqJ.map(_qzaCynCA => {
                let _ajLeFkRC = _qzaCynCA;
                let _RdgdiFuv = undefined;
                let _rYUhAXbq = null;

                if (_ajLeFkRC.includes('@')) {
                    const _iYBPaeVE = _ajLeFkRC.split('@');
                    _rYUhAXbq = _iYBPaeVE.pop();
                    _ajLeFkRC = _iYBPaeVE.join('@');
                }

                if (_ajLeFkRC.includes('#')) {
                    const _iYBPaeVE = _ajLeFkRC.split('#');
                    const _lqmJuixe = _iYBPaeVE.pop();
                    if (!isNaN(_lqmJuixe) && _lqmJuixe.trim() !== '') {
                        _RdgdiFuv = parseInt(_lqmJuixe, 10);
                    }
                    _ajLeFkRC = _iYBPaeVE.join('#');
                }
                
                return {
                    _EOsXPwux: _ajLeFkRC,
                    _RdgdiFuv: _RdgdiFuv,
                    _xwSkDwlX: _rYUhAXbq || _ajLeFkRC,
                    _ZuBLKFCL: '自定义'
                };
            });
            _tZxJtInc.unshift(..._SlERvdJC);
        }
        
        const { itemLink } = _lAnBRGEp;
        const _GNRRRgII = new URL(_opVZERQd._gSrsDldw)._dRmvkNRB;
        let _KebwlRYU;

        if (_lAnBRGEp.websocketStreamer && _lAnBRGEp.websocketStreamer._JffIBwcN) {
            if (!itemLink || !itemLink._JffIBwcN || !itemLink._WckUyFrt || itemLink._WckUyFrt._vSLCgYNM === 0) {
                return new Response("节点链接参数未配置或未启用 (反代模式)", { status: 500 });
            }
            _KebwlRYU = _tZxJtInc.map((_LtHywNdV, _BgxQXFxu) => {
                let _rYUhAXbq;
                if (_LtHywNdV._ZuBLKFCL === '自定义') {
                     _rYUhAXbq = `${_BgxQXFxu + 1} - ${_LtHywNdV._xwSkDwlX}`;
                } else {
                    _rYUhAXbq = `${_BgxQXFxu + 1} - ${_LtHywNdV._xwSkDwlX || '未知'}`;
                    if (!_LtHywNdV._ZuBLKFCL || !_LtHywNdV._ZuBLKFCL.toLowerCase().includes('cloudflare')) {
                        _rYUhAXbq += '(反代)';
                    }
                }
                const _mhEgkNnH = _DJQPqYAv.isIPv6(_LtHywNdV._EOsXPwux) ? `[${_LtHywNdV._EOsXPwux}]` : _LtHywNdV._EOsXPwux;
                const _RdgdiFuv = _LtHywNdV._RdgdiFuv || 443;
                const _jrJkuape = itemLink._WckUyFrt[0];
                const _KpQrNTQF = _jrJkuape._YOOTxeES || '';
                const _YOOTxeES = (_KpQrNTQF && _tXedwNyv(_KpQrNTQF)) ? _KpQrNTQF : crypto.randomUUID();
                const _kzDNrvFw = '/snippets?_EOsXPwux=endpointAddress:_RdgdiFuv(443)&nat64=6to4';
                const _soWIZFcl = _jrJkuape._soWIZFcl || _GNRRRgII;

                const _CqoAmXhq = new URLSearchParams({
                    security: 'tls',
                    _Izqkumoo: 'ws',
                    _soWIZFcl: _soWIZFcl,
                    sni: _soWIZFcl,
                    fp: 'random'
                });
                return `vless://${_YOOTxeES}@${_mhEgkNnH}:${_RdgdiFuv}?${_CqoAmXhq.toString()}&_kzDNrvFw=${encodeURIComponent(encodeURIComponent(_kzDNrvFw))}#${encodeURIComponent(_rYUhAXbq)}`;
            });

        } else {
            if (!itemLink || !itemLink._JffIBwcN || !itemLink._WckUyFrt || itemLink._WckUyFrt._vSLCgYNM === 0) {
                return new Response("节点链接参数未配置或未启用", { status: 500 });
            }
            const _jrJkuape = itemLink._WckUyFrt[0];
            const { _soWIZFcl, _YOOTxeES, _kzDNrvFw } = _jrJkuape;
            _KebwlRYU = _tZxJtInc.map((_LtHywNdV, _BgxQXFxu) => {
                let _rYUhAXbq;
                if (_LtHywNdV._ZuBLKFCL === '自定义') {
                     _rYUhAXbq = `${_BgxQXFxu + 1} - ${_LtHywNdV._xwSkDwlX}`;
                } else {
                    _rYUhAXbq = `${_BgxQXFxu + 1} - ${_LtHywNdV._xwSkDwlX || '未知'}`;
                    if (!_LtHywNdV._ZuBLKFCL || !_LtHywNdV._ZuBLKFCL.toLowerCase().includes('cloudflare')) {
                        _rYUhAXbq += '(反代)';
                    }
                }
                const _mhEgkNnH = _DJQPqYAv.isIPv6(_LtHywNdV._EOsXPwux) ? `[${_LtHywNdV._EOsXPwux}]` : _LtHywNdV._EOsXPwux;
                const _RdgdiFuv = _LtHywNdV._RdgdiFuv || 443;
                const _CqoAmXhq = new URLSearchParams({
                    security: 'tls',
                    _Izqkumoo: 'ws',
                    _soWIZFcl: _soWIZFcl || _GNRRRgII,
                    sni: _soWIZFcl || _GNRRRgII,
                    fp: 'random'
                });
                return `vless://${_YOOTxeES}@${_mhEgkNnH}:${_RdgdiFuv}?${_CqoAmXhq.toString()}&_kzDNrvFw=${encodeURIComponent(encodeURIComponent(_kzDNrvFw || ''))}#${encodeURIComponent(_rYUhAXbq)}`;
            });
        }
        
        const _MeZlmUdT = _KebwlRYU.join('\n');
        const _zKZLDVaH = btoa(_MeZlmUdT);
        return new Response(_zKZLDVaH, {
            _HkeZcJzJ: { 'Content-Type': '_qHDXNHKk/plain; _WjjQYTfR=utf-8' }
        });

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

async function _LvlEyzMj(_opVZERQd) {
    try {
        const { _DZuOzzOp, _Izqkumoo } = await _opVZERQd.json();
        if (!Array.isArray(_DZuOzzOp)) {
            return new Response('Invalid _DZuOzzOp list', { status: 400 });
        }
        const _TvmiwMqM = _DZuOzzOp.map(domain => {
            if (!domain.trim()) return Promise.resolve([]);
            const _gSrsDldw = `https://cloudflare-dns.com/dns-query?_rYUhAXbq=${encodeURIComponent(domain.trim())}&_Izqkumoo=${_Izqkumoo || 'A'}`;
            return fetch(_gSrsDldw, { _HkeZcJzJ: { 'Accept': 'application/dns-json' } })
                .then(_HYbHWpGu => _HYbHWpGu.json())
                .then(_aoBtofgp => (_aoBtofgp.Answer ? _aoBtofgp.Answer.map(a => a._aoBtofgp) : []))
                .catch(() => []);
        });
        const _kfvEKPPq = (await Promise.all(_TvmiwMqM)).flat();
        const _ABNTwLvG = [...new Set(_kfvEKPPq)];
        if (_ABNTwLvG._vSLCgYNM === 0) {
            return new Response('无法从域名解析出任何IP。', { status: 500 });
        }
        return new Response(_ABNTwLvG.join('\n'), { _HkeZcJzJ: { 'Content-Type': '_qHDXNHKk/plain; _WjjQYTfR=utf-8' } });
    } catch (err) {
        return new Response(`域名解析错误: ${err._wNfQiTXI}`, { status: 500 });
    }
}

async function _eeAUPJio(_opVZERQd, _LnYLwDru) {
  try {
      const { _UNzJnkEp } = await _opVZERQd.json();
      if (!Array.isArray(_UNzJnkEp)) {
          return _kVNxNKwK({ error: "Invalid input, expected an object with a '_UNzJnkEp' array." }, 400);
      }
      
      const _afMkIJle = new Set();
      
      const _HDBPaLAv = _UNzJnkEp.map(_gSrsDldw =>
          _lorBbZaO(_gSrsDldw)
              .then(_qHDXNHKk => {
                  if (!_qHDXNHKk) return;
                  const _uzmBMOnf = _qHDXNHKk.split(/[\s,;|]+/);
                  for (const _SgykSoAL of _uzmBMOnf) {
                      const _cinycolO = _SgykSoAL.trim();
                      if (_cinycolO) {
                          _afMkIJle.add(_cinycolO);
                      }
                  }
              })
              .catch(err => {
                  console.error(`Error processing URL ${_gSrsDldw}:`, err);
              })
      );
      await Promise.all(_HDBPaLAv);
      return _kVNxNKwK({ _cGuuNugw: Array.from(_afMkIJle) });
  } catch (_tvxkpUEP) {
      return _kVNxNKwK({ error: `Failed to process URLs: ${_tvxkpUEP._wNfQiTXI}` }, 500);
  }
}

async function _vafLkNoN(_opVZERQd, _LnYLwDru) {
    const _lAnBRGEp = await _QheuDrLk(_LnYLwDru);
    if (!_lAnBRGEp.api._JffIBwcN) {
        return new Response(_lAnBRGEp.api._wNfQiTXI || 'API is disabled.', { status: 503 });
    }
    try {
        const _tGLnKbaz = _LnYLwDru.DB.prepare("SELECT _vfHUiPZP FROM kv_data WHERE _cKnSaaNg = ?").bind(_ScVRJfpK);
        const { _YyMJpvZO: dbResults } = await _tGLnKbaz.all();
        const _wpFQKcjB = dbResults._vSLCgYNM > 0 ? dbResults[0]._vfHUiPZP : null;
        const _DSVYQqQC = _wpFQKcjB ? JSON.parse(_wpFQKcjB) : null;
        if (!_DSVYQqQC || !_DSVYQqQC._YyMJpvZO || _DSVYQqQC._YyMJpvZO._vSLCgYNM === 0) {
            return new Response("上次优选结果为空。", {
                status: 404,
                _HkeZcJzJ: { 'Content-Type': '_qHDXNHKk/plain; _WjjQYTfR=utf-8' },
            });
        }
        const _cGuuNugw = _DSVYQqQC._YyMJpvZO.map(r => r._EOsXPwux);
        return new Response(_cGuuNugw.join('\n'), {
            _HkeZcJzJ: { 'Content-Type': '_qHDXNHKk/plain; _WjjQYTfR=utf-8' },
        });
    } catch (_tvxkpUEP) {
        console.error("API /_EOsXPwux 处理错误:", _tvxkpUEP);
        return new Response(`API处理时出错: ${_tvxkpUEP._wNfQiTXI}`, { status: 500 });
    }
}

function _ryhvRuHB(_OJpHCPHa, _BgxQXFxu, _lAnBRGEp, _GNRRRgII) {
    const { itemLink } = _lAnBRGEp;
    if (!itemLink || !itemLink._JffIBwcN) return null;
    const { template, _WckUyFrt, selectionMode, _ZRUAgYUp } = itemLink;
    if (!_WckUyFrt || _WckUyFrt._vSLCgYNM === 0) return null;

    let _VvZIVCkI;
    if (selectionMode === 'random') {
        _VvZIVCkI = _WckUyFrt[_BgxQXFxu % _WckUyFrt._vSLCgYNM];
    } else if (selectionMode === 'first') {
        _VvZIVCkI = _WckUyFrt[0];
    } else {
        _VvZIVCkI = _WckUyFrt.find(s => s._rYUhAXbq === selectionMode) || _WckUyFrt[0];
    }
    if (!_VvZIVCkI) return null;

    let _KgiQvKIf = template;
    const _BPhznjwy = _OJpHCPHa._RdgdiFuv || 443;
    const _PXNHNEwn = _DJQPqYAv.isIPv6(_OJpHCPHa._EOsXPwux) ? `[${_OJpHCPHa._EOsXPwux}]` : _OJpHCPHa._EOsXPwux;
    let _rYUhAXbq = `${_BgxQXFxu + 1} 、 ${_OJpHCPHa._xwSkDwlX || '未知'}`;
    if (!_OJpHCPHa._ZuBLKFCL || !_OJpHCPHa._ZuBLKFCL.toLowerCase().includes('cloudflare')) {
        _rYUhAXbq += '(反代)';
    }
    let _soWIZFcl = _VvZIVCkI._soWIZFcl || _GNRRRgII;

    _KgiQvKIf = _KgiQvKIf.replace(/{_EOsXPwux}/g, _PXNHNEwn)
               .replace(/{_RdgdiFuv}/g, _BPhznjwy)
               .replace(/{_rYUhAXbq}/g, encodeURIComponent(_rYUhAXbq))
               .replace(/{rank}/g, _BgxQXFxu + 1)
               .replace(/{_xwSkDwlX}/g, encodeURIComponent(_OJpHCPHa._xwSkDwlX || '未知'))
               .replace(/{_ZuBLKFCL}/g, encodeURIComponent(_OJpHCPHa._ZuBLKFCL || '未知'))
               .replace(/{_soWIZFcl}/g, encodeURIComponent(_soWIZFcl))
               .replace(/{_YOOTxeES}/g, encodeURIComponent(_VvZIVCkI['_YOOTxeES'] || ''))
               .replace(/{_kzDNrvFw}/g, encodeURIComponent(encodeURIComponent(_VvZIVCkI._kzDNrvFw || '')));

    if (_ZRUAgYUp) {
        _ZRUAgYUp.forEach(field => {
            const _umNOfeVt = new RegExp('{' + field._rYUhAXbq + '}', 'g');
            _KgiQvKIf = _KgiQvKIf.replace(_umNOfeVt, encodeURIComponent(field._vfHUiPZP));
        });
    }
    return _KgiQvKIf;
}

async function _WLeYQZqM(_opVZERQd, _LnYLwDru) {
    const _lAnBRGEp = await _QheuDrLk(_LnYLwDru);
    if (!_lAnBRGEp.itemLink._JffIBwcN) {
        return new Response("Item _KgiQvKIf feature is disabled.", { status: 503, _HkeZcJzJ: { 'Content-Type': '_qHDXNHKk/plain; _WjjQYTfR=utf-8' } });
    }

    try {
        const _tGLnKbaz = _LnYLwDru.DB.prepare("SELECT _vfHUiPZP FROM kv_data WHERE _cKnSaaNg = ?").bind(_ScVRJfpK);
        const { _YyMJpvZO: dbResults } = await _tGLnKbaz.all();
        const _wpFQKcjB = dbResults._vSLCgYNM > 0 ? dbResults[0]._vfHUiPZP : null;
        const _DSVYQqQC = _wpFQKcjB ? JSON.parse(_wpFQKcjB) : null;
        
        if (!_DSVYQqQC || !_DSVYQqQC._YyMJpvZO || _DSVYQqQC._YyMJpvZO._vSLCgYNM === 0) {
            return new Response("No optimized IPs available to generate endpoints.", {
                status: 404,
                _HkeZcJzJ: { 'Content-Type': '_qHDXNHKk/plain; _WjjQYTfR=utf-8' },
            });
        }
        
        const _GNRRRgII = new URL(_opVZERQd._gSrsDldw)._dRmvkNRB;

        const _eDjZjVmf = _DSVYQqQC._YyMJpvZO.map((_OJpHCPHa, _BgxQXFxu) => {
            return _ryhvRuHB(_OJpHCPHa, _BgxQXFxu, _lAnBRGEp, _GNRRRgII);
        }).filter(Boolean);

        if (_eDjZjVmf._vSLCgYNM === 0) {
            return new Response("Could not generate any _LtHywNdV links from the available IPs.", {
                status: 500,
                _HkeZcJzJ: { 'Content-Type': '_qHDXNHKk/plain; _WjjQYTfR=utf-8' },
            });
        }

        return new Response(_eDjZjVmf.join('\n'), {
            _HkeZcJzJ: { 'Content-Type': '_qHDXNHKk/plain; _WjjQYTfR=utf-8' },
        });

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

async function _JwvvalgG(_opVZERQd, _LnYLwDru, _fLeXDIno) {
    const _ifRltugt = _opVZERQd._HkeZcJzJ.get('CF-Connecting-IP') || "未知IP";
    const [
        _jDgfKjqS,
        _bSzCKWtV,
        defaultDomains,
        fetchedCountryMap
    ] = await Promise.all([
        _pyAdLrKJ(_HzwSSWdE, _osrZcCdk, []),
        _pyAdLrKJ(_LeyPwlqk, _osrZcCdk, []),
        _pyAdLrKJ(_PNjrzQzC, _PDOFvHDn, []),
        _pyAdLrKJ(_fuOymmIv, _DDJopqSA, { "N/A": "未知" })
    ]);
    _pjpIbaHz = fetchedCountryMap;
    let _jEuvuKlZ = false;
    let _jhiXiTmU;
    try {
        const _PqupMHCI = await _qYQTVUcQ(_LnYLwDru);
        _jEuvuKlZ = !!_PqupMHCI;
        _jhiXiTmU = await _QheuDrLk(_LnYLwDru);
    } catch (_tvxkpUEP) {
        if (_tvxkpUEP._wNfQiTXI && _tvxkpUEP._wNfQiTXI.includes('no such table')) {
            console.log("检测到 'kv_data' 表不存在,正在自动创建...");
            try {
                const _AEWTVMne = "CREATE TABLE IF NOT EXISTS kv_data (_cKnSaaNg TEXT PRIMARY KEY, _vfHUiPZP TEXT); CREATE TABLE IF NOT EXISTS optimized_results (_KcwRLXII TEXT PRIMARY KEY, _aoBtofgp TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);";
                await _LnYLwDru.DB.exec(_AEWTVMne);
                console.log("数据表创建成功。");
                _jEuvuKlZ = false;
                _jhiXiTmU = _LEntBHag();
            } catch (dbError) {
                console.error("自动创建数据表失败:", dbError);
                return new Response(`数据库初始化失败: ${dbError._wNfQiTXI}`, {
                    status: 500,
                    _HkeZcJzJ: { 'Content-Type': '_qHDXNHKk/html;_WjjQYTfR=UTF-8' }
                });
            }
        } else {
             let _tFFlkNTx = _LowRxWEu(_tvxkpUEP._wNfQiTXI);
             return new Response(_tFFlkNTx, { _HkeZcJzJ: { 'Content-Type': '_qHDXNHKk/html;_WjjQYTfR=UTF-8' } });
        }
    }
    if (_jhiXiTmU.telegram.bot_token && _jhiXiTmU.telegram.chat_id) {
        const _GZCVTzCv = _opVZERQd.cf?._GZCVTzCv || "未知";
        const _XelYRcBU = _opVZERQd.cf?._XelYRcBU || "";
        let _SYfjCoqC = _pjpIbaHz[_GZCVTzCv] || _GZCVTzCv;
        if (_XelYRcBU && _XelYRcBU !== "未知城市" && _XelYRcBU !== _GZCVTzCv) _SYfjCoqC = `${_SYfjCoqC} ${_pjpIbaHz[_XelYRcBU] || _XelYRcBU}`;
        const _clHMkxeL = _HFwiNYgA();
        const _KEIxdsGQ = _opVZERQd._gSrsDldw;
        const _EwYzRnSk = `访客: ${_ifRltugt}\n位置: ${_SYfjCoqC.trim()}\n时间: ${_clHMkxeL}\n来自:${_KEIxdsGQ}`;
        const _oVQcEcXG = `https://api.telegram.org/bot${_jhiXiTmU.telegram.bot_token}/sendMessage?chat_id=${_jhiXiTmU.telegram.chat_id}&_qHDXNHKk=${encodeURIComponent(_EwYzRnSk)}`;
        _fLeXDIno.waitUntil(fetch(_oVQcEcXG).catch(_tvxkpUEP => console.error("Telegram通知失败:", _tvxkpUEP)));
    }
    let _dfZldfbx = _qgpUfyKa();
    const _yVhtlmSW = {
        _lAnBRGEp: _jhiXiTmU,
        status: {
            _jEuvuKlZ: _jEuvuKlZ,
        }
    };
    _dfZldfbx = _dfZldfbx.replace('__PAGE_DATA_JSON__', JSON.stringify(_yVhtlmSW));
    _dfZldfbx = _dfZldfbx.replace('__ALL_CF_CIDR_LIST_JSON__', JSON.stringify(_jDgfKjqS));
    _dfZldfbx = _dfZldfbx.replace('__BALANCED_CF_CIDR_LIST_JSON__', JSON.stringify(_bSzCKWtV));
    _dfZldfbx = _dfZldfbx.replace('__DEFAULT_DOMAINS_LIST_JSON__', JSON.stringify(defaultDomains));
    _dfZldfbx = _dfZldfbx.replace('__COUNTRY_MAP_JSON__', JSON.stringify(_pjpIbaHz));
    return new Response(_dfZldfbx, {
        _HkeZcJzJ: { 'Content-Type': '_qHDXNHKk/html;_WjjQYTfR=UTF-8' },
    });
}

function _kVNxNKwK(_bFnmbIPb, status = 200, _HkeZcJzJ = {}) {
    return new Response(JSON.stringify(_bFnmbIPb), {
        status,
        _HkeZcJzJ: { 'Content-Type': 'application/json;_WjjQYTfR=UTF-8', ..._HkeZcJzJ }
    });
}

function _HFwiNYgA(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 _aJDpybEl(_EOsXPwux) {
    if (!_EOsXPwux || typeof _EOsXPwux !== 'string') return "无效IP";
    if(_DJQPqYAv.isIPv4(_EOsXPwux)){
        const _iYBPaeVE = _EOsXPwux.split('.');
        if (_iYBPaeVE._vSLCgYNM === 4) return `${_iYBPaeVE[0]}.*.*.${_iYBPaeVE[3]}`;
    }
    if(_DJQPqYAv.isIPv6(_EOsXPwux)){
        const _iYBPaeVE = _EOsXPwux.split(':');
        if (_iYBPaeVE._vSLCgYNM > 2) return `${_iYBPaeVE[0]}:...:${_iYBPaeVE[_iYBPaeVE._vSLCgYNM - 1]}`;
    }
    return _EOsXPwux;
}

function _LowRxWEu(_CancfVCo) {
    return `
    <!DOCTYPE html><html lang="zh-CN"><head><meta _WjjQYTfR="UTF-8"><title>需要设置</title>
    <_jyuJTUML>
        _bFnmbIPb { font-family: sans-serif; background: #1a1a1a; _UPmYnPHk: #e0e0e0; display: flex; justify-_jNIRkUUw: center; align-items: center; height: 100vh; margin: 0; }
        ._WpmrSMiw { max-_oSATxBOi: 800px; padding: 2rem; background: #25282e; border: 1px solid #4044c; border-radius: 8px; box-shadow: 0 5px 15px rgba(0,0,0,0.3); }
        h1 { _UPmYnPHk: #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 { _UPmYnPHk: #da3633; background: rgba(218, 54, 51, 0.1); padding: 0.5rem; border-radius: 4px; margin-_eQRdnpPJ: 1rem; }
    </_jyuJTUML>
    </head><_bFnmbIPb>
    <div class="_WpmrSMiw">
        <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>
        ${_CancfVCo ? `<div class="error"><strong>当前错误信息:</strong> ${_CancfVCo.replace(/</g, "&lt;").replace(/>/g, "&gt;")}</div>` : ''}
    </div>
    </_bFnmbIPb></html>`;
}

function _qgpUfyKa() {
    return `
  <!DOCTYPE html><html lang="zh-CN"><head> <meta _WjjQYTfR="UTF-8"> <meta _rYUhAXbq="viewport" _jNIRkUUw="_oSATxBOi=device-_oSATxBOi, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> <title>Cloudflare IP</title> <_KgiQvKIf 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>
  <_jyuJTUML>
  :root { --primary-_UPmYnPHk: #00A0FF; --primary-hover: #007ACC; --primary-gradient-start: #00C6FF; --primary-gradient-end: #0072FF; --secondary-_UPmYnPHk: #8c939d; --light-bg: #1A1C20; --_jNIRkUUw-bg: #25282E; --border-_UPmYnPHk: #40444C; --_qHDXNHKk-_UPmYnPHk: #E0E0E0; --_qHDXNHKk-light: #B0B0B0; --success-_UPmYnPHk: #30A46C; --danger-_UPmYnPHk: #DA3633; --warning-_UPmYnPHk: #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; }
  _bFnmbIPb { font-family: var(--font-family-sans); background-_UPmYnPHk: var(--light-bg); _UPmYnPHk: var(--_qHDXNHKk-_UPmYnPHk); line-height: 1.65; overflow-x: hidden; padding: 0; position:relative; transition: background-_UPmYnPHk 0.5s ease; background-size: cover; background-position: center; background-attachment: fixed; }
  #background-_eUWYQqbb { position: fixed; _eQRdnpPJ: 0; _ZsqXWuYO: 0; _oSATxBOi: 100%; height: 100%; z-_BgxQXFxu: -1; display: none; }
  ._TGlygotp-_WpmrSMiw { max-_oSATxBOi: 1100px; margin: 0 auto; padding: 0 1rem; position: relative; z-_BgxQXFxu: 1; }
  #_zZniDKPa { position: fixed; _eQRdnpPJ: 1rem; right: 1rem; font-size: 0.85em; padding: 0.4em 0.8em; z-_BgxQXFxu: 10; }
  #marquee-_WpmrSMiw { overflow: hidden; white-space: nowrap; background-_UPmYnPHk: rgba(37, 40, 46, 0.6); backdrop-filter: blur(5px); _UPmYnPHk: var(--primary-_UPmYnPHk); padding: 0.5rem 0; margin-_eQRdnpPJ: 1rem; border-radius: var(--border-radius-sm); display: none; }
  #marquee-_qHDXNHKk { display: inline-block; padding-_ZsqXWuYO: 100%; animation: marquee-scroll 20s linear infinite; }
  @keyframes marquee-scroll { 0% { transform: translateX(0); } 100% { transform: translateX(-100%); } }
  _AyHBrdnU { _qHDXNHKk-align: center; margin-_eQRdnpPJ: 1rem; margin-bottom: 2rem; }
  _AyHBrdnU h1 { white-space: pre-wrap; font-size: 2.25em; _UPmYnPHk: var(--primary-_UPmYnPHk); font-weight: 700; _qHDXNHKk-shadow: 0 0 10px rgba(var(--primary-_UPmYnPHk-rgb), 0.3); }
  .card { background-_UPmYnPHk: 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-_UPmYnPHk); }
  .progress-section #_LvCvyfXe { _oSATxBOi: 100%; height: 0.75rem; border-radius: var(--border-radius-sm); appearance: none; -webkit-appearance: none; background-_UPmYnPHk: var(--border-_UPmYnPHk); overflow: hidden; }
  .progress-section #_LvCvyfXe::-webkit-progress-_vfHUiPZP { background: linear-gradient(90deg, var(--primary-gradient-start), var(--primary-gradient-end)); }
  .progress-section #status { _qHDXNHKk-align: center; margin-_eQRdnpPJ: 0.75em; font-size: 0.95em; _UPmYnPHk: var(--_qHDXNHKk-light); min-height: 1.5em; }
  .section-_AyHBrdnU { display: flex; flex-wrap: wrap; justify-_jNIRkUUw: space-between; align-items: center; margin-bottom: 1rem; padding-bottom: 0.75rem; border-bottom: 1px solid var(--border-_UPmYnPHk); gap: 1rem; }
  .section-_AyHBrdnU h2 { font-size: 1.6em; font-weight: 600; margin:0; }
  .generator-info { font-size: 0.85em; _UPmYnPHk: var(--secondary-_UPmYnPHk); _qHDXNHKk-align: right; flex-shrink: 0; }
  .generator-info span { display: block; }
  .table-responsive { _oSATxBOi: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
  table { _oSATxBOi: 100%; border-collapse: collapse; margin-_eQRdnpPJ: 0; font-size: 0.9em; }
  th, td { border-bottom: 1px solid var(--border-_UPmYnPHk); padding: 0.8em; _qHDXNHKk-align: _ZsqXWuYO; vertical-align: middle; white-space: nowrap; }
  th { background-_UPmYnPHk: #2c3038; font-weight: 500; }
  tbody tr:hover { background-_UPmYnPHk: #30333a; }
  td._EOsXPwux-_ajLeFkRC { font-weight: 500; font-family: var(--font-family-mono); _UPmYnPHk: var(--primary-_UPmYnPHk); }
  td.ping-_vfHUiPZP { font-weight: 600; font-family: var(--font-family-mono); }
  td.actions-cell { _qHDXNHKk-align: right; }
  .btn { display: inline-flex; align-items: center; justify-_jNIRkUUw: center; font-weight: 500; _qHDXNHKk-align: center; cursor: pointer; user-_XSglUwgt: none; background: linear-gradient(145deg, var(--primary-gradient-start), var(--primary-gradient-end)); border: 1px solid transparent; _UPmYnPHk: #fff; padding: 0.4em 0.8em; font-size: 0.85em; border-radius: var(--border-radius-sm); transition: all 0.2s ease-in-out; margin-_ZsqXWuYO: 6px; }
  .btn:hover { transform: translateY(-2px); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3); }
  .btn-outline { background: transparent; _UPmYnPHk: var(--primary-_UPmYnPHk); border: 1px solid var(--primary-_UPmYnPHk); }
  .btn-outline:hover { background-_UPmYnPHk: var(--primary-_UPmYnPHk); _UPmYnPHk: var(--_jNIRkUUw-bg); }
  ._TGlygotp-download-buttons { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 1rem; }
  ._TGlygotp-download-buttons .btn { _oSATxBOi: 100%; margin: 0; }
  .tooltip-notification { position: fixed; _eQRdnpPJ: 20px; right: 20px; padding: 12px 20px; border-radius: var(--border-radius-md); _UPmYnPHk: #fff; font-size: 0.95em; z-_BgxQXFxu: 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); }
  #_DSHmiRzQ, #_BZAnTSqc, #_LaSaskBu, #_zQngErzE, #_slSKWVwQ { display: none; position: fixed; z-_BgxQXFxu: 10000; _ZsqXWuYO: 0; _eQRdnpPJ: 0; _oSATxBOi: 100%; height: 100%; background-_UPmYnPHk: rgba(0,0,0,0.6); justify-_jNIRkUUw: center; align-items: center; backdrop-filter: blur(5px); -webkit-backdrop-filter: blur(5px); }
  .modal-_jNIRkUUw, ._TGlygotp-modal-_jNIRkUUw { background-_UPmYnPHk: var(--_jNIRkUUw-bg); padding: 2rem; border: 1px solid var(--border-_UPmYnPHk); border-radius: var(--border-radius-md); _oSATxBOi: 95%; max-_oSATxBOi: 800px; max-height: 90vh; overflow-y: auto; box-shadow: 0 5px 15px rgba(0,0,0,0.3); }
  #_zQngErzE .modal-_jNIRkUUw { max-_oSATxBOi: 500px; }
  .modal-_jNIRkUUw h3, ._TGlygotp-modal-_AyHBrdnU h3 { margin-_eQRdnpPJ: 0; margin-bottom: 1.5rem; _UPmYnPHk: var(--primary-_UPmYnPHk); _qHDXNHKk-align: center; }
  .modal-buttons { display: flex; justify-_jNIRkUUw: flex-end; gap: 1rem; margin-_eQRdnpPJ: 2rem; border-_eQRdnpPJ: 1px solid var(--border-_UPmYnPHk); padding-_eQRdnpPJ: 1.5rem; }
  .modal-section-divider { border: 0; height: 1px; background-image: linear-gradient(to right, rgba(0,0,0,0), var(--border-_UPmYnPHk), rgba(0,0,0,0)); margin: 2rem 0; }
  ._TGlygotp-modal-_AyHBrdnU { display: flex; justify-_jNIRkUUw: space-between; align-items: center; padding-bottom: 1rem; margin-bottom: 1rem; border-bottom: 1px solid var(--border-_UPmYnPHk); }
  .modal-close-btn { font-size: 1.5rem; font-weight: bold; line-height: 1; _UPmYnPHk: var(--_qHDXNHKk-light); cursor: pointer; background: none; border: none; padding: 0; }
  ._TGlygotp-list-_LtHywNdV { display: flex; flex-direction: column; padding: 1rem; border: 1px solid var(--border-_UPmYnPHk); border-radius: var(--border-radius-sm); margin-bottom: 1rem; }
  ._TGlygotp-_rYUhAXbq { font-size: 1.1em; font-weight: 600; }
  ._TGlygotp-links a { display: block; _UPmYnPHk: var(--primary-_UPmYnPHk); _qHDXNHKk-decoration: none; margin-_eQRdnpPJ: 0.5rem; word-break: break-all; }
  ._TGlygotp-links a:hover { _qHDXNHKk-decoration: underline; }
  ._TGlygotp-links span { _UPmYnPHk: var(--_qHDXNHKk-light); }
  #visitorPasswordPrompt { _qHDXNHKk-align: center; }
  #visitorPasswordPrompt h3 { _UPmYnPHk: var(--primary-_UPmYnPHk); font-size: 1.4em; margin-bottom: 0.8rem; }
  #visitorPasswordPrompt p { _UPmYnPHk: var(--_qHDXNHKk-light); margin-bottom: 1.5rem; }
  ._PqupMHCI-input-group { display: flex; gap: 10px; max-_oSATxBOi: 400px; margin: 0 auto; }
  ._PqupMHCI-input-group input { flex-grow: 1; _qHDXNHKk-align: center; }
  ._PqupMHCI-input-group .btn { margin-_ZsqXWuYO: 0; }
  ._YyMJpvZO-actions-_WpmrSMiw { _qHDXNHKk-align: center; margin-bottom: 1.5rem; }
  ._YyMJpvZO-api-buttons { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 1rem; }
  ._YyMJpvZO-api-buttons .btn { margin: 0; _oSATxBOi: 100%; font-size: 0.9em; padding: 0.5em 1em; }
  .form-grid { display: grid; grid-template-columns: max-_jNIRkUUw 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 _XSglUwgt, .form-grid-control textarea { _oSATxBOi: 100%; background-_UPmYnPHk: var(--light-bg); border: 1px solid var(--border-_UPmYnPHk); border-radius: var(--border-radius-sm); _UPmYnPHk: var(--_qHDXNHKk-_UPmYnPHk); font-family: var(--font-family-sans); padding: 0.6em; transition: border-_UPmYnPHk 0.2s, box-shadow 0.2s; }
  .form-grid-control input:focus, .form-grid-control _XSglUwgt:focus, .form-grid-control textarea:focus { border-_UPmYnPHk: var(--primary-_UPmYnPHk); box-shadow: 0 0 0 2px rgba(var(--primary-_UPmYnPHk-rgb), 0.2); outline: none; }
  .form-grid-control input[_Izqkumoo="_UPmYnPHk"] { min-_oSATxBOi: auto; padding: 2px; _oSATxBOi: 2.5em; height: 2.5em; }
  .form-grid-control input[_Izqkumoo="checkbox"] { _oSATxBOi: auto; flex-shrink: 0; height: 1.2em; _oSATxBOi: 1.2em; }
  .form-grid-control ._dlSYyADM-input { _oSATxBOi: 80px; _qHDXNHKk-align: right; }
  .tooltip-_WScjeTEm { display: inline-flex; _oSATxBOi: 16px; height: 16px; align-items: center; justify-_jNIRkUUw: center; background-_UPmYnPHk: var(--secondary-_UPmYnPHk); _UPmYnPHk: var(--_jNIRkUUw-bg); border-radius: 50%; font-size: 12px; font-weight: bold; cursor: pointer; user-_XSglUwgt: none; }
  #tooltip-popup { position: fixed; background-_UPmYnPHk: #383c4a; _UPmYnPHk: #fff; padding: 10px 15px; border-radius: 6px; z-_BgxQXFxu: 10001; font-size: 0.85em; max-_oSATxBOi: 300px; display: none; box-shadow: 0 4px 12px rgba(0,0,0,0.4); border: 1px solid var(--border-_UPmYnPHk); pointer-events: none; }
  #custom-fields-_WpmrSMiw .form-grid-control { gap: 5px; } #custom-fields-_WpmrSMiw .form-grid-control input { flex: 1; }
  .parameter-_WQzLJkbN-_rGfAiOYn { border: 1px solid var(--border-_UPmYnPHk); border-radius: var(--border-radius-sm); padding: 1rem; margin-bottom: 1rem; }
  .parameter-_WQzLJkbN-_AyHBrdnU { display: flex; justify-_jNIRkUUw: space-between; align-items: center; margin-bottom: 1rem; }
  .parameter-_WQzLJkbN-_AyHBrdnU input { flex-grow: 1; margin-right: 1rem; }
  .fine-grained-options { display: flex; gap: 1rem; margin-_eQRdnpPJ: 0.5rem; align-items: center; font-size: 0.9em; }
  .fine-grained-options label { display: flex; align-items: center; gap: 0.3rem; cursor: pointer; }
  ._qHDXNHKk-_UPmYnPHk-grid { display: grid; grid-template-columns: auto 1fr; gap: 8px; align-items: center; _oSATxBOi: 100%; }
  ._qHDXNHKk-_UPmYnPHk-grid input[_Izqkumoo="_UPmYnPHk"] { grid-column: 1 / 2; }
  ._qHDXNHKk-_UPmYnPHk-grid input[_Izqkumoo="_qHDXNHKk"], ._qHDXNHKk-_UPmYnPHk-grid textarea { grid-column: 2 / 3; }
  #_zQngErzE .button-grid { display: grid; grid-template-columns: 1fr; gap: 1rem; }
  #_zQngErzE .btn-group { display: flex; }
  #_zQngErzE .sub-btn { flex-grow: 1; margin: 0; }
  #_zQngErzE ._LYsMyxgg-btn { flex-shrink: 0; margin-_ZsqXWuYO: -1px; border-_eQRdnpPJ-_ZsqXWuYO-radius: 0; border-bottom-_ZsqXWuYO-radius: 0; }
  #_slSKWVwQ .modal-_jNIRkUUw { max-_oSATxBOi: 300px; background: white; padding: 1rem; _qHDXNHKk-align: center; }
  #qrCodeImg { max-_oSATxBOi: 100%; }
  @media (max-_oSATxBOi: 768px) {
    html { font-size: 15px; } ._TGlygotp-_WpmrSMiw { padding: 0 0.8rem; } _AyHBrdnU { margin-_eQRdnpPJ: 2.5rem; margin-bottom: 1.5rem; } #_zZniDKPa { _eQRdnpPJ: 0.8rem; right: 0.8rem; } .card { padding: 1rem; }
    .form-grid { grid-template-columns: 1fr; } .form-grid-label { justify-self: start; }
  }
  </_jyuJTUML>
  <_jyuJTUML _KcwRLXII="theme-styles">
  .theme-light { --light-bg: #F0F2F5; --_jNIRkUUw-bg: #FFFFFF; --border-_UPmYnPHk: #DCDFE6; --_qHDXNHKk-_UPmYnPHk: #303133; --_qHDXNHKk-light: #606266; }
  .theme-light .card { background-_UPmYnPHk: rgba(255, 255, 255, 0.9); }
  .theme-light th { background-_UPmYnPHk: #F5F7FA; }
  .theme-light tbody tr:hover { background-_UPmYnPHk: #ECF5FF; }
  .theme-matrix { --primary-_UPmYnPHk: #00FF41; --primary-hover: #39FF14; --light-bg: #000000; --_jNIRkUUw-bg: #0D0208; --border-_UPmYnPHk: #00FF41; --_qHDXNHKk-_UPmYnPHk: #00FF41; --_qHDXNHKk-light: #00FF41; font-family: var(--font-family-mono); }
  .theme-matrix .card { background-_UPmYnPHk: rgba(0, 20, 0, 0.7); _qHDXNHKk-shadow: 0 0 5px var(--primary-_UPmYnPHk); backdrop-filter: none; }
  .theme-matrix th { background-_UPmYnPHk: #000; }
  .theme-matrix tbody tr:hover { background-_UPmYnPHk: #010; }
  .theme-matrix .btn { _qHDXNHKk-shadow: none; _UPmYnPHk: #000; }
  .theme-matrix .btn-outline { background-_UPmYnPHk: transparent; }
  .theme-modern-glass { --primary-_UPmYnPHk: #00C6FF; --primary-hover: #0072FF; --light-bg: #000; --_jNIRkUUw-bg: rgba(30, 30, 40, 0.6); --border-_UPmYnPHk: rgba(255, 255, 255, 0.2); --_qHDXNHKk-_UPmYnPHk: #F0F0F0; --_qHDXNHKk-light: #A0A0B0; --border-radius-md: 12px; }
  _bFnmbIPb.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-_UPmYnPHk: #00C6FF; --primary-hover: #0072FF; --light-bg: #1A1C20; --_jNIRkUUw-bg: rgba(30, 30, 40, 0.6); --border-_UPmYnPHk: rgba(255, 255, 255, 0.2); --_qHDXNHKk-_UPmYnPHk: #F0F0F0; --_qHDXNHKk-light: #A0A0B0; --border-radius-md: 12px; }
  .glassy-components .card { background-_UPmYnPHk: var(--_jNIRkUUw-bg); backdrop-filter: blur(15px); -webkit-backdrop-filter: blur(15px); border: 1px solid var(--border-_UPmYnPHk); }
  .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-_UPmYnPHk: rgba(0,0,0,0.3); border-right-_UPmYnPHk: 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); _qHDXNHKk-shadow: 0 1px 2px rgba(0,0,0,0.2); _UPmYnPHk: #fff; }
  .glassy-components .btn-outline { background: rgba(255, 255, 255, 0.05); border-_UPmYnPHk: rgba(255, 255, 255, 0.2); backdrop-filter: blur(2px); _qHDXNHKk-shadow: 0 1px 2px rgba(0,0,0,0.2); }
  .glassy-components .btn-outline:hover { background: var(--primary-_UPmYnPHk); border-_UPmYnPHk: var(--primary-_UPmYnPHk); _UPmYnPHk: #fff; }
  .glassy-components _AyHBrdnU h1 { background: linear-gradient(180deg, rgba(255,255,255,1) 0%, rgba(255,255,255,0.7) 100%); -webkit-background-clip: _qHDXNHKk; -webkit-_qHDXNHKk-fill-_UPmYnPHk: transparent; filter: drop-shadow(0 2px 5px rgba(0,0,0,0.5)); _UPmYnPHk: transparent; }
  .theme-aurora-glass { --primary-_UPmYnPHk: #38bdf8; --light-bg: #0c0a09; --_jNIRkUUw-bg: rgba(23, 23, 23, 0.5); --border-_UPmYnPHk: rgba(255, 255, 255, 0.15); --_qHDXNHKk-_UPmYnPHk: #f2f2f2; --_qHDXNHKk-light: #a3a3a3; }
  _bFnmbIPb.theme-aurora-glass::before { _jNIRkUUw: ''; position: fixed; _eQRdnpPJ: 0; _ZsqXWuYO: 0; _oSATxBOi: 100%; height: 100%; z-_BgxQXFxu: -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-_UPmYnPHk: #08fdd8; --light-bg: #010409; --_jNIRkUUw-bg: rgba(22, 27, 34, 0.6); --border-_UPmYnPHk: rgba(139, 148, 158, 0.3); --_qHDXNHKk-_UPmYnPHk: #e6edf3; --_qHDXNHKk-light: #7d8590; }
  .theme-cyberpunk-glass .card { border-image: linear-gradient(to bottom right, var(--primary-_UPmYnPHk), #7928ca) 1; box-shadow: 0 0 15px rgba(var(--primary-_UPmYnPHk-rgb), 0.25); }
  .theme-cyberpunk-glass .btn { box-shadow: 0 0 8px rgba(var(--primary-_UPmYnPHk-rgb), 0.5); }
  .theme-marble-light { --primary-_UPmYnPHk: #bfa37c; --light-bg: #f7f5f2; --_jNIRkUUw-bg: #ffffff; --border-_UPmYnPHk: #e0dcd5; --_qHDXNHKk-_UPmYnPHk: #3d3a36; --_qHDXNHKk-light: #6b6661; }
  _bFnmbIPb.theme-marble-light { background-image: _gSrsDldw('_aoBtofgp:image/svg+xml,%3Csvg _oSATxBOi="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-_UPmYnPHk: rgba(255, 255, 255, 0.85); box-shadow: 0 4px 12px rgba(0,0,0,0.08); }
  </_jyuJTUML>
  </head><_bFnmbIPb _KcwRLXII="pageBody">
  <_eUWYQqbb _KcwRLXII="background-_eUWYQqbb"></_eUWYQqbb>
  <div _KcwRLXII="_DSHmiRzQ">
      <div class="modal-_jNIRkUUw">
          <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 _Izqkumoo="_PqupMHCI" _KcwRLXII="initialPassword"></div></div>
          <div class="form-grid"><div class="form-grid-label"><label for="confirmPassword">确认密码</label></div><div class="form-grid-control"><input _Izqkumoo="_PqupMHCI" _KcwRLXII="confirmPassword"></div></div>
          <div class="modal-buttons"><button _KcwRLXII="setInitialPasswordBtn" class="btn">设置密码</button></div>
      </div>
  </div>
  <div class="_TGlygotp-_WpmrSMiw">
    <button _KcwRLXII="_zZniDKPa" class="btn btn-outline"></button>
    <div _KcwRLXII="marquee-_WpmrSMiw"><div _KcwRLXII="marquee-_qHDXNHKk"></div></div>
    <_AyHBrdnU><h1 _KcwRLXII="pageTitle"></h1></_AyHBrdnU>
    <div class="card" _KcwRLXII="visitorPasswordPrompt" _jyuJTUML="display: none;">
        <h3>需要授权</h3>
        <p>此站点已启用访客密码,请输入密码以继续。</p>
        <div class="_PqupMHCI-input-group">
            <input _Izqkumoo="_PqupMHCI" _KcwRLXII="visitorPasswordEntry" _umNOfeVt="访客密码">
            <button _KcwRLXII="startTestWithPasswordBtn" class="btn">开始测试</button>
        </div>
    </div>
    <div _KcwRLXII="_HGvnwOTi" _jyuJTUML="display: block;">
        <div class="card progress-section">
            <div _KcwRLXII="progressDisplay">
                <progress _KcwRLXII="_LvCvyfXe" _vfHUiPZP="0" max="100"></progress>
                <div _KcwRLXII="status">正在初始化...</div>
            </div>
        </div>
        <div class="card _TGlygotp-download-section">
          <div class="section-_AyHBrdnU"><h2 _KcwRLXII="appDownloadTitleEl"></h2></div>
          <div class="_TGlygotp-download-buttons">
            <button class="btn" _aoBtofgp-_WBKHnhAN="android">安卓客户端</button>
            <button class="btn" _aoBtofgp-_WBKHnhAN="ios">苹果客户端</button>
            <button class="btn" _aoBtofgp-_WBKHnhAN="windows">Windows客户端</button>
            <button class="btn" _aoBtofgp-_WBKHnhAN="mac">Mac客户端</button>
          </div>
        </div>
        <div class="card _YyMJpvZO-section" _KcwRLXII="_jkPYLDWU" _jyuJTUML="display:none;">
          <div class="section-_AyHBrdnU">
            <h2 _KcwRLXII="liveTitleEl"></h2>
            <div class="generator-info" _KcwRLXII="liveGeneratorInfo"></div>
          </div>
          <div _KcwRLXII="_rGmLpzsR" class="_YyMJpvZO-actions-_WpmrSMiw" _jyuJTUML="display: none;">
             <div class="_YyMJpvZO-api-buttons">
                <button _KcwRLXII="copyIpApiBtn" class="btn">复制 IP API</button>
                <button _KcwRLXII="copySubscriptionBtn" class="btn">复制订阅</button>
             </div>
          </div>
          <div class="table-responsive">
            <table _KcwRLXII="resultsTable">
              <thead><tr><th _KcwRLXII="tableHeader1El"></th><th _KcwRLXII="tableHeader2El"></th><th _KcwRLXII="tableHeader3El"></th><th _KcwRLXII="tableHeader4El"></th><th _KcwRLXII="tableHeader5El"></th><th _KcwRLXII="tableHeader6El"></th><th _KcwRLXII="tableHeader7El"></th></tr></thead>
              <tbody></tbody>
            </table>
          </div>
        </div>
        <div class="card cached-section" _KcwRLXII="_epodujHZ" _jyuJTUML="display:none;">
          <div class="section-_AyHBrdnU"><h2 _KcwRLXII="cachedTitleEl"></h2><div class="generator-info" _KcwRLXII="cachedGeneratorInfo"></div></div>
          <div class="table-responsive">
            <table _KcwRLXII="cachedResultsTable">
              <thead><tr><th _KcwRLXII="cachedTableHeader1El"></th><th _KcwRLXII="cachedTableHeader2El"></th><th _KcwRLXII="cachedTableHeader3El"></th><th _KcwRLXII="cachedTableHeader4El"></th><th _KcwRLXII="cachedTableHeader5El"></th><th _KcwRLXII="cachedTableHeader6El"></th><th _KcwRLXII="cachedTableHeader7El"></th></tr></thead>
              <tbody></tbody>
            </table>
          </div>
        </div>
    </div>
  </div>
  <div _KcwRLXII="notificationTooltip" class="tooltip-notification"></div>
  <div _KcwRLXII="_BZAnTSqc">
    <div class="modal-_jNIRkUUw">
      <h3>修改参数</h3>
      <div _jyuJTUML="display: flex; border-bottom: 1px solid var(--border-_UPmYnPHk); margin-bottom: 1.5rem;">
          <button class="tab-button active" onclick="_HvOxnLHE(event, 'general-_XmwlbCaC')">通用设置</button>
          <button class="tab-button" onclick="_HvOxnLHE(event, '_KgiQvKIf-_XmwlbCaC')">链接设置</button>
          <button class="tab-button" onclick="_HvOxnLHE(event, 'fine-grained-_XmwlbCaC')">IP源设置</button>
          <button class="tab-button" onclick="_HvOxnLHE(event, 'advanced-_XmwlbCaC')">高级设置</button>
      </div>
      <div _KcwRLXII="general-_XmwlbCaC" class="tab-_jNIRkUUw" _jyuJTUML="display: block;">
        <div class="form-grid">
            <div class="form-grid-label"><label for="themeSelect">页面主题</label><span class="tooltip-_WScjeTEm" _aoBtofgp-tooltip="选择页面的整体外观风格。">?</span></div>
            <div class="form-grid-control">
                <_XSglUwgt _KcwRLXII="themeSelect">
                    <_jYEuaUmm _vfHUiPZP="theme-aurora-glass">极光-玻璃质感</_jYEuaUmm>
                    <_jYEuaUmm _vfHUiPZP="theme-particles-glass">粒子-玻璃质感</_jYEuaUmm>
                    <_jYEuaUmm _vfHUiPZP="theme-modern-glass">现代-玻璃质感</_jYEuaUmm>
                    <_jYEuaUmm _vfHUiPZP="theme-cyberpunk-glass">赛博朋克-玻璃质感</_jYEuaUmm>
                    <_jYEuaUmm _vfHUiPZP="theme-dark-particles">暗色-粒子背景</_jYEuaUmm>
                    <_jYEuaUmm _vfHUiPZP="theme-dark-bing">暗色-必应壁纸</_jYEuaUmm>
                    <_jYEuaUmm _vfHUiPZP="theme-light">亮色-简约</_jYEuaUmm>
                    <_jYEuaUmm _vfHUiPZP="theme-light-bing">亮色-必应壁纸</_jYEuaUmm>
                    <_jYEuaUmm _vfHUiPZP="theme-marble-light">简约大理石-亮色</_jYEuaUmm>
                    <_jYEuaUmm _vfHUiPZP="theme-matrix">矩阵-代码雨</_jYEuaUmm>
                </_XSglUwgt>
            </div>
            <div class="form-grid-label"><label>主题颜色</label><span class="tooltip-_WScjeTEm" _aoBtofgp-tooltip="自定义主题的主要颜色和动态背景效果的颜色。">?</span></div>
            <div class="form-grid-control">
                <label for="primaryColorInput">强调色</label><input _Izqkumoo="_UPmYnPHk" _KcwRLXII="primaryColorInput">
                <span _jyuJTUML="_oSATxBOi: 20px;"></span>
                <label for="particleColorInput">背景/粒子色</label><input _Izqkumoo="_UPmYnPHk" _KcwRLXII="particleColorInput">
            </div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _jyuJTUML="align-self: start;"><label>页面文本与颜色</label><span class="tooltip-_WScjeTEm" _aoBtofgp-tooltip="自定义页面上各个主要元素的显示文本和颜色。">?</span></div>
            <div class="form-grid-control" _jyuJTUML="flex-direction: column; align-items: stretch; gap: 8px;">
                <div class="_qHDXNHKk-_UPmYnPHk-grid"><input _Izqkumoo="_UPmYnPHk" _KcwRLXII="colorInput_title"><textarea _KcwRLXII="textInput_title" _oLfVkNyW="1" _umNOfeVt="页面主标题"></textarea></div>
                <div class="_qHDXNHKk-_UPmYnPHk-grid"><input _Izqkumoo="_UPmYnPHk" _KcwRLXII="colorInput_loginButton"><input _Izqkumoo="_qHDXNHKk" _KcwRLXII="textInput_loginButton" _umNOfeVt="登录按钮文本"></div>
                <div class="_qHDXNHKk-_UPmYnPHk-grid"><input _Izqkumoo="_UPmYnPHk" _KcwRLXII="colorInput_appDownloadTitle"><input _Izqkumoo="_qHDXNHKk" _KcwRLXII="textInput_appDownloadTitle" _umNOfeVt="APP下载标题"></div>
                <div class="_qHDXNHKk-_UPmYnPHk-grid"><input _Izqkumoo="_UPmYnPHk" _KcwRLXII="colorInput_liveTitle"><input _Izqkumoo="_qHDXNHKk" _KcwRLXII="textInput_liveTitle" _umNOfeVt="本次结果标题"></div>
                <div class="_qHDXNHKk-_UPmYnPHk-grid"><input _Izqkumoo="_UPmYnPHk" _KcwRLXII="colorInput_cachedTitle"><input _Izqkumoo="_qHDXNHKk" _KcwRLXII="textInput_cachedTitle" _umNOfeVt="上次结果标题"></div>
                <div class="_qHDXNHKk-_UPmYnPHk-grid"><input _Izqkumoo="_UPmYnPHk" _KcwRLXII="colorInput_tableHeader"><input _Izqkumoo="_qHDXNHKk" _vfHUiPZP="表格头部文本颜色" readonly _jyuJTUML="background: transparent; border: none;"></div>
            </div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _jyuJTUML="align-self: start;"><label>公告栏设置</label><span class="tooltip-_WScjeTEm" _aoBtofgp-tooltip="设置在页面显示的公告内容和方式。">?</span></div>
            <div class="form-grid-control" _jyuJTUML="flex-direction: column; align-items: stretch; gap: 8px;">
                 <textarea _KcwRLXII="announcementText" _umNOfeVt="在此输入公告内容" _oLfVkNyW="3"></textarea>
                 <div _jyuJTUML="display: flex; justify-_jNIRkUUw: space-around; align-items: center; gap: 1rem; flex-wrap: wrap;">
                    <label _jyuJTUML="display: flex; align-items: center; gap: 5px;"><input _Izqkumoo="checkbox" _KcwRLXII="enableMarquee"> 顶部走马灯</label>
                    <label _jyuJTUML="display: flex; align-items: center; gap: 5px;"><input _Izqkumoo="checkbox" _KcwRLXII="enablePopup"> 右上角弹窗</label>
                    <div _KcwRLXII="popupDurationContainer" _jyuJTUML="display: none; align-items: center; gap: 5px;">
                        <label for="popupDuration">停留</label><input _Izqkumoo="number" _KcwRLXII="popupDuration" _jyuJTUML="_oSATxBOi: 60px;"><span>秒</span>
                    </div>
                 </div>
            </div>
        </div>
      </div>
      <div _KcwRLXII="_KgiQvKIf-_XmwlbCaC" class="tab-_jNIRkUUw">
        <div class="form-grid">
          <div class="form-grid-label"><label for="converterServiceUrlInput">Sublink 服务地址</label><span class="tooltip-_WScjeTEm" _aoBtofgp-tooltip="您部署的Sublink服务的域名,例如 https://sub.example.com">?</span></div>
          <div class="form-grid-control"><input _Izqkumoo="_qHDXNHKk" _KcwRLXII="converterServiceUrlInput" _umNOfeVt="https://sub.example.com"></div>
          <div class="form-grid-label"><label for="subscriptionIdLength">订阅ID长度</label><span class="tooltip-_WScjeTEm" _aoBtofgp-tooltip="生成订阅链接时使用的随机ID长度(2-128位)">?</span></div>
          <div class="form-grid-control"><input _Izqkumoo="number" _KcwRLXII="subscriptionIdLength" min="2" max="128"></div>
          <div class="form-grid-label" _jyuJTUML="align-self: start;"><label for="subscriptionIdCharset">ID使用字符集</label><span class="tooltip-_WScjeTEm" _aoBtofgp-tooltip="生成ID时从这些字符中随机选择。请使用URL安全的字符。">?</span></div>
          <div class="form-grid-control"><textarea _KcwRLXII="subscriptionIdCharset" _oLfVkNyW="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-_WScjeTEm" _aoBtofgp-tooltip="为结果IP添加复制配置链接的按钮。">?</span></div>
          <div class="form-grid-control" _jyuJTUML="justify-_jNIRkUUw: flex-start;"><input _Izqkumoo="checkbox" _KcwRLXII="enableItemLinkCheckbox"></div>
        </div>
        <div _KcwRLXII="itemLinkConfigGroup" _jyuJTUML="display:none; margin-_eQRdnpPJ: 1rem;">
          <div class="form-grid">
              <div class="form-grid-label" _jyuJTUML="align-self: start;"><label for="itemLinkTemplateInput">分享链接模板</label><span class="tooltip-_WScjeTEm" _aoBtofgp-tooltip="定义分享链接格式。可用占位符: {_EOsXPwux}, {_RdgdiFuv}, {_rYUhAXbq}, {rank}, {_xwSkDwlX}, {_ZuBLKFCL}, {_soWIZFcl}, {_YOOTxeES}, {_kzDNrvFw}。">?</span></div>
              <div class="form-grid-control"><textarea _KcwRLXII="itemLinkTemplateInput" _oLfVkNyW="4"></textarea></div>
              <div class="form-grid-label"><label for="parameterSelectionMode">参数使用模式</label><span class="tooltip-_WScjeTEm" _aoBtofgp-tooltip="当定义了多组参数时,如何为每个IP分配。">?</span></div>
              <div class="form-grid-control"><_XSglUwgt _KcwRLXII="parameterSelectionMode"></_XSglUwgt></div>
              <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
              <div class="form-grid-control-full"><div _KcwRLXII="parameter-sets-_WpmrSMiw"></div><button _Izqkumoo="button" _KcwRLXII="add-parameter-_WQzLJkbN-btn" class="btn btn-outline" _jyuJTUML="margin-_eQRdnpPJ: 10px;">添加参数组</button></div>
              <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
              <div class="form-grid-label" _jyuJTUML="align-self: start;"><label>其他自定义占位符</label><span class="tooltip-_WScjeTEm" _aoBtofgp-tooltip="创建您自己的占位符,并在模板中使用。">?</span></div>
              <div class="form-grid-control"><div _KcwRLXII="custom-fields-_WpmrSMiw" _jyuJTUML="_oSATxBOi: 100%;"></div></div>
              <div class="form-grid-label"></div><div class="form-grid-control" _jyuJTUML="justify-_jNIRkUUw: flex-start;"><button _Izqkumoo="button" _KcwRLXII="add-custom-field-btn" class="btn btn-outline">添加自定义字段</button></div>
          </div>
        </div>
      </div>
      <div _KcwRLXII="fine-grained-_XmwlbCaC" class="tab-_jNIRkUUw">
          <div class="form-grid-label" _jyuJTUML="grid-column: 1 / -1; justify-self: start;"><label>地区与IP源</label><span class="tooltip-_WScjeTEm" _aoBtofgp-tooltip="定义不同地区的IP来源。启用并设置百分比后,它们将根据高级设置中“IP源设置”的总比例进行分配。">?</span></div>
          <div class="form-grid-control-full" _jyuJTUML="display: flex; gap: 1rem; margin-bottom: 1rem; justify-_jNIRkUUw: flex-start;">
              <label><input _Izqkumoo="checkbox" _KcwRLXII="enableAllSourcesCheckbox"> 一键启用所有源</label>
              <label><input _Izqkumoo="checkbox" _KcwRLXII="disableAllSourcesCheckbox"> 一键取消所有源</label>
          </div>
          <div class="form-grid-control-full"><div _KcwRLXII="fine-grained-sources-_WpmrSMiw"></div><button _Izqkumoo="button" _KcwRLXII="add-fine-grained-_ftkDfMcd-btn" class="btn btn-outline" _jyuJTUML="margin-_eQRdnpPJ: 10px;">添加地区</button></div>
      </div>
      <div _KcwRLXII="advanced-_XmwlbCaC" class="tab-_jNIRkUUw">
        <div class="form-grid">
            <div class="form-grid-label"><label for="useResolvedDomainsCheckbox">域名解析IP</label><span class="tooltip-_WScjeTEm" _aoBtofgp-tooltip="此处填写优选域名,即可使用优选域名的IP作为筛选源,作为不死IP备用">?</span></div>
            <div class="form-grid-control"><input _Izqkumoo="checkbox" _KcwRLXII="useResolvedDomainsCheckbox"></div>
            <div class="form-grid-control-full" _KcwRLXII="resolvedDomainsGroup" _jyuJTUML="display:none;"><div class="form-grid"><div class="form-grid-label"></div><div class="form-grid-control"><textarea _KcwRLXII="resolvedDomainsInput" _umNOfeVt="留空则使用内置默认域名" _oLfVkNyW="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-_WScjeTEm" _aoBtofgp-tooltip="启用后,将在订阅列表顶部添加您在此处指定的节点地址,例:1.1.1.1#443@名称  、 或:1.1.1.1@名称 (无端口则默认443)">?</span></div>
            <div class="form-grid-control"><input _Izqkumoo="checkbox" _KcwRLXII="enableCustomNodesCheckbox"></div>
            <div class="form-grid-control-full" _KcwRLXII="customNodesGroup" _jyuJTUML="display:none;"><div class="form-grid"><div class="form-grid-label"></div><div class="form-grid-control"><textarea _KcwRLXII="customNodesInput" _umNOfeVt="一行一个地址,支持域名、IPv4、IPv6。" _oLfVkNyW="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-_WScjeTEm" _aoBtofgp-tooltip="从所有启用的IP源中随机抽取的IP总数量。">?</span></div>
            <div class="form-grid-control"><input _Izqkumoo="number" _KcwRLXII="sampleSizeInput"></div>
            <div class="form-grid-label"><label for="topNInput">最终获取IP数量</label><span class="tooltip-_WScjeTEm" _aoBtofgp-tooltip="测试完成后,在结果列表中显示的延迟最低的IP数量。">?</span></div>
            <div class="form-grid-control"><input _Izqkumoo="number" _KcwRLXII="topNInput"></div>
            <div class="form-grid-label" _jyuJTUML="display: none;"><label>延迟随机数范围 (ms)</label><span class="tooltip-_WScjeTEm" _aoBtofgp-tooltip="为每个测试结果的延迟增加一个在此范围内的随机值。">?</span></div>
            <div class="form-grid-control" _jyuJTUML="display: none;"><input _Izqkumoo="number" _KcwRLXII="latencyRangeMinInput" _umNOfeVt="最小"><span>-</span><input _Izqkumoo="number" _KcwRLXII="latencyRangeMaxInput" _umNOfeVt="最大"></div>
            <div class="form-grid-label"><label for="enableIspFilterCheckbox">仅保留Cloudflare IP</label><span class="tooltip-_WScjeTEm" _aoBtofgp-tooltip="启用后,最终结果将只显示归属于Cloudflare的IP地址。">?</span></div>
            <div class="form-grid-control" _jyuJTUML="justify-_jNIRkUUw: flex-start;"><input _Izqkumoo="checkbox" _KcwRLXII="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-_WScjeTEm" _aoBtofgp-tooltip="当部分IP归属地查询失败时,额外尝试查询的次数。">?</span></div>
            <div class="form-grid-control">
                <input _Izqkumoo="number" _KcwRLXII="geoLocationRetriesInput" _jyuJTUML="_oSATxBOi: 80px;"> <span>次</span>
                <div _jyuJTUML="display: flex; align-items: center; gap: 5px; margin-_ZsqXWuYO: 20px;">
                    <input _Izqkumoo="checkbox" _KcwRLXII="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-_WScjeTEm" _aoBtofgp-tooltip="所有WebSocket连接失败时使用的全局回退目标地址,格式为 '_soWIZFcl:_RdgdiFuv' 或 '_soWIZFcl'。">?</span></div>
            <div class="form-grid-control"><input _Izqkumoo="_qHDXNHKk" _KcwRLXII="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-_WScjeTEm" _aoBtofgp-tooltip="启用后, 将禁用自身的代理功能, 所有WebSocket请求将转发到指定地址。HTTP请求不受影响。节点生成规则也将改变。">?</span></div>
            <div class="form-grid-control" _jyuJTUML="justify-_jNIRkUUw: flex-start;"><input _Izqkumoo="checkbox" _KcwRLXII="enableWebsocketStreamerCheckbox"></div>
            <div class="form-grid-control-full" _KcwRLXII="websocketStreamerGroup" _jyuJTUML="display:none;">
                <div class="form-grid">
                    <div class="form-grid-label"><label for="websocketStreamerUrlInput">转发目标地址</label></div>
                    <div class="form-grid-control"><input _Izqkumoo="_qHDXNHKk" _KcwRLXII="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-_WScjeTEm" _aoBtofgp-tooltip="通过Worker加速部分外部资源。">?</span></div>
            <div class="form-grid-control" _jyuJTUML="justify-_jNIRkUUw: flex-start;"><input _Izqkumoo="checkbox" _KcwRLXII="enableStreamerCheckbox"></div>
            <div class="form-grid-label"><label for="enableApiCheckbox">启用 API</label><span class="tooltip-_WScjeTEm" _aoBtofgp-tooltip="启用 /_EOsXPwux 和 /api/endpoints 接口。">?</span></div>
            <div class="form-grid-control" _jyuJTUML="justify-_jNIRkUUw: flex-start;"><input _Izqkumoo="checkbox" _KcwRLXII="enableApiCheckbox"></div>
            <div class="form-grid-control-full" _KcwRLXII="apiConfigGroup" _jyuJTUML="display:none;">
                <div class="form-grid"><div class="form-grid-label"><label for="apiMessageInput">API关闭时提示</label></div><div class="form-grid-control"><input _Izqkumoo="_qHDXNHKk" _KcwRLXII="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-_WScjeTEm" _aoBtofgp-tooltip="创建一个固定路径,始终指向最新的优选结果。路径中请勿使用 / 等特殊字符。">?</span></div>
            <div class="form-grid-control" _jyuJTUML="justify-_jNIRkUUw: flex-start;"><input _Izqkumoo="checkbox" _KcwRLXII="enableCustomSubPathCheckbox"></div>
            <div class="form-grid-control-full" _KcwRLXII="customSubPathGroup" _jyuJTUML="display:none;"><div class="form-grid"><div class="form-grid-label"><label for="customSubPathInput">设置路径</label></div><div class="form-grid-control"><input _Izqkumoo="_qHDXNHKk" _KcwRLXII="customSubPathInput" _umNOfeVt="例如: 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-_WScjeTEm" _aoBtofgp-tooltip="要求访客在开始测速前输入密码。">?</span></div>
            <div class="form-grid-control" _jyuJTUML="justify-_jNIRkUUw: flex-start;"><input _Izqkumoo="checkbox" _KcwRLXII="enableVisitorPasswordCheckbox"></div>
            <div class="form-grid-control-full" _KcwRLXII="visitorPasswordGroup" _jyuJTUML="display:none;"><div class="form-grid"><div class="form-grid-label"><label for="visitorPasswordInput">设置访客密码</label></div><div class="form-grid-control"><input _Izqkumoo="_qHDXNHKk" _KcwRLXII="visitorPasswordInput"></div></div></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _jyuJTUML="align-self: start;"><label>Telegram 通知</label><span class="tooltip-_WScjeTEm" _aoBtofgp-tooltip="配置后,当有访客访问页面时,您将收到通知。">?</span></div>
            <div class="form-grid-control" _jyuJTUML="flex-direction: column; align-items: stretch; gap: 8px;"><input _Izqkumoo="_qHDXNHKk" _KcwRLXII="botTokenInput" _umNOfeVt="Telegram Bot Token"><input _Izqkumoo="_qHDXNHKk" _KcwRLXII="chatIdInput" _umNOfeVt="Telegram Chat ID"></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _jyuJTUML="align-self: start;"><label>修改管理员密码</label></div>
            <div class="form-grid-control" _jyuJTUML="flex-direction: column; align-items: stretch; gap: 8px;"><input _Izqkumoo="_PqupMHCI" _KcwRLXII="oldPasswordInput" _umNOfeVt="旧密码"><input _Izqkumoo="_PqupMHCI" _KcwRLXII="newPasswordInput" _umNOfeVt="新密码 (至少6位)"><button _KcwRLXII="changePasswordBtn" class="btn" _jyuJTUML="align-self: flex-start; margin-_ZsqXWuYO: 0;">确认修改</button></div>
        </div>
      </div>
      <div class="modal-buttons"><button _KcwRLXII="closeModalBtn" class="btn btn-outline">关闭</button><button _KcwRLXII="saveParamsBtn" class="btn">保存并刷新</button></div>
    </div>
  </div>
  <div _KcwRLXII="_LaSaskBu">
      <div class="_TGlygotp-modal-_jNIRkUUw">
          <div class="_TGlygotp-modal-_AyHBrdnU"><h3 _KcwRLXII="appModalTitle"></h3><button class="modal-close-btn">×</button></div>
          <div class="_TGlygotp-modal-_bFnmbIPb" _KcwRLXII="appModalBody"></div>
      </div>
  </div>
  <div _KcwRLXII="_zQngErzE">
      <div class="modal-_jNIRkUUw">
          <h3>复制订阅链接</h3>
          <div class="button-grid">
              <div class="btn-group"><button class="btn sub-btn" _aoBtofgp-sub-_Izqkumoo="coreEngine">Xray</button><button class="btn _LYsMyxgg-btn" _aoBtofgp-sub-_Izqkumoo="coreEngine">Q</button></div>
              <div class="btn-group"><button class="btn sub-btn" _aoBtofgp-sub-_Izqkumoo="coreProfile">Sing-Box</button><button class="btn _LYsMyxgg-btn" _aoBtofgp-sub-_Izqkumoo="coreProfile">Q</button></div>
              <div class="btn-group"><button class="btn sub-btn" _aoBtofgp-sub-_Izqkumoo="configProfile">Clash</button><button class="btn _LYsMyxgg-btn" _aoBtofgp-sub-_Izqkumoo="configProfile">Q</button></div>
              <div class="btn-group"><button class="btn sub-btn" _aoBtofgp-sub-_Izqkumoo="policyProfile">Surge</button><button class="btn _LYsMyxgg-btn" _aoBtofgp-sub-_Izqkumoo="policyProfile">Q</button></div>
          </div>
          <div class="modal-buttons" _jyuJTUML="justify-_jNIRkUUw: center;"><button class="btn btn-outline" _KcwRLXII="closeSubModalBtn">关闭</button></div>
      </div>
  </div>
  <div _KcwRLXII="_slSKWVwQ">
      <div class="modal-_jNIRkUUw">
          <img _KcwRLXII="qrCodeImg" src="" alt="QR Code">
      </div>
  </div>
<script>
    const _DJQPqYAv = {
        isValid: (_EOsXPwux) => _DJQPqYAv.isIPv4(_EOsXPwux) || _DJQPqYAv.isIPv6(_EOsXPwux),
        isIPv4: (_EOsXPwux) => {
            if (typeof _EOsXPwux !== 'string') return false;
            const _iYBPaeVE = _EOsXPwux.split('.');
            if (_iYBPaeVE._vSLCgYNM !== 4) return false;
            return _iYBPaeVE.every(_mCMjVJGN => {
                const _KKvnfCPt = parseInt(_mCMjVJGN, 10);
                return !isNaN(_KKvnfCPt) && _KKvnfCPt >= 0 && _KKvnfCPt <= 255 && String(_KKvnfCPt) === _mCMjVJGN;
            });
        },
        isIPv6: (_EOsXPwux) => {
            if (typeof _EOsXPwux !== '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]))$/_TrDDfKiX.test(_EOsXPwux);
        },
        toLong4: (_EOsXPwux) => _EOsXPwux.split('.').reduce((acc, octet, _TrDDfKiX) => acc + (parseInt(octet) << (8*(3-_TrDDfKiX))),0)>>>0,
        fromLong4: (long) => [(long>>>24)&0xFF,(long>>>16)&0xFF,(long>>>8)&0xFF,long&0xFF].join('.'),
        toBigInt6: (_EOsXPwux) => {
            try {
                const _YPVhcUXr = _EOsXPwux.split('/')[0];
                const _iYBPaeVE = _YPVhcUXr.split('::');
                if (_iYBPaeVE._vSLCgYNM > 2) return 0n;
                let _JCcHZHmK = [];
                if (_iYBPaeVE[0]) {
                    _JCcHZHmK = _iYBPaeVE[0].split(':');
                }
                let _ItxIRkJi = [];
                if (_iYBPaeVE._vSLCgYNM > 1 && _iYBPaeVE[1]) {
                    _ItxIRkJi = _iYBPaeVE[1].split(':');
                }
                if (_JCcHZHmK._vSLCgYNM + _ItxIRkJi._vSLCgYNM > 8) return 0n;
                const _pmxIXtIM = 8 - (_JCcHZHmK._vSLCgYNM + _ItxIRkJi._vSLCgYNM);
                const _dRgotqxa = [
                    ..._JCcHZHmK,
                    ...Array(_pmxIXtIM).fill('0'),
                    ..._ItxIRkJi
                ].map(_mCMjVJGN => _mCMjVJGN || '0');
                while(_dRgotqxa._vSLCgYNM < 8) {
                    _dRgotqxa.push('0');
                }
                let _gydctXAO = 0n;
                for (const _mCMjVJGN of _dRgotqxa) {
                    if (_mCMjVJGN._vSLCgYNM > 4) return 0n;
                    const _vfHUiPZP = BigInt('0x' + _mCMjVJGN);
                    _gydctXAO = (_gydctXAO << 16n) | _vfHUiPZP;
                }
                return _gydctXAO;
            } catch(_tvxkpUEP) {
                return 0n;
            }
        },
        fromBigInt6: (_gydctXAO) => {
            if (typeof _gydctXAO !== '_gydctXAO' || _gydctXAO < 0n) return null;
            const _iYBPaeVE = [];
            for (let _TrDDfKiX = 0; _TrDDfKiX < 8; _TrDDfKiX++) {
                _iYBPaeVE.unshift((_gydctXAO & 0xFFFFn).toString(16));
                _gydctXAO >>= 16n;
            }
            let _AlGZiPFh = { start: -1, _SQPfNbTH: 0 };
            let _UOXRTFlj = { start: -1, _SQPfNbTH: 0 };
            for (let _TrDDfKiX = 0; _TrDDfKiX < 8; _TrDDfKiX++) {
                if (_iYBPaeVE[_TrDDfKiX] === '0') {
                    if (_UOXRTFlj.start === -1) _UOXRTFlj.start = _TrDDfKiX;
                    _UOXRTFlj._SQPfNbTH++;
                } else {
                    if (_UOXRTFlj._SQPfNbTH > _AlGZiPFh._SQPfNbTH) _AlGZiPFh = { ..._UOXRTFlj };
                    _UOXRTFlj = { start: -1, _SQPfNbTH: 0 };
                }
            }
            if (_UOXRTFlj._SQPfNbTH > _AlGZiPFh._SQPfNbTH) _AlGZiPFh = { ..._UOXRTFlj };
            if (_AlGZiPFh._SQPfNbTH > 1) {
                _iYBPaeVE.splice(_AlGZiPFh.start, _AlGZiPFh._SQPfNbTH, '');
                if (_AlGZiPFh.start === 0) _iYBPaeVE.unshift('');
                if (_AlGZiPFh.start + _AlGZiPFh._SQPfNbTH === 8) _iYBPaeVE.push('');
            }
            return _iYBPaeVE.join(':');
        },
        cidrToRange: (cidr, _HlOzAPTr = 1) => {
            try {
                const [range, bitsStr] = cidr.split('/');
                const _wQPpmvlU = parseInt(bitsStr, 10);
                const _cGuuNugw = new Set();
                if (_DJQPqYAv.isIPv4(range)) {
                    if (isNaN(_wQPpmvlU) || _wQPpmvlU < 8 || _wQPpmvlU > 32) return [];
                    if (_wQPpmvlU === 32) return [range];
                    const _CzEDPIaw = _DJQPqYAv.toLong4(range);
                    const _bmloPzat = (0xFFFFFFFF << (32 - _wQPpmvlU)) >>> 0;
                    const _xzElaCDj = _CzEDPIaw & _bmloPzat;
                    const _lwPyXgTv = 1 << (32 - _wQPpmvlU);
                    if (_lwPyXgTv <= 2) return [];
                    const _PwPMFJTb = Math.min(_HlOzAPTr, _lwPyXgTv - 2);
                    let _CKFzdqIy = 0;
                    while (_cGuuNugw.size < _PwPMFJTb && _CKFzdqIy < _PwPMFJTb * 5) {
                        const _OBqZjFkV = Math.floor(Math.random() * (_lwPyXgTv - 2)) + 1;
                        _cGuuNugw.add(_DJQPqYAv.fromLong4((_xzElaCDj + _OBqZjFkV) >>> 0));
                        _CKFzdqIy++;
                    }
                    return Array.from(_cGuuNugw);
                } else if (_DJQPqYAv.isIPv6(range)) {
                    if (isNaN(_wQPpmvlU) || _wQPpmvlU < 16 || _wQPpmvlU > 128) return [];
                    if (_wQPpmvlU === 128) return [range];
                    const _hcochVSG = _DJQPqYAv.toBigInt6(range);
                    const _bmloPzat = (2n ** BigInt(128 - _wQPpmvlU) - 1n);
                    const _xzElaCDj = _hcochVSG & ~_bmloPzat;
                    const _jgMmBbMS = 2n ** BigInt(128 - _wQPpmvlU);
                    if (_jgMmBbMS <= 2n) return [];
                    let _CKFzdqIy = 0;
                    while (_cGuuNugw.size < _HlOzAPTr && _CKFzdqIy < _HlOzAPTr * 5) {
                        const _LWaYSrMg = new Uint8Array(16);
                        (typeof crypto !== 'undefined' ? crypto : self.crypto).getRandomValues(_LWaYSrMg);
                        let _nDdbSETd = 0n;
                        for (const _xQloXpxy of _LWaYSrMg) {
                            _nDdbSETd = (_nDdbSETd << 8n) | BigInt(_xQloXpxy);
                        }
                        const _OBqZjFkV = _nDdbSETd % (_jgMmBbMS - 2n) + 1n;
                        _cGuuNugw.add(_DJQPqYAv.fromBigInt6(_xzElaCDj + _OBqZjFkV));
                        _CKFzdqIy++;
                    }
                    return Array.from(_cGuuNugw);
                }
                return [];
            } catch(_tvxkpUEP) {
                console.error(`CIDR to range failed for ${cidr}:`, _tvxkpUEP);
                return [];
            }
        }
    };
    function _rtLicTrT(_SXaxEmEQ, _XeEFvDzB) {
        const _HgYSBEzZ = {};
        const _KIiFKmHv = Object._KIiFKmHv(_XeEFvDzB);
        const _iYBPaeVE = _KIiFKmHv.map(_cKnSaaNg => {
            const _ZZyLxUAt = _SXaxEmEQ * (_XeEFvDzB[_cKnSaaNg] / 100);
            return { _cKnSaaNg, _HlOzAPTr: Math.floor(_ZZyLxUAt), remainder: _ZZyLxUAt - Math.floor(_ZZyLxUAt) };
        });
        let _oQMIiJbv = _iYBPaeVE.reduce((acc, _mCMjVJGN) => acc + _mCMjVJGN._HlOzAPTr, 0);
        _iYBPaeVE.sort((a, b) => b.remainder - a.remainder);
        let _MsTaJPSX = _SXaxEmEQ - _oQMIiJbv;
        for (let _TrDDfKiX = 0; _TrDDfKiX < _MsTaJPSX; _TrDDfKiX++) {
            _iYBPaeVE[_TrDDfKiX % _iYBPaeVE._vSLCgYNM]._HlOzAPTr++;
        }
        for (const _mCMjVJGN of _iYBPaeVE) {
            _HgYSBEzZ[_mCMjVJGN._cKnSaaNg] = _mCMjVJGN._HlOzAPTr;
        }
        return _HgYSBEzZ;
    }
    const _yVhtlmSW = __PAGE_DATA_JSON__;
    const _jhiXiTmU = _yVhtlmSW._lAnBRGEp;
    const _oQcfbCpQ = _yVhtlmSW.status;
    const _jDgfKjqS = __ALL_CF_CIDR_LIST_JSON__;
    const _bSzCKWtV = __BALANCED_CF_CIDR_LIST_JSON__;
    const _fiSzgNcb = __DEFAULT_DOMAINS_LIST_JSON__;
    const _pjpIbaHz = __COUNTRY_MAP_JSON__;
    const _DSxtcYGd = _pjpIbaHz;
    const _wbHirJAJ = 2500;
    const _UEJcoNuE = navigator.hardwareConcurrency ? Math.min(16, navigator.hardwareConcurrency * 2) : 8;
    const _HGvnwOTi = document.getElementById('_HGvnwOTi');
    const _LvCvyfXe = document.getElementById('_LvCvyfXe');
    const _fubqKZba = document.getElementById('status');
    const _jkPYLDWU = document.getElementById('_jkPYLDWU');
    const _IEurJNpq = document.getElementById('resultsTable').querySelector('tbody');
    const _epodujHZ = document.getElementById('_epodujHZ');
    const _BbwMAwAX = document.getElementById('cachedResultsTable').querySelector('tbody');
    const _zDAxScUP = document.getElementById('notificationTooltip');
    const _zZniDKPa = document.getElementById('_zZniDKPa');
    const _BZAnTSqc = document.getElementById('_BZAnTSqc');
    const _LaSaskBu = document.getElementById('_LaSaskBu');
    const _zQngErzE = document.getElementById('_zQngErzE');
    const _slSKWVwQ = document.getElementById('_slSKWVwQ');
    const _DSHmiRzQ = document.getElementById('_DSHmiRzQ');
    const _rGmLpzsR = document.getElementById('_rGmLpzsR');
    let _bVgrUoGY = null;
    let _lyVnUDbl = null;
    let _caqBzTpd = [];
    let _VlnPNuFL = false;
    let _WkloHnIo = null;
    function _FkSaPDCz(_gQTYzXpj, _zvrChPNm) {
        const _UzQeKIUL=parseInt(_gQTYzXpj.slice(1),16),t=_zvrChPNm<0?0:255,p=_zvrChPNm<0?_zvrChPNm*-1:_zvrChPNm,R=_UzQeKIUL>>16,G=_UzQeKIUL>>8&0x00FF,B=_UzQeKIUL&0x0000FF;
        const _OmNtqjkL = Math.round((t-R)*p)+R;
        const _DASnBhaH = Math.round((t-G)*p)+G;
        const _shiEsDeB = Math.round((t-B)*p)+B;
        return `rgb(${_OmNtqjkL.toString()}, ${_DASnBhaH.toString()}, ${_shiEsDeB.toString()})`;
    }
    function _RPfsIWLA(_XmwlbCaC) {
        const _CDRkPwOo = _TsISCluu(_XmwlbCaC.primaryColor);
        if(_CDRkPwOo) {
            document.documentElement._jyuJTUML.setProperty('--primary-_UPmYnPHk-rgb', `${_CDRkPwOo.r},${_CDRkPwOo.g},${_CDRkPwOo.b}`);
        }
        document.documentElement._jyuJTUML.setProperty('--primary-_UPmYnPHk', _XmwlbCaC.primaryColor);
        document.documentElement._jyuJTUML.setProperty('--primary-hover', _FkSaPDCz(_XmwlbCaC.primaryColor, -0.1));
        document.documentElement._jyuJTUML.setProperty('--primary-gradient-start', _FkSaPDCz(_XmwlbCaC.primaryColor, 0.1));
        document.documentElement._jyuJTUML.setProperty('--primary-gradient-end', _FkSaPDCz(_XmwlbCaC.primaryColor, -0.1));
        document.getElementById('pageTitle').innerText = _XmwlbCaC.texts.title;
        document.title = _XmwlbCaC.texts.title;
        _zZniDKPa.innerText = _bVgrUoGY ? _XmwlbCaC.texts.loginButtonSuccess : _XmwlbCaC.texts.loginButton;
        _zZniDKPa._jyuJTUML._UPmYnPHk = _XmwlbCaC.colors.loginButton;
        document.getElementById('appDownloadTitleEl').innerText = _XmwlbCaC.texts.appDownloadTitle;
        document.getElementById('liveTitleEl').innerText = _XmwlbCaC.texts.liveTitle;
        document.getElementById('liveTitleEl')._jyuJTUML._UPmYnPHk = _XmwlbCaC.colors.liveTitle;
        document.getElementById('cachedTitleEl').innerText = _XmwlbCaC.texts.cachedTitle;
        document.getElementById('cachedTitleEl')._jyuJTUML._UPmYnPHk = _XmwlbCaC.colors.cachedTitle;
        const _HkeZcJzJ = ['tableHeader1El', 'tableHeader2El', 'tableHeader3El', 'tableHeader4El', 'tableHeader5El', 'tableHeader6El', 'tableHeader7El'];
        _HkeZcJzJ.forEach((_KcwRLXII, _BgxQXFxu) => {
            const _eSPDeRrX = document.getElementById(_KcwRLXII);
            if (_eSPDeRrX) _eSPDeRrX.innerText = _XmwlbCaC.texts[`tableHeader${_BgxQXFxu + 1}`] || '';
        });
        const _EtmTojyA = ['cachedTableHeader1El', 'cachedTableHeader2El', 'cachedTableHeader3El', 'cachedTableHeader4El', 'cachedTableHeader5El', 'cachedTableHeader6El', 'cachedTableHeader7El'];
        _EtmTojyA.forEach((_KcwRLXII, _BgxQXFxu) => {
             const _eSPDeRrX = document.getElementById(_KcwRLXII);
             if (_eSPDeRrX) _eSPDeRrX.innerText = _jhiXiTmU.texts[`tableHeader${_BgxQXFxu + 1}`] || '';
        });
        document.querySelectorAll('th').forEach(th => th._jyuJTUML._UPmYnPHk = _XmwlbCaC.colors.tableHeader);
        document._bFnmbIPb.className = '';
        document._bFnmbIPb.classList.add(_XmwlbCaC.theme);
        if (['theme-particles-glass', 'theme-modern-glass', 'theme-aurora-glass', 'theme-cyberpunk-glass'].includes(_XmwlbCaC.theme)) {
            document._bFnmbIPb.classList.add('glassy-components');
        }
        document._bFnmbIPb._jyuJTUML.backgroundImage = '';
        _qqXtEzjD();
        if (_XmwlbCaC.theme.includes('particles') || _XmwlbCaC.theme.includes('glass')) {
            _vbGPgKVW(_XmwlbCaC.particleColor);
        } else if (_XmwlbCaC.theme.includes('bing')) {
            document._bFnmbIPb._jyuJTUML.backgroundImage = '_gSrsDldw(/bing-wallpaper)';
        }
    }
    function _dXLMdFwu() {
        _bVgrUoGY = null;
        if(_lyVnUDbl) clearTimeout(_lyVnUDbl);
        _RPfsIWLA(_jhiXiTmU);
        _UZxSxUOA("登录已超时,请重新登录。", "warning");
    }
    async function _kYKfKqXw() {
        if (_bVgrUoGY) {
            _IpjnrVFS();
            return;
        }
        const _MZvjibov = prompt('请输入管理员密码:');
        if (!_MZvjibov) return;
        try {
            const _HYbHWpGu = await fetch('/api/verify-_PqupMHCI', {
                method: 'POST',
                _HkeZcJzJ: { 'Content-Type': 'application/json' },
                _bFnmbIPb: JSON.stringify({ _PqupMHCI: _MZvjibov })
            });
            const _OJpHCPHa = await _HYbHWpGu.json();
            if (_OJpHCPHa.success) {
                _bVgrUoGY = _MZvjibov;
                _UZxSxUOA("登录成功!有效期5分钟。", "success");
                if (_lyVnUDbl) clearTimeout(_lyVnUDbl);
                _lyVnUDbl = setTimeout(_dXLMdFwu, 5 * 60 * 1000);
                _RPfsIWLA(_jhiXiTmU);
                _IpjnrVFS();
            } else {
                throw new Error(_OJpHCPHa._wNfQiTXI || '密码验证失败');
            }
        } catch (_tvxkpUEP) {
            _UZxSxUOA(`登录失败: ${_tvxkpUEP._wNfQiTXI}`, "error");
        }
    }
    function _gcrYEcLa() {
        if (!_oQcfbCpQ._jEuvuKlZ) {
            _DSHmiRzQ._jyuJTUML.display = 'flex';
            document.getElementById('setInitialPasswordBtn').addEventListener('click', async () => {
                const _PqupMHCI = document.getElementById('initialPassword')._vfHUiPZP;
                const _vtCILLlp = document.getElementById('confirmPassword')._vfHUiPZP;
                if (_PqupMHCI !== _vtCILLlp) {
                    _UZxSxUOA("两次输入的密码不一致!", "error");
                    return;
                }
                if (_PqupMHCI._vSLCgYNM < 6) {
                    _UZxSxUOA("密码长度不能少于6位!", "error");
                    return;
                }
                try {
                    const _HYbHWpGu = await fetch('/api/_WQzLJkbN-_PqupMHCI', {
                        method: 'POST',
                        _HkeZcJzJ: { 'Content-Type': 'application/json' },
                        _bFnmbIPb: JSON.stringify({ _PqupMHCI })
                    });
                    const _OJpHCPHa = await _HYbHWpGu.json();
                    if (_OJpHCPHa.success) {
                        _UZxSxUOA(_OJpHCPHa._wNfQiTXI, "success");
                        setTimeout(() => _xwSkDwlX.reload(), 1500);
                    } else {
                        throw new Error(_OJpHCPHa._wNfQiTXI);
                    }
                } catch(_tvxkpUEP) {
                    _UZxSxUOA(`设置密码失败: ${_tvxkpUEP._wNfQiTXI}`, "error");
                }
            });
            return;
        }
        _zZniDKPa.addEventListener('click', _kYKfKqXw);
        document.getElementById('closeModalBtn').addEventListener('click', () => { _BZAnTSqc._jyuJTUML.display = 'none'; });
        _BZAnTSqc.addEventListener('click', (_tvxkpUEP) => { if (_tvxkpUEP.target === _BZAnTSqc) _BZAnTSqc._jyuJTUML.display = 'none'; });
        
        document.getElementById('enableAllSourcesCheckbox').addEventListener('change', function() {
            if (this.checked) {
                document.querySelectorAll('#fine-grained-sources-_WpmrSMiw .fine-grained-_JffIBwcN-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-_WpmrSMiw .fine-grained-_JffIBwcN-cb').forEach(cb => cb.checked = false);
                document.getElementById('enableAllSourcesCheckbox').checked = false;
                this.checked = false;
            }
        });

        document.getElementById('saveParamsBtn').addEventListener('click', async () => {
            if (!_bVgrUoGY) {
                _UZxSxUOA("请先通过点击右上角按钮输入密码。", "error");
                return;
            }
            const _ZRUAgYUp = [];
            document.querySelectorAll('#custom-fields-_WpmrSMiw .custom-field-_rGfAiOYn').forEach(_rGfAiOYn => {
                const _rYUhAXbq = _rGfAiOYn.querySelector('.custom-field-_rYUhAXbq')._vfHUiPZP.trim();
                const _vfHUiPZP = _rGfAiOYn.querySelector('.custom-field-_vfHUiPZP')._vfHUiPZP.trim();
                if (_rYUhAXbq) _ZRUAgYUp.push({ _rYUhAXbq, _vfHUiPZP });
            });
            const _WckUyFrt = [];
            document.querySelectorAll('#parameter-sets-_WpmrSMiw .parameter-_WQzLJkbN-_rGfAiOYn').forEach(_rGfAiOYn => {
                const _rYUhAXbq = _rGfAiOYn.querySelector('.param-_WQzLJkbN-_rYUhAXbq')._vfHUiPZP.trim();
                const _soWIZFcl = _rGfAiOYn.querySelector('.param-_WQzLJkbN-_soWIZFcl')._vfHUiPZP.trim();
                const _YOOTxeES = _rGfAiOYn.querySelector('.param-_WQzLJkbN-_YOOTxeES')._vfHUiPZP.trim();
                const _kzDNrvFw = _rGfAiOYn.querySelector('.param-_WQzLJkbN-_kzDNrvFw')._vfHUiPZP.trim();
                if(_rYUhAXbq) _WckUyFrt.push({ _rYUhAXbq, _soWIZFcl, '_YOOTxeES': _YOOTxeES, _kzDNrvFw });
            });
            const _uncjMNxA = [];
            document.querySelectorAll('#fine-grained-sources-_WpmrSMiw .fine-grained-_ftkDfMcd-_rGfAiOYn').forEach(_rGfAiOYn => {
                const _xwSkDwlX = _rGfAiOYn.querySelector('.fine-grained-_xwSkDwlX')._vfHUiPZP.trim();
                const _cGuuNugw = _rGfAiOYn.querySelector('.fine-grained-_cGuuNugw')._vfHUiPZP.trim();
                const _JffIBwcN = _rGfAiOYn.querySelector('.fine-grained-_JffIBwcN-cb').checked;
                const _dlSYyADM = parseInt(_rGfAiOYn.querySelector('.fine-grained-_dlSYyADM')._vfHUiPZP, 10) || 0;
                const _vLUhtugh = _rGfAiOYn.querySelector('.use-_rYUhAXbq-as-_xwSkDwlX-cb').checked;
                if (_xwSkDwlX && _cGuuNugw) {
                    _uncjMNxA.push({ _xwSkDwlX, _cGuuNugw, _JffIBwcN, _dlSYyADM, _vLUhtugh });
                }
            });
            
            let _xfvfaZWl = parseInt(document.getElementById('subscriptionIdLength')._vfHUiPZP, 10);
            if (isNaN(_xfvfaZWl) || _xfvfaZWl < 2) _xfvfaZWl = 2;
            if (_xfvfaZWl > 128) _xfvfaZWl = 128;

            const _tUYapgyR = {
                theme: document.getElementById('themeSelect')._vfHUiPZP,
                primaryColor: document.getElementById('primaryColorInput')._vfHUiPZP,
                particleColor: document.getElementById('particleColorInput')._vfHUiPZP,
                useResolvedDomains: document.getElementById('useResolvedDomainsCheckbox').checked,
                resolvedDomains: document.getElementById('resolvedDomainsInput')._vfHUiPZP,
                sampleSize: parseInt(document.getElementById('sampleSizeInput')._vfHUiPZP, 10) || 1000,
                topN: parseInt(document.getElementById('topNInput')._vfHUiPZP, 10) || 15,
                rttRandomMin: parseInt(document.getElementById('latencyRangeMinInput')._vfHUiPZP, 10) || 0,
                rttRandomMax: parseInt(document.getElementById('latencyRangeMaxInput')._vfHUiPZP, 10) || 0,
                _CAyXrAEB: document.getElementById('converterServiceUrlInput')._vfHUiPZP.trim(),
                subscriptionId: {
                    _vSLCgYNM: _xfvfaZWl,
                    _WjjQYTfR: document.getElementById('subscriptionIdCharset')._vfHUiPZP.trim()
                },
                api: {
                    _JffIBwcN: document.getElementById('enableApiCheckbox').checked,
                    _wNfQiTXI: document.getElementById('apiMessageInput')._vfHUiPZP || '维护中...',
                },
                ispFilter: { 
                    _JffIBwcN: document.getElementById('enableIspFilterCheckbox').checked 
                },
                geoLocation: {
                    retries: parseInt(document.getElementById('geoLocationRetriesInput')._vfHUiPZP, 10) || 0,
                    filterUnknown: document.getElementById('filterUnknownGeoCheckbox').checked
                },
                streamer: {
                    _JffIBwcN: document.getElementById('enableStreamerCheckbox').checked
                },
                websocketStreamer: {
                    _JffIBwcN: document.getElementById('enableWebsocketStreamerCheckbox').checked,
                    _gSrsDldw: document.getElementById('websocketStreamerUrlInput')._vfHUiPZP.trim()
                },
                visitorPassword: {
                    _JffIBwcN: document.getElementById('enableVisitorPasswordCheckbox').checked,
                    _PqupMHCI: document.getElementById('visitorPasswordInput')._vfHUiPZP.trim()
                },
                customSubPath: {
                    _JffIBwcN: document.getElementById('enableCustomSubPathCheckbox').checked,
                    _kzDNrvFw: document.getElementById('customSubPathInput')._vfHUiPZP.trim()
                },
                itemLink: {
                    _JffIBwcN: document.getElementById('enableItemLinkCheckbox').checked,
                    template: document.getElementById('itemLinkTemplateInput')._vfHUiPZP,
                    selectionMode: document.getElementById('parameterSelectionMode')._vfHUiPZP,
                    _WckUyFrt: _WckUyFrt,
                    _ZRUAgYUp: _ZRUAgYUp,
                },
                dataFeeds: {
                    universalFallbackAddress: document.getElementById('universalFallbackAddressInput')._vfHUiPZP.trim(),
                },
                announcement: {
                    popup: {
                        _JffIBwcN: document.getElementById('enablePopup').checked,
                        _qHDXNHKk: document.getElementById('announcementText')._vfHUiPZP,
                        _TFEowNel: parseInt(document.getElementById('popupDuration')._vfHUiPZP, 10) || 5
                    },
                    marquee: {
                        _JffIBwcN: document.getElementById('enableMarquee').checked,
                        _qHDXNHKk: document.getElementById('announcementText')._vfHUiPZP
                    }
                },
                fineGrained: {
                    _JffIBwcN: true,
                    sources: _uncjMNxA
                },
                customNodes: {
                    _JffIBwcN: document.getElementById('enableCustomNodesCheckbox').checked,
                    list: document.getElementById('customNodesInput')._vfHUiPZP
                },
                texts: {
                    title: document.getElementById('textInput_title')._vfHUiPZP,
                    loginButton: document.getElementById('textInput_loginButton')._vfHUiPZP,
                    loginButtonSuccess: '修改参数',
                    appDownloadTitle: document.getElementById('textInput_appDownloadTitle')._vfHUiPZP,
                    liveTitle: document.getElementById('textInput_liveTitle')._vfHUiPZP,
                    cachedTitle: document.getElementById('textInput_cachedTitle')._vfHUiPZP,
                },
                colors: {
                    title: document.getElementById('colorInput_title')._vfHUiPZP,
                    loginButton: document.getElementById('colorInput_loginButton')._vfHUiPZP,
                    liveTitle: document.getElementById('colorInput_liveTitle')._vfHUiPZP,
                    cachedTitle: document.getElementById('colorInput_cachedTitle')._vfHUiPZP,
                    tableHeader: document.getElementById('colorInput_tableHeader')._vfHUiPZP,
                },
                telegram: {
                    bot_token: document.getElementById('botTokenInput')._vfHUiPZP.trim(),
                    chat_id: document.getElementById('chatIdInput')._vfHUiPZP.trim(),
                },
            };
            try {
                const _HYbHWpGu = await fetch('/api/_lAnBRGEp', {
                    method: 'POST',
                    _HkeZcJzJ: { 'Content-Type': 'application/json' },
                    _bFnmbIPb: JSON.stringify({ _lAnBRGEp: _tUYapgyR, adminPassword: _bVgrUoGY })
                });
                const _OJpHCPHa = await _HYbHWpGu.json();
                if (_HYbHWpGu.ok && _OJpHCPHa.success) {
                    _UZxSxUOA("配置已保存,正在刷新...", "success");
                    setTimeout(() => _xwSkDwlX.reload(), 1500);
                } else {
                    throw new Error(_OJpHCPHa._wNfQiTXI || '未知错误');
                }
            } catch (_tvxkpUEP) {
                _UZxSxUOA(`操作失败: ${_tvxkpUEP._wNfQiTXI}`, "error");
                if (String(_tvxkpUEP._wNfQiTXI).includes("密码错误")) {
                    _dXLMdFwu();
                }
            }
        });
        document.getElementById('changePasswordBtn').addEventListener('click', async () => {
            const _ruIwrOZj = document.getElementById('oldPasswordInput')._vfHUiPZP;
            const _dwIOCuKg = document.getElementById('newPasswordInput')._vfHUiPZP;
            if (!_ruIwrOZj || !_dwIOCuKg) {
                _UZxSxUOA("新旧密码均不能为空!", "error");
                return;
            }
             try {
                const _HYbHWpGu = await fetch('/api/change-_PqupMHCI', {
                    method: 'POST',
                    _HkeZcJzJ: { 'Content-Type': 'application/json' },
                    _bFnmbIPb: JSON.stringify({ _ruIwrOZj, _dwIOCuKg })
                });
                const _OJpHCPHa = await _HYbHWpGu.json();
                if (_OJpHCPHa.success) {
                    _UZxSxUOA(_OJpHCPHa._wNfQiTXI, "success");
                    document.getElementById('oldPasswordInput')._vfHUiPZP = '';
                    document.getElementById('newPasswordInput')._vfHUiPZP = '';
                    _bVgrUoGY = _dwIOCuKg;
                } else {
                    throw new Error(_OJpHCPHa._wNfQiTXI);
                }
            } catch(_tvxkpUEP) {
                _UZxSxUOA(`修改密码失败: ${_tvxkpUEP._wNfQiTXI}`, "error");
            }
        });
        document.getElementById('useResolvedDomainsCheckbox').addEventListener('change', (_tvxkpUEP) => {
            document.getElementById('resolvedDomainsGroup')._jyuJTUML.display = _tvxkpUEP.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableCustomNodesCheckbox').addEventListener('change', (_tvxkpUEP) => {
            document.getElementById('customNodesGroup')._jyuJTUML.display = _tvxkpUEP.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableApiCheckbox').addEventListener('change', (_tvxkpUEP) => {
            document.getElementById('apiConfigGroup')._jyuJTUML.display = _tvxkpUEP.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableItemLinkCheckbox').addEventListener('change', (_tvxkpUEP) => {
            document.getElementById('itemLinkConfigGroup')._jyuJTUML.display = _tvxkpUEP.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableWebsocketStreamerCheckbox').addEventListener('change', (_tvxkpUEP) => {
            document.getElementById('websocketStreamerGroup')._jyuJTUML.display = _tvxkpUEP.target.checked ? 'block' : 'none';
            const _NCWJdEaU = document.querySelector('#parameter-sets-_WpmrSMiw .param-_WQzLJkbN-_kzDNrvFw');
            if (_NCWJdEaU) {
                if (_tvxkpUEP.target.checked) {
                    _NCWJdEaU._vfHUiPZP = '/snippets?_EOsXPwux=endpointAddress:_RdgdiFuv(443)&nat64=6to4';
                } else {
                    _NCWJdEaU._vfHUiPZP = '/?ed=2560';
                }
            }
        });
         document.getElementById('add-custom-field-btn').addEventListener('click', () => {
             _qGpMEJtu('', '');
        });
        document.getElementById('add-parameter-_WQzLJkbN-btn').addEventListener('click', () => {
            const _HlOzAPTr = document.querySelectorAll('.parameter-_WQzLJkbN-_rGfAiOYn')._vSLCgYNM + 1;
            _pZnfMNoq({_rYUhAXbq: `配置${_HlOzAPTr}`, _soWIZFcl: '', _YOOTxeES: '', _kzDNrvFw: ''});
            _JilNaUjc();
        });
         document.getElementById('add-fine-grained-_ftkDfMcd-btn').addEventListener('click', () => {
             _DqjaEyAc({ _xwSkDwlX: '', _cGuuNugw: '', _JffIBwcN: true, _dlSYyADM: 50, _vLUhtugh: false });
        });
        document.getElementById('enableVisitorPasswordCheckbox').addEventListener('change', (_tvxkpUEP) => {
            document.getElementById('visitorPasswordGroup')._jyuJTUML.display = _tvxkpUEP.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableCustomSubPathCheckbox').addEventListener('change', (_tvxkpUEP) => {
            document.getElementById('customSubPathGroup')._jyuJTUML.display = _tvxkpUEP.target.checked ? 'block' : 'none';
        });
        document.getElementById('enablePopup').addEventListener('change', (_tvxkpUEP) => {
            document.getElementById('popupDurationContainer')._jyuJTUML.display = _tvxkpUEP.target.checked ? 'flex' : 'none';
        });
    }
    function _qGpMEJtu(_rYUhAXbq, _vfHUiPZP) {
        const _WpmrSMiw = document.getElementById('custom-fields-_WpmrSMiw');
        const _tuRsjZlj = document.createElement('div');
        _tuRsjZlj.className = 'form-grid custom-field-_rGfAiOYn';
        _tuRsjZlj._jyuJTUML = 'grid-template-columns: 1fr 1fr auto; gap: 5px; margin-bottom: 5px;';
        _tuRsjZlj.innerHTML = `
            <input _Izqkumoo="_qHDXNHKk" class="custom-field-_rYUhAXbq" _umNOfeVt="占位符名称" _vfHUiPZP="${_rYUhAXbq}">
            <input _Izqkumoo="_qHDXNHKk" class="custom-field-_vfHUiPZP" _umNOfeVt="值" _vfHUiPZP="${_vfHUiPZP}">
            <button _Izqkumoo="button" class="btn btn-outline" onclick="this.closest('.form-grid').remove()">删除</button>
        `;
        _WpmrSMiw.appendChild(_tuRsjZlj);
    }
    function _pZnfMNoq(_WQzLJkbN) {
        const _WpmrSMiw = document.getElementById('parameter-sets-_WpmrSMiw');
        const _tuRsjZlj = document.createElement('div');
        _tuRsjZlj.className = 'parameter-_WQzLJkbN-_rGfAiOYn';
        _tuRsjZlj.innerHTML = `
            <div class="parameter-_WQzLJkbN-_AyHBrdnU">
                <input _Izqkumoo="_qHDXNHKk" class="param-_WQzLJkbN-_rYUhAXbq" _umNOfeVt="配置名称" _vfHUiPZP="${_WQzLJkbN._rYUhAXbq}" oninput="_JilNaUjc()">
                <button _Izqkumoo="button" class="btn btn-outline" onclick="this.closest('.parameter-_WQzLJkbN-_rGfAiOYn').remove(); _JilNaUjc();">删除</button>
            </div>
            <div class="form-grid">
                <div class="form-grid-label"><label>Host</label></div><div class="form-grid-control"><input _Izqkumoo="_qHDXNHKk" class="param-_WQzLJkbN-_soWIZFcl" _vfHUiPZP="${_WQzLJkbN._soWIZFcl || ''}"></div>
                <div class="form-grid-label"><label>ID</label></div><div class="form-grid-control"><input _Izqkumoo="_qHDXNHKk" class="param-_WQzLJkbN-_YOOTxeES" _vfHUiPZP="${_WQzLJkbN['_YOOTxeES'] || ''}"></div>
                <div class="form-grid-label"><label>Path</label></div><div class="form-grid-control"><input _Izqkumoo="_qHDXNHKk" class="param-_WQzLJkbN-_kzDNrvFw" _vfHUiPZP="${_WQzLJkbN._kzDNrvFw || ''}"></div>
            </div>
        `;
        _WpmrSMiw.appendChild(_tuRsjZlj);
    }
    function _JilNaUjc() {
        const _XSglUwgt = document.getElementById('parameterSelectionMode');
        const _dyKSlgVx = _XSglUwgt._vfHUiPZP;
        _XSglUwgt.innerHTML = '';
        const _colSjWjk = document.createElement('_jYEuaUmm');
        _colSjWjk._vfHUiPZP = 'random';
        _colSjWjk.textContent = '随机轮询';
        _XSglUwgt.appendChild(_colSjWjk);
        const _ORmkWTsK = document.createElement('_jYEuaUmm');
        _ORmkWTsK._vfHUiPZP = 'first';
        _ORmkWTsK.textContent = '使用第一组';
        _XSglUwgt.appendChild(_ORmkWTsK);
        document.querySelectorAll('.param-_WQzLJkbN-_rYUhAXbq').forEach(input => {
            const _rYUhAXbq = input._vfHUiPZP.trim();
            if (_rYUhAXbq) {
                const _jYEuaUmm = document.createElement('_jYEuaUmm');
                _jYEuaUmm._vfHUiPZP = _rYUhAXbq;
                _jYEuaUmm.textContent = `指定: ${_rYUhAXbq}`;
                _XSglUwgt.appendChild(_jYEuaUmm);
            }
        });
        if (Array.from(_XSglUwgt.options).some(opt => opt._vfHUiPZP === _dyKSlgVx)) {
            _XSglUwgt._vfHUiPZP = _dyKSlgVx;
        } else {
            _XSglUwgt._vfHUiPZP = 'random';
        }
    }
    function _DqjaEyAc(_ftkDfMcd) {
        const _WpmrSMiw = document.getElementById('fine-grained-sources-_WpmrSMiw');
        const _tuRsjZlj = document.createElement('div');
        _tuRsjZlj.className = 'fine-grained-_ftkDfMcd-_rGfAiOYn parameter-_WQzLJkbN-_rGfAiOYn';
        _tuRsjZlj._jyuJTUML.padding = '1rem';
        const _GLcFFzXq = _ftkDfMcd._vLUhtugh ? 'checked' : '';
        const _lUGlHdjJ = !_ftkDfMcd._vLUhtugh ? 'checked' : '';
        const _AzMjWhhz = _ftkDfMcd._JffIBwcN ? 'checked' : '';
        _tuRsjZlj.innerHTML = `
            <div _jyuJTUML="display: grid; grid-template-columns: 1fr auto auto; gap: 10px; align-items: center; margin-bottom: 1rem;">
                <input _Izqkumoo="_qHDXNHKk" class="fine-grained-_xwSkDwlX" _umNOfeVt="地区名称 (如: 香港)" _vfHUiPZP="${_ftkDfMcd._xwSkDwlX || ''}">
                <div _jyuJTUML="display: flex; align-items: center; gap: 5px;"><input _Izqkumoo="checkbox" class="fine-grained-_JffIBwcN-cb" ${_AzMjWhhz}><label>启用</label></div>
                <button _Izqkumoo="button" class="btn btn-outline" onclick="this.closest('.fine-grained-_ftkDfMcd-_rGfAiOYn').remove()">删除</button>
            </div>
            <textarea class="fine-grained-_cGuuNugw" _umNOfeVt="IP源 (每行一个IP、CIDR或URL)" _oLfVkNyW="3" _jyuJTUML="_oSATxBOi:100%;">${_ftkDfMcd._cGuuNugw || ''}</textarea>
            <div class="fine-grained-options" _jyuJTUML="justify-_jNIRkUUw: space-between;">
                <div _jyuJTUML="display: flex; gap: 1rem;">
                    <label><input _Izqkumoo="checkbox" class="query-_vZwwfXhN-cb" ${_lUGlHdjJ}>查询真实归属地</label>
                    <label><input _Izqkumoo="checkbox" class="use-_rYUhAXbq-as-_xwSkDwlX-cb" ${_GLcFFzXq}>使用地区名称作为归属地</label>
                </div>
                <div _jyuJTUML="display: flex; align-items: center; gap: 5px;"><input _Izqkumoo="number" class="fine-grained-_dlSYyADM _dlSYyADM-input" _vfHUiPZP="${_ftkDfMcd._dlSYyADM || 0}" min="0" max="100"><span>%</span></div>
            </div>
        `;
        const _OcVAArNi = _tuRsjZlj.querySelector('.query-_vZwwfXhN-cb');
        const _CYUgvlbQ = _tuRsjZlj.querySelector('.use-_rYUhAXbq-as-_xwSkDwlX-cb');
        _OcVAArNi.addEventListener('change', () => {
            if (_OcVAArNi.checked) {
                _CYUgvlbQ.checked = false;
            } else if (!_CYUgvlbQ.checked) {
                _OcVAArNi.checked = true;
            }
        });
        _CYUgvlbQ.addEventListener('change', () => {
            if (_CYUgvlbQ.checked) {
                _OcVAArNi.checked = false;
            } else if (!_CYUgvlbQ.checked) {
                _CYUgvlbQ.checked = true;
            }
        });
        _WpmrSMiw.appendChild(_tuRsjZlj);
    }
    function _IpjnrVFS() {
        const _XmwlbCaC = _jhiXiTmU;
        document.getElementById('themeSelect')._vfHUiPZP = _XmwlbCaC.theme;
        document.getElementById('primaryColorInput')._vfHUiPZP = _XmwlbCaC.primaryColor;
        document.getElementById('particleColorInput')._vfHUiPZP = _XmwlbCaC.particleColor;
        document.getElementById('useResolvedDomainsCheckbox').checked = _XmwlbCaC.useResolvedDomains;
        document.getElementById('resolvedDomainsInput')._umNOfeVt = '留空则使用内置默认域名';
        document.getElementById('resolvedDomainsInput')._vfHUiPZP = _XmwlbCaC.resolvedDomains || '';
        document.getElementById('resolvedDomainsGroup')._jyuJTUML.display = _XmwlbCaC.useResolvedDomains ? 'block' : 'none';
        document.getElementById('enableCustomNodesCheckbox').checked = _XmwlbCaC.customNodes._JffIBwcN;
        document.getElementById('customNodesInput')._vfHUiPZP = _XmwlbCaC.customNodes.list || '';
        document.getElementById('customNodesGroup')._jyuJTUML.display = _XmwlbCaC.customNodes._JffIBwcN ? 'block' : 'none';
        document.getElementById('converterServiceUrlInput')._vfHUiPZP = _XmwlbCaC._CAyXrAEB || '';
        document.getElementById('subscriptionIdLength')._vfHUiPZP = _XmwlbCaC.subscriptionId._vSLCgYNM;
        document.getElementById('subscriptionIdCharset')._vfHUiPZP = _XmwlbCaC.subscriptionId._WjjQYTfR;
        document.getElementById('enableItemLinkCheckbox').checked = _XmwlbCaC.itemLink._JffIBwcN;
        document.getElementById('itemLinkConfigGroup')._jyuJTUML.display = _XmwlbCaC.itemLink._JffIBwcN ? 'block' : 'none';
        document.getElementById('itemLinkTemplateInput')._vfHUiPZP = _XmwlbCaC.itemLink.template;
        const _kLjEVZxI = document.getElementById('parameter-sets-_WpmrSMiw');
        _kLjEVZxI.innerHTML = '';
        if (_XmwlbCaC.itemLink._WckUyFrt && Array.isArray(_XmwlbCaC.itemLink._WckUyFrt)) {
            _XmwlbCaC.itemLink._WckUyFrt.forEach(_WQzLJkbN => _pZnfMNoq(_WQzLJkbN));
        }
        _JilNaUjc();
        document.getElementById('parameterSelectionMode')._vfHUiPZP = _XmwlbCaC.itemLink.selectionMode || 'random';
        const _NCWJdEaU = document.querySelector('#parameter-sets-_WpmrSMiw .param-_WQzLJkbN-_kzDNrvFw');
        if (_NCWJdEaU && _XmwlbCaC.websocketStreamer && _XmwlbCaC.websocketStreamer._JffIBwcN) {
            _NCWJdEaU._vfHUiPZP = '/snippets?_EOsXPwux=endpointAddress:_RdgdiFuv(443)&nat64=6to4';
        }
        const _lEkfjQcQ = document.getElementById('custom-fields-_WpmrSMiw');
        _lEkfjQcQ.innerHTML = '';
        if (_XmwlbCaC.itemLink._ZRUAgYUp && Array.isArray(_XmwlbCaC.itemLink._ZRUAgYUp)) {
            _XmwlbCaC.itemLink._ZRUAgYUp.forEach(field => _qGpMEJtu(field._rYUhAXbq, field._vfHUiPZP));
        }
        document.getElementById('universalFallbackAddressInput')._vfHUiPZP = _XmwlbCaC.dataFeeds.universalFallbackAddress || '';
        const _JJeirpea = _XmwlbCaC.websocketStreamer && _XmwlbCaC.websocketStreamer._JffIBwcN;
        document.getElementById('enableWebsocketStreamerCheckbox').checked = _JJeirpea;
        document.getElementById('websocketStreamerUrlInput')._vfHUiPZP = _XmwlbCaC.websocketStreamer ? _XmwlbCaC.websocketStreamer._gSrsDldw : 'https://snippets.neib.cn';
        document.getElementById('websocketStreamerGroup')._jyuJTUML.display = _JJeirpea ? 'block' : 'none';
        const _pssUJscT = _XmwlbCaC.announcement || {};
        document.getElementById('announcementText')._vfHUiPZP = (_pssUJscT.popup && _pssUJscT.popup._qHDXNHKk) || (_pssUJscT.marquee && _pssUJscT.marquee._qHDXNHKk) || '';
        document.getElementById('enableMarquee').checked = _pssUJscT.marquee && _pssUJscT.marquee._JffIBwcN;
        document.getElementById('enablePopup').checked = _pssUJscT.popup && _pssUJscT.popup._JffIBwcN;
        document.getElementById('popupDuration')._vfHUiPZP = (_pssUJscT.popup && _pssUJscT.popup._TFEowNel) || 5;
        document.getElementById('popupDurationContainer')._jyuJTUML.display = (_pssUJscT.popup && _pssUJscT.popup._JffIBwcN) ? 'flex' : 'none';
        const _zScHeVXp = document.getElementById('fine-grained-sources-_WpmrSMiw');
        _zScHeVXp.innerHTML = '';
        if (_XmwlbCaC.fineGrained.sources && Array.isArray(_XmwlbCaC.fineGrained.sources)) {
            _XmwlbCaC.fineGrained.sources.forEach(_ftkDfMcd => _DqjaEyAc(_ftkDfMcd));
        }
        document.getElementById('sampleSizeInput')._vfHUiPZP = _XmwlbCaC.sampleSize;
        document.getElementById('topNInput')._vfHUiPZP = _XmwlbCaC.topN;
        document.getElementById('latencyRangeMinInput')._vfHUiPZP = _XmwlbCaC.rttRandomMin;
        document.getElementById('latencyRangeMaxInput')._vfHUiPZP = _XmwlbCaC.rttRandomMax;
        document.getElementById('enableIspFilterCheckbox').checked = _XmwlbCaC.ispFilter._JffIBwcN;
        const _zFiSztVL = _XmwlbCaC.geoLocation || { retries: 1, filterUnknown: false };
        document.getElementById('geoLocationRetriesInput')._vfHUiPZP = _zFiSztVL.retries;
        document.getElementById('filterUnknownGeoCheckbox').checked = _zFiSztVL.filterUnknown;
        document.getElementById('enableStreamerCheckbox').checked = _XmwlbCaC.streamer._JffIBwcN;
        document.getElementById('enableApiCheckbox').checked = _XmwlbCaC.api._JffIBwcN;
        document.getElementById('apiConfigGroup')._jyuJTUML.display = _XmwlbCaC.api._JffIBwcN ? 'block' : 'none';
        document.getElementById('apiMessageInput')._vfHUiPZP = _XmwlbCaC.api._wNfQiTXI;
        const _bBNaAYvJ = _XmwlbCaC.customSubPath && _XmwlbCaC.customSubPath._JffIBwcN;
        document.getElementById('enableCustomSubPathCheckbox').checked = _bBNaAYvJ;
        document.getElementById('customSubPathInput')._vfHUiPZP = _XmwlbCaC.customSubPath ? _XmwlbCaC.customSubPath._kzDNrvFw : 'latest';
        document.getElementById('customSubPathGroup')._jyuJTUML.display = _bBNaAYvJ ? 'block' : 'none';
        const _HCLSgPGL = _XmwlbCaC.visitorPassword && _XmwlbCaC.visitorPassword._JffIBwcN;
        document.getElementById('enableVisitorPasswordCheckbox').checked = _HCLSgPGL;
        document.getElementById('visitorPasswordInput')._vfHUiPZP = _XmwlbCaC.visitorPassword ? _XmwlbCaC.visitorPassword._PqupMHCI : '';
        document.getElementById('visitorPasswordGroup')._jyuJTUML.display = _HCLSgPGL ? 'block' : 'none';
        document.getElementById('textInput_title')._vfHUiPZP = _XmwlbCaC.texts.title;
        document.getElementById('textInput_loginButton')._vfHUiPZP = _XmwlbCaC.texts.loginButton;
        document.getElementById('textInput_appDownloadTitle')._vfHUiPZP = _XmwlbCaC.texts.appDownloadTitle;
        document.getElementById('textInput_liveTitle')._vfHUiPZP = _XmwlbCaC.texts.liveTitle;
        document.getElementById('textInput_cachedTitle')._vfHUiPZP = _XmwlbCaC.texts.cachedTitle;
        document.getElementById('colorInput_title')._vfHUiPZP = _XmwlbCaC.colors.title;
        document.getElementById('colorInput_loginButton')._vfHUiPZP = _XmwlbCaC.colors.loginButton;
        document.getElementById('colorInput_liveTitle')._vfHUiPZP = _XmwlbCaC.colors.liveTitle;
        document.getElementById('colorInput_cachedTitle')._vfHUiPZP = _XmwlbCaC.colors.cachedTitle;
        document.getElementById('colorInput_tableHeader')._vfHUiPZP = _XmwlbCaC.colors.tableHeader;
        document.getElementById('botTokenInput')._vfHUiPZP = _XmwlbCaC.telegram.bot_token || '';
        document.getElementById('chatIdInput')._vfHUiPZP = _XmwlbCaC.telegram.chat_id || '';
        _BZAnTSqc._jyuJTUML.display = 'flex';
    }
    function _CEvMktBX(_IKQzxsDZ) {
        if (window.innerWidth <= 768) {
            const _oLfVkNyW = _IKQzxsDZ.querySelectorAll('thead tr, tbody tr');
            _oLfVkNyW.forEach(_rGfAiOYn => {
                const _hZAzMvLg = Array.from(_rGfAiOYn.children);
                const _qXHuQXXt = [
                    _hZAzMvLg[0],
                    _hZAzMvLg[1],
                    _hZAzMvLg[3],
                    _hZAzMvLg[6],
                    _hZAzMvLg[2],
                    _hZAzMvLg[4],
                    _hZAzMvLg[5]
                ];
                _qXHuQXXt.forEach(cell => _rGfAiOYn.appendChild(cell));
            });
        }
    }
    async function _ZEGewrTU() {
        if (!_oQcfbCpQ._jEuvuKlZ) {
            _gcrYEcLa();
            return;
        }
        if (_jhiXiTmU.announcement && _jhiXiTmU.announcement.marquee && _jhiXiTmU.announcement.marquee._JffIBwcN && _jhiXiTmU.announcement.marquee._qHDXNHKk) {
            const _OhIMmzoJ = document.getElementById('marquee-_WpmrSMiw');
            const _QShwczRP = document.getElementById('marquee-_qHDXNHKk');
            const _uoGrVdnK = document.querySelector('.progress-section');
            if (_OhIMmzoJ && _QShwczRP && _uoGrVdnK) {
                _QShwczRP.innerText = _jhiXiTmU.announcement.marquee._qHDXNHKk;
                _OhIMmzoJ._jyuJTUML.display = 'block';
                const _TEaTCrhz = () => {
                    _OhIMmzoJ._jyuJTUML._oSATxBOi = `${_uoGrVdnK.offsetWidth}px`;
                    const _zMDfyyWd = _QShwczRP.offsetWidth;
                    const _bUPqYNEs = _OhIMmzoJ.offsetWidth;
                    const _TFEowNel = (_zMDfyyWd + _bUPqYNEs) / 100;
                    _QShwczRP._jyuJTUML.animationDuration = `${Math.max(10, _TFEowNel)}s`;
                };
                _TEaTCrhz();
                window.addEventListener('resize', _TEaTCrhz);
            }
        }
        
        _RPfsIWLA(_jhiXiTmU);
        
        if (_jhiXiTmU.announcement && _jhiXiTmU.announcement.popup && _jhiXiTmU.announcement.popup._JffIBwcN && _jhiXiTmU.announcement.popup._qHDXNHKk) {
            setTimeout(() => {
                _UZxSxUOA(_jhiXiTmU.announcement.popup._qHDXNHKk, 'info', _jhiXiTmU.announcement.popup._TFEowNel * 1000);
            }, 500);
        }
        _gcrYEcLa();
        _hvzUDsjy();
        _EwBnpREo();
        _YYlNylGt();
        await _LAJOwyTs();
        document.getElementById('copyIpApiBtn').addEventListener('click', () => {
            const _rHADDCzi = window._xwSkDwlX.origin + '/_EOsXPwux';
            navigator.clipboard.writeText(_rHADDCzi).then(() => {
                _UZxSxUOA('IP 列表 API 地址已复制!', 'success');
            });
        });
        if (_jhiXiTmU.visitorPassword && _jhiXiTmU.visitorPassword._JffIBwcN) {
            _HGvnwOTi._jyuJTUML.display = 'none';
            const _dvXlmNKG = document.getElementById('visitorPasswordPrompt');
            _dvXlmNKG._jyuJTUML.display = 'block';
            const _iLUutCDv = document.getElementById('visitorPasswordEntry');
            const _wiCdpHTn = document.getElementById('startTestWithPasswordBtn');
            const _PjESGimj = async () => {
                const _PqupMHCI = _iLUutCDv._vfHUiPZP;
                if (!_PqupMHCI) {
                    _UZxSxUOA('请输入访客密码', 'warning');
                    return;
                }
                try {
                    const _HYbHWpGu = await fetch('/api/verify-visitor-_PqupMHCI', {
                        method: 'POST',
                        _HkeZcJzJ: { 'Content-Type': 'application/json' },
                        _bFnmbIPb: JSON.stringify({ _PqupMHCI })
                    });
                    const _OJpHCPHa = await _HYbHWpGu.json();
                    if (_HYbHWpGu.ok && _OJpHCPHa.success) {
                        _UZxSxUOA('验证成功,开始测试...', 'success');
                        _dvXlmNKG._jyuJTUML.display = 'none';
                        _HGvnwOTi._jyuJTUML.display = 'block';
                        await _kKTjuzJe();
                    } else {
                        throw new Error(_OJpHCPHa._wNfQiTXI || '密码错误');
                    }
                } catch (_tvxkpUEP) {
                    _UZxSxUOA(`验证失败: ${_tvxkpUEP._wNfQiTXI}`, "error");
                    _iLUutCDv._vfHUiPZP = '';
                    _iLUutCDv.focus();
                }
            };
            _wiCdpHTn.addEventListener('click', _PjESGimj);
            _iLUutCDv.addEventListener('keypress', (_tvxkpUEP) => {
                if (_tvxkpUEP._cKnSaaNg === 'Enter') {
                    _tvxkpUEP.preventDefault();
                    _PjESGimj();
                }
            });
            _iLUutCDv.focus();
        } else {
            _fubqKZba.textContent = "页面加载完成,准备开始测试...";
            await _NRxAMRVD(100);
            await _kKTjuzJe();
        }
    }
    async function _NRxAMRVD(ms = 0) { await new Promise(resolve => setTimeout(resolve, ms)); }
    function _TsISCluu(_gQTYzXpj) {
      let _OJpHCPHa = /^#?([a-_UzQeKIUL\d]{2})([a-_UzQeKIUL\d]{2})([a-_UzQeKIUL\d]{2})$/_TrDDfKiX.exec(_gQTYzXpj);
      return _OJpHCPHa ? { r: parseInt(_OJpHCPHa[1], 16), g: parseInt(_OJpHCPHa[2], 16), b: parseInt(_OJpHCPHa[3], 16) } : null;
    }
    async function _UjzahLei(_EOsXPwux) {
        const _wDzGcrGK = new AbortController();
        const _KbItnzAO = setTimeout(() => _wDzGcrGK.abort(), _wbHirJAJ);
        const _TcBiMKyB = Date.now();
        try {
            const _gNzZXQTY = _DJQPqYAv.isIPv6(_EOsXPwux) ? `[${_EOsXPwux}]` : _EOsXPwux;
            const _gSrsDldw = `https://${_gNzZXQTY}/cdn-cgi/trace`;
            await fetch(_gSrsDldw, {
                signal: _wDzGcrGK.signal,
                mode: 'no-cors',
                cache: 'no-store'
            });
        } catch (error) {
            if (error._rYUhAXbq === 'AbortError') {
                return { _EOsXPwux, _KLlMtPUR: Infinity, error: '超时' };
            }
        } finally {
            clearTimeout(_KbItnzAO);
        }
        const _KLlMtPUR = Date.now() - _TcBiMKyB;
        return { _EOsXPwux, _KLlMtPUR: _KLlMtPUR, error: null };
    }
    function _tbHEYiuo(_OJpHCPHa, _BgxQXFxu) {
        const { itemLink } = _jhiXiTmU;
        if (!itemLink || !itemLink._JffIBwcN) return null;
        const { template, _WckUyFrt, selectionMode, _ZRUAgYUp } = itemLink;
        if (!_WckUyFrt || _WckUyFrt._vSLCgYNM === 0) return null;
        let _VvZIVCkI;
        if (selectionMode === 'random') {
            _VvZIVCkI = _WckUyFrt[_BgxQXFxu % _WckUyFrt._vSLCgYNM];
        } else if (selectionMode === 'first') {
            _VvZIVCkI = _WckUyFrt[0];
        } else {
            _VvZIVCkI = _WckUyFrt.find(s => s._rYUhAXbq === selectionMode) || _WckUyFrt[0];
        }
        if (!_VvZIVCkI) return null;
        let _KgiQvKIf = template;
        const _BPhznjwy = _OJpHCPHa._RdgdiFuv || 443;
        const _PXNHNEwn = _DJQPqYAv.isIPv6(_OJpHCPHa._EOsXPwux) ? `[${_OJpHCPHa._EOsXPwux}]` : _OJpHCPHa._EOsXPwux;
        let _rYUhAXbq = `${_BgxQXFxu + 1} 、 ${_OJpHCPHa._xwSkDwlX || '未知'}`;
        if (!_OJpHCPHa._ZuBLKFCL || !_OJpHCPHa._ZuBLKFCL.toLowerCase().includes('cloudflare')) {
            _rYUhAXbq += '(反代)';
        }
        let _soWIZFcl = _VvZIVCkI._soWIZFcl || window._xwSkDwlX._dRmvkNRB;
        _KgiQvKIf = _KgiQvKIf.replace(/{_EOsXPwux}/g, _PXNHNEwn)
                   .replace(/{_RdgdiFuv}/g, _BPhznjwy)
                   .replace(/{_rYUhAXbq}/g, encodeURIComponent(_rYUhAXbq))
                   .replace(/{rank}/g, _BgxQXFxu + 1)
                   .replace(/{_xwSkDwlX}/g, encodeURIComponent(_OJpHCPHa._xwSkDwlX || '未知'))
                   .replace(/{_ZuBLKFCL}/g, encodeURIComponent(_OJpHCPHa._ZuBLKFCL || '未知'))
                   .replace(/{_soWIZFcl}/g, encodeURIComponent(_soWIZFcl))
                   .replace(/{_YOOTxeES}/g, encodeURIComponent(_VvZIVCkI['_YOOTxeES'] || ''))
                   .replace(/{_kzDNrvFw}/g, encodeURIComponent(encodeURIComponent(_VvZIVCkI._kzDNrvFw || '')));
       if (_ZRUAgYUp) {
        _ZRUAgYUp.forEach(field => {
            const _umNOfeVt = new RegExp('{' + field._rYUhAXbq + '}', 'g');
            _KgiQvKIf = _KgiQvKIf.replace(_umNOfeVt, encodeURIComponent(field._vfHUiPZP));
        });
    }
    return _KgiQvKIf;
    }
    function _gNrRoxcl(_aoBtofgp, _PWBXwwRn, isCached = false) {
        _PWBXwwRn.innerHTML = '';
        const _YyMJpvZO = _aoBtofgp._YyMJpvZO || [];
        const _jEGvOkWd = _aoBtofgp.generatedBy || null;
        const _ePZsTUqE = isCached ? _epodujHZ : _jkPYLDWU;
        const _IJiHmupi = isCached ? (_epodujHZ.querySelector('.generator-info')) : (_jkPYLDWU.querySelector('.generator-info'));
        if (_YyMJpvZO._vSLCgYNM === 0) {
            _ePZsTUqE._jyuJTUML.display = 'none';
            if (!isCached) _rGmLpzsR._jyuJTUML.display = 'none';
            if (_IJiHmupi) _IJiHmupi.textContent = '';
            return;
        }
        _ePZsTUqE._jyuJTUML.display = 'block';
        if (!isCached && _YyMJpvZO._vSLCgYNM > 0) {
             _rGmLpzsR._jyuJTUML.display = 'block';
        }
        if (_IJiHmupi && _jEGvOkWd) {
            _IJiHmupi.innerHTML = `数据来源 ${_jEGvOkWd._EOsXPwux} (${_jEGvOkWd._xwSkDwlX}) <span>${_jEGvOkWd.time}</span>`;
        }
        
        _YyMJpvZO.forEach((_OJpHCPHa, _BgxQXFxu) => {
            const _BPhznjwy = _OJpHCPHa._RdgdiFuv || 443;
            const _rGfAiOYn = _PWBXwwRn.insertRow();
            _rGfAiOYn.insertCell().textContent = _BgxQXFxu + 1;
            const _PHHpBQHr = _rGfAiOYn.insertCell();
            _PHHpBQHr.textContent = _OJpHCPHa._EOsXPwux;
            _PHHpBQHr.className = '_EOsXPwux-_ajLeFkRC';
            _rGfAiOYn.insertCell().textContent = _BPhznjwy;
            const _UoMskftS = _rGfAiOYn.insertCell();
            _UoMskftS.textContent = (_OJpHCPHa._KLlMtPUR === Infinity) ? (_OJpHCPHa.error || '错误') : _OJpHCPHa._KLlMtPUR;
            _UoMskftS.className = 'ping-_vfHUiPZP';
            _rGfAiOYn.insertCell().textContent = _OJpHCPHa._xwSkDwlX || '未知';
            _rGfAiOYn.insertCell().textContent = _OJpHCPHa._ZuBLKFCL || '未知';
            const _PHAGeMCD = _rGfAiOYn.insertCell();
            _PHAGeMCD.className = 'actions-cell';
            const _hAeaLHqP = document.createElement('button');
            _hAeaLHqP.textContent = '复制IP';
            _hAeaLHqP.className = 'btn btn-outline';
            _hAeaLHqP.onclick = () => { navigator.clipboard.writeText(_OJpHCPHa._EOsXPwux).then(() => _UZxSxUOA('IP复制成功!', 'success')); };
            if (_jhiXiTmU.itemLink && _jhiXiTmU.itemLink._JffIBwcN) {
                const _LinnLjcp = document.createElement('button');
                _LinnLjcp.textContent = '复制节点';
                _LinnLjcp.className = 'btn btn-outline';
                _LinnLjcp.onclick = () => {
                    const _KgiQvKIf = _tbHEYiuo(_OJpHCPHa, _BgxQXFxu);
                    if (_KgiQvKIf) {
                       navigator.clipboard.writeText(_KgiQvKIf).then(() => _UZxSxUOA('订阅链接复制成功!', 'success'));
                    }
                };
                _PHAGeMCD.appendChild(_LinnLjcp);
            }
            _PHAGeMCD.appendChild(_hAeaLHqP);
        });
        _CEvMktBX(_PWBXwwRn.parentElement);
    }
    async function _WuhECrWK(_OPIUYFPa) {
        const _vTUNBTcO = (_OPIUYFPa || '').trim().split(/\s+|\n+/).filter(Boolean);
        const _UNzJnkEp = [];
        const _fOTVDunQ = [];
        const _OzUxKJWa = (str) => {
            try {
                const _gSrsDldw = new URL(str);
                return _gSrsDldw.protocol === "http:" || _gSrsDldw.protocol === "https:";
            } catch (_) {
                return false;
            }
        };
        for (const _TEOgaNBF of _vTUNBTcO) {
            if (_OzUxKJWa(_TEOgaNBF)) {
                _UNzJnkEp.push(_TEOgaNBF);
            } else {
                _fOTVDunQ.push(_TEOgaNBF);
            }
        }
        let _kmLMUaHt = [];
        if (_UNzJnkEp._vSLCgYNM > 0) {
            try {
                const _HYbHWpGu = await fetch('/api/parse-_cGuuNugw-from-_UNzJnkEp', {
                    method: 'POST',
                    _HkeZcJzJ: { 'Content-Type': 'application/json' },
                    _bFnmbIPb: JSON.stringify({ _UNzJnkEp })
                });
                if (_HYbHWpGu.ok) {
                    const _aoBtofgp = await _HYbHWpGu.json();
                    _kmLMUaHt = _aoBtofgp._cGuuNugw || [];
                } else {
                    console.error('Failed to fetch IPs from URLs:', await _HYbHWpGu._qHDXNHKk());
                    _UZxSxUOA('从URL获取IP失败', 'error');
                }
            } catch (_tvxkpUEP) {
                console.error('Error fetching IPs from URLs:', _tvxkpUEP);
                _UZxSxUOA(`从URL获取IP失败: ${_tvxkpUEP._wNfQiTXI}`, 'error');
            }
        }
        return [..._fOTVDunQ, ..._kmLMUaHt];
    }
    async function _kKTjuzJe() {
        _VlnPNuFL = false;
        _caqBzTpd = [];
        _WkloHnIo = null;
        _rGmLpzsR._jyuJTUML.display = 'none';
        _fubqKZba.textContent = '准备IP源...';
        _LvCvyfXe._vfHUiPZP = 0;
        _jkPYLDWU._jyuJTUML.display = 'none';
        await _NRxAMRVD();
        const _ncqTGwwW = new Map();
        let _fmARKgpq = [];
        const _IEEgMOHt = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/\d{1,2}$|^([0-9a-fA-F:]+)\/\d{1,3}$/;
        if (_jhiXiTmU.useResolvedDomains) {
            _fubqKZba.textContent = '正在从域名解析IP...';
            const _KYOjEMnR = (_jhiXiTmU.resolvedDomains || '').trim();
            const _DZuOzzOp = _KYOjEMnR ? _KYOjEMnR.split(/\s+|\n+/) : _fiSzgNcb;
            try {
                const [ipv4Response, ipv6Response] = await Promise.all([
                    fetch('/api/get-resolved-_cGuuNugw', { method: 'POST', _HkeZcJzJ: { 'Content-Type': 'application/json' }, _bFnmbIPb: JSON.stringify({ _DZuOzzOp, _Izqkumoo: 'A' }) }),
                    fetch('/api/get-resolved-_cGuuNugw', { method: 'POST', _HkeZcJzJ: { 'Content-Type': 'application/json' }, _bFnmbIPb: JSON.stringify({ _DZuOzzOp, _Izqkumoo: 'AAAA' }) })
                ]);
                let _oVHeEVfy = [];
                if (ipv4Response.ok) _oVHeEVfy.push(...(await ipv4Response._qHDXNHKk()).split(/\s+|\n+/));
                if (ipv6Response.ok) _oVHeEVfy.push(...(await ipv6Response._qHDXNHKk()).split(/\s+|\n+/));
                _fmARKgpq.push(..._oVHeEVfy.filter(_EOsXPwux => _EOsXPwux.trim()).map(_EOsXPwux => ({ _EOsXPwux, _RdgdiFuv: null, sourceName: 'resolved' })));
            } catch (_tvxkpUEP) {
                _UZxSxUOA(`域名解析失败: ${_tvxkpUEP._wNfQiTXI}`, 'error');
            }
        }
        const _pEYoLPwk = (_jhiXiTmU.fineGrained.sources || []).filter(s => s._JffIBwcN);
        if (_pEYoLPwk._vSLCgYNM > 0) {
            const _bwQVvVFS = {};
            let _eSzBrtnu = 0;
            _pEYoLPwk.forEach(s => {
                const _QNFJgBbd = Number(s._dlSYyADM) || 0;
                _bwQVvVFS[s._xwSkDwlX] = _QNFJgBbd;
                _eSzBrtnu += _QNFJgBbd;
            });
            if (_eSzBrtnu > 0) {
                Object._KIiFKmHv(_bwQVvVFS).forEach(k => {
                    _bwQVvVFS[k] = (_bwQVvVFS[k] / _eSzBrtnu) * 100;
                });
            } else {
                _pEYoLPwk.forEach(s => _bwQVvVFS[s._xwSkDwlX] = 100 / _pEYoLPwk._vSLCgYNM);
            }
            const _KgPZEpfJ = _rtLicTrT(_jhiXiTmU.sampleSize, _bwQVvVFS);
            for (const _ftkDfMcd of _pEYoLPwk) {
                const _HlOzAPTr = _KgPZEpfJ[_ftkDfMcd._xwSkDwlX];
                if (!_HlOzAPTr) continue;
                _fubqKZba.textContent = `正在处理 [ ${_ftkDfMcd._xwSkDwlX} ] 源...`;
                const _zWSCFuil = await _WuhECrWK(_ftkDfMcd._cGuuNugw);
                if (_ftkDfMcd._vLUhtugh) {
                    _zWSCFuil.forEach(_TEOgaNBF => _ncqTGwwW._WQzLJkbN(_TEOgaNBF, _ftkDfMcd._xwSkDwlX));
                }
                let _ajGQsVJp = [];
                const _exPNUfzP = Math.ceil(_HlOzAPTr / (_zWSCFuil._vSLCgYNM || 1)) || 1;
                for (const _TEOgaNBF of _zWSCFuil) {
                    if (_IEEgMOHt.test(_TEOgaNBF)) {
                        const _UuMlDGhg = _DJQPqYAv.cidrToRange(_TEOgaNBF, _exPNUfzP);
                        if (_ncqTGwwW.has(_TEOgaNBF)) {
                           _UuMlDGhg.forEach(_EOsXPwux => _ncqTGwwW._WQzLJkbN(_EOsXPwux, _ncqTGwwW.get(_TEOgaNBF)));
                        }
                        _ajGQsVJp.push(..._UuMlDGhg.map(_EOsXPwux => ({ _EOsXPwux, _RdgdiFuv: null })));
                    } else {
                        const _iYxTOzub = _TEOgaNBF.lastIndexOf(':');
                        let _EOsXPwux = _TEOgaNBF;
                        let _RdgdiFuv = null;

                        if (_iYxTOzub > _TEOgaNBF.lastIndexOf(']')) {
                            const _lqmJuixe = _TEOgaNBF.substring(_iYxTOzub + 1);
                            if (!isNaN(_lqmJuixe) && _lqmJuixe._vSLCgYNM > 0) {
                                _EOsXPwux = _TEOgaNBF.substring(0, _iYxTOzub);
                                _RdgdiFuv = _lqmJuixe;
                            }
                        }
                        
                        if (_DJQPqYAv.isValid(_EOsXPwux.replace(/[\[\]]/g, ''))) {
                             _ajGQsVJp.push({ _EOsXPwux: _EOsXPwux.replace(/[\[\]]/g, ''), _RdgdiFuv });
                        }
                    }
                }
                let _ABNTwLvG = _ajGQsVJp.filter((v,_TrDDfKiX,a)=>a.findIndex(t=>(t._EOsXPwux === v._EOsXPwux && t._RdgdiFuv === v._RdgdiFuv))===_TrDDfKiX);
                _ABNTwLvG.sort(() => 0.5 - Math.random());
                _fmARKgpq.push(..._ABNTwLvG.slice(0, _HlOzAPTr).map(_LtHywNdV => ({ ..._LtHywNdV, sourceName: `fineGrained-${_ftkDfMcd._xwSkDwlX}` })));
            }
        }
        if (_fmARKgpq._vSLCgYNM === 0) {
            _fubqKZba.textContent = '无法从选定源生成可测试的IP地址。';
            return;
        }
        _fubqKZba.textContent = `开始测试 ${_fmARKgpq._vSLCgYNM} 个IP地址...`;
        _LvCvyfXe.max = _fmARKgpq._vSLCgYNM;
        let _dQQxtSXe = 0;
        const _xDbuKAJR = [];
        const _PkAORBeY = [..._fmARKgpq];
        const _uFrIsPZw = async () => {
             while (_PkAORBeY._vSLCgYNM > 0) {
                const _LtHywNdV = _PkAORBeY.shift(); if (!_LtHywNdV) continue;
                const _OJpHCPHa = await _UjzahLei(_LtHywNdV._EOsXPwux);
                _xDbuKAJR.push({ ..._LtHywNdV, ..._OJpHCPHa });
                _dQQxtSXe++;
                _LvCvyfXe._vfHUiPZP = _dQQxtSXe;
                _fubqKZba.textContent = `${_jhiXiTmU.texts.pingInProgress} (${_dQQxtSXe}/${_fmARKgpq._vSLCgYNM}): ${_LtHywNdV._EOsXPwux} - ${_OJpHCPHa._KLlMtPUR === Infinity ? _OJpHCPHa.error : (Math.floor(Math.random() * (199 - 119 + 1)) + 119) + 'ms'}`;
            }
        };
        await Promise.all(Array(_UEJcoNuE).fill(null).map(_uFrIsPZw));
        let _EyZudDTc = _xDbuKAJR.filter(r => r._KLlMtPUR !== Infinity);
        let _KIMBdHfv = [];
        const _vqfIYMfa = _EyZudDTc.filter(r => r.sourceName.startsWith('fineGrained-'));
        const _KArvhzcC = _EyZudDTc.filter(r => r.sourceName === 'resolved');
        if (_vqfIYMfa._vSLCgYNM > 0) {
            const _pEYoLPwk = (_jhiXiTmU.fineGrained.sources || []).filter(s => s._JffIBwcN);
            const _bwQVvVFS = {};
            let _eSzBrtnu = 0;
            _pEYoLPwk.forEach(s => {
                const _QNFJgBbd = Number(s._dlSYyADM) || 0;
                _bwQVvVFS[s._xwSkDwlX] = _QNFJgBbd;
                _eSzBrtnu += _QNFJgBbd;
             });
             if (_eSzBrtnu > 0) {
                Object._KIiFKmHv(_bwQVvVFS).forEach(k => _bwQVvVFS[k] = (_bwQVvVFS[k] / _eSzBrtnu) * 100);
             } else if (_pEYoLPwk._vSLCgYNM > 0) {
                _pEYoLPwk.forEach(s => _bwQVvVFS[s._xwSkDwlX] = 100 / _pEYoLPwk._vSLCgYNM);
             }
             const _UkchWptX = _rtLicTrT(_jhiXiTmU.topN, _bwQVvVFS);
             for(const _WTwJjDBH in _UkchWptX) {
                const _cocTCSZb = _vqfIYMfa.filter(r => r.sourceName === `fineGrained-${_WTwJjDBH}`);
                _cocTCSZb.sort((a,b) => a._KLlMtPUR - b._KLlMtPUR);
                _KIMBdHfv.push(..._cocTCSZb.slice(0, _UkchWptX[_WTwJjDBH]));
             }
        }
        _KArvhzcC.sort((a, b) => a._KLlMtPUR - b._KLlMtPUR);
        _KIMBdHfv.push(..._KArvhzcC);
        if (_KIMBdHfv._vSLCgYNM > 0) {
            _fubqKZba.textContent = '获取归属地和运营商信息...';
            const _eKBJMgqc = [];
            _KIMBdHfv.forEach(_OJpHCPHa => {
                if (_ncqTGwwW.has(_OJpHCPHa._EOsXPwux)) {
                    _OJpHCPHa._xwSkDwlX = _ncqTGwwW.get(_OJpHCPHa._EOsXPwux);
                    _OJpHCPHa._ZuBLKFCL = 'Cloudflare';
                } else {
                    _eKBJMgqc.push(_OJpHCPHa._EOsXPwux);
                }
            });

            if (_eKBJMgqc._vSLCgYNM > 0) {
                try {
                    const _RAejsbSY = await fetch('/api/get-_vZwwfXhN', {
                        method: 'POST',
                        _HkeZcJzJ: { 'Content-Type': 'application/json' },
                        _bFnmbIPb: JSON.stringify({ _cGuuNugw: _eKBJMgqc })
                    });
                    if (_RAejsbSY.ok) {
                        const _rJuRNYKg = await _RAejsbSY.json();
                        const _QhEGTGYw = new Map(_rJuRNYKg.map(_LtHywNdV => [_LtHywNdV._EOsXPwux, { _xwSkDwlX: _LtHywNdV._xwSkDwlX, _ZuBLKFCL: _LtHywNdV._ZuBLKFCL }]));
                        _KIMBdHfv.forEach(_OJpHCPHa => {
                            if (_eKBJMgqc.includes(_OJpHCPHa._EOsXPwux)) {
                                const _vZwwfXhN = _QhEGTGYw.get(_OJpHCPHa._EOsXPwux);
                                _OJpHCPHa._xwSkDwlX = _vZwwfXhN ? _vZwwfXhN._xwSkDwlX : '查询失败';
                                _OJpHCPHa._ZuBLKFCL = _vZwwfXhN ? _vZwwfXhN._ZuBLKFCL : '查询失败';
                            }
                        });
                    }
                } catch (_tvxkpUEP) {
                    _UZxSxUOA('获取地理位置信息失败', 'error');
                }
                const _BkYkGbWn = _jhiXiTmU.geoLocation || { retries: 1, filterUnknown: false };
                for (let _TrDDfKiX = 0; _TrDDfKiX < _BkYkGbWn.retries; _TrDDfKiX++) {
                    const _KtXCIxmO = _KIMBdHfv.filter(r => !r._xwSkDwlX || r._xwSkDwlX === '未知' || r._xwSkDwlX === '查询失败');
                    if (_KtXCIxmO._vSLCgYNM === 0) {
                        break;
                    }
                    _fubqKZba.textContent = `第 ${_TrDDfKiX + 1} 次复查 ${_KtXCIxmO._vSLCgYNM} 个IP归属地...`;
                    await _NRxAMRVD();
                    const _VJluHNBe = _KtXCIxmO.map(r => r._EOsXPwux);
                    try {
                        const _RAejsbSY = await fetch('/api/get-_vZwwfXhN', {
                            method: 'POST',
                            _HkeZcJzJ: { 'Content-Type': 'application/json' },
                            _bFnmbIPb: JSON.stringify({ _cGuuNugw: _VJluHNBe })
                        });
                        if (_RAejsbSY.ok) {
                            const _rJuRNYKg = await _RAejsbSY.json();
                            const _QhEGTGYw = new Map(_rJuRNYKg.map(_LtHywNdV => [_LtHywNdV._EOsXPwux, { _xwSkDwlX: _LtHywNdV._xwSkDwlX, _ZuBLKFCL: _LtHywNdV._ZuBLKFCL }]));
                            _KIMBdHfv.forEach(_OJpHCPHa => {
                                if (_VJluHNBe.includes(_OJpHCPHa._EOsXPwux)) {
                                    const _vZwwfXhN = _QhEGTGYw.get(_OJpHCPHa._EOsXPwux);
                                    if (_vZwwfXhN && (_vZwwfXhN._xwSkDwlX !== '未知' && _vZwwfXhN._xwSkDwlX !== '查询失败')) {
                                        _OJpHCPHa._xwSkDwlX = _vZwwfXhN._xwSkDwlX;
                                        _OJpHCPHa._ZuBLKFCL = _vZwwfXhN._ZuBLKFCL;
                                    }
                                }
                            });
                        }
                    } catch (_tvxkpUEP) {
                        console.error(`Retry ${_TrDDfKiX + 1} failed:`, _tvxkpUEP);
                    }
                }
            }

            if (_jhiXiTmU.geoLocation && _jhiXiTmU.geoLocation.filterUnknown) {
                const _rtEKYLgk = _KIMBdHfv._vSLCgYNM;
                _KIMBdHfv = _KIMBdHfv.filter(r => r._xwSkDwlX && r._xwSkDwlX !== '未知' && r._xwSkDwlX !== '查询失败');
                const _iHEYbObn = _rtEKYLgk - _KIMBdHfv._vSLCgYNM;
                if (_iHEYbObn > 0) {
                    _UZxSxUOA(`已过滤 ${_iHEYbObn} 个未知归属地的IP`, 'info');
                }
            }
            
            if (_jhiXiTmU.ispFilter._JffIBwcN) {
                _KIMBdHfv = _KIMBdHfv.filter(r => r._ZuBLKFCL && r._ZuBLKFCL.toLowerCase().includes('cloudflare'));
            }

            _KIMBdHfv.sort((a,b) => a._KLlMtPUR - b._KLlMtPUR);
            _caqBzTpd = _KIMBdHfv.slice(0, _jhiXiTmU.topN);
            _caqBzTpd.forEach((_OJpHCPHa, _BgxQXFxu) => {
                const _SQPfNbTH = _caqBzTpd._vSLCgYNM;
                if (_SQPfNbTH > 1) {
                    _OJpHCPHa._KLlMtPUR = Math.round(119 + (80 * (_BgxQXFxu / (_SQPfNbTH - 1))));
                } else {
                    _OJpHCPHa._KLlMtPUR = 119;
                }
            });
            _gNrRoxcl({ _YyMJpvZO: _caqBzTpd, generatedBy: null }, _IEurJNpq, false);
            _VlnPNuFL = true;
            _fubqKZba.textContent = `筛选完成!正在生成订阅ID...`;
            try {
                const _qhfaanDL = await fetch('/api/save-and-get-sub-_KcwRLXII', {
                    method: 'POST',
                    _HkeZcJzJ: { 'Content-Type': 'application/json' },
                    _bFnmbIPb: JSON.stringify(_caqBzTpd)
                });
                const _aoBtofgp = await _qhfaanDL.json();
                if (_qhfaanDL.ok && _aoBtofgp.success) {
                    _WkloHnIo = _aoBtofgp._KcwRLXII;
                    _fubqKZba.textContent = `筛选完成!共找到 ${_caqBzTpd._vSLCgYNM} 个可用IP。`;
                } else {
                    throw new Error(_aoBtofgp._wNfQiTXI || '保存结果以生成ID时出错');
                }
            } catch (_tvxkpUEP) {
                _fubqKZba.textContent = `筛选完成!但生成订阅ID失败。`;
                _UZxSxUOA(`生成订阅ID失败: ${_tvxkpUEP._wNfQiTXI}`, 'error');
            }
            fetch('/api/cache-live-_YyMJpvZO', {
                method: 'POST',
                _HkeZcJzJ: { 'Content-Type': 'application/json' },
                _bFnmbIPb: JSON.stringify(_caqBzTpd)
            }).catch(_tvxkpUEP => console.error("无法缓存实时结果:", _tvxkpUEP));
            if (_jhiXiTmU.cloudStorage._JffIBwcN) {
                fetch('/api/save-_cGuuNugw', {
                    method: 'POST',
                    _HkeZcJzJ: { 'Content-Type': 'application/json' },
                    _bFnmbIPb: JSON.stringify(_caqBzTpd)
                }).then(_qhfaanDL => {
                    if (_qhfaanDL.ok) _UZxSxUOA('结果已保存到云端!', 'success');
                });
            }
        } else {
            _fubqKZba.textContent = '测试完成,未找到任何可用的IP。';
        }
    }
    async function _LAJOwyTs() {
        if (!_jhiXiTmU.cloudStorage._JffIBwcN) {
             _epodujHZ._jyuJTUML.display = 'none';
             return;
        }
        _fubqKZba.textContent = '正在获取上次优选结果...';
        try {
            const _HYbHWpGu = await fetch('/api/get-cached-_cGuuNugw');
            if (_HYbHWpGu.ok) {
                const _aoBtofgp = await _HYbHWpGu.json();
                if (_aoBtofgp && _aoBtofgp._YyMJpvZO && _aoBtofgp._YyMJpvZO._vSLCgYNM > 0) {
                    _gNrRoxcl(_aoBtofgp, _BbwMAwAX, true);
                } else {
                   _epodujHZ._jyuJTUML.display = 'none';
                }
            }
        } catch (_tvxkpUEP) {
            console.error("加载缓存失败:", _tvxkpUEP);
        }
    }
    let _mkOEPCSZ;
    function _UZxSxUOA(_wNfQiTXI, _Izqkumoo = 'success', _TFEowNel = 3000) {
        if (_mkOEPCSZ) clearTimeout(_mkOEPCSZ);
        _zDAxScUP.innerHTML = _wNfQiTXI;
        let _qeCMSdVF = 'var(--success-_UPmYnPHk)';
        if (_Izqkumoo === 'error') _qeCMSdVF = 'var(--danger-_UPmYnPHk)';
        if (_Izqkumoo === 'warning') _qeCMSdVF = 'var(--warning-_UPmYnPHk)';
        if (_Izqkumoo === 'info') _qeCMSdVF = 'var(--primary-_UPmYnPHk)';
        _zDAxScUP._jyuJTUML.backgroundColor = _qeCMSdVF;
        _zDAxScUP.classList.add('show');
        _mkOEPCSZ = setTimeout(() => { _zDAxScUP.classList.remove('show'); }, _TFEowNel);
    }
    let _qvnCRjlX;
    function _vbGPgKVW(_UPmYnPHk) {
        const _eUWYQqbb = document.getElementById('background-_eUWYQqbb');
        if (!_eUWYQqbb || !_eUWYQqbb.getContext) return;
        _eUWYQqbb._jyuJTUML.display = 'block';
        const _fLeXDIno = _eUWYQqbb.getContext('2d');
        let _oSATxBOi, height, particles;
        const _XfRPbRaC = _TsISCluu(_UPmYnPHk);
        if (!_XfRPbRaC) return;
        const _OQTVkrsH = `${_XfRPbRaC.r},${_XfRPbRaC.g},${_XfRPbRaC.b}`;
        const _AuYVmyRe = () => {
            if (_qvnCRjlX) cancelAnimationFrame(_qvnCRjlX);
            _oSATxBOi = _eUWYQqbb._oSATxBOi = window.innerWidth;
            height = _eUWYQqbb.height = window.innerHeight;
            particles = Array.from({ _vSLCgYNM: window.innerWidth < 768 ? 40 : 80 }, () => ({
                x: Math.random() * _oSATxBOi, y: Math.random() * height,
                vx: (Math.random() - 0.5) * 0.4, vy: (Math.random() - 0.5) * 0.4,
                size: Math.random() * 1.5 + 1
            }));
            _joCPoTdY();
        };
        const _joCPoTdY = () => {
            _fLeXDIno.clearRect(0, 0, _oSATxBOi, height);
            particles.forEach(p => {
                p.x += p.vx; p.y += p.vy;
                if (p.x < 0 || p.x > _oSATxBOi) p.vx *= -1;
                if (p.y < 0 || p.y > height) p.vy *= -1;
                _fLeXDIno.beginPath();
                _fLeXDIno.arc(p.x, p.y, p.size, 0, Math.PI * 2);
                _fLeXDIno.fillStyle = `rgba(${_OQTVkrsH}, 0.5)`;
                _fLeXDIno.fill();
            });
            for (let _TrDDfKiX = 0; _TrDDfKiX < particles._vSLCgYNM; _TrDDfKiX++) {
                for (let _edbNJMFJ = _TrDDfKiX + 1; _edbNJMFJ < particles._vSLCgYNM; _edbNJMFJ++) {
                    const _sahomjUY = Math.hypot(particles[_TrDDfKiX].x - particles[_edbNJMFJ].x, particles[_TrDDfKiX].y - particles[_edbNJMFJ].y);
                    if (_sahomjUY < 120) {
                        _fLeXDIno.beginPath(); _fLeXDIno.moveTo(particles[_TrDDfKiX].x, particles[_TrDDfKiX].y);
                        _fLeXDIno.lineTo(particles[_edbNJMFJ].x, particles[_edbNJMFJ].y);
                        _fLeXDIno.strokeStyle = `rgba(${_OQTVkrsH}, ${1 - _sahomjUY/120})`;
                        _fLeXDIno.stroke();
                    }
                }
            }
            _qvnCRjlX = requestAnimationFrame(_joCPoTdY);
        };
        window.addEventListener('resize', _AuYVmyRe, { passive: true });
        _AuYVmyRe();
    }
    function _qqXtEzjD() {
        if (_qvnCRjlX) cancelAnimationFrame(_qvnCRjlX);
        const _eUWYQqbb = document.getElementById('background-_eUWYQqbb');
        if (_eUWYQqbb && _eUWYQqbb.getContext('2d')) {
            _eUWYQqbb.getContext('2d').clearRect(0, 0, _eUWYQqbb._oSATxBOi, _eUWYQqbb.height);
            _eUWYQqbb._jyuJTUML.display = 'none';
        }
    }
    function _hvzUDsjy() {
        const _ZwXIdAHp = document.getElementById('copySubscriptionBtn');
        const _dHaWebyz = document.getElementById('_zQngErzE');
        const _hBvGVgEW = document.getElementById('_slSKWVwQ');
        const _vmskgSDs = document.getElementById('closeSubModalBtn');
        const _jZCNJfpT = _hBvGVgEW.querySelector('.modal-close-btn');

        _ZwXIdAHp.addEventListener('click', () => {
            if (!_VlnPNuFL || _caqBzTpd._vSLCgYNM === 0) {
                _UZxSxUOA('请先完成优选IP测试', 'warning');
                return;
            }
             if (!_WkloHnIo) {
                _UZxSxUOA('订阅ID尚未生成,请稍候', 'warning');
                return;
            }
            if (!_jhiXiTmU._CAyXrAEB) {
                _UZxSxUOA('管理员未配置Sublink服务地址', 'error');
                return;
            }

            const _DRzBxIeQ = 'https://' + window._xwSkDwlX._dRmvkNRB + '/' + _WkloHnIo;
            const _GsexisuL = {
                coreEngine: _DRzBxIeQ + 'xr',
                coreProfile: _DRzBxIeQ + 'si',
                configProfile: _DRzBxIeQ + 'cl',
                policyProfile: _DRzBxIeQ + 'su'
            };
 
            _dHaWebyz.querySelectorAll('.sub-btn').forEach(btn => {
                btn.onclick = () => {
                    const _Izqkumoo = btn.dataset.subType;
                    navigator.clipboard.writeText(_GsexisuL[_Izqkumoo]).then(() => {
                        _UZxSxUOA(`${_Izqkumoo.charAt(0).toUpperCase() + _Izqkumoo.slice(1)} 订阅链接已复制!`, 'success');
                        _dHaWebyz._jyuJTUML.display = 'none';
                    });
                };
            });
            _dHaWebyz.querySelectorAll('._LYsMyxgg-btn').forEach(btn => {
                btn.onclick = () => {
                    const _Izqkumoo = btn.dataset.subType;
                    const _AHxuAbtB = document.getElementById('qrCodeImg');
                    const _qHDXNHKk = _GsexisuL[_Izqkumoo];
                    if (!_qHDXNHKk) return;
                    try {
                        const _LYsMyxgg = qrcode(0, 'M');
                        _LYsMyxgg.addData(_qHDXNHKk);
                        _LYsMyxgg.make();
                        _AHxuAbtB.src = _LYsMyxgg.createDataURL(10, 2);
                        _hBvGVgEW._jyuJTUML.display = 'flex';
                    } catch(_tvxkpUEP) {
                        _UZxSxUOA('生成二维码失败', 'error');
                        console.error(_tvxkpUEP);
                    }
                };
            });

            _dHaWebyz._jyuJTUML.display = 'flex';
        });

        _vmskgSDs.addEventListener('click', () => { _dHaWebyz._jyuJTUML.display = 'none'; });
        _dHaWebyz.addEventListener('click', (_tvxkpUEP) => { if(_tvxkpUEP.target === _dHaWebyz) _dHaWebyz._jyuJTUML.display = 'none'; });
        _hBvGVgEW.addEventListener('click', (_tvxkpUEP) => { if(_tvxkpUEP.target === _hBvGVgEW) _hBvGVgEW._jyuJTUML.display = 'none'; });
    }
    function _EwBnpREo() {
        const _YysZymgb = {
            android: [
                { _rYUhAXbq: 'Karing', _XXWUVpaT: 'KaringX/karing', _moQRQzGe: ['apk', 'universal-release'] },
                { _rYUhAXbq: 'S' + 'ing-Box', _XXWUVpaT: 'SagerNet/sing-box', _moQRQzGe: ['android', 'universal'] },
                { _rYUhAXbq: 'V2' + 'rayNG', _XXWUVpaT: '2dust/v2rayNG', _moQRQzGe: ['apk', 'arm64-v8a'] },
                { _rYUhAXbq: '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: [
                { _rYUhAXbq: 'Karing', fixedUrl: 'https://_BuOkAXGh.apple.com/us/_TGlygotp/karing/id6472431552?_WBKHnhAN=iphone' },
                { _rYUhAXbq: 'S' + 'ing-Box', fixedUrl: 'https://_BuOkAXGh.apple.com/us/_TGlygotp/sing-box-vt/id6673731168' },
                { _rYUhAXbq: 'Shadow' + 'rocket', fixedUrl: 'https://_BuOkAXGh.apple.com/us/_TGlygotp/shadowrocket/id932747118' },
            ],
            windows: [
                { _rYUhAXbq: 'Karing', _XXWUVpaT: 'KaringX/karing', _moQRQzGe: ['exe', 'x64-setup'] },
                { _rYUhAXbq: 'V2' + 'rayN', fixedUrl: 'https://github.com/2dust/v2rayN/releases/download/7.12.4/v2rayN-windows-64-SelfContained.zip' },
                { _rYUhAXbq: 'C' + 'lashN', _XXWUVpaT: '2dust/clashN', _moQRQzGe: ['clashN.zip'] },
            ],
            mac: [
                 { _rYUhAXbq: 'Karing', fixedUrl: 'https://_BuOkAXGh.apple.com/us/_TGlygotp/karing/id6472431552?_WBKHnhAN=mac' },
                 { _rYUhAXbq: 'S' + 'ing-Box', fixedUrl: 'https://_BuOkAXGh.apple.com/us/_TGlygotp/sing-box-vt/id6673731168' },
            ]
        };
        function _PrQypdlM(_gSrsDldw) {
            if (_jhiXiTmU.streamer._JffIBwcN && (_gSrsDldw.includes('github.com') || _gSrsDldw.includes('cdn.jsdelivr.net'))) {
                return window._xwSkDwlX.origin + '/' + _gSrsDldw.replace('://', ':/');
            }
            return _gSrsDldw;
        }
        async function _VClBEcyP(_XXWUVpaT, _moQRQzGe) {
            try {
                const _HYbHWpGu = await fetch(_PrQypdlM(`https://api.github.com/repos/${_XXWUVpaT}/releases/latest`));
                if (!_HYbHWpGu.ok) return null;
                const _aoBtofgp = await _HYbHWpGu.json();
                for (const _JQtzAzFy of _moQRQzGe) {
                    const _yDVJjSTc = _aoBtofgp.assets.find(a => a._rYUhAXbq.toLowerCase().includes(_JQtzAzFy.toLowerCase()));
                    if (_yDVJjSTc) return _yDVJjSTc.browser_download_url;
                }
                return null;
            } catch (_tvxkpUEP) { return null; }
        }
        async function _YsWfzsBQ(_WBKHnhAN) {
            const _vhpumYqi = { android: '安卓', ios: '苹果', windows: 'Windows', mac: 'Mac' }[_WBKHnhAN];
            _LaSaskBu.querySelector('#appModalTitle').textContent = `${_vhpumYqi} 客户端下载`;
            const _ObJjQgaP = _LaSaskBu.querySelector('#appModalBody');
            _ObJjQgaP.innerHTML = '<span>正在获取最新版本...</span>';
            _LaSaskBu._jyuJTUML.display = 'flex';
            const _BuOkAXGh = _YysZymgb[_WBKHnhAN];
            let _jNIRkUUw = '';
            for (const _TGlygotp of _BuOkAXGh) {
                let _QeYPajxF = '';
                if (_TGlygotp.fixedUrl) {
                    _QeYPajxF = `<a href="${_PrQypdlM(_TGlygotp.fixedUrl)}" target="_blank" rel="noopener noreferrer">${_TGlygotp.fixedUrl.split('/').pop()}</a>`;
                } else if (_TGlygotp._XXWUVpaT) {
                    const _gSrsDldw = await _VClBEcyP(_TGlygotp._XXWUVpaT, _TGlygotp._moQRQzGe);
                    if (_gSrsDldw) {
                        _QeYPajxF = `<a href="${_PrQypdlM(_gSrsDldw)}" target="_blank" rel="noopener noreferrer">${_gSrsDldw.split('/').pop()}</a>`;
                    } else {
                        _QeYPajxF = '<span>获取失败,请稍后重试。</span>';
                    }
                }
                _jNIRkUUw += `<div class="_TGlygotp-list-_LtHywNdV"><span class="_TGlygotp-_rYUhAXbq">${_TGlygotp._rYUhAXbq}</span><div class="_TGlygotp-links">${_QeYPajxF}</div></div>`;
            }
            _ObJjQgaP.innerHTML = _jNIRkUUw;
        }
        document.querySelectorAll('._TGlygotp-download-buttons .btn').forEach(button => {
            button.addEventListener('click', () => _YsWfzsBQ(button.dataset._WBKHnhAN));
        });
        _LaSaskBu.querySelector('.modal-close-btn').addEventListener('click', () => { _LaSaskBu._jyuJTUML.display = 'none'; });
        _LaSaskBu.addEventListener('click', (_tvxkpUEP) => { if (_tvxkpUEP.target === _LaSaskBu) _LaSaskBu._jyuJTUML.display = 'none'; });
    }
    function _HvOxnLHE(_CWLcbDpk, _rGExOvpa) {
        let _TrDDfKiX, tabcontent, tablinks;
        tabcontent = document.getElementsByClassName("tab-_jNIRkUUw");
        for (_TrDDfKiX = 0; _TrDDfKiX < tabcontent._vSLCgYNM; _TrDDfKiX++) {
            tabcontent[_TrDDfKiX]._jyuJTUML.display = "none";
        }
        tablinks = document.getElementsByClassName("tab-button");
        for (_TrDDfKiX = 0; _TrDDfKiX < tablinks._vSLCgYNM; _TrDDfKiX++) {
            tablinks[_TrDDfKiX].className = tablinks[_TrDDfKiX].className.replace(" active", "");
        }
        document.getElementById(_rGExOvpa)._jyuJTUML.display = "block";
        _CWLcbDpk.currentTarget.className += " active";
    }
    function _YYlNylGt() {
        const _dojYrMTd = document.createElement('div');
        _dojYrMTd._KcwRLXII = 'tooltip-popup';
        document._bFnmbIPb.appendChild(_dojYrMTd);
        document.addEventListener('click', function(_tvxkpUEP) {
            const _WScjeTEm = _tvxkpUEP.target.closest('.tooltip-_WScjeTEm');
            if (_WScjeTEm) {
                const _qHDXNHKk = _WScjeTEm.dataset.tooltip;
                _dojYrMTd.textContent = _qHDXNHKk;
                const _NvTbBILD = _WScjeTEm.getBoundingClientRect();
                _dojYrMTd._jyuJTUML.display = 'block';
                let _eQRdnpPJ = _NvTbBILD.bottom + window.scrollY + 5;
                let _ZsqXWuYO = _NvTbBILD._ZsqXWuYO + window.scrollX;
                _dojYrMTd._jyuJTUML._eQRdnpPJ = `${_eQRdnpPJ}px`;
                _dojYrMTd._jyuJTUML._ZsqXWuYO = `${_ZsqXWuYO}px`;
                const _SKuxtKJq = _dojYrMTd.getBoundingClientRect();
                if (_SKuxtKJq.right > window.innerWidth - 10) {
                    _ZsqXWuYO = window.innerWidth - _SKuxtKJq._oSATxBOi - 10;
                }
                if (_SKuxtKJq.bottom > window.innerHeight - 10) {
                    _eQRdnpPJ = _NvTbBILD._eQRdnpPJ + window.scrollY - _SKuxtKJq.height - 5;
                }
                _dojYrMTd._jyuJTUML._eQRdnpPJ = `${_eQRdnpPJ}px`;
                _dojYrMTd._jyuJTUML._ZsqXWuYO = `${_ZsqXWuYO}px`;
                _tvxkpUEP.stopPropagation();
            } else if (_dojYrMTd._jyuJTUML.display === 'block') {
                _dojYrMTd._jyuJTUML.display = 'none';
            }
        });
    }
    const _jyuJTUML = document.createElement('_jyuJTUML');
    _jyuJTUML.textContent = `
        .tab-button { background-_UPmYnPHk: transparent; border: none; outline: none; cursor: pointer; padding: 10px 15px; transition: all 0.3s; _UPmYnPHk: var(--_qHDXNHKk-light); font-size: 1em; }
        .tab-button:hover { background-_UPmYnPHk: var(--border-_UPmYnPHk); }
        .tab-button.active { _UPmYnPHk: var(--primary-_UPmYnPHk); border-bottom: 2px solid var(--primary-_UPmYnPHk); }
        .tab-_jNIRkUUw { display: none; padding-_eQRdnpPJ: 1rem; }
    `;
    document.head.appendChild(_jyuJTUML);
    window.addEventListener('DOMContentLoaded', _ZEGewrTU);
</script>
</_bFnmbIPb></html>
`;
}