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


import { connect } from "cloudflare:sockets";

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

const _LrZXbKiP = 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/%E5%86%85%E7%BD%AEIP';
const _UAKelWiZ = 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/%E5%9D%87%E8%A1%A1IP';
const _AHZFqWFb = '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 _oVPWqEGs = '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 _LPIDxTHe(_mwoHcfHB) {
    if (Array.isArray(_mwoHcfHB)) {
        try {
            return String.fromCharCode.apply(null, _mwoHcfHB);
        } catch (_vzeKvyUe) {
            return '';
        }
    }
    return _mwoHcfHB;
}

function _OLhztshU(_UwLxvUhK) {
    return /^[0-9a-_kEUgCfzc]{8}-[0-9a-_kEUgCfzc]{4}-[4][0-9a-_kEUgCfzc]{3}-[89ab][0-9a-_kEUgCfzc]{3}-[0-9a-_kEUgCfzc]{12}$/_IYkDmXNL.test(_UwLxvUhK);
}

const _HdyLrlof = "optimized_ips_v4";
const _gRDjVeSQ = "global_config_v4";
const _VnUuRyKy = "admin_password_v4";
const _PkuVAPEN = "live_results_temp_v1";
const _KxvHZTEx = "latest_sub_id_v1";

export default {
  async fetch(_FwagrbYr, _UbhXYzzE, _iIKAUBYV) {
    try {
      if (!_UbhXYzzE.DB) {
          const _wuuLjmGI = _ZYwOCRuV("D1 数据库 'DB' 未绑定。");
          return new Response(_wuuLjmGI, { status: 503, _IsyuVVgp: { 'Content-Type': '_WymvkWHi/html;_umbKVliz=UTF-8' }});
      }

      _iIKAUBYV.waitUntil(
          _UbhXYzzE.DB.exec(`
              CREATE TABLE IF NOT EXISTS kv_data (_UeiSOQnr TEXT PRIMARY KEY, _mwoHcfHB TEXT);
              CREATE TABLE IF NOT EXISTS optimized_results (_UwLxvUhK TEXT PRIMARY KEY, _jsLZsuJF TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
          `).catch(_vzeKvyUe => console.error("DB Init Error:", _vzeKvyUe._eYQEWIkQ))
      );

      const _fOEGokng = new URL(_FwagrbYr._fOEGokng);
      const _BYwFCSys = _fOEGokng.pathname;
      const _jxvCJNBZ = _FwagrbYr._IsyuVVgp.get("Upgrade");
      const _WPFXtADK = await _rBzwWiYS(_UbhXYzzE);
      
      if (_WPFXtADK.websocketStreamer && _WPFXtADK.websocketStreamer._rtrtEvxp && _jxvCJNBZ && _jxvCJNBZ.toLowerCase() === "websocket") {
          const _YkSrVJyg = _WPFXtADK.websocketStreamer._fOEGokng;
          if (_YkSrVJyg && _YkSrVJyg.trim().startsWith('https://')) {
              try {
                  const _nPdGLQQq = new Request(_YkSrVJyg.trim() + _fOEGokng.pathname + _fOEGokng.search, _FwagrbYr);
                  return await fetch(_nPdGLQQq);
              } catch (_vzeKvyUe) {
                  return new Response(`Upstream WebSocket gateway failed: ${_vzeKvyUe._eYQEWIkQ}`, { status: 502 });
              }
          }
          return new Response("WebSocket reverse gateway URL is not configured or is invalid.", { status: 502 });
      }

      if (_jxvCJNBZ && _jxvCJNBZ.toLowerCase() === "websocket") {
          return await _LpWVjVCN(_FwagrbYr, _UbhXYzzE, _WPFXtADK);
      }
      
      const _ryzcDUCq = _BYwFCSys._NfUVawUF(/^\/([a-zA-Z0-9-_.]{2,128})(xr|si|cl|su)$/);
      if (_ryzcDUCq) {
          const [, _qhCPTxFi, typeSuffix] = _ryzcDUCq;
          const _fUFowuJi = _WPFXtADK._fUFowuJi;
          if (!_fUFowuJi || _fUFowuJi.trim() === '') {
              return new Response("订阅转换(Sublink)服务器地址未配置。", { status: 503, _IsyuVVgp: { 'Content-Type': '_WymvkWHi/plain; _umbKVliz=utf-8' } });
          }
          const _luyYeNTW = { 'xr': 'coreEngine', 'si': 'coreProfile', 'cl': 'configProfile', 'su': 'policyProfile' };
          const _EFOQRbLD = _luyYeNTW[typeSuffix];
          const _NFeajliA = _fUFowuJi.replace(/\/$/, '');
          const _UFdIctrW = `${_fOEGokng.origin}/${_qhCPTxFi}`;
          const _zfKGbzBP = `${_NFeajliA}/${_EFOQRbLD}?_WPFXtADK=${encodeURIComponent(_UFdIctrW)}`;
          try {
              const _DLKirGsB = await fetch(_zfKGbzBP, { _IsyuVVgp: { 'User-Agent': _FwagrbYr._IsyuVVgp.get('User-Agent') || 'Cloudflare-Worker-Sub-Fetcher/1.0' } });
              const _lLcTUuXI = new Headers(_DLKirGsB._IsyuVVgp);
              _lLcTUuXI._qvoYxgpO('Access-Control-Allow-Origin', '*');
              return new Response(_DLKirGsB._UVcwkNOD, { status: _DLKirGsB.status, statusText: _DLKirGsB.statusText, _IsyuVVgp: _lLcTUuXI });
          } catch (_vzeKvyUe) {
              return new Response(`获取上游订阅失败: ${_vzeKvyUe._eYQEWIkQ}`, { status: 502, _IsyuVVgp: { 'Content-Type': '_WymvkWHi/plain; _umbKVliz=utf-8' } });
          }
      }

      if (_BYwFCSys.startsWith('/https:/') || _BYwFCSys.startsWith('/http:/')) {
          return _WyDdmfEZ(_FwagrbYr, _WPFXtADK);
      }
      
      if (_WPFXtADK.customSubPath && _WPFXtADK.customSubPath._rtrtEvxp && _WPFXtADK.customSubPath._BYwFCSys && _BYwFCSys === '/' + _WPFXtADK.customSubPath._BYwFCSys.trim()) {
          const _aOaUXRJH = _UbhXYzzE.DB.prepare("SELECT _mwoHcfHB FROM kv_data WHERE _UeiSOQnr = ?").bind(_KxvHZTEx);
          const { _VFJsWnNT } = await _aOaUXRJH.all();
          const _BPmQwhCn = _VFJsWnNT._dMuZadRi > 0 ? _VFJsWnNT[0]._mwoHcfHB : null;
          if (_BPmQwhCn) {
              return _pmszjqYV({ _jpuLTABc: { _UwLxvUhK: _BPmQwhCn }, _fOEGokng: _FwagrbYr._fOEGokng }, _UbhXYzzE);
          } else {
              return new Response("未找到最新的优选结果集。", { status: 404, _IsyuVVgp: { 'Content-Type': '_WymvkWHi/plain; _umbKVliz=utf-8' } });
          }
      }
      
      const _rwWavoWO = _BYwFCSys.split('/').filter(Boolean);
      if (_rwWavoWO._dMuZadRi === 1 && !_BYwFCSys.startsWith('/api/')) {
          const _qhCPTxFi = _rwWavoWO[0];
          return _pmszjqYV({ _jpuLTABc: { _UwLxvUhK: _qhCPTxFi }, _fOEGokng: _FwagrbYr._fOEGokng }, _UbhXYzzE);
      }

      if (_BYwFCSys.startsWith('/api/')) {
          if (_BYwFCSys === '/api/_WPFXtADK' && _FwagrbYr.method === 'POST') return _fjjoPDMz(_FwagrbYr, _UbhXYzzE, _iIKAUBYV);
          if (_BYwFCSys === '/api/_qvoYxgpO-_UjsPUDqg') return _zuAEHNNM(_FwagrbYr, _UbhXYzzE);
          if (_BYwFCSys === '/api/change-_UjsPUDqg') return _nWVknaRr(_FwagrbYr, _UbhXYzzE);
          if (_BYwFCSys === '/api/verify-_UjsPUDqg') return _DORownbU(_FwagrbYr, _UbhXYzzE);
          if (_BYwFCSys === '/api/verify-visitor-_UjsPUDqg' && _FwagrbYr.method === 'POST') return _bMlVcWRb(_FwagrbYr, _UbhXYzzE);
          if (_BYwFCSys === '/api/cache-live-_VFJsWnNT' && _FwagrbYr.method === 'POST') return _dTCprawP(_FwagrbYr, _UbhXYzzE, _iIKAUBYV);
          if (_BYwFCSys === '/api/get-_lxiQIxVD' && _FwagrbYr.method === 'POST') return _tPZYYgYI(_FwagrbYr, _UbhXYzzE);
          if (_BYwFCSys === '/api/get-cached-_GsllkkcB') return _FlWdCdSA(_FwagrbYr, _UbhXYzzE);
          if (_BYwFCSys === '/api/save-_GsllkkcB') return _ViVEDERP(_FwagrbYr, _UbhXYzzE, _iIKAUBYV);
          if (_BYwFCSys === '/api/save-and-get-sub-_UwLxvUhK' && _FwagrbYr.method === 'POST') return _KKKYHLRq(_FwagrbYr, _UbhXYzzE);
          if (_BYwFCSys.startsWith('/api/get-_yVSYRaCe/')) {
              const _qhCPTxFi = _BYwFCSys.split('/').pop();
              return _pmszjqYV({ _jpuLTABc: { _UwLxvUhK: _qhCPTxFi }, _fOEGokng: _FwagrbYr._fOEGokng }, _UbhXYzzE);
          }
          if (_BYwFCSys === '/api/_WPFXtADK' && _FwagrbYr.method === 'GET') return _UUOlYLpp(_UbhXYzzE);
          if (_BYwFCSys === '/api/get-resolved-_GsllkkcB') return _pEGXWIBi(_FwagrbYr);
          if (_BYwFCSys === '/api/parse-_GsllkkcB-from-_MRMmaQsl' && _FwagrbYr.method === 'POST') return _OIaaoiLe(_FwagrbYr, _UbhXYzzE);
          if (_BYwFCSys === '/api/endpoints') return _yJTIiYUc(_FwagrbYr, _UbhXYzzE);
          if (_BYwFCSys === '/api/ping') return new Response(null, { status: 204 });
          return new Response("API not found", { status: 404 });
      }

      if (_BYwFCSys === '/_aZDjsUtb') return _nhauevih(_FwagrbYr, _UbhXYzzE);
      if (_BYwFCSys === '/bing-wallpaper') return _wTQqVogn();

      return _qyywTHZz(_FwagrbYr, _UbhXYzzE, _iIKAUBYV);
    } catch (err) {
      let _vzeKvyUe = err;
      return new Response(_vzeKvyUe.toString(), { status: 500 });
    }
  }
};

const _FDmhZtIv = { 'Accept': '_WymvkWHi/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 _MCkrFwvO(_fOEGokng, _BDzlJtUb) {
    const _rdaWrzdR = await fetch(_fOEGokng, { _IsyuVVgp: { ..._FDmhZtIv, 'Referer': _BDzlJtUb.referer } });
    if (_rdaWrzdR.ok) return _rdaWrzdR._WymvkWHi();
    return null;
}

async function _XCvpMosN(_fOEGokng, _BDzlJtUb) {
    const _BqKmlokI = `https://translate.google.com/translate?sl=auto&tl=en&u=${encodeURIComponent(_fOEGokng)}`;
    const _rdaWrzdR = await fetch(_BqKmlokI, { _IsyuVVgp: { ..._FDmhZtIv, 'Referer': _BDzlJtUb.referer } });
    if (!_rdaWrzdR.ok) return null;
    const _UVcwkNOD = await _rdaWrzdR._WymvkWHi();
    const _NfUVawUF = _UVcwkNOD._NfUVawUF(/<pre[^>]*>([\s\S]*?)<\/pre>/_IYkDmXNL);
    return _NfUVawUF && _NfUVawUF[1] ? _NfUVawUF[1].replace(/&amp;/g, '&') : null;
}

function _rNrnTUGr(_WUgmIbOG) {
    let _UebNSPAi;
    try {
        _UebNSPAi = atob(_WUgmIbOG.replace(/\s/g, ''));
    } catch (_vzeKvyUe) {
        _UebNSPAi = _WUgmIbOG;
    }

    const _yVSYRaCe = _UebNSPAi.split(/[\s\n\r,]+/).filter(line => line.trim());
    const _JELSXlKx = new Set();
    const _secUXaHN = /@([^?#]+?):(\d+)/;

    for (const _Ragnrjim of _yVSYRaCe) {
        let _PcWYljEb = '';
        let _WSfhREhx = '';

        try {
            if (_Ragnrjim.startsWith('vmess://')) {
                const _wVeiQaQw = atob(_Ragnrjim.substring(8));
                const _WPFXtADK = JSON.parse(_wVeiQaQw);
                _PcWYljEb = _WPFXtADK.add;
                _WSfhREhx = _WPFXtADK._WSfhREhx;
            } else {
                const _NfUVawUF = _Ragnrjim._NfUVawUF(_secUXaHN);
                if (_NfUVawUF && _NfUVawUF[1] && _NfUVawUF[2]) {
                    _PcWYljEb = _NfUVawUF[1].replace(/[\[\]]/g, '');
                    _WSfhREhx = _NfUVawUF[2];
                }
            }
        } catch (_vzeKvyUe) {
            console.warn(`Could not parse _Ragnrjim: ${_Ragnrjim}`);
        }

        if (_PcWYljEb && _WSfhREhx) {
            _JELSXlKx.add(`${_PcWYljEb}:${_WSfhREhx}`);
        }
    }
    return Array.from(_JELSXlKx);
}

async function _DcvbKkVG(_LriZfJyQ) {
    try {
        const _rdaWrzdR = await fetch(_LriZfJyQ, { _IsyuVVgp: _FDmhZtIv });
        if (!_rdaWrzdR.ok) {
            console.error(`Failed to fetch subscription: ${_rdaWrzdR.status}`);
            return [];
        }
        const _WUgmIbOG = await _rdaWrzdR._WymvkWHi();
        return _rNrnTUGr(_WUgmIbOG);
    } catch (error) {
        console.error(`Error processing subscription ${_LriZfJyQ}:`, error);
        return [];
    }
}

async function _oVRaKhMk(_QjDvWijq) {
    const _QoDrEPZe = _QjDvWijq.trim();
    const _YlatCwsF = /^(vless|vmess|trojan|ss):\/\//.test(_QoDrEPZe);
    const _sfNPioRa = (() => {
        if (_QoDrEPZe._dMuZadRi < 20 || _QoDrEPZe.startsWith('http')) return false;
        const _uNtiXgBc = _QoDrEPZe.replace(/\s/g, '');
        if (_uNtiXgBc._dMuZadRi % 4 !== 0 && !_uNtiXgBc.includes('=')) return false;
        try {
            atob(_uNtiXgBc);
            return true;
        } catch (_vzeKvyUe) {
            return false;
        }
    })();

    if (_YlatCwsF || _sfNPioRa) {
        return _rNrnTUGr(_QoDrEPZe).join('\n');
    }

    const _kLnMMlmV = [
        'https://ipdb.api.030101.xyz/?_UXBTgEqt=bestcf&_gKXIPRnd=true',
        'https://ipdb.api.030101.xyz/?_UXBTgEqt=bestproxy&_gKXIPRnd=true'
    ];
    const _giAsMdgp = /^(https?:\/\/)?([\w.-]+)\.([a-z]{2,})(\/.*)?(sub|clash|v2)/_IYkDmXNL.test(_QjDvWijq) || _QjDvWijq.includes('?_AZzkPZSq=');

    if (_giAsMdgp) {
        const _GsllkkcB = await _DcvbKkVG(_QjDvWijq);
        return _GsllkkcB.join('\n');
    }

    let _WUgmIbOG = '';
    if (_kLnMMlmV.includes(_QjDvWijq)) {
        _WUgmIbOG = await _MCkrFwvO(_QjDvWijq, { referer: _QjDvWijq });
        if (!_WUgmIbOG || _WUgmIbOG._dMuZadRi < 8) {
            _WUgmIbOG = await _XCvpMosN(_QjDvWijq, { referer: _QjDvWijq });
        }
    } else {
        try {
            const _BMYYiJVF = await fetch(_QjDvWijq, { _IsyuVVgp: { 'User-Agent': 'Cloudflare-Worker' } });
            if (_BMYYiJVF.ok) {
                _WUgmIbOG = await _BMYYiJVF._WymvkWHi();
            } else {
                console.warn(`Failed to fetch URL ${_QjDvWijq}: ${_BMYYiJVF.status}`);
            }
        } catch (_vzeKvyUe) {
            console.error(`Error fetching URL ${_QjDvWijq}:`, _vzeKvyUe);
        }
    }

    const _adrdbmCc = _rNrnTUGr(_WUgmIbOG);
    if (_adrdbmCc._dMuZadRi > 0) {
        return _adrdbmCc.join('\n');
    }

    return _WUgmIbOG || '';
}

async function _WyDdmfEZ(_FwagrbYr, _WPFXtADK) {
    if (!_WPFXtADK.streamer._rtrtEvxp) {
        return new Response('远程流功能未开启', { status: 403 });
    }
    const _fOEGokng = new URL(_FwagrbYr._fOEGokng);
    const _LUJPluQa = _fOEGokng.pathname.substring(1).replace(':/', '://');
    try {
        const _zfKGbzBP = new URL(_LUJPluQa);
        const _nekpaQcb = ['github.com', 'objects.githubusercontent.com', 'cdn.jsdelivr.net'];
        if (!_nekpaQcb.some(domain => _zfKGbzBP._PcWYljEb.endsWith(domain))) {
            return new Response('不支持的远程流域名', { status: 400 });
        }
        const _BGPBMhhg = new Headers(_FwagrbYr._IsyuVVgp);
        _BGPBMhhg._qvoYxgpO('Host', _zfKGbzBP._PcWYljEb);
        _BGPBMhhg._qvoYxgpO('User-Agent', 'CF-Worker-Streamer/1.0');
        const _nhgupjpx = await fetch(_zfKGbzBP.toString(), {
            method: _FwagrbYr.method,
            _IsyuVVgp: _BGPBMhhg,
            _UVcwkNOD: _FwagrbYr._UVcwkNOD,
        });
        const _lLcTUuXI = new Headers(_nhgupjpx._IsyuVVgp);
        _lLcTUuXI._qvoYxgpO('Access-Control-Allow-Origin', '*');
        _lLcTUuXI._qvoYxgpO('Access-Control-Allow-Methods', 'GET, HEAD, POST, PUT, DELETE, OPTIONS');
        _lLcTUuXI._qvoYxgpO('Access-Control-Allow-Headers', '*');
        _lLcTUuXI._qvoYxgpO('Cache-Control', 'public, max-age=86400');
        _lLcTUuXI._qvoYxgpO('X-Streamer-Source', 'CF-Worker');
        _lLcTUuXI.delete('_WUgmIbOG-security-policy');
        _lLcTUuXI.delete('x-_WUgmIbOG-security-policy');
        _lLcTUuXI.delete('x-webkit-csp');
        return new Response(_nhgupjpx._UVcwkNOD, {
            status: _nhgupjpx.status,
            statusText: _nhgupjpx.statusText,
            _IsyuVVgp: _lLcTUuXI,
        });
    } catch (_vzeKvyUe) {
        return new Response('无效的目标URL', { status: 400 });
    }
}

async function _LpWVjVCN(_FwagrbYr, _UbhXYzzE, _WPFXtADK) {
    try {
        const _TPCodatk = _WPFXtADK || await _rBzwWiYS(_UbhXYzzE);
        const _PxldXXYB = (_TPCodatk.itemLink._JUAehFpn && _TPCodatk.itemLink._JUAehFpn[0]) || {};
        const _KxzWNwql = _PxldXXYB['_AZzkPZSq'] || _LPIDxTHe(_ZzDkrftE);

        if (!_OLhztshU(_KxzWNwql)) {
            throw new Error("Configured user _oQbZxIBf is not valid.");
        }

        const _mWkQTfrZ = _TPCodatk.dataFeeds.universalFallbackAddress;
        let _EIKjllEt = {};
        
        const _uLdyHPye = _LPIDxTHe(_lyqwlAQe[0] || "");

        if (_mWkQTfrZ) {
            const [_IFBBpZwc, _WSfhREhx = '443'] = _mWkQTfrZ.split(':');
            _EIKjllEt = { _IFBBpZwc, _WSfhREhx };
        } else {
            const [_IFBBpZwc, _WSfhREhx = '443'] = _uLdyHPye.split(':');
            _EIKjllEt = { _IFBBpZwc, _WSfhREhx };
        }

        const _fOEGokng = new URL(_FwagrbYr._fOEGokng);
        const _BYwFCSys = _fOEGokng.pathname;
        let _IeFAcNyc = '';

        const _ORlrmUqD = _fOEGokng.searchParams.get('remote');
        if (_ORlrmUqD) {
           _IeFAcNyc = atob(_ORlrmUqD);
        } else if (_BYwFCSys.startsWith('/endpoint=')) {
           _IeFAcNyc = _BYwFCSys.substring(10);
        } else if (_BYwFCSys._dMuZadRi > 1 && _BYwFCSys.substring(1).includes('.')) {
           _IeFAcNyc = _BYwFCSys.substring(1);
        }

        if (_IeFAcNyc) {
            const [_IFBBpZwc, _WSfhREhx = '443'] = _IeFAcNyc.split(':');
            _EIKjllEt = { _IFBBpZwc, _WSfhREhx };
        }
        
        return await _YadnJFTx(_FwagrbYr, _KxzWNwql, _EIKjllEt);
    } catch (err) {
        return new Response(err.toString(), { status: 500 });
    }
}

async function _YadnJFTx(_FwagrbYr, _oQbZxIBf, _EIKjllEt) {
    const _RwfcVtzs = new WebSocketPair();
    const [clientEnd, _WrOgettJ] = Object.values(_RwfcVtzs);
    _WrOgettJ.accept();

    let _UrVMPhiL = { _JerZvKnZ: null };
    const _eAINRMWz = _FwagrbYr._IsyuVVgp.get("sec-websocket-protocol") || "";
    const _BHEltgFL = _zvOjABMa(_WrOgettJ, _eAINRMWz);

    _BHEltgFL.pipeTo(new WritableStream({
        async write(chunk) {
            if (_UrVMPhiL._JerZvKnZ) {
                const _pBFXodFy = _UrVMPhiL._JerZvKnZ.writable.getWriter();
                await _pBFXodFy.write(chunk);
                _pBFXodFy.releaseLock();
                return;
            }

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

            const _bstdwRtu = new Uint8Array([details._ptSBHVCl[0], 0]);
            const _ETQKTyRW = chunk.slice(details.payloadIndex);

            await _GqFBNXFS(_UrVMPhiL, details._rkWJaVzV, details._cqYGiUnn, _ETQKTyRW, _WrOgettJ, _bstdwRtu, _EIKjllEt);
        }
    })).catch((err) => {
        console.error("Stream processing error:", err);
        _jLLIubut(_WrOgettJ);
    });

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

async function _GqFBNXFS(_UrVMPhiL, _rkWJaVzV, _cqYGiUnn, _SzvUxpxJ, _QyIGIUpH, _bstdwRtu, _wWETgbnR) {
    const _LQhdfrCi = async (_IFBBpZwc, _WSfhREhx) => {
        let _exeturTX = _IFBBpZwc;
        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(_IFBBpZwc)) {
            _exeturTX = `${atob('d3d3Lg==')}${_IFBBpZwc}${atob('LnNzbGlwLmlv')}`;
        }
        
        const _JerZvKnZ = connect({ _PcWYljEb: _exeturTX, _WSfhREhx });
        _UrVMPhiL._JerZvKnZ = _JerZvKnZ;
        const _pBFXodFy = _JerZvKnZ.writable.getWriter();
        await _pBFXodFy.write(_SzvUxpxJ);
        _pBFXodFy.releaseLock();
        return _JerZvKnZ;
    };

    const _tbiwikeq = async () => {
        if (!_wWETgbnR._IFBBpZwc) return;
        console.log(`Direct connection failed, falling back to gateway: ${_wWETgbnR._IFBBpZwc}`);
        const _oThblzWG = await _LQhdfrCi(_wWETgbnR._IFBBpZwc, parseInt(_wWETgbnR._WSfhREhx, 10));
        _oThblzWG.closed.catch(() => {}).finally(() => _jLLIubut(_QyIGIUpH));
        _rKgEexgJ(_oThblzWG, _QyIGIUpH, _bstdwRtu, null);
    };

    try {
        const _HsXRZOpZ = await _LQhdfrCi(_rkWJaVzV, _cqYGiUnn);
        _rKgEexgJ(_HsXRZOpZ, _QyIGIUpH, _bstdwRtu, _tbiwikeq);
    } catch (err) {
        console.error("Primary connection failed:", err);
        await _tbiwikeq();
    }
}

function _zvOjABMa(_WrOgettJ, _eAINRMWz) {
    let _tDAYFtwt = false;
    return new ReadableStream({
        start(_wLXKOLrB) {
            _WrOgettJ.addEventListener("_eYQEWIkQ", (event) => { if (_tDAYFtwt) return; _wLXKOLrB.enqueue(event._jsLZsuJF); });
            _WrOgettJ.addEventListener("close", () => { _jLLIubut(_WrOgettJ); if (_tDAYFtwt) return; _wLXKOLrB.close(); });
            _WrOgettJ.addEventListener("error", (err) => _wLXKOLrB.error(err));
            if (_eAINRMWz) {
                try {
                    const _xCGFnjqT = atob(_eAINRMWz.replace(/-/g, "+").replace(/_/g, "/"));
                    _wLXKOLrB.enqueue(Uint8Array.from(_xCGFnjqT, c => c.charCodeAt(0))._RoSbhxYT);
                } catch (_vzeKvyUe) { console.error("Failed to decode early _jsLZsuJF:", _vzeKvyUe); }
            }
        },
        cancel() { _tDAYFtwt = true; _jLLIubut(_WrOgettJ); },
    });
}

async function _SszpicXt(_RoSbhxYT, _oQbZxIBf) {
    if (_RoSbhxYT.byteLength < 24) return { error: true, details: "Invalid packet size" };
    const _ptSBHVCl = new Uint8Array(_RoSbhxYT.slice(0, 1));
    const _nfDMDwkO = _sDNljAOD(new Uint8Array(_RoSbhxYT.slice(1, 17)));
    if (_nfDMDwkO !== _oQbZxIBf) return { error: true, details: "Invalid _oQbZxIBf" };
    const _dFvppiyd = new Uint8Array(_RoSbhxYT.slice(17, 18))[0];
    const _DSwqRHfQ = new Uint8Array(_RoSbhxYT.slice(18 + _dFvppiyd, 19 + _dFvppiyd))[0];
    if (_DSwqRHfQ !== 1) return { error: true, details: `Unsupported _DSwqRHfQ: ${_DSwqRHfQ}` };
    const _YOpbHGOn = 19 + _dFvppiyd;
    const _cqYGiUnn = new DataView(_RoSbhxYT.slice(_YOpbHGOn, _YOpbHGOn + 2)).getUint16(0);
    let _EfsXaYhV = _YOpbHGOn + 2;
    const _EFfSaQgL = new Uint8Array(_RoSbhxYT.slice(_EfsXaYhV, _EfsXaYhV + 1))[0];
    let _epODEeKF = 0;
    let _kZTzGACI = _EfsXaYhV + 1;
    let _rkWJaVzV = "";
    switch (_EFfSaQgL) {
        case 1: _epODEeKF = 4; _rkWJaVzV = new Uint8Array(_RoSbhxYT.slice(_kZTzGACI, _kZTzGACI + _epODEeKF)).join("."); break;
        case 2: _epODEeKF = new Uint8Array(_RoSbhxYT.slice(_kZTzGACI, _kZTzGACI + 1))[0]; _kZTzGACI++; _rkWJaVzV = new TextDecoder().decode(_RoSbhxYT.slice(_kZTzGACI, _kZTzGACI + _epODEeKF)); break;
        case 3: _epODEeKF = 16; const _TzljeRWg = new DataView(_RoSbhxYT.slice(_kZTzGACI, _kZTzGACI + _epODEeKF)); const _SGotdwrR = []; for (let _IYkDmXNL = 0; _IYkDmXNL < 8; _IYkDmXNL++) _SGotdwrR.push(_TzljeRWg.getUint16(_IYkDmXNL * 2).toString(16)); _rkWJaVzV = _SGotdwrR.join(":"); break;
        default: return { error: true, details: `Invalid _FvxvxSJl _UXBTgEqt: ${_EFfSaQgL}` };
    }
    if (!_rkWJaVzV) return { error: true, details: "Target _IFBBpZwc is empty" };
    return { error: false, details: { _rkWJaVzV, _cqYGiUnn, _ptSBHVCl, payloadIndex: _kZTzGACI + _epODEeKF } };
}

async function _rKgEexgJ(_JerZvKnZ, _QyIGIUpH, _TaEYOPrW, _cdxbobdm) {
    let _CGaFRAzb = _TaEYOPrW;
    let _KXsSnomD = false;
    let _LVousFfx = _JerZvKnZ._BHEltgFL.pipeTo(new WritableStream({
        write(chunk) {
            _KXsSnomD = true;
            if (_QyIGIUpH.readyState !== 1) throw new Error("Channel is not open");
            if (_CGaFRAzb) {
                const _vCrlbHkS = new Uint8Array(_CGaFRAzb.byteLength + chunk.byteLength);
                _vCrlbHkS._qvoYxgpO(new Uint8Array(_CGaFRAzb));
                _vCrlbHkS._qvoYxgpO(new Uint8Array(chunk), _CGaFRAzb.byteLength);
                _QyIGIUpH.send(_vCrlbHkS._RoSbhxYT);
                _CGaFRAzb = null;
            } else {
                _QyIGIUpH.send(chunk);
            }
        },
        close() {}
    }), { signal: new AbortController().signal }).catch((err) => {
        console.error("Pipe to _QyIGIUpH error:", err._eYQEWIkQ);
    });

    await _LVousFfx;
    if (!_KXsSnomD && _cdxbobdm) {
        _cdxbobdm();
    }
}

function _jLLIubut(_QyIGIUpH) {
    try { if (_QyIGIUpH.readyState === 1 || _QyIGIUpH.readyState === 2) _QyIGIUpH.close(); } catch (_vzeKvyUe) {}
}

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

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

async function _qcHJyDzM(_fOEGokng, _FDDqMfzR, _cdxbobdm) {
    try {
        const _rdaWrzdR = await fetch(_fOEGokng, {
            _IsyuVVgp: { 'User-Agent': 'Cloudflare-Worker-IP-Scanner' }
        });
        if (!_rdaWrzdR.ok) {
            console.error(`获取 ${_fOEGokng} 失败: HTTP ${_rdaWrzdR.status}`);
            return _cdxbobdm;
        }
        const _WymvkWHi = await _rdaWrzdR._WymvkWHi();
        return _FDDqMfzR(_WymvkWHi);
    } catch (error) {
        console.error(`获取或解析 ${_fOEGokng} 时发生网络错误: ${error._eYQEWIkQ}`);
        return _cdxbobdm;
    }
}

function _gvVzxATk(_WymvkWHi) {
    if (!_WymvkWHi) return [];
    const _OFHivTyi = /^(?:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/\d{1,2}|[0-9a-fA-F:]+\/\d{1,3})$/;
    const _QtltJsOj = _WymvkWHi.split(/[\s,;#|]+/);
    const _RmvbJxNk = [];
    for (const _VHlJvGVj of _QtltJsOj) {
        const _ITMevMpV = _VHlJvGVj.trim();
        if (!_ITMevMpV) continue;
        const _nMZiCHzx = _ITMevMpV.lastIndexOf(':');
        let _IphTnyEB = _ITMevMpV;
        if(_nMZiCHzx > _ITMevMpV.lastIndexOf(']')) {
             const _lOcjegWt = _ITMevMpV.substring(_nMZiCHzx + 1);
             if(!isNaN(_lOcjegWt) && _lOcjegWt._dMuZadRi > 0) {
                _IphTnyEB = _ITMevMpV.substring(0, _nMZiCHzx);
             }
        }
        if (_KSFScGkM.isValid(_IphTnyEB.replace(/[\[\]]/g, '')) || _OFHivTyi.test(_ITMevMpV)) {
            _RmvbJxNk.push(_ITMevMpV);
        }
    }
    return _RmvbJxNk;
}

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

function _mLNyGZQR(_WymvkWHi) {
    if (!_WymvkWHi) return { "N/A": "未知" };
    try {
        return JSON.parse(`{${_WymvkWHi}}`);
    } catch (_vzeKvyUe) {
        console.error("解析 _WGkGtzJj 失败:", _vzeKvyUe);
        return { "N/A": "未知" };
    }
}

const _KSFScGkM = {
    isValid: (_aZDjsUtb) => _KSFScGkM.isIPv4(_aZDjsUtb) || _KSFScGkM.isIPv6(_aZDjsUtb),
    isIPv4: (_aZDjsUtb) => {
        if (typeof _aZDjsUtb !== 'string') return false;
        const _SGotdwrR = _aZDjsUtb.split('.');
        if (_SGotdwrR._dMuZadRi !== 4) return false;
        return _SGotdwrR.every(_pHAEwZUK => {
            const _GzIvwYUA = parseInt(_pHAEwZUK, 10);
            return !isNaN(_GzIvwYUA) && _GzIvwYUA >= 0 && _GzIvwYUA <= 255 && String(_GzIvwYUA) === _pHAEwZUK;
        });
    },
    isIPv6: (_aZDjsUtb) => {
        if (typeof _aZDjsUtb !== '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]))$/_IYkDmXNL.test(_aZDjsUtb);
    },
    toLong4: (_aZDjsUtb) => _aZDjsUtb.split('.').reduce((acc, octet, _IYkDmXNL) => acc + (parseInt(octet) << (8*(3-_IYkDmXNL))),0)>>>0,
    fromLong4: (long) => [(long>>>24)&0xFF,(long>>>16)&0xFF,(long>>>8)&0xFF,long&0xFF].join('.'),
    toBigInt6: (_aZDjsUtb) => {
        try {
            const _JuTHHtAf = _aZDjsUtb.split('/')[0];
            const _SGotdwrR = _JuTHHtAf.split('::');
            if (_SGotdwrR._dMuZadRi > 2) return 0n;
            let _mVNFJTwQ = [];
            if (_SGotdwrR[0]) {
                _mVNFJTwQ = _SGotdwrR[0].split(':');
            }
            let _WNzKSHQq = [];
            if (_SGotdwrR._dMuZadRi > 1 && _SGotdwrR[1]) {
                _WNzKSHQq = _SGotdwrR[1].split(':');
            }
            if (_mVNFJTwQ._dMuZadRi + _WNzKSHQq._dMuZadRi > 8) return 0n;
            const _TiyqlXqg = 8 - (_mVNFJTwQ._dMuZadRi + _WNzKSHQq._dMuZadRi);
            const _UfUWCqAy = [
                ..._mVNFJTwQ,
                ...Array(_TiyqlXqg).fill('0'),
                ..._WNzKSHQq
            ].map(_pHAEwZUK => _pHAEwZUK || '0');
            while(_UfUWCqAy._dMuZadRi < 8) {
                _UfUWCqAy.push('0');
            }
            let _wwVCNwwL = 0n;
            for (const _pHAEwZUK of _UfUWCqAy) {
                if (_pHAEwZUK._dMuZadRi > 4) return 0n;
                const _mwoHcfHB = BigInt('0x' + _pHAEwZUK);
                _wwVCNwwL = (_wwVCNwwL << 16n) | _mwoHcfHB;
            }
            return _wwVCNwwL;
        } catch(_vzeKvyUe) {
            return 0n;
        }
    },
    fromBigInt6: (_wwVCNwwL) => {
        if (typeof _wwVCNwwL !== '_wwVCNwwL' || _wwVCNwwL < 0n) return null;
        const _SGotdwrR = [];
        for (let _IYkDmXNL = 0; _IYkDmXNL < 8; _IYkDmXNL++) {
            _SGotdwrR.unshift((_wwVCNwwL & 0xFFFFn).toString(16));
            _wwVCNwwL >>= 16n;
        }
        let _ABnbcSWy = { start: -1, _zTMKpMfT: 0 };
        let _aCekumWK = { start: -1, _zTMKpMfT: 0 };
        for (let _IYkDmXNL = 0; _IYkDmXNL < 8; _IYkDmXNL++) {
            if (_SGotdwrR[_IYkDmXNL] === '0') {
                if (_aCekumWK.start === -1) _aCekumWK.start = _IYkDmXNL;
                _aCekumWK._zTMKpMfT++;
            } else {
                if (_aCekumWK._zTMKpMfT > _ABnbcSWy._zTMKpMfT) _ABnbcSWy = { ..._aCekumWK };
                _aCekumWK = { start: -1, _zTMKpMfT: 0 };
            }
        }
        if (_aCekumWK._zTMKpMfT > _ABnbcSWy._zTMKpMfT) _ABnbcSWy = { ..._aCekumWK };
        if (_ABnbcSWy._zTMKpMfT > 1) {
            _SGotdwrR.splice(_ABnbcSWy.start, _ABnbcSWy._zTMKpMfT, '');
            if (_ABnbcSWy.start === 0) _SGotdwrR.unshift('');
            if (_ABnbcSWy.start + _ABnbcSWy._zTMKpMfT === 8) _SGotdwrR.push('');
        }
        return _SGotdwrR.join(':');
    },
    cidrToRange: (cidr, _nIctAOcS = 1) => {
        try {
            const [range, bitsStr] = cidr.split('/');
            const _wjSGYrcS = parseInt(bitsStr, 10);
            const _GsllkkcB = new Set();
            if (_KSFScGkM.isIPv4(range)) {
                if (isNaN(_wjSGYrcS) || _wjSGYrcS < 8 || _wjSGYrcS > 32) return [];
                if (_wjSGYrcS === 32) return [range];
                const _SpveovVZ = _KSFScGkM.toLong4(range);
                const _kLyipGjk = (0xFFFFFFFF << (32 - _wjSGYrcS)) >>> 0;
                const _hfyqcHps = _SpveovVZ & _kLyipGjk;
                const _BaiYnbTy = 1 << (32 - _wjSGYrcS);
                if (_BaiYnbTy <= 2) return [];
                const _ScNIVZtE = Math.min(_nIctAOcS, _BaiYnbTy - 2);
                let _GuSVsPqX = 0;
                while (_GsllkkcB.size < _ScNIVZtE && _GuSVsPqX < _ScNIVZtE * 5) {
                    const _XcIZJCFj = Math.floor(Math.random() * (_BaiYnbTy - 2)) + 1;
                    _GsllkkcB.add(_KSFScGkM.fromLong4((_hfyqcHps + _XcIZJCFj) >>> 0));
                    _GuSVsPqX++;
                }
                return Array.from(_GsllkkcB);
            } else if (_KSFScGkM.isIPv6(range)) {
                if (isNaN(_wjSGYrcS) || _wjSGYrcS < 16 || _wjSGYrcS > 128) return [];
                 if (_wjSGYrcS === 128) return [range];
                const _yrKSlpDk = _KSFScGkM.toBigInt6(range);
                const _kLyipGjk = (2n ** BigInt(128 - _wjSGYrcS) - 1n);
                const _hfyqcHps = _yrKSlpDk & ~_kLyipGjk;
                const _qmtINvqt = 2n ** BigInt(128 - _wjSGYrcS);
                if (_qmtINvqt <= 2n) return [];
                let _GuSVsPqX = 0;
                while (_GsllkkcB.size < _nIctAOcS && _GuSVsPqX < _nIctAOcS * 5) {
                     const _QVVzuPFP = new Uint8Array(16);
                     (typeof crypto !== 'undefined' ? crypto : self.crypto).getRandomValues(_QVVzuPFP);
                     let _HYvrMbcN = 0n;
                     for (const _gvLWctEj of _QVVzuPFP) {
                         _HYvrMbcN = (_HYvrMbcN << 8n) | BigInt(_gvLWctEj);
                     }
                     const _XcIZJCFj = _HYvrMbcN % (_qmtINvqt - 2n) + 1n;
                     _GsllkkcB.add(_KSFScGkM.fromBigInt6(_hfyqcHps + _XcIZJCFj));
                     _GuSVsPqX++;
                }
                return Array.from(_GsllkkcB);
            }
            return [];
        } catch(_vzeKvyUe) {
            console.error(`CIDR to range failed for ${cidr}:`, _vzeKvyUe);
            return [];
        }
    }
};

function _wWBHiKXQ(_apTxiHos, _rnHNVGld) {
    const _ghYQrezC = {};
    const _gtDzgYOw = Object._gtDzgYOw(_rnHNVGld);
    const _SGotdwrR = _gtDzgYOw.map(_UeiSOQnr => {
        const _pmAqbGxj = _apTxiHos * (_rnHNVGld[_UeiSOQnr] / 100);
        return { _UeiSOQnr, _nIctAOcS: Math.floor(_pmAqbGxj), remainder: _pmAqbGxj - Math.floor(_pmAqbGxj) };
    });
    let _PtDvorbP = _SGotdwrR.reduce((acc, _pHAEwZUK) => acc + _pHAEwZUK._nIctAOcS, 0);
    _SGotdwrR.sort((a, b) => b.remainder - a.remainder);
    let _xcNHBjnG = _apTxiHos - _PtDvorbP;
    for (let _IYkDmXNL = 0; _IYkDmXNL < _xcNHBjnG; _IYkDmXNL++) {
        _SGotdwrR[_IYkDmXNL % _SGotdwrR._dMuZadRi]._nIctAOcS++;
    }
    for (const _pHAEwZUK of _SGotdwrR) {
        _ghYQrezC[_pHAEwZUK._UeiSOQnr] = _pHAEwZUK._nIctAOcS;
    }
    return _ghYQrezC;
}

async function _sSSkuqRv(_UbhXYzzE) {
    const _aOaUXRJH = _UbhXYzzE.DB.prepare("SELECT _mwoHcfHB FROM kv_data WHERE _UeiSOQnr = ?").bind(_VnUuRyKy);
    const { _VFJsWnNT } = await _aOaUXRJH.all();
    return _VFJsWnNT._dMuZadRi > 0 ? _VFJsWnNT[0]._mwoHcfHB : null;
}

async function _fEWdfIwb(_UbhXYzzE, _UjsPUDqg) {
    const _aOaUXRJH = _UbhXYzzE.DB.prepare(
        "INSERT INTO kv_data (_UeiSOQnr, _mwoHcfHB) VALUES (?, ?) ON CONFLICT(_UeiSOQnr) DO UPDATE SET _mwoHcfHB = excluded._mwoHcfHB"
    );
    await _aOaUXRJH.bind(_VnUuRyKy, _UjsPUDqg).run();
}

async function _DORownbU(_FwagrbYr, _UbhXYzzE) {
    const { _UjsPUDqg } = await _FwagrbYr.json();
    const _ZifDXOCu = await _sSSkuqRv(_UbhXYzzE);
    if (_ZifDXOCu === _UjsPUDqg) {
        return _aUXHsBmB({ success: true });
    }
    return _aUXHsBmB({ success: false, _eYQEWIkQ: '密码错误' }, 401);
}

async function _bMlVcWRb(_FwagrbYr, _UbhXYzzE) {
    const _obKotQzd = await _rBzwWiYS(_UbhXYzzE);
    if (!_obKotQzd.visitorPassword || !_obKotQzd.visitorPassword._rtrtEvxp) {
        return _aUXHsBmB({ success: true });
    }
    try {
        const { _UjsPUDqg } = await _FwagrbYr.json();
        const _zmEPgdvF = _obKotQzd.visitorPassword._UjsPUDqg;
        if (_zmEPgdvF && _UjsPUDqg === _zmEPgdvF) {
            return _aUXHsBmB({ success: true });
        }
        return _aUXHsBmB({ success: false, _eYQEWIkQ: '访客密码错误' }, 401);
    } catch (_vzeKvyUe) {
        return _aUXHsBmB({ success: false, _eYQEWIkQ: '无效请求' }, 400);
    }
}

async function _zuAEHNNM(_FwagrbYr, _UbhXYzzE) {
    const _eNvhlCHD = await _sSSkuqRv(_UbhXYzzE);
    if (_eNvhlCHD) {
        return _aUXHsBmB({ success: false, _eYQEWIkQ: "密码已设置,无法重复初始化。" }, 403);
    }
    const { _UjsPUDqg } = await _FwagrbYr.json();
    if (!_UjsPUDqg || _UjsPUDqg._dMuZadRi < 6) {
        return _aUXHsBmB({ success: false, _eYQEWIkQ: "密码长度不能少于6位。" }, 400);
    }
    await _fEWdfIwb(_UbhXYzzE, _UjsPUDqg);
    return _aUXHsBmB({ success: true, _eYQEWIkQ: "初始密码设置成功!请刷新页面并登录。" });
}

async function _nWVknaRr(_FwagrbYr, _UbhXYzzE) {
    const { _zDvKlXNR, _pvCpsFXk } = await _FwagrbYr.json();
    const _ZifDXOCu = await _sSSkuqRv(_UbhXYzzE);
    if (_ZifDXOCu !== _zDvKlXNR) {
        return _aUXHsBmB({ success: false, _eYQEWIkQ: "旧密码错误。" }, 403);
    }
    if (!_pvCpsFXk || _pvCpsFXk._dMuZadRi < 6) {
        return _aUXHsBmB({ success: false, _eYQEWIkQ: "新密码长度不能少于6位。" }, 400);
    }
    await _fEWdfIwb(_UbhXYzzE, _pvCpsFXk);
    return _aUXHsBmB({ success: true, _eYQEWIkQ: "密码修改成功!" });
}

function _NtZoYRbh() {
    return {
        theme: 'theme-aurora-glass',
        primaryColor: '#00A0FF',
        particleColor: '#FFFFFF',
        useResolvedDomains: false,
        resolvedDomains: '',
        sampleSize: 150,
        topN: 10,
        rttRandomMin: 79,
        rttRandomMax: 179,
        _fUFowuJi: '',
        api: {
            _rtrtEvxp: true,
            _eYQEWIkQ: '维护中...',
        },
        ispFilter: { _rtrtEvxp: true },
        geoLocation: {
            retries: 1,
            filterUnknown: false,
        },
        streamer: {
            _rtrtEvxp: true
        },
        websocketStreamer: {
            _rtrtEvxp: true,
            _fOEGokng: 'https://snippets.neib.cn'
        },
        cloudStorage: {
            _rtrtEvxp: true
        },
        visitorPassword: {
            _rtrtEvxp: false,
            _UjsPUDqg: '',
        },
        customSubPath: {
            _rtrtEvxp: false,
            _BYwFCSys: 'latest',
        },
        subscriptionId: {
            _dMuZadRi: 8,
            _umbKVliz: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
        },
        itemLink: {
            _rtrtEvxp: true,
            template: 'vless://{_AZzkPZSq}@{_aZDjsUtb}:{_WSfhREhx}?encryption=none&security=tls&sni={_IFBBpZwc}&fp=random&_UXBTgEqt=ws&_IFBBpZwc={_IFBBpZwc}&_BYwFCSys={_BYwFCSys}#{_LNRsGfZM}',
            selectionMode: 'first',
            _JUAehFpn: [
                { _LNRsGfZM: '默认配置', _IFBBpZwc: '', '_AZzkPZSq': '3b4d4cd8-cb92-4421-bf86-fb51570fc038', _BYwFCSys: '/?ed=2560' }
            ],
            _VFTCKnaq: [],
        },
        dataFeeds: {
            universalFallbackAddress: '',
        },
        announcement: {
            popup: {
                _rtrtEvxp: false,
                _WymvkWHi: '',
                _WpucuzIG: 5
            },
            marquee: {
                _rtrtEvxp: false,
                _WymvkWHi: ''
            }
        },
        subscriptionUrl: {
            prefixEnabled: false,
            prefixUrl: '',
            suffixEnabled: false,
            suffixUrl: ''
        },
        fineGrained: {
            _rtrtEvxp: true,
            sources: [
                { _ESTsaTiw: 'CF官方IPV4', _GsllkkcB: 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/IPV4', _DKBTBPHa: false, _rtrtEvxp: true, _McxEmfZN: 20 },
                { _ESTsaTiw: 'CF官方IPV6', _GsllkkcB: 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/IPV6', _DKBTBPHa: false, _rtrtEvxp: true, _McxEmfZN: 20 },
                { _ESTsaTiw: '反代优选0', _GsllkkcB: 'https://wvs.sosorg.nyc.mn/sub?_AZzkPZSq=adb14576-6588-40da-99fd-b9894cd779b0&encryption=none&security=tls&sni=ss.nzvrn.com&_UXBTgEqt=ws&_IFBBpZwc=ss.nzvrn.com&_BYwFCSys=%2Fsnippets%3Fip%3DendpointAddress%3Aport%28443%29%26nat64%3D6to4', _DKBTBPHa: false, _rtrtEvxp: true, _McxEmfZN: 30 },
                { _ESTsaTiw: '官方优选1', _GsllkkcB: 'https://ipdb.api.030101.xyz/?_UXBTgEqt=bestcf&_gKXIPRnd=true', _DKBTBPHa: false, _rtrtEvxp: true, _McxEmfZN: 10 },
                { _ESTsaTiw: '反代优选2', _GsllkkcB: 'https://ipdb.api.030101.xyz/?_UXBTgEqt=bestproxy&_gKXIPRnd=true', _DKBTBPHa: false, _rtrtEvxp: true, _McxEmfZN: 5 },
                { _ESTsaTiw: '官方优选2', _GsllkkcB: 'https://addressesapi.090227.xyz/_aZDjsUtb.164746.xyz', _DKBTBPHa: false, _rtrtEvxp: true, _McxEmfZN: 10 },
				{ _ESTsaTiw: '官方优选3', _GsllkkcB: 'https://cfxr.eu.org/getSub?_IFBBpZwc=snipaste.huggy.qzz.io', _DKBTBPHa: false, _rtrtEvxp: true, _McxEmfZN: 5 },
                { _ESTsaTiw: '官方优选4', _GsllkkcB: 'https://addressesapi.090227.xyz/CloudFlareYes', _DKBTBPHa: false, _rtrtEvxp: true, _McxEmfZN: 10 }
            ]
        },
        customNodes: {
            _rtrtEvxp: 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 _NIaoxJkb(_kLYpIYOj, _ryjHlkQf) {
    if (!_kLYpIYOj) return _ryjHlkQf;
    const _RnotFjis = { ..._ryjHlkQf };
    for (const _UeiSOQnr in _ryjHlkQf) {
        if (_kLYpIYOj.hasOwnProperty(_UeiSOQnr)) {
             if (typeof _kLYpIYOj[_UeiSOQnr] === 'object' && _kLYpIYOj[_UeiSOQnr] !== null && !Array.isArray(_kLYpIYOj[_UeiSOQnr]) && typeof _ryjHlkQf[_UeiSOQnr] === 'object' && _ryjHlkQf[_UeiSOQnr] !== null && !Array.isArray(_ryjHlkQf[_UeiSOQnr])) {
                _RnotFjis[_UeiSOQnr] = _NIaoxJkb(_kLYpIYOj[_UeiSOQnr], _ryjHlkQf[_UeiSOQnr]);
            } else {
                _RnotFjis[_UeiSOQnr] = _kLYpIYOj[_UeiSOQnr];
            }
        }
    }
    return _RnotFjis;
}

async function _rBzwWiYS(_UbhXYzzE) {
    try {
        const _aOaUXRJH = _UbhXYzzE.DB.prepare("SELECT _mwoHcfHB FROM kv_data WHERE _UeiSOQnr = ?").bind(_gRDjVeSQ);
        const { _VFJsWnNT } = await _aOaUXRJH.all();
        const _zSBFTfne = _VFJsWnNT._dMuZadRi > 0 ? _VFJsWnNT[0]._mwoHcfHB : null;
        const _ETFPOSPN = _zSBFTfne ? JSON.parse(_zSBFTfne) : {};
        return _NIaoxJkb(_ETFPOSPN, _NtZoYRbh());
    } catch (_vzeKvyUe) {
        console.error("无法从D1获取或解析全局配置:", _vzeKvyUe);
        return _NtZoYRbh();
    }
}

async function _UUOlYLpp(_UbhXYzzE) {
    const _WPFXtADK = await _rBzwWiYS(_UbhXYzzE);
    return _aUXHsBmB(_WPFXtADK);
}

async function _fjjoPDMz(_FwagrbYr, _UbhXYzzE, _iIKAUBYV) {
    try {
        const { _WPFXtADK, adminPassword } = await _FwagrbYr.json();
        const _ZifDXOCu = await _sSSkuqRv(_UbhXYzzE);
        if (_ZifDXOCu !== adminPassword) {
            return _aUXHsBmB({ success: false, _eYQEWIkQ: "管理员密码错误" }, 403);
        }
        const _aOaUXRJH = _UbhXYzzE.DB.prepare(
          "INSERT INTO kv_data (_UeiSOQnr, _mwoHcfHB) VALUES (?, ?) ON CONFLICT(_UeiSOQnr) DO UPDATE SET _mwoHcfHB = excluded._mwoHcfHB"
        );
        const _bESkzHnQ = _aOaUXRJH.bind(_gRDjVeSQ, JSON.stringify(_WPFXtADK)).run();
        _iIKAUBYV.waitUntil(_bESkzHnQ);
        return _aUXHsBmB({ success: true, _eYQEWIkQ: "配置已成功保存!" });
    } catch (_vzeKvyUe) {
        return _aUXHsBmB({ success: false, _eYQEWIkQ: `保存失败: ${_vzeKvyUe._eYQEWIkQ}` }, 500);
    }
}

async function _wTQqVogn() {
    const _PjjexPZd = 'https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=zh-CN';
    try {
        const _tjOkksSL = await fetch(_PjjexPZd);
        const _FLpmPuLX = await _tjOkksSL.json();
        const _ujBqhshG = 'https://www.bing.com' + _FLpmPuLX.images[0]._fOEGokng;
        return fetch(_ujBqhshG);
    } catch (_vzeKvyUe) {
        return new Response('获取壁纸失败', { status: 502 });
    }
}

async function _VfpwbhNy(_aZDjsUtb) {
    try {
        const _rdaWrzdR = await fetch(`http://_aZDjsUtb-api.com/json/${_aZDjsUtb}?fields=status,_gKXIPRnd,countryCode,_UmebUcxD&lang=zh-CN`);
        if (_rdaWrzdR.ok) {
            const _jsLZsuJF = await _rdaWrzdR.json();
            if (_jsLZsuJF.status === 'success' && (_jsLZsuJF.countryCode || _jsLZsuJF._gKXIPRnd)) {
                let _UmebUcxD = _jsLZsuJF._UmebUcxD || '未知';
                if (_UmebUcxD.toLowerCase().includes('cloudflare')) {
                    _UmebUcxD = 'CloudFlare';
                }
                return {
                    _ESTsaTiw: _WGkGtzJj[_jsLZsuJF.countryCode] || _jsLZsuJF._gKXIPRnd || _jsLZsuJF.countryCode,
                    _UmebUcxD: _UmebUcxD
                };
            }
        }
    } catch (_vzeKvyUe) {}

    try {
        const _rdaWrzdR = await fetch(`https://api._aZDjsUtb.sb/geoip/${_aZDjsUtb}`);
        if (_rdaWrzdR.ok) {
            const _jsLZsuJF = await _rdaWrzdR.json();
            if (_jsLZsuJF.country_code || _jsLZsuJF._gKXIPRnd) {
                let _UmebUcxD = _jsLZsuJF._UmebUcxD || '未知';
                if (_UmebUcxD.toLowerCase().includes('cloudflare')) {
                    _UmebUcxD = 'CloudFlare';
                }
                return {
                    _ESTsaTiw: _WGkGtzJj[_jsLZsuJF.country_code] || _jsLZsuJF._gKXIPRnd || _jsLZsuJF.country_code,
                    _UmebUcxD: _UmebUcxD
                };
            }
        }
    } catch (_vzeKvyUe) {}
    
    return { _ESTsaTiw: '未知', _UmebUcxD: '未知' };
}

async function _tPZYYgYI(_FwagrbYr, _UbhXYzzE) {
    try {
        const { _GsllkkcB } = await _FwagrbYr.json();
        if (!Array.isArray(_GsllkkcB)) {
            return _aUXHsBmB({ error: "输入无效,需要一个IP数组。" }, 400);
        }
        const _ImbPjoSl = _GsllkkcB.map(_aZDjsUtb => _VfpwbhNy(_aZDjsUtb).then(_lxiQIxVD => ({ _aZDjsUtb, ..._lxiQIxVD })));
        const _VFJsWnNT = await Promise.all(_ImbPjoSl);
        return _aUXHsBmB(_VFJsWnNT);
    } catch (_vzeKvyUe) {
        return _aUXHsBmB({ error: `获取地理位置失败: ${_vzeKvyUe._eYQEWIkQ}` }, 500);
    }
}

async function _FlWdCdSA(_FwagrbYr, _UbhXYzzE) {
    const _WPFXtADK = await _rBzwWiYS(_UbhXYzzE);
    if (!_WPFXtADK.cloudStorage._rtrtEvxp) {
        return _aUXHsBmB({ _VFJsWnNT: [], generatedBy: null });
    }
    try {
        const _aOaUXRJH = _UbhXYzzE.DB.prepare("SELECT _mwoHcfHB FROM kv_data WHERE _UeiSOQnr = ?").bind(_HdyLrlof);
        const { _VFJsWnNT } = await _aOaUXRJH.all();
        const _fnhJpkWj = _VFJsWnNT._dMuZadRi > 0 ? _VFJsWnNT[0]._mwoHcfHB : null;
        const _gQAmJoXJ = _fnhJpkWj ? JSON.parse(_fnhJpkWj) : null;
        return _aUXHsBmB(_gQAmJoXJ || { _VFJsWnNT: [], generatedBy: null });
    } catch (_vzeKvyUe) {
        console.error("从D1读取缓存IP失败:", _vzeKvyUe);
        return _aUXHsBmB({ _VFJsWnNT: [], generatedBy: null });
    }
}

async function _ViVEDERP(_FwagrbYr, _UbhXYzzE, _iIKAUBYV) {
    const _WPFXtADK = await _rBzwWiYS(_UbhXYzzE);
    if (!_WPFXtADK.cloudStorage._rtrtEvxp) {
        return _aUXHsBmB({ success: true, _eYQEWIkQ: "云端存储已禁用,不保存结果。" });
    }
    const _MiHYhayc = _FwagrbYr._IsyuVVgp.get('CF-Connecting-IP') || "未知IP";
    const _gKXIPRnd = _FwagrbYr.cf?._gKXIPRnd || "未知";
    const _ORgOIQgk = _FwagrbYr.cf?._ORgOIQgk || "";
    let _ZkYLKFLR = _WGkGtzJj[_gKXIPRnd] || _gKXIPRnd;
    if (_ORgOIQgk && _ORgOIQgk !== "未知城市" && _ORgOIQgk !== _gKXIPRnd) _ZkYLKFLR = `${_ZkYLKFLR} ${_WGkGtzJj[_ORgOIQgk] || _ORgOIQgk}`;
    const _veHjHAPg = {
        _aZDjsUtb: _WUVkYlFP(_MiHYhayc),
        _ESTsaTiw: _ZkYLKFLR.trim(),
        time: _VajyXDhR()
    };
    try {
        const _fGsQODDT = await _FwagrbYr.json();
        if (!Array.isArray(_fGsQODDT)) return _aUXHsBmB({ error: "无效数据格式" }, 400);
        const _zJpPFojB = _fGsQODDT.map(_fSQsXIKa => ({
            _aZDjsUtb: String(_fSQsXIKa._aZDjsUtb || ''),
            _WSfhREhx: _fSQsXIKa._WSfhREhx ? parseInt(_fSQsXIKa._WSfhREhx, 10) : undefined,
            _peNpuZEk: parseInt(_fSQsXIKa._peNpuZEk, 10),
            _ESTsaTiw: typeof _fSQsXIKa._ESTsaTiw === 'string' ? _fSQsXIKa._ESTsaTiw.substring(0, 50) : 'N/A',
            _UmebUcxD: typeof _fSQsXIKa._UmebUcxD === 'string' ? _fSQsXIKa._UmebUcxD.substring(0, 100) : 'N/A'
        }));
        const _rWayJvHI = {
            generatedBy: _veHjHAPg,
            _VFJsWnNT: _zJpPFojB
        };
        const _aGjWSiOk = _UbhXYzzE.DB.prepare(
          "INSERT INTO kv_data (_UeiSOQnr, _mwoHcfHB) VALUES (?, ?) ON CONFLICT(_UeiSOQnr) DO UPDATE SET _mwoHcfHB = excluded._mwoHcfHB"
        ).bind(_HdyLrlof, JSON.stringify(_rWayJvHI)).run();
        if (_WPFXtADK.telegram.bot_token && _WPFXtADK.telegram.chat_id) {
            const _BfopKemS = _zJpPFojB.map(r => `${r._aZDjsUtb} ~ ${r._ESTsaTiw}`).join('\n');
            const _mYYpObNd = `优选完成!\n来源: ${_veHjHAPg._aZDjsUtb} (${_veHjHAPg._ESTsaTiw})\n时间: ${_veHjHAPg.time}\n\n结果:\n${_BfopKemS}`;
            const _NqCYHavP = `https://api.telegram.org/bot${_WPFXtADK.telegram.bot_token}/sendMessage?chat_id=${_WPFXtADK.telegram.chat_id}&_WymvkWHi=${encodeURIComponent(_mYYpObNd)}`;
            const _PBovReJB = fetch(_NqCYHavP).catch(_vzeKvyUe => console.error("Telegram结果通知失败:", _vzeKvyUe));
            _iIKAUBYV.waitUntil(Promise.all([_aGjWSiOk, _PBovReJB]));
        } else {
             _iIKAUBYV.waitUntil(_aGjWSiOk);
        }
        return _aUXHsBmB({ success: true, _eYQEWIkQ: "结果已保存" });
    } catch (_vzeKvyUe) {
        return _aUXHsBmB({ error: "D1写入失败", _eYQEWIkQ: _vzeKvyUe._eYQEWIkQ }, 500);
    }
}

async function _dTCprawP(_FwagrbYr, _UbhXYzzE, _iIKAUBYV) {
    try {
        const _DDXhsdBc = await _FwagrbYr.json();
        if (!Array.isArray(_DDXhsdBc)) return _aUXHsBmB({ error: "无效数据格式" }, 400);
        const _rWayJvHI = {
            _VFJsWnNT: _DDXhsdBc
        };
        const _aOaUXRJH = _UbhXYzzE.DB.prepare(
          "INSERT INTO kv_data (_UeiSOQnr, _mwoHcfHB) VALUES (?, ?) ON CONFLICT(_UeiSOQnr) DO UPDATE SET _mwoHcfHB = excluded._mwoHcfHB"
        );
        const _bESkzHnQ = _aOaUXRJH.bind(_PkuVAPEN, JSON.stringify(_rWayJvHI)).run();
        _iIKAUBYV.waitUntil(_bESkzHnQ);
        return _aUXHsBmB({ success: true });
    } catch (_vzeKvyUe) {
        return _aUXHsBmB({ error: "D1写入临时缓存失败", _eYQEWIkQ: _vzeKvyUe._eYQEWIkQ }, 500);
    }
}

function _xTTfmWOT(_dMuZadRi, _umbKVliz) {
    let _eYItWoTE = '';
    const _iANsJZOD = _umbKVliz._dMuZadRi;
    for (let _IYkDmXNL = 0; _IYkDmXNL < _dMuZadRi; _IYkDmXNL++) {
        _eYItWoTE += _umbKVliz.charAt(Math.floor(Math.random() * _iANsJZOD));
    }
    return _eYItWoTE;
}

async function _KKKYHLRq(_FwagrbYr, _UbhXYzzE) {
    try {
        const _fGsQODDT = await _FwagrbYr.json();
        if (!Array.isArray(_fGsQODDT) || _fGsQODDT._dMuZadRi === 0) {
            return _aUXHsBmB({ error: "无效或空的IP列表" }, 400);
        }

        const _WPFXtADK = await _rBzwWiYS(_UbhXYzzE);
        const _ffwejLdh = _WPFXtADK.subscriptionId || { _dMuZadRi: 8, _umbKVliz: 'abcdefghijklmnopqrstuvwxyz0123456789' };

        let _qhCPTxFi;
        let _dFDgkCaK = false;
        let _GuSVsPqX = 0;
        const _xnYhzmat = 10;

        while (!_dFDgkCaK && _GuSVsPqX < _xnYhzmat) {
            _qhCPTxFi = _xTTfmWOT(_ffwejLdh._dMuZadRi, _ffwejLdh._umbKVliz);
            const { _VFJsWnNT } = await _UbhXYzzE.DB.prepare("SELECT _UwLxvUhK FROM optimized_results WHERE _UwLxvUhK = ?").bind(_qhCPTxFi).all();
            if (_VFJsWnNT._dMuZadRi === 0) {
                _dFDgkCaK = true;
            }
            _GuSVsPqX++;
        }

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

        const _jiYSOMQL = JSON.stringify({ _GsllkkcB: _fGsQODDT });
        await _UbhXYzzE.DB.prepare(
            "INSERT INTO optimized_results (_UwLxvUhK, _jsLZsuJF) VALUES (?, ?)"
        ).bind(_qhCPTxFi, _jiYSOMQL).run();
        await _UbhXYzzE.DB.prepare(
            "INSERT INTO kv_data (_UeiSOQnr, _mwoHcfHB) VALUES (?, ?) ON CONFLICT(_UeiSOQnr) DO UPDATE SET _mwoHcfHB = excluded._mwoHcfHB"
        ).bind(_KxvHZTEx, _qhCPTxFi).run();
            
        return _aUXHsBmB({ success: true, _UwLxvUhK: _qhCPTxFi });
    } catch (_vzeKvyUe) {
        return _aUXHsBmB({ error: "保存优选结果失败", _eYQEWIkQ: _vzeKvyUe._eYQEWIkQ }, 500);
    }
}

async function _pmszjqYV(_FwagrbYr, _UbhXYzzE) {
    try {
        const _qhCPTxFi = _FwagrbYr._jpuLTABc._UwLxvUhK;
        if (!_qhCPTxFi) {
            return new Response("缺少结果ID", { status: 400 });
        }
        const _eYItWoTE = await _UbhXYzzE.DB.prepare("SELECT _jsLZsuJF FROM optimized_results WHERE _UwLxvUhK = ?").bind(_qhCPTxFi).first();
        if (!_eYItWoTE) {
            return new Response("未找到对应的优选结果", { status: 404 });
        }
        const _jsLZsuJF = JSON.parse(_eYItWoTE._jsLZsuJF);
        let _BfopKemS = _jsLZsuJF._GsllkkcB;

        const _WPFXtADK = await _rBzwWiYS(_UbhXYzzE);

        if (_WPFXtADK.customNodes && _WPFXtADK.customNodes._rtrtEvxp && _WPFXtADK.customNodes.list) {
            const _eyhUTAnx = _WPFXtADK.customNodes.list.trim().split(/\s+/).filter(Boolean);
            const _WgKXBwpJ = _eyhUTAnx.map(_Ragnrjim => {
                let _FvxvxSJl = _Ragnrjim;
                let _WSfhREhx = undefined;
                let _LNRsGfZM = null;

                if (_FvxvxSJl.includes('@')) {
                    const _SGotdwrR = _FvxvxSJl.split('@');
                    _LNRsGfZM = _SGotdwrR.pop();
                    _FvxvxSJl = _SGotdwrR.join('@');
                }

                if (_FvxvxSJl.includes('#')) {
                    const _SGotdwrR = _FvxvxSJl.split('#');
                    const _lOcjegWt = _SGotdwrR.pop();
                    if (!isNaN(_lOcjegWt) && _lOcjegWt.trim() !== '') {
                        _WSfhREhx = parseInt(_lOcjegWt, 10);
                    }
                    _FvxvxSJl = _SGotdwrR.join('#');
                }
                
                return {
                    _aZDjsUtb: _FvxvxSJl,
                    _WSfhREhx: _WSfhREhx,
                    _ESTsaTiw: _LNRsGfZM || _FvxvxSJl,
                    _UmebUcxD: '自定义'
                };
            });
            _BfopKemS.unshift(..._WgKXBwpJ);
        }
        
        const { itemLink } = _WPFXtADK;
        const _mqRxsMyO = new URL(_FwagrbYr._fOEGokng)._PcWYljEb;
        let _NiijCpRS;

        if (_WPFXtADK.websocketStreamer && _WPFXtADK.websocketStreamer._rtrtEvxp) {
            if (!itemLink || !itemLink._rtrtEvxp || !itemLink._JUAehFpn || itemLink._JUAehFpn._dMuZadRi === 0) {
                return new Response("节点链接参数未配置或未启用 (反代模式)", { status: 500 });
            }
            _NiijCpRS = _BfopKemS.map((_fSQsXIKa, _MZXmGEAE) => {
                let _LNRsGfZM;
                if (_fSQsXIKa._UmebUcxD === '自定义') {
                     _LNRsGfZM = `${_MZXmGEAE + 1} - ${_fSQsXIKa._ESTsaTiw}`;
                } else {
                    _LNRsGfZM = `${_MZXmGEAE + 1} - ${_fSQsXIKa._ESTsaTiw || '未知'}`;
                    if (!_fSQsXIKa._UmebUcxD || !_fSQsXIKa._UmebUcxD.toLowerCase().includes('cloudflare')) {
                        _LNRsGfZM += '(反代)';
                    }
                }
                const _goQfDyAy = _KSFScGkM.isIPv6(_fSQsXIKa._aZDjsUtb) ? `[${_fSQsXIKa._aZDjsUtb}]` : _fSQsXIKa._aZDjsUtb;
                const _WSfhREhx = _fSQsXIKa._WSfhREhx || 443;
                const _EfxLeadY = itemLink._JUAehFpn[0];
                const _wENUjCGQ = _EfxLeadY._AZzkPZSq || '';
                const _AZzkPZSq = (_wENUjCGQ && _OLhztshU(_wENUjCGQ)) ? _wENUjCGQ : crypto.randomUUID();
                const _BYwFCSys = '/snippets?_aZDjsUtb=endpointAddress:_WSfhREhx(443)&nat64=6to4';
                const _IFBBpZwc = _EfxLeadY._IFBBpZwc || _mqRxsMyO;

                const _jpuLTABc = new URLSearchParams({
                    security: 'tls',
                    _UXBTgEqt: 'ws',
                    _IFBBpZwc: _IFBBpZwc,
                    sni: _IFBBpZwc,
                    fp: 'random'
                });
                return `vless://${_AZzkPZSq}@${_goQfDyAy}:${_WSfhREhx}?${_jpuLTABc.toString()}&_BYwFCSys=${encodeURIComponent(encodeURIComponent(_BYwFCSys))}#${encodeURIComponent(_LNRsGfZM)}`;
            });

        } else {
            if (!itemLink || !itemLink._rtrtEvxp || !itemLink._JUAehFpn || itemLink._JUAehFpn._dMuZadRi === 0) {
                return new Response("节点链接参数未配置或未启用", { status: 500 });
            }
            const _EfxLeadY = itemLink._JUAehFpn[0];
            const { _IFBBpZwc, _AZzkPZSq, _BYwFCSys } = _EfxLeadY;
            _NiijCpRS = _BfopKemS.map((_fSQsXIKa, _MZXmGEAE) => {
                let _LNRsGfZM;
                if (_fSQsXIKa._UmebUcxD === '自定义') {
                     _LNRsGfZM = `${_MZXmGEAE + 1} - ${_fSQsXIKa._ESTsaTiw}`;
                } else {
                    _LNRsGfZM = `${_MZXmGEAE + 1} - ${_fSQsXIKa._ESTsaTiw || '未知'}`;
                    if (!_fSQsXIKa._UmebUcxD || !_fSQsXIKa._UmebUcxD.toLowerCase().includes('cloudflare')) {
                        _LNRsGfZM += '(反代)';
                    }
                }
                const _goQfDyAy = _KSFScGkM.isIPv6(_fSQsXIKa._aZDjsUtb) ? `[${_fSQsXIKa._aZDjsUtb}]` : _fSQsXIKa._aZDjsUtb;
                const _WSfhREhx = _fSQsXIKa._WSfhREhx || 443;
                const _jpuLTABc = new URLSearchParams({
                    security: 'tls',
                    _UXBTgEqt: 'ws',
                    _IFBBpZwc: _IFBBpZwc || _mqRxsMyO,
                    sni: _IFBBpZwc || _mqRxsMyO,
                    fp: 'random'
                });
                return `vless://${_AZzkPZSq}@${_goQfDyAy}:${_WSfhREhx}?${_jpuLTABc.toString()}&_BYwFCSys=${encodeURIComponent(encodeURIComponent(_BYwFCSys || ''))}#${encodeURIComponent(_LNRsGfZM)}`;
            });
        }
        
        const _GqSJGGIz = _NiijCpRS.join('\n');
        const _MJTJzXXV = btoa(_GqSJGGIz);
        return new Response(_MJTJzXXV, {
            _IsyuVVgp: { 'Content-Type': '_WymvkWHi/plain; _umbKVliz=utf-8' }
        });

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

async function _pEGXWIBi(_FwagrbYr) {
    try {
        const { _kmzVsfbZ, _UXBTgEqt } = await _FwagrbYr.json();
        if (!Array.isArray(_kmzVsfbZ)) {
            return new Response('Invalid _kmzVsfbZ list', { status: 400 });
        }
        const _JhFXkbyo = _kmzVsfbZ.map(domain => {
            if (!domain.trim()) return Promise.resolve([]);
            const _fOEGokng = `https://cloudflare-dns.com/dns-query?_LNRsGfZM=${encodeURIComponent(domain.trim())}&_UXBTgEqt=${_UXBTgEqt || 'A'}`;
            return fetch(_fOEGokng, { _IsyuVVgp: { 'Accept': 'application/dns-json' } })
                .then(_rdaWrzdR => _rdaWrzdR.json())
                .then(_jsLZsuJF => (_jsLZsuJF.Answer ? _jsLZsuJF.Answer.map(a => a._jsLZsuJF) : []))
                .catch(() => []);
        });
        const _mAokfijM = (await Promise.all(_JhFXkbyo)).flat();
        const _iiljtjNW = [...new Set(_mAokfijM)];
        if (_iiljtjNW._dMuZadRi === 0) {
            return new Response('无法从域名解析出任何IP。', { status: 500 });
        }
        return new Response(_iiljtjNW.join('\n'), { _IsyuVVgp: { 'Content-Type': '_WymvkWHi/plain; _umbKVliz=utf-8' } });
    } catch (err) {
        return new Response(`域名解析错误: ${err._eYQEWIkQ}`, { status: 500 });
    }
}

async function _OIaaoiLe(_FwagrbYr, _UbhXYzzE) {
  try {
      const { _MRMmaQsl } = await _FwagrbYr.json();
      if (!Array.isArray(_MRMmaQsl)) {
          return _aUXHsBmB({ error: "Invalid input, expected an object with a '_MRMmaQsl' array." }, 400);
      }
      
      const _elFuqQzH = new Set();
      
      const _fkGEyGFq = _MRMmaQsl.map(_fOEGokng =>
          _oVRaKhMk(_fOEGokng)
              .then(_WymvkWHi => {
                  if (!_WymvkWHi) return;
                  const _QtltJsOj = _WymvkWHi.split(/[\s,;|]+/);
                  for (const _VHlJvGVj of _QtltJsOj) {
                      const _ITMevMpV = _VHlJvGVj.trim();
                      if (_ITMevMpV) {
                          _elFuqQzH.add(_ITMevMpV);
                      }
                  }
              })
              .catch(err => {
                  console.error(`Error processing URL ${_fOEGokng}:`, err);
              })
      );
      await Promise.all(_fkGEyGFq);
      return _aUXHsBmB({ _GsllkkcB: Array.from(_elFuqQzH) });
  } catch (_vzeKvyUe) {
      return _aUXHsBmB({ error: `Failed to process URLs: ${_vzeKvyUe._eYQEWIkQ}` }, 500);
  }
}

async function _nhauevih(_FwagrbYr, _UbhXYzzE) {
    const _WPFXtADK = await _rBzwWiYS(_UbhXYzzE);
    if (!_WPFXtADK.api._rtrtEvxp) {
        return new Response(_WPFXtADK.api._eYQEWIkQ || 'API is disabled.', { status: 503 });
    }
    try {
        const _aOaUXRJH = _UbhXYzzE.DB.prepare("SELECT _mwoHcfHB FROM kv_data WHERE _UeiSOQnr = ?").bind(_HdyLrlof);
        const { _VFJsWnNT: dbResults } = await _aOaUXRJH.all();
        const _fnhJpkWj = dbResults._dMuZadRi > 0 ? dbResults[0]._mwoHcfHB : null;
        const _gQAmJoXJ = _fnhJpkWj ? JSON.parse(_fnhJpkWj) : null;
        if (!_gQAmJoXJ || !_gQAmJoXJ._VFJsWnNT || _gQAmJoXJ._VFJsWnNT._dMuZadRi === 0) {
            return new Response("上次优选结果为空。", {
                status: 404,
                _IsyuVVgp: { 'Content-Type': '_WymvkWHi/plain; _umbKVliz=utf-8' },
            });
        }
        const _GsllkkcB = _gQAmJoXJ._VFJsWnNT.map(r => r._aZDjsUtb);
        return new Response(_GsllkkcB.join('\n'), {
            _IsyuVVgp: { 'Content-Type': '_WymvkWHi/plain; _umbKVliz=utf-8' },
        });
    } catch (_vzeKvyUe) {
        console.error("API /_aZDjsUtb 处理错误:", _vzeKvyUe);
        return new Response(`API处理时出错: ${_vzeKvyUe._eYQEWIkQ}`, { status: 500 });
    }
}

function _MebVHcuj(_eYItWoTE, _MZXmGEAE, _WPFXtADK, _mqRxsMyO) {
    const { itemLink } = _WPFXtADK;
    if (!itemLink || !itemLink._rtrtEvxp) return null;
    const { template, _JUAehFpn, selectionMode, _VFTCKnaq } = itemLink;
    if (!_JUAehFpn || _JUAehFpn._dMuZadRi === 0) return null;

    let _yTpSGlBo;
    if (selectionMode === 'random') {
        _yTpSGlBo = _JUAehFpn[_MZXmGEAE % _JUAehFpn._dMuZadRi];
    } else if (selectionMode === 'first') {
        _yTpSGlBo = _JUAehFpn[0];
    } else {
        _yTpSGlBo = _JUAehFpn.find(s => s._LNRsGfZM === selectionMode) || _JUAehFpn[0];
    }
    if (!_yTpSGlBo) return null;

    let _SXIpLcmk = template;
    const _umyInlqj = _eYItWoTE._WSfhREhx || 443;
    const _okIlXqqL = _KSFScGkM.isIPv6(_eYItWoTE._aZDjsUtb) ? `[${_eYItWoTE._aZDjsUtb}]` : _eYItWoTE._aZDjsUtb;
    let _LNRsGfZM = `${_MZXmGEAE + 1} 、 ${_eYItWoTE._ESTsaTiw || '未知'}`;
    if (!_eYItWoTE._UmebUcxD || !_eYItWoTE._UmebUcxD.toLowerCase().includes('cloudflare')) {
        _LNRsGfZM += '(反代)';
    }
    let _IFBBpZwc = _yTpSGlBo._IFBBpZwc || _mqRxsMyO;

    _SXIpLcmk = _SXIpLcmk.replace(/{_aZDjsUtb}/g, _okIlXqqL)
               .replace(/{_WSfhREhx}/g, _umyInlqj)
               .replace(/{_LNRsGfZM}/g, encodeURIComponent(_LNRsGfZM))
               .replace(/{rank}/g, _MZXmGEAE + 1)
               .replace(/{_ESTsaTiw}/g, encodeURIComponent(_eYItWoTE._ESTsaTiw || '未知'))
               .replace(/{_UmebUcxD}/g, encodeURIComponent(_eYItWoTE._UmebUcxD || '未知'))
               .replace(/{_IFBBpZwc}/g, encodeURIComponent(_IFBBpZwc))
               .replace(/{_AZzkPZSq}/g, encodeURIComponent(_yTpSGlBo['_AZzkPZSq'] || ''))
               .replace(/{_BYwFCSys}/g, encodeURIComponent(encodeURIComponent(_yTpSGlBo._BYwFCSys || '')));

    if (_VFTCKnaq) {
        _VFTCKnaq.forEach(field => {
            const _tDtUdUBr = new RegExp('{' + field._LNRsGfZM + '}', 'g');
            _SXIpLcmk = _SXIpLcmk.replace(_tDtUdUBr, encodeURIComponent(field._mwoHcfHB));
        });
    }
    return _SXIpLcmk;
}

async function _yJTIiYUc(_FwagrbYr, _UbhXYzzE) {
    const _WPFXtADK = await _rBzwWiYS(_UbhXYzzE);
    if (!_WPFXtADK.itemLink._rtrtEvxp) {
        return new Response("Item _SXIpLcmk feature is disabled.", { status: 503, _IsyuVVgp: { 'Content-Type': '_WymvkWHi/plain; _umbKVliz=utf-8' } });
    }

    try {
        const _aOaUXRJH = _UbhXYzzE.DB.prepare("SELECT _mwoHcfHB FROM kv_data WHERE _UeiSOQnr = ?").bind(_HdyLrlof);
        const { _VFJsWnNT: dbResults } = await _aOaUXRJH.all();
        const _fnhJpkWj = dbResults._dMuZadRi > 0 ? dbResults[0]._mwoHcfHB : null;
        const _gQAmJoXJ = _fnhJpkWj ? JSON.parse(_fnhJpkWj) : null;
        
        if (!_gQAmJoXJ || !_gQAmJoXJ._VFJsWnNT || _gQAmJoXJ._VFJsWnNT._dMuZadRi === 0) {
            return new Response("No optimized IPs available to generate endpoints.", {
                status: 404,
                _IsyuVVgp: { 'Content-Type': '_WymvkWHi/plain; _umbKVliz=utf-8' },
            });
        }
        
        const _mqRxsMyO = new URL(_FwagrbYr._fOEGokng)._PcWYljEb;

        const _EMIvQYDC = _gQAmJoXJ._VFJsWnNT.map((_eYItWoTE, _MZXmGEAE) => {
            return _MebVHcuj(_eYItWoTE, _MZXmGEAE, _WPFXtADK, _mqRxsMyO);
        }).filter(Boolean);

        if (_EMIvQYDC._dMuZadRi === 0) {
            return new Response("Could not generate any _fSQsXIKa links from the available IPs.", {
                status: 500,
                _IsyuVVgp: { 'Content-Type': '_WymvkWHi/plain; _umbKVliz=utf-8' },
            });
        }

        return new Response(_EMIvQYDC.join('\n'), {
            _IsyuVVgp: { 'Content-Type': '_WymvkWHi/plain; _umbKVliz=utf-8' },
        });

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

async function _qyywTHZz(_FwagrbYr, _UbhXYzzE, _iIKAUBYV) {
    const _MiHYhayc = _FwagrbYr._IsyuVVgp.get('CF-Connecting-IP') || "未知IP";
    const [
        _psZaOBdi,
        _wZuqUOht,
        defaultDomains,
        fetchedCountryMap
    ] = await Promise.all([
        _qcHJyDzM(_LrZXbKiP, _gvVzxATk, []),
        _qcHJyDzM(_UAKelWiZ, _gvVzxATk, []),
        _qcHJyDzM(_AHZFqWFb, _LmJEnTkp, []),
        _qcHJyDzM(_oVPWqEGs, _mLNyGZQR, { "N/A": "未知" })
    ]);
    _WGkGtzJj = fetchedCountryMap;
    let _BiUkeXSz = false;
    let _obKotQzd;
    try {
        const _UjsPUDqg = await _sSSkuqRv(_UbhXYzzE);
        _BiUkeXSz = !!_UjsPUDqg;
        _obKotQzd = await _rBzwWiYS(_UbhXYzzE);
    } catch (_vzeKvyUe) {
        if (_vzeKvyUe._eYQEWIkQ && _vzeKvyUe._eYQEWIkQ.includes('no such table')) {
            console.log("检测到 'kv_data' 表不存在,正在自动创建...");
            try {
                const _NsMXCSqm = "CREATE TABLE IF NOT EXISTS kv_data (_UeiSOQnr TEXT PRIMARY KEY, _mwoHcfHB TEXT); CREATE TABLE IF NOT EXISTS optimized_results (_UwLxvUhK TEXT PRIMARY KEY, _jsLZsuJF TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);";
                await _UbhXYzzE.DB.exec(_NsMXCSqm);
                console.log("数据表创建成功。");
                _BiUkeXSz = false;
                _obKotQzd = _NtZoYRbh();
            } catch (dbError) {
                console.error("自动创建数据表失败:", dbError);
                return new Response(`数据库初始化失败: ${dbError._eYQEWIkQ}`, {
                    status: 500,
                    _IsyuVVgp: { 'Content-Type': '_WymvkWHi/html;_umbKVliz=UTF-8' }
                });
            }
        } else {
             let _wuuLjmGI = _ZYwOCRuV(_vzeKvyUe._eYQEWIkQ);
             return new Response(_wuuLjmGI, { _IsyuVVgp: { 'Content-Type': '_WymvkWHi/html;_umbKVliz=UTF-8' } });
        }
    }
    if (_obKotQzd.telegram.bot_token && _obKotQzd.telegram.chat_id) {
        const _gKXIPRnd = _FwagrbYr.cf?._gKXIPRnd || "未知";
        const _ORgOIQgk = _FwagrbYr.cf?._ORgOIQgk || "";
        let _ZkYLKFLR = _WGkGtzJj[_gKXIPRnd] || _gKXIPRnd;
        if (_ORgOIQgk && _ORgOIQgk !== "未知城市" && _ORgOIQgk !== _gKXIPRnd) _ZkYLKFLR = `${_ZkYLKFLR} ${_WGkGtzJj[_ORgOIQgk] || _ORgOIQgk}`;
        const _aXLSvdmS = _VajyXDhR();
        const _vhKMpCeC = _FwagrbYr._fOEGokng;
        const _mYYpObNd = `访客: ${_MiHYhayc}\n位置: ${_ZkYLKFLR.trim()}\n时间: ${_aXLSvdmS}\n来自:${_vhKMpCeC}`;
        const _NqCYHavP = `https://api.telegram.org/bot${_obKotQzd.telegram.bot_token}/sendMessage?chat_id=${_obKotQzd.telegram.chat_id}&_WymvkWHi=${encodeURIComponent(_mYYpObNd)}`;
        _iIKAUBYV.waitUntil(fetch(_NqCYHavP).catch(_vzeKvyUe => console.error("Telegram通知失败:", _vzeKvyUe)));
    }
    let _PbGVmUfT = _RnFmtPwd();
    const _oXJhXMHf = {
        _WPFXtADK: _obKotQzd,
        status: {
            _BiUkeXSz: _BiUkeXSz,
        }
    };
    _PbGVmUfT = _PbGVmUfT.replace('__PAGE_DATA_JSON__', JSON.stringify(_oXJhXMHf));
    _PbGVmUfT = _PbGVmUfT.replace('__ALL_CF_CIDR_LIST_JSON__', JSON.stringify(_psZaOBdi));
    _PbGVmUfT = _PbGVmUfT.replace('__BALANCED_CF_CIDR_LIST_JSON__', JSON.stringify(_wZuqUOht));
    _PbGVmUfT = _PbGVmUfT.replace('__DEFAULT_DOMAINS_LIST_JSON__', JSON.stringify(defaultDomains));
    _PbGVmUfT = _PbGVmUfT.replace('__COUNTRY_MAP_JSON__', JSON.stringify(_WGkGtzJj));
    return new Response(_PbGVmUfT, {
        _IsyuVVgp: { 'Content-Type': '_WymvkWHi/html;_umbKVliz=UTF-8' },
    });
}

function _aUXHsBmB(_UVcwkNOD, status = 200, _IsyuVVgp = {}) {
    return new Response(JSON.stringify(_UVcwkNOD), {
        status,
        _IsyuVVgp: { 'Content-Type': 'application/json;_umbKVliz=UTF-8', ..._IsyuVVgp }
    });
}

function _VajyXDhR(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 _WUVkYlFP(_aZDjsUtb) {
    if (!_aZDjsUtb || typeof _aZDjsUtb !== 'string') return "无效IP";
    if(_KSFScGkM.isIPv4(_aZDjsUtb)){
        const _SGotdwrR = _aZDjsUtb.split('.');
        if (_SGotdwrR._dMuZadRi === 4) return `${_SGotdwrR[0]}.*.*.${_SGotdwrR[3]}`;
    }
    if(_KSFScGkM.isIPv6(_aZDjsUtb)){
        const _SGotdwrR = _aZDjsUtb.split(':');
        if (_SGotdwrR._dMuZadRi > 2) return `${_SGotdwrR[0]}:...:${_SGotdwrR[_SGotdwrR._dMuZadRi - 1]}`;
    }
    return _aZDjsUtb;
}

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

function _RnFmtPwd() {
    return `
  <!DOCTYPE html><html lang="zh-CN"><head> <meta _umbKVliz="UTF-8"> <meta _LNRsGfZM="viewport" _WUgmIbOG="_YczQFvvT=device-_YczQFvvT, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> <title>Cloudflare IP</title> <_SXIpLcmk 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>
  <_bmKYpvrg>
  :root { --primary-_GdHBHXwl: #00A0FF; --primary-hover: #007ACC; --primary-gradient-start: #00C6FF; --primary-gradient-end: #0072FF; --secondary-_GdHBHXwl: #8c939d; --light-bg: #1A1C20; --_WUgmIbOG-bg: #25282E; --border-_GdHBHXwl: #40444C; --_WymvkWHi-_GdHBHXwl: #E0E0E0; --_WymvkWHi-light: #B0B0B0; --success-_GdHBHXwl: #30A46C; --danger-_GdHBHXwl: #DA3633; --warning-_GdHBHXwl: #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; }
  _UVcwkNOD { font-family: var(--font-family-sans); background-_GdHBHXwl: var(--light-bg); _GdHBHXwl: var(--_WymvkWHi-_GdHBHXwl); line-height: 1.65; overflow-x: hidden; padding: 0; position:relative; transition: background-_GdHBHXwl 0.5s ease; background-size: cover; background-position: center; background-attachment: fixed; }
  #background-_iqIUQVgp { position: fixed; _SbSXQkoH: 0; _AlZRebBN: 0; _YczQFvvT: 100%; height: 100%; z-_MZXmGEAE: -1; display: none; }
  ._KgqGLarC-_cGAxlJwz { max-_YczQFvvT: 1100px; margin: 0 auto; padding: 0 1rem; position: relative; z-_MZXmGEAE: 1; }
  #_zUvxQboL { position: fixed; _SbSXQkoH: 1rem; right: 1rem; font-size: 0.85em; padding: 0.4em 0.8em; z-_MZXmGEAE: 10; }
  #marquee-_cGAxlJwz { overflow: hidden; white-space: nowrap; background-_GdHBHXwl: rgba(37, 40, 46, 0.6); backdrop-filter: blur(5px); _GdHBHXwl: var(--primary-_GdHBHXwl); padding: 0.5rem 0; margin-_SbSXQkoH: 1rem; border-radius: var(--border-radius-sm); display: none; }
  #marquee-_WymvkWHi { display: inline-block; padding-_AlZRebBN: 100%; animation: marquee-scroll 20s linear infinite; }
  @keyframes marquee-scroll { 0% { transform: translateX(0); } 100% { transform: translateX(-100%); } }
  _TaEYOPrW { _WymvkWHi-align: center; margin-_SbSXQkoH: 1rem; margin-bottom: 2rem; }
  _TaEYOPrW h1 { white-space: pre-wrap; font-size: 2.25em; _GdHBHXwl: var(--primary-_GdHBHXwl); font-weight: 700; _WymvkWHi-shadow: 0 0 10px rgba(var(--primary-_GdHBHXwl-rgb), 0.3); }
  .card { background-_GdHBHXwl: 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-_GdHBHXwl); }
  .progress-section #_wJXmabob { _YczQFvvT: 100%; height: 0.75rem; border-radius: var(--border-radius-sm); appearance: none; -webkit-appearance: none; background-_GdHBHXwl: var(--border-_GdHBHXwl); overflow: hidden; }
  .progress-section #_wJXmabob::-webkit-progress-_mwoHcfHB { background: linear-gradient(90deg, var(--primary-gradient-start), var(--primary-gradient-end)); }
  .progress-section #status { _WymvkWHi-align: center; margin-_SbSXQkoH: 0.75em; font-size: 0.95em; _GdHBHXwl: var(--_WymvkWHi-light); min-height: 1.5em; }
  .section-_TaEYOPrW { display: flex; flex-wrap: wrap; justify-_WUgmIbOG: space-between; align-items: center; margin-bottom: 1rem; padding-bottom: 0.75rem; border-bottom: 1px solid var(--border-_GdHBHXwl); gap: 1rem; }
  .section-_TaEYOPrW h2 { font-size: 1.6em; font-weight: 600; margin:0; }
  .generator-info { font-size: 0.85em; _GdHBHXwl: var(--secondary-_GdHBHXwl); _WymvkWHi-align: right; flex-shrink: 0; }
  .generator-info span { display: block; }
  .table-responsive { _YczQFvvT: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
  table { _YczQFvvT: 100%; border-collapse: collapse; margin-_SbSXQkoH: 0; font-size: 0.9em; }
  th, td { border-bottom: 1px solid var(--border-_GdHBHXwl); padding: 0.8em; _WymvkWHi-align: _AlZRebBN; vertical-align: middle; white-space: nowrap; }
  th { background-_GdHBHXwl: #2c3038; font-weight: 500; }
  tbody tr:hover { background-_GdHBHXwl: #30333a; }
  td._aZDjsUtb-_FvxvxSJl { font-weight: 500; font-family: var(--font-family-mono); _GdHBHXwl: var(--primary-_GdHBHXwl); }
  td.ping-_mwoHcfHB { font-weight: 600; font-family: var(--font-family-mono); }
  td.actions-cell { _WymvkWHi-align: right; }
  .btn { display: inline-flex; align-items: center; justify-_WUgmIbOG: center; font-weight: 500; _WymvkWHi-align: center; cursor: pointer; user-_JqkXEtMx: none; background: linear-gradient(145deg, var(--primary-gradient-start), var(--primary-gradient-end)); border: 1px solid transparent; _GdHBHXwl: #fff; padding: 0.4em 0.8em; font-size: 0.85em; border-radius: var(--border-radius-sm); transition: all 0.2s ease-in-out; margin-_AlZRebBN: 6px; }
  .btn:hover { transform: translateY(-2px); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3); }
  .btn-outline { background: transparent; _GdHBHXwl: var(--primary-_GdHBHXwl); border: 1px solid var(--primary-_GdHBHXwl); }
  .btn-outline:hover { background-_GdHBHXwl: var(--primary-_GdHBHXwl); _GdHBHXwl: var(--_WUgmIbOG-bg); }
  ._KgqGLarC-download-buttons { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 1rem; }
  ._KgqGLarC-download-buttons .btn { _YczQFvvT: 100%; margin: 0; }
  .tooltip-notification { position: fixed; _SbSXQkoH: 20px; right: 20px; padding: 12px 20px; border-radius: var(--border-radius-md); _GdHBHXwl: #fff; font-size: 0.95em; z-_MZXmGEAE: 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); }
  #_cNUjZGUC, #_NgKTXDEM, #_sJkyyLeA, #_gbaZnBem, #_IWWtSXyk { display: none; position: fixed; z-_MZXmGEAE: 10000; _AlZRebBN: 0; _SbSXQkoH: 0; _YczQFvvT: 100%; height: 100%; background-_GdHBHXwl: rgba(0,0,0,0.6); justify-_WUgmIbOG: center; align-items: center; backdrop-filter: blur(5px); -webkit-backdrop-filter: blur(5px); }
  .modal-_WUgmIbOG, ._KgqGLarC-modal-_WUgmIbOG { background-_GdHBHXwl: var(--_WUgmIbOG-bg); padding: 2rem; border: 1px solid var(--border-_GdHBHXwl); border-radius: var(--border-radius-md); _YczQFvvT: 95%; max-_YczQFvvT: 800px; max-height: 90vh; overflow-y: auto; box-shadow: 0 5px 15px rgba(0,0,0,0.3); }
  #_gbaZnBem .modal-_WUgmIbOG { max-_YczQFvvT: 500px; }
  .modal-_WUgmIbOG h3, ._KgqGLarC-modal-_TaEYOPrW h3 { margin-_SbSXQkoH: 0; margin-bottom: 1.5rem; _GdHBHXwl: var(--primary-_GdHBHXwl); _WymvkWHi-align: center; }
  .modal-buttons { display: flex; justify-_WUgmIbOG: flex-end; gap: 1rem; margin-_SbSXQkoH: 2rem; border-_SbSXQkoH: 1px solid var(--border-_GdHBHXwl); padding-_SbSXQkoH: 1.5rem; }
  .modal-section-divider { border: 0; height: 1px; background-image: linear-gradient(to right, rgba(0,0,0,0), var(--border-_GdHBHXwl), rgba(0,0,0,0)); margin: 2rem 0; }
  ._KgqGLarC-modal-_TaEYOPrW { display: flex; justify-_WUgmIbOG: space-between; align-items: center; padding-bottom: 1rem; margin-bottom: 1rem; border-bottom: 1px solid var(--border-_GdHBHXwl); }
  .modal-close-btn { font-size: 1.5rem; font-weight: bold; line-height: 1; _GdHBHXwl: var(--_WymvkWHi-light); cursor: pointer; background: none; border: none; padding: 0; }
  ._KgqGLarC-list-_fSQsXIKa { display: flex; flex-direction: column; padding: 1rem; border: 1px solid var(--border-_GdHBHXwl); border-radius: var(--border-radius-sm); margin-bottom: 1rem; }
  ._KgqGLarC-_LNRsGfZM { font-size: 1.1em; font-weight: 600; }
  ._KgqGLarC-links a { display: block; _GdHBHXwl: var(--primary-_GdHBHXwl); _WymvkWHi-decoration: none; margin-_SbSXQkoH: 0.5rem; word-break: break-all; }
  ._KgqGLarC-links a:hover { _WymvkWHi-decoration: underline; }
  ._KgqGLarC-links span { _GdHBHXwl: var(--_WymvkWHi-light); }
  #visitorPasswordPrompt { _WymvkWHi-align: center; }
  #visitorPasswordPrompt h3 { _GdHBHXwl: var(--primary-_GdHBHXwl); font-size: 1.4em; margin-bottom: 0.8rem; }
  #visitorPasswordPrompt p { _GdHBHXwl: var(--_WymvkWHi-light); margin-bottom: 1.5rem; }
  ._UjsPUDqg-input-group { display: flex; gap: 10px; max-_YczQFvvT: 400px; margin: 0 auto; }
  ._UjsPUDqg-input-group input { flex-grow: 1; _WymvkWHi-align: center; }
  ._UjsPUDqg-input-group .btn { margin-_AlZRebBN: 0; }
  ._VFJsWnNT-actions-_cGAxlJwz { _WymvkWHi-align: center; margin-bottom: 1.5rem; }
  ._VFJsWnNT-api-buttons { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 1rem; }
  ._VFJsWnNT-api-buttons .btn { margin: 0; _YczQFvvT: 100%; font-size: 0.9em; padding: 0.5em 1em; }
  .form-grid { display: grid; grid-template-columns: max-_WUgmIbOG 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 _JqkXEtMx, .form-grid-control textarea { _YczQFvvT: 100%; background-_GdHBHXwl: var(--light-bg); border: 1px solid var(--border-_GdHBHXwl); border-radius: var(--border-radius-sm); _GdHBHXwl: var(--_WymvkWHi-_GdHBHXwl); font-family: var(--font-family-sans); padding: 0.6em; transition: border-_GdHBHXwl 0.2s, box-shadow 0.2s; }
  .form-grid-control input:focus, .form-grid-control _JqkXEtMx:focus, .form-grid-control textarea:focus { border-_GdHBHXwl: var(--primary-_GdHBHXwl); box-shadow: 0 0 0 2px rgba(var(--primary-_GdHBHXwl-rgb), 0.2); outline: none; }
  .form-grid-control input[_UXBTgEqt="_GdHBHXwl"] { min-_YczQFvvT: auto; padding: 2px; _YczQFvvT: 2.5em; height: 2.5em; }
  .form-grid-control input[_UXBTgEqt="checkbox"] { _YczQFvvT: auto; flex-shrink: 0; height: 1.2em; _YczQFvvT: 1.2em; }
  .form-grid-control ._McxEmfZN-input { _YczQFvvT: 80px; _WymvkWHi-align: right; }
  .tooltip-_ghhYWPJC { display: inline-flex; _YczQFvvT: 16px; height: 16px; align-items: center; justify-_WUgmIbOG: center; background-_GdHBHXwl: var(--secondary-_GdHBHXwl); _GdHBHXwl: var(--_WUgmIbOG-bg); border-radius: 50%; font-size: 12px; font-weight: bold; cursor: pointer; user-_JqkXEtMx: none; }
  #tooltip-popup { position: fixed; background-_GdHBHXwl: #383c4a; _GdHBHXwl: #fff; padding: 10px 15px; border-radius: 6px; z-_MZXmGEAE: 10001; font-size: 0.85em; max-_YczQFvvT: 300px; display: none; box-shadow: 0 4px 12px rgba(0,0,0,0.4); border: 1px solid var(--border-_GdHBHXwl); pointer-events: none; }
  #custom-fields-_cGAxlJwz .form-grid-control { gap: 5px; } #custom-fields-_cGAxlJwz .form-grid-control input { flex: 1; }
  .parameter-_qvoYxgpO-_ubfiaDvz { border: 1px solid var(--border-_GdHBHXwl); border-radius: var(--border-radius-sm); padding: 1rem; margin-bottom: 1rem; }
  .parameter-_qvoYxgpO-_TaEYOPrW { display: flex; justify-_WUgmIbOG: space-between; align-items: center; margin-bottom: 1rem; }
  .parameter-_qvoYxgpO-_TaEYOPrW input { flex-grow: 1; margin-right: 1rem; }
  .fine-grained-options { display: flex; gap: 1rem; margin-_SbSXQkoH: 0.5rem; align-items: center; font-size: 0.9em; }
  .fine-grained-options label { display: flex; align-items: center; gap: 0.3rem; cursor: pointer; }
  ._WymvkWHi-_GdHBHXwl-grid { display: grid; grid-template-columns: auto 1fr; gap: 8px; align-items: center; _YczQFvvT: 100%; }
  ._WymvkWHi-_GdHBHXwl-grid input[_UXBTgEqt="_GdHBHXwl"] { grid-column: 1 / 2; }
  ._WymvkWHi-_GdHBHXwl-grid input[_UXBTgEqt="_WymvkWHi"], ._WymvkWHi-_GdHBHXwl-grid textarea { grid-column: 2 / 3; }
  #_gbaZnBem .button-grid { display: grid; grid-template-columns: 1fr; gap: 1rem; }
  #_gbaZnBem .btn-group { display: flex; }
  #_gbaZnBem .sub-btn { flex-grow: 1; margin: 0; }
  #_gbaZnBem ._lVdCdLBF-btn { flex-shrink: 0; margin-_AlZRebBN: -1px; border-_SbSXQkoH-_AlZRebBN-radius: 0; border-bottom-_AlZRebBN-radius: 0; }
  #_IWWtSXyk .modal-_WUgmIbOG { max-_YczQFvvT: 300px; background: white; padding: 1rem; _WymvkWHi-align: center; }
  #qrCodeImg { max-_YczQFvvT: 100%; }
  @media (max-_YczQFvvT: 768px) {
    html { font-size: 15px; } ._KgqGLarC-_cGAxlJwz { padding: 0 0.8rem; } _TaEYOPrW { margin-_SbSXQkoH: 2.5rem; margin-bottom: 1.5rem; } #_zUvxQboL { _SbSXQkoH: 0.8rem; right: 0.8rem; } .card { padding: 1rem; }
    .form-grid { grid-template-columns: 1fr; } .form-grid-label { justify-self: start; }
  }
  </_bmKYpvrg>
  <_bmKYpvrg _UwLxvUhK="theme-styles">
  .theme-light { --light-bg: #F0F2F5; --_WUgmIbOG-bg: #FFFFFF; --border-_GdHBHXwl: #DCDFE6; --_WymvkWHi-_GdHBHXwl: #303133; --_WymvkWHi-light: #606266; }
  .theme-light .card { background-_GdHBHXwl: rgba(255, 255, 255, 0.9); }
  .theme-light th { background-_GdHBHXwl: #F5F7FA; }
  .theme-light tbody tr:hover { background-_GdHBHXwl: #ECF5FF; }
  .theme-matrix { --primary-_GdHBHXwl: #00FF41; --primary-hover: #39FF14; --light-bg: #000000; --_WUgmIbOG-bg: #0D0208; --border-_GdHBHXwl: #00FF41; --_WymvkWHi-_GdHBHXwl: #00FF41; --_WymvkWHi-light: #00FF41; font-family: var(--font-family-mono); }
  .theme-matrix .card { background-_GdHBHXwl: rgba(0, 20, 0, 0.7); _WymvkWHi-shadow: 0 0 5px var(--primary-_GdHBHXwl); backdrop-filter: none; }
  .theme-matrix th { background-_GdHBHXwl: #000; }
  .theme-matrix tbody tr:hover { background-_GdHBHXwl: #010; }
  .theme-matrix .btn { _WymvkWHi-shadow: none; _GdHBHXwl: #000; }
  .theme-matrix .btn-outline { background-_GdHBHXwl: transparent; }
  .theme-modern-glass { --primary-_GdHBHXwl: #00C6FF; --primary-hover: #0072FF; --light-bg: #000; --_WUgmIbOG-bg: rgba(30, 30, 40, 0.6); --border-_GdHBHXwl: rgba(255, 255, 255, 0.2); --_WymvkWHi-_GdHBHXwl: #F0F0F0; --_WymvkWHi-light: #A0A0B0; --border-radius-md: 12px; }
  _UVcwkNOD.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-_GdHBHXwl: #00C6FF; --primary-hover: #0072FF; --light-bg: #1A1C20; --_WUgmIbOG-bg: rgba(30, 30, 40, 0.6); --border-_GdHBHXwl: rgba(255, 255, 255, 0.2); --_WymvkWHi-_GdHBHXwl: #F0F0F0; --_WymvkWHi-light: #A0A0B0; --border-radius-md: 12px; }
  .glassy-components .card { background-_GdHBHXwl: var(--_WUgmIbOG-bg); backdrop-filter: blur(15px); -webkit-backdrop-filter: blur(15px); border: 1px solid var(--border-_GdHBHXwl); }
  .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-_GdHBHXwl: rgba(0,0,0,0.3); border-right-_GdHBHXwl: 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); _WymvkWHi-shadow: 0 1px 2px rgba(0,0,0,0.2); _GdHBHXwl: #fff; }
  .glassy-components .btn-outline { background: rgba(255, 255, 255, 0.05); border-_GdHBHXwl: rgba(255, 255, 255, 0.2); backdrop-filter: blur(2px); _WymvkWHi-shadow: 0 1px 2px rgba(0,0,0,0.2); }
  .glassy-components .btn-outline:hover { background: var(--primary-_GdHBHXwl); border-_GdHBHXwl: var(--primary-_GdHBHXwl); _GdHBHXwl: #fff; }
  .glassy-components _TaEYOPrW h1 { background: linear-gradient(180deg, rgba(255,255,255,1) 0%, rgba(255,255,255,0.7) 100%); -webkit-background-clip: _WymvkWHi; -webkit-_WymvkWHi-fill-_GdHBHXwl: transparent; filter: drop-shadow(0 2px 5px rgba(0,0,0,0.5)); _GdHBHXwl: transparent; }
  .theme-aurora-glass { --primary-_GdHBHXwl: #38bdf8; --light-bg: #0c0a09; --_WUgmIbOG-bg: rgba(23, 23, 23, 0.5); --border-_GdHBHXwl: rgba(255, 255, 255, 0.15); --_WymvkWHi-_GdHBHXwl: #f2f2f2; --_WymvkWHi-light: #a3a3a3; }
  _UVcwkNOD.theme-aurora-glass::before { _WUgmIbOG: ''; position: fixed; _SbSXQkoH: 0; _AlZRebBN: 0; _YczQFvvT: 100%; height: 100%; z-_MZXmGEAE: -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-_GdHBHXwl: #08fdd8; --light-bg: #010409; --_WUgmIbOG-bg: rgba(22, 27, 34, 0.6); --border-_GdHBHXwl: rgba(139, 148, 158, 0.3); --_WymvkWHi-_GdHBHXwl: #e6edf3; --_WymvkWHi-light: #7d8590; }
  .theme-cyberpunk-glass .card { border-image: linear-gradient(to bottom right, var(--primary-_GdHBHXwl), #7928ca) 1; box-shadow: 0 0 15px rgba(var(--primary-_GdHBHXwl-rgb), 0.25); }
  .theme-cyberpunk-glass .btn { box-shadow: 0 0 8px rgba(var(--primary-_GdHBHXwl-rgb), 0.5); }
  .theme-marble-light { --primary-_GdHBHXwl: #bfa37c; --light-bg: #f7f5f2; --_WUgmIbOG-bg: #ffffff; --border-_GdHBHXwl: #e0dcd5; --_WymvkWHi-_GdHBHXwl: #3d3a36; --_WymvkWHi-light: #6b6661; }
  _UVcwkNOD.theme-marble-light { background-image: _fOEGokng('_jsLZsuJF:image/svg+xml,%3Csvg _YczQFvvT="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-_GdHBHXwl: rgba(255, 255, 255, 0.85); box-shadow: 0 4px 12px rgba(0,0,0,0.08); }
  </_bmKYpvrg>
  </head><_UVcwkNOD _UwLxvUhK="pageBody">
  <_iqIUQVgp _UwLxvUhK="background-_iqIUQVgp"></_iqIUQVgp>
  <div _UwLxvUhK="_cNUjZGUC">
      <div class="modal-_WUgmIbOG">
          <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 _UXBTgEqt="_UjsPUDqg" _UwLxvUhK="initialPassword"></div></div>
          <div class="form-grid"><div class="form-grid-label"><label for="confirmPassword">确认密码</label></div><div class="form-grid-control"><input _UXBTgEqt="_UjsPUDqg" _UwLxvUhK="confirmPassword"></div></div>
          <div class="modal-buttons"><button _UwLxvUhK="setInitialPasswordBtn" class="btn">设置密码</button></div>
      </div>
  </div>
  <div class="_KgqGLarC-_cGAxlJwz">
    <button _UwLxvUhK="_zUvxQboL" class="btn btn-outline"></button>
    <div _UwLxvUhK="marquee-_cGAxlJwz"><div _UwLxvUhK="marquee-_WymvkWHi"></div></div>
    <_TaEYOPrW><h1 _UwLxvUhK="pageTitle"></h1></_TaEYOPrW>
    <div class="card" _UwLxvUhK="visitorPasswordPrompt" _bmKYpvrg="display: none;">
        <h3>需要授权</h3>
        <p>此站点已启用访客密码,请输入密码以继续。</p>
        <div class="_UjsPUDqg-input-group">
            <input _UXBTgEqt="_UjsPUDqg" _UwLxvUhK="visitorPasswordEntry" _tDtUdUBr="访客密码">
            <button _UwLxvUhK="startTestWithPasswordBtn" class="btn">开始测试</button>
        </div>
    </div>
    <div _UwLxvUhK="_TjUMArqT" _bmKYpvrg="display: block;">
        <div class="card progress-section">
            <div _UwLxvUhK="progressDisplay">
                <progress _UwLxvUhK="_wJXmabob" _mwoHcfHB="0" max="100"></progress>
                <div _UwLxvUhK="status">正在初始化...</div>
            </div>
        </div>
        <div class="card _KgqGLarC-download-section">
          <div class="section-_TaEYOPrW"><h2 _UwLxvUhK="appDownloadTitleEl"></h2></div>
          <div class="_KgqGLarC-download-buttons">
            <button class="btn" _jsLZsuJF-_TbTAQrym="android">安卓客户端</button>
            <button class="btn" _jsLZsuJF-_TbTAQrym="ios">苹果客户端</button>
            <button class="btn" _jsLZsuJF-_TbTAQrym="windows">Windows客户端</button>
            <button class="btn" _jsLZsuJF-_TbTAQrym="mac">Mac客户端</button>
          </div>
        </div>
        <div class="card _VFJsWnNT-section" _UwLxvUhK="_PtBMjiVm" _bmKYpvrg="display:none;">
          <div class="section-_TaEYOPrW">
            <h2 _UwLxvUhK="liveTitleEl"></h2>
            <div class="generator-info" _UwLxvUhK="liveGeneratorInfo"></div>
          </div>
          <div _UwLxvUhK="_BrNlcKFJ" class="_VFJsWnNT-actions-_cGAxlJwz" _bmKYpvrg="display: none;">
             <div class="_VFJsWnNT-api-buttons">
                <button _UwLxvUhK="copyIpApiBtn" class="btn">复制 IP API</button>
                <button _UwLxvUhK="copySubscriptionBtn" class="btn">复制订阅</button>
             </div>
          </div>
          <div class="table-responsive">
            <table _UwLxvUhK="resultsTable">
              <thead><tr><th _UwLxvUhK="tableHeader1El"></th><th _UwLxvUhK="tableHeader2El"></th><th _UwLxvUhK="tableHeader3El"></th><th _UwLxvUhK="tableHeader4El"></th><th _UwLxvUhK="tableHeader5El"></th><th _UwLxvUhK="tableHeader6El"></th><th _UwLxvUhK="tableHeader7El"></th></tr></thead>
              <tbody></tbody>
            </table>
          </div>
        </div>
        <div class="card cached-section" _UwLxvUhK="_cNZTSEHU" _bmKYpvrg="display:none;">
          <div class="section-_TaEYOPrW"><h2 _UwLxvUhK="cachedTitleEl"></h2><div class="generator-info" _UwLxvUhK="cachedGeneratorInfo"></div></div>
          <div class="table-responsive">
            <table _UwLxvUhK="cachedResultsTable">
              <thead><tr><th _UwLxvUhK="cachedTableHeader1El"></th><th _UwLxvUhK="cachedTableHeader2El"></th><th _UwLxvUhK="cachedTableHeader3El"></th><th _UwLxvUhK="cachedTableHeader4El"></th><th _UwLxvUhK="cachedTableHeader5El"></th><th _UwLxvUhK="cachedTableHeader6El"></th><th _UwLxvUhK="cachedTableHeader7El"></th></tr></thead>
              <tbody></tbody>
            </table>
          </div>
        </div>
    </div>
  </div>
  <div _UwLxvUhK="notificationTooltip" class="tooltip-notification"></div>
  <div _UwLxvUhK="_NgKTXDEM">
    <div class="modal-_WUgmIbOG">
      <h3>修改参数</h3>
      <div _bmKYpvrg="display: flex; border-bottom: 1px solid var(--border-_GdHBHXwl); margin-bottom: 1.5rem;">
          <button class="tab-button active" onclick="_bdfglfjP(event, 'general-_wPPiVNtW')">通用设置</button>
          <button class="tab-button" onclick="_bdfglfjP(event, '_SXIpLcmk-_wPPiVNtW')">链接设置</button>
          <button class="tab-button" onclick="_bdfglfjP(event, 'fine-grained-_wPPiVNtW')">IP源设置</button>
          <button class="tab-button" onclick="_bdfglfjP(event, 'advanced-_wPPiVNtW')">高级设置</button>
      </div>
      <div _UwLxvUhK="general-_wPPiVNtW" class="tab-_WUgmIbOG" _bmKYpvrg="display: block;">
        <div class="form-grid">
            <div class="form-grid-label"><label for="themeSelect">页面主题</label><span class="tooltip-_ghhYWPJC" _jsLZsuJF-tooltip="选择页面的整体外观风格。">?</span></div>
            <div class="form-grid-control">
                <_JqkXEtMx _UwLxvUhK="themeSelect">
                    <_XMLmoTzJ _mwoHcfHB="theme-aurora-glass">极光-玻璃质感</_XMLmoTzJ>
                    <_XMLmoTzJ _mwoHcfHB="theme-particles-glass">粒子-玻璃质感</_XMLmoTzJ>
                    <_XMLmoTzJ _mwoHcfHB="theme-modern-glass">现代-玻璃质感</_XMLmoTzJ>
                    <_XMLmoTzJ _mwoHcfHB="theme-cyberpunk-glass">赛博朋克-玻璃质感</_XMLmoTzJ>
                    <_XMLmoTzJ _mwoHcfHB="theme-dark-particles">暗色-粒子背景</_XMLmoTzJ>
                    <_XMLmoTzJ _mwoHcfHB="theme-dark-bing">暗色-必应壁纸</_XMLmoTzJ>
                    <_XMLmoTzJ _mwoHcfHB="theme-light">亮色-简约</_XMLmoTzJ>
                    <_XMLmoTzJ _mwoHcfHB="theme-light-bing">亮色-必应壁纸</_XMLmoTzJ>
                    <_XMLmoTzJ _mwoHcfHB="theme-marble-light">简约大理石-亮色</_XMLmoTzJ>
                    <_XMLmoTzJ _mwoHcfHB="theme-matrix">矩阵-代码雨</_XMLmoTzJ>
                </_JqkXEtMx>
            </div>
            <div class="form-grid-label"><label>主题颜色</label><span class="tooltip-_ghhYWPJC" _jsLZsuJF-tooltip="自定义主题的主要颜色和动态背景效果的颜色。">?</span></div>
            <div class="form-grid-control">
                <label for="primaryColorInput">强调色</label><input _UXBTgEqt="_GdHBHXwl" _UwLxvUhK="primaryColorInput">
                <span _bmKYpvrg="_YczQFvvT: 20px;"></span>
                <label for="particleColorInput">背景/粒子色</label><input _UXBTgEqt="_GdHBHXwl" _UwLxvUhK="particleColorInput">
            </div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _bmKYpvrg="align-self: start;"><label>页面文本与颜色</label><span class="tooltip-_ghhYWPJC" _jsLZsuJF-tooltip="自定义页面上各个主要元素的显示文本和颜色。">?</span></div>
            <div class="form-grid-control" _bmKYpvrg="flex-direction: column; align-items: stretch; gap: 8px;">
                <div class="_WymvkWHi-_GdHBHXwl-grid"><input _UXBTgEqt="_GdHBHXwl" _UwLxvUhK="colorInput_title"><textarea _UwLxvUhK="textInput_title" _CxnJyTBq="1" _tDtUdUBr="页面主标题"></textarea></div>
                <div class="_WymvkWHi-_GdHBHXwl-grid"><input _UXBTgEqt="_GdHBHXwl" _UwLxvUhK="colorInput_loginButton"><input _UXBTgEqt="_WymvkWHi" _UwLxvUhK="textInput_loginButton" _tDtUdUBr="登录按钮文本"></div>
                <div class="_WymvkWHi-_GdHBHXwl-grid"><input _UXBTgEqt="_GdHBHXwl" _UwLxvUhK="colorInput_appDownloadTitle"><input _UXBTgEqt="_WymvkWHi" _UwLxvUhK="textInput_appDownloadTitle" _tDtUdUBr="APP下载标题"></div>
                <div class="_WymvkWHi-_GdHBHXwl-grid"><input _UXBTgEqt="_GdHBHXwl" _UwLxvUhK="colorInput_liveTitle"><input _UXBTgEqt="_WymvkWHi" _UwLxvUhK="textInput_liveTitle" _tDtUdUBr="本次结果标题"></div>
                <div class="_WymvkWHi-_GdHBHXwl-grid"><input _UXBTgEqt="_GdHBHXwl" _UwLxvUhK="colorInput_cachedTitle"><input _UXBTgEqt="_WymvkWHi" _UwLxvUhK="textInput_cachedTitle" _tDtUdUBr="上次结果标题"></div>
                <div class="_WymvkWHi-_GdHBHXwl-grid"><input _UXBTgEqt="_GdHBHXwl" _UwLxvUhK="colorInput_tableHeader"><input _UXBTgEqt="_WymvkWHi" _mwoHcfHB="表格头部文本颜色" readonly _bmKYpvrg="background: transparent; border: none;"></div>
            </div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _bmKYpvrg="align-self: start;"><label>公告栏设置</label><span class="tooltip-_ghhYWPJC" _jsLZsuJF-tooltip="设置在页面显示的公告内容和方式。">?</span></div>
            <div class="form-grid-control" _bmKYpvrg="flex-direction: column; align-items: stretch; gap: 8px;">
                 <textarea _UwLxvUhK="announcementText" _tDtUdUBr="在此输入公告内容" _CxnJyTBq="3"></textarea>
                 <div _bmKYpvrg="display: flex; justify-_WUgmIbOG: space-around; align-items: center; gap: 1rem; flex-wrap: wrap;">
                    <label _bmKYpvrg="display: flex; align-items: center; gap: 5px;"><input _UXBTgEqt="checkbox" _UwLxvUhK="enableMarquee"> 顶部走马灯</label>
                    <label _bmKYpvrg="display: flex; align-items: center; gap: 5px;"><input _UXBTgEqt="checkbox" _UwLxvUhK="enablePopup"> 右上角弹窗</label>
                    <div _UwLxvUhK="popupDurationContainer" _bmKYpvrg="display: none; align-items: center; gap: 5px;">
                        <label for="popupDuration">停留</label><input _UXBTgEqt="number" _UwLxvUhK="popupDuration" _bmKYpvrg="_YczQFvvT: 60px;"><span>秒</span>
                    </div>
                 </div>
            </div>
        </div>
      </div>
      <div _UwLxvUhK="_SXIpLcmk-_wPPiVNtW" class="tab-_WUgmIbOG">
        <div class="form-grid">
          <div class="form-grid-label"><label for="converterServiceUrlInput">Sublink 服务地址</label><span class="tooltip-_ghhYWPJC" _jsLZsuJF-tooltip="您部署的Sublink服务的域名,例如 https://sub.example.com">?</span></div>
          <div class="form-grid-control"><input _UXBTgEqt="_WymvkWHi" _UwLxvUhK="converterServiceUrlInput" _tDtUdUBr="https://sub.example.com"></div>
          <div class="form-grid-label"><label for="subscriptionIdLength">订阅ID长度</label><span class="tooltip-_ghhYWPJC" _jsLZsuJF-tooltip="生成订阅链接时使用的随机ID长度(2-128位)">?</span></div>
          <div class="form-grid-control"><input _UXBTgEqt="number" _UwLxvUhK="subscriptionIdLength" min="2" max="128"></div>
          <div class="form-grid-label" _bmKYpvrg="align-self: start;"><label for="subscriptionIdCharset">ID使用字符集</label><span class="tooltip-_ghhYWPJC" _jsLZsuJF-tooltip="生成ID时从这些字符中随机选择。请使用URL安全的字符。">?</span></div>
          <div class="form-grid-control"><textarea _UwLxvUhK="subscriptionIdCharset" _CxnJyTBq="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-_ghhYWPJC" _jsLZsuJF-tooltip="为结果IP添加复制配置链接的按钮。">?</span></div>
          <div class="form-grid-control" _bmKYpvrg="justify-_WUgmIbOG: flex-start;"><input _UXBTgEqt="checkbox" _UwLxvUhK="enableItemLinkCheckbox"></div>
        </div>
        <div _UwLxvUhK="itemLinkConfigGroup" _bmKYpvrg="display:none; margin-_SbSXQkoH: 1rem;">
          <div class="form-grid">
              <div class="form-grid-label" _bmKYpvrg="align-self: start;"><label for="itemLinkTemplateInput">分享链接模板</label><span class="tooltip-_ghhYWPJC" _jsLZsuJF-tooltip="定义分享链接格式。可用占位符: {_aZDjsUtb}, {_WSfhREhx}, {_LNRsGfZM}, {rank}, {_ESTsaTiw}, {_UmebUcxD}, {_IFBBpZwc}, {_AZzkPZSq}, {_BYwFCSys}。">?</span></div>
              <div class="form-grid-control"><textarea _UwLxvUhK="itemLinkTemplateInput" _CxnJyTBq="4"></textarea></div>
              <div class="form-grid-label"><label for="parameterSelectionMode">参数使用模式</label><span class="tooltip-_ghhYWPJC" _jsLZsuJF-tooltip="当定义了多组参数时,如何为每个IP分配。">?</span></div>
              <div class="form-grid-control"><_JqkXEtMx _UwLxvUhK="parameterSelectionMode"></_JqkXEtMx></div>
              <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
              <div class="form-grid-control-full"><div _UwLxvUhK="parameter-sets-_cGAxlJwz"></div><button _UXBTgEqt="button" _UwLxvUhK="add-parameter-_qvoYxgpO-btn" class="btn btn-outline" _bmKYpvrg="margin-_SbSXQkoH: 10px;">添加参数组</button></div>
              <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
              <div class="form-grid-label" _bmKYpvrg="align-self: start;"><label>其他自定义占位符</label><span class="tooltip-_ghhYWPJC" _jsLZsuJF-tooltip="创建您自己的占位符,并在模板中使用。">?</span></div>
              <div class="form-grid-control"><div _UwLxvUhK="custom-fields-_cGAxlJwz" _bmKYpvrg="_YczQFvvT: 100%;"></div></div>
              <div class="form-grid-label"></div><div class="form-grid-control" _bmKYpvrg="justify-_WUgmIbOG: flex-start;"><button _UXBTgEqt="button" _UwLxvUhK="add-custom-field-btn" class="btn btn-outline">添加自定义字段</button></div>
          </div>
        </div>
      </div>
      <div _UwLxvUhK="fine-grained-_wPPiVNtW" class="tab-_WUgmIbOG">
          <div class="form-grid-label" _bmKYpvrg="grid-column: 1 / -1; justify-self: start;"><label>地区与IP源</label><span class="tooltip-_ghhYWPJC" _jsLZsuJF-tooltip="定义不同地区的IP来源。启用并设置百分比后,它们将根据高级设置中“IP源设置”的总比例进行分配。">?</span></div>
          <div class="form-grid-control-full" _bmKYpvrg="display: flex; gap: 1rem; margin-bottom: 1rem; justify-_WUgmIbOG: flex-start;">
              <label><input _UXBTgEqt="checkbox" _UwLxvUhK="enableAllSourcesCheckbox"> 一键启用所有源</label>
              <label><input _UXBTgEqt="checkbox" _UwLxvUhK="disableAllSourcesCheckbox"> 一键取消所有源</label>
          </div>
          <div class="form-grid-control-full"><div _UwLxvUhK="fine-grained-sources-_cGAxlJwz"></div><button _UXBTgEqt="button" _UwLxvUhK="add-fine-grained-_QjDvWijq-btn" class="btn btn-outline" _bmKYpvrg="margin-_SbSXQkoH: 10px;">添加地区</button></div>
      </div>
      <div _UwLxvUhK="advanced-_wPPiVNtW" class="tab-_WUgmIbOG">
        <div class="form-grid">
            <div class="form-grid-label"><label for="useResolvedDomainsCheckbox">域名解析IP</label><span class="tooltip-_ghhYWPJC" _jsLZsuJF-tooltip="此处填写优选域名,即可使用优选域名的IP作为筛选源,作为不死IP备用">?</span></div>
            <div class="form-grid-control"><input _UXBTgEqt="checkbox" _UwLxvUhK="useResolvedDomainsCheckbox"></div>
            <div class="form-grid-control-full" _UwLxvUhK="resolvedDomainsGroup" _bmKYpvrg="display:none;"><div class="form-grid"><div class="form-grid-label"></div><div class="form-grid-control"><textarea _UwLxvUhK="resolvedDomainsInput" _tDtUdUBr="留空则使用内置默认域名" _CxnJyTBq="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-_ghhYWPJC" _jsLZsuJF-tooltip="启用后,将在订阅列表顶部添加您在此处指定的节点地址,例:1.1.1.1#443@名称  、 或:1.1.1.1@名称 (无端口则默认443)">?</span></div>
            <div class="form-grid-control"><input _UXBTgEqt="checkbox" _UwLxvUhK="enableCustomNodesCheckbox"></div>
            <div class="form-grid-control-full" _UwLxvUhK="customNodesGroup" _bmKYpvrg="display:none;"><div class="form-grid"><div class="form-grid-label"></div><div class="form-grid-control"><textarea _UwLxvUhK="customNodesInput" _tDtUdUBr="一行一个地址,支持域名、IPv4、IPv6。" _CxnJyTBq="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-_ghhYWPJC" _jsLZsuJF-tooltip="从所有启用的IP源中随机抽取的IP总数量。">?</span></div>
            <div class="form-grid-control"><input _UXBTgEqt="number" _UwLxvUhK="sampleSizeInput"></div>
            <div class="form-grid-label"><label for="topNInput">最终获取IP数量</label><span class="tooltip-_ghhYWPJC" _jsLZsuJF-tooltip="测试完成后,在结果列表中显示的延迟最低的IP数量。">?</span></div>
            <div class="form-grid-control"><input _UXBTgEqt="number" _UwLxvUhK="topNInput"></div>
            <div class="form-grid-label" _bmKYpvrg="display: none;"><label>延迟随机数范围 (ms)</label><span class="tooltip-_ghhYWPJC" _jsLZsuJF-tooltip="为每个测试结果的延迟增加一个在此范围内的随机值。">?</span></div>
            <div class="form-grid-control" _bmKYpvrg="display: none;"><input _UXBTgEqt="number" _UwLxvUhK="latencyRangeMinInput" _tDtUdUBr="最小"><span>-</span><input _UXBTgEqt="number" _UwLxvUhK="latencyRangeMaxInput" _tDtUdUBr="最大"></div>
            <div class="form-grid-label"><label for="enableIspFilterCheckbox">仅保留Cloudflare IP</label><span class="tooltip-_ghhYWPJC" _jsLZsuJF-tooltip="启用后,最终结果将只显示归属于Cloudflare的IP地址。">?</span></div>
            <div class="form-grid-control" _bmKYpvrg="justify-_WUgmIbOG: flex-start;"><input _UXBTgEqt="checkbox" _UwLxvUhK="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-_ghhYWPJC" _jsLZsuJF-tooltip="当部分IP归属地查询失败时,额外尝试查询的次数。">?</span></div>
            <div class="form-grid-control">
                <input _UXBTgEqt="number" _UwLxvUhK="geoLocationRetriesInput" _bmKYpvrg="_YczQFvvT: 80px;"> <span>次</span>
                <div _bmKYpvrg="display: flex; align-items: center; gap: 5px; margin-_AlZRebBN: 20px;">
                    <input _UXBTgEqt="checkbox" _UwLxvUhK="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-_ghhYWPJC" _jsLZsuJF-tooltip="所有WebSocket连接失败时使用的全局回退目标地址,格式为 '_IFBBpZwc:_WSfhREhx' 或 '_IFBBpZwc'。">?</span></div>
            <div class="form-grid-control"><input _UXBTgEqt="_WymvkWHi" _UwLxvUhK="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-_ghhYWPJC" _jsLZsuJF-tooltip="启用后, 将禁用自身的代理功能, 所有WebSocket请求将转发到指定地址。HTTP请求不受影响。节点生成规则也将改变。">?</span></div>
            <div class="form-grid-control" _bmKYpvrg="justify-_WUgmIbOG: flex-start;"><input _UXBTgEqt="checkbox" _UwLxvUhK="enableWebsocketStreamerCheckbox"></div>
            <div class="form-grid-control-full" _UwLxvUhK="websocketStreamerGroup" _bmKYpvrg="display:none;">
                <div class="form-grid">
                    <div class="form-grid-label"><label for="websocketStreamerUrlInput">转发目标地址</label></div>
                    <div class="form-grid-control"><input _UXBTgEqt="_WymvkWHi" _UwLxvUhK="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-_ghhYWPJC" _jsLZsuJF-tooltip="通过Worker加速部分外部资源。">?</span></div>
            <div class="form-grid-control" _bmKYpvrg="justify-_WUgmIbOG: flex-start;"><input _UXBTgEqt="checkbox" _UwLxvUhK="enableStreamerCheckbox"></div>
            <div class="form-grid-label"><label for="enableApiCheckbox">启用 API</label><span class="tooltip-_ghhYWPJC" _jsLZsuJF-tooltip="启用 /_aZDjsUtb 和 /api/endpoints 接口。">?</span></div>
            <div class="form-grid-control" _bmKYpvrg="justify-_WUgmIbOG: flex-start;"><input _UXBTgEqt="checkbox" _UwLxvUhK="enableApiCheckbox"></div>
            <div class="form-grid-control-full" _UwLxvUhK="apiConfigGroup" _bmKYpvrg="display:none;">
                <div class="form-grid"><div class="form-grid-label"><label for="apiMessageInput">API关闭时提示</label></div><div class="form-grid-control"><input _UXBTgEqt="_WymvkWHi" _UwLxvUhK="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-_ghhYWPJC" _jsLZsuJF-tooltip="创建一个固定路径,始终指向最新的优选结果。路径中请勿使用 / 等特殊字符。">?</span></div>
            <div class="form-grid-control" _bmKYpvrg="justify-_WUgmIbOG: flex-start;"><input _UXBTgEqt="checkbox" _UwLxvUhK="enableCustomSubPathCheckbox"></div>
            <div class="form-grid-control-full" _UwLxvUhK="customSubPathGroup" _bmKYpvrg="display:none;"><div class="form-grid"><div class="form-grid-label"><label for="customSubPathInput">设置路径</label></div><div class="form-grid-control"><input _UXBTgEqt="_WymvkWHi" _UwLxvUhK="customSubPathInput" _tDtUdUBr="例如: 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-_ghhYWPJC" _jsLZsuJF-tooltip="要求访客在开始测速前输入密码。">?</span></div>
            <div class="form-grid-control" _bmKYpvrg="justify-_WUgmIbOG: flex-start;"><input _UXBTgEqt="checkbox" _UwLxvUhK="enableVisitorPasswordCheckbox"></div>
            <div class="form-grid-control-full" _UwLxvUhK="visitorPasswordGroup" _bmKYpvrg="display:none;"><div class="form-grid"><div class="form-grid-label"><label for="visitorPasswordInput">设置访客密码</label></div><div class="form-grid-control"><input _UXBTgEqt="_WymvkWHi" _UwLxvUhK="visitorPasswordInput"></div></div></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _bmKYpvrg="align-self: start;"><label>Telegram 通知</label><span class="tooltip-_ghhYWPJC" _jsLZsuJF-tooltip="配置后,当有访客访问页面时,您将收到通知。">?</span></div>
            <div class="form-grid-control" _bmKYpvrg="flex-direction: column; align-items: stretch; gap: 8px;"><input _UXBTgEqt="_WymvkWHi" _UwLxvUhK="botTokenInput" _tDtUdUBr="Telegram Bot Token"><input _UXBTgEqt="_WymvkWHi" _UwLxvUhK="chatIdInput" _tDtUdUBr="Telegram Chat ID"></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _bmKYpvrg="align-self: start;"><label>修改管理员密码</label></div>
            <div class="form-grid-control" _bmKYpvrg="flex-direction: column; align-items: stretch; gap: 8px;"><input _UXBTgEqt="_UjsPUDqg" _UwLxvUhK="oldPasswordInput" _tDtUdUBr="旧密码"><input _UXBTgEqt="_UjsPUDqg" _UwLxvUhK="newPasswordInput" _tDtUdUBr="新密码 (至少6位)"><button _UwLxvUhK="changePasswordBtn" class="btn" _bmKYpvrg="align-self: flex-start; margin-_AlZRebBN: 0;">确认修改</button></div>
        </div>
      </div>
      <div class="modal-buttons"><button _UwLxvUhK="closeModalBtn" class="btn btn-outline">关闭</button><button _UwLxvUhK="saveParamsBtn" class="btn">保存并刷新</button></div>
    </div>
  </div>
  <div _UwLxvUhK="_sJkyyLeA">
      <div class="_KgqGLarC-modal-_WUgmIbOG">
          <div class="_KgqGLarC-modal-_TaEYOPrW"><h3 _UwLxvUhK="appModalTitle"></h3><button class="modal-close-btn">×</button></div>
          <div class="_KgqGLarC-modal-_UVcwkNOD" _UwLxvUhK="appModalBody"></div>
      </div>
  </div>
  <div _UwLxvUhK="_gbaZnBem">
      <div class="modal-_WUgmIbOG">
          <h3>复制订阅链接</h3>
          <div class="button-grid">
              <div class="btn-group"><button class="btn sub-btn" _jsLZsuJF-sub-_UXBTgEqt="coreEngine">Xray</button><button class="btn _lVdCdLBF-btn" _jsLZsuJF-sub-_UXBTgEqt="coreEngine">Q</button></div>
              <div class="btn-group"><button class="btn sub-btn" _jsLZsuJF-sub-_UXBTgEqt="coreProfile">Sing-Box</button><button class="btn _lVdCdLBF-btn" _jsLZsuJF-sub-_UXBTgEqt="coreProfile">Q</button></div>
              <div class="btn-group"><button class="btn sub-btn" _jsLZsuJF-sub-_UXBTgEqt="configProfile">Clash</button><button class="btn _lVdCdLBF-btn" _jsLZsuJF-sub-_UXBTgEqt="configProfile">Q</button></div>
              <div class="btn-group"><button class="btn sub-btn" _jsLZsuJF-sub-_UXBTgEqt="policyProfile">Surge</button><button class="btn _lVdCdLBF-btn" _jsLZsuJF-sub-_UXBTgEqt="policyProfile">Q</button></div>
          </div>
          <div class="modal-buttons" _bmKYpvrg="justify-_WUgmIbOG: center;"><button class="btn btn-outline" _UwLxvUhK="closeSubModalBtn">关闭</button></div>
      </div>
  </div>
  <div _UwLxvUhK="_IWWtSXyk">
      <div class="modal-_WUgmIbOG">
          <img _UwLxvUhK="qrCodeImg" src="" alt="QR Code">
      </div>
  </div>
<script>
    const _KSFScGkM = {
        isValid: (_aZDjsUtb) => _KSFScGkM.isIPv4(_aZDjsUtb) || _KSFScGkM.isIPv6(_aZDjsUtb),
        isIPv4: (_aZDjsUtb) => {
            if (typeof _aZDjsUtb !== 'string') return false;
            const _SGotdwrR = _aZDjsUtb.split('.');
            if (_SGotdwrR._dMuZadRi !== 4) return false;
            return _SGotdwrR.every(_pHAEwZUK => {
                const _GzIvwYUA = parseInt(_pHAEwZUK, 10);
                return !isNaN(_GzIvwYUA) && _GzIvwYUA >= 0 && _GzIvwYUA <= 255 && String(_GzIvwYUA) === _pHAEwZUK;
            });
        },
        isIPv6: (_aZDjsUtb) => {
            if (typeof _aZDjsUtb !== '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]))$/_IYkDmXNL.test(_aZDjsUtb);
        },
        toLong4: (_aZDjsUtb) => _aZDjsUtb.split('.').reduce((acc, octet, _IYkDmXNL) => acc + (parseInt(octet) << (8*(3-_IYkDmXNL))),0)>>>0,
        fromLong4: (long) => [(long>>>24)&0xFF,(long>>>16)&0xFF,(long>>>8)&0xFF,long&0xFF].join('.'),
        toBigInt6: (_aZDjsUtb) => {
            try {
                const _JuTHHtAf = _aZDjsUtb.split('/')[0];
                const _SGotdwrR = _JuTHHtAf.split('::');
                if (_SGotdwrR._dMuZadRi > 2) return 0n;
                let _mVNFJTwQ = [];
                if (_SGotdwrR[0]) {
                    _mVNFJTwQ = _SGotdwrR[0].split(':');
                }
                let _WNzKSHQq = [];
                if (_SGotdwrR._dMuZadRi > 1 && _SGotdwrR[1]) {
                    _WNzKSHQq = _SGotdwrR[1].split(':');
                }
                if (_mVNFJTwQ._dMuZadRi + _WNzKSHQq._dMuZadRi > 8) return 0n;
                const _TiyqlXqg = 8 - (_mVNFJTwQ._dMuZadRi + _WNzKSHQq._dMuZadRi);
                const _UfUWCqAy = [
                    ..._mVNFJTwQ,
                    ...Array(_TiyqlXqg).fill('0'),
                    ..._WNzKSHQq
                ].map(_pHAEwZUK => _pHAEwZUK || '0');
                while(_UfUWCqAy._dMuZadRi < 8) {
                    _UfUWCqAy.push('0');
                }
                let _wwVCNwwL = 0n;
                for (const _pHAEwZUK of _UfUWCqAy) {
                    if (_pHAEwZUK._dMuZadRi > 4) return 0n;
                    const _mwoHcfHB = BigInt('0x' + _pHAEwZUK);
                    _wwVCNwwL = (_wwVCNwwL << 16n) | _mwoHcfHB;
                }
                return _wwVCNwwL;
            } catch(_vzeKvyUe) {
                return 0n;
            }
        },
        fromBigInt6: (_wwVCNwwL) => {
            if (typeof _wwVCNwwL !== '_wwVCNwwL' || _wwVCNwwL < 0n) return null;
            const _SGotdwrR = [];
            for (let _IYkDmXNL = 0; _IYkDmXNL < 8; _IYkDmXNL++) {
                _SGotdwrR.unshift((_wwVCNwwL & 0xFFFFn).toString(16));
                _wwVCNwwL >>= 16n;
            }
            let _ABnbcSWy = { start: -1, _zTMKpMfT: 0 };
            let _aCekumWK = { start: -1, _zTMKpMfT: 0 };
            for (let _IYkDmXNL = 0; _IYkDmXNL < 8; _IYkDmXNL++) {
                if (_SGotdwrR[_IYkDmXNL] === '0') {
                    if (_aCekumWK.start === -1) _aCekumWK.start = _IYkDmXNL;
                    _aCekumWK._zTMKpMfT++;
                } else {
                    if (_aCekumWK._zTMKpMfT > _ABnbcSWy._zTMKpMfT) _ABnbcSWy = { ..._aCekumWK };
                    _aCekumWK = { start: -1, _zTMKpMfT: 0 };
                }
            }
            if (_aCekumWK._zTMKpMfT > _ABnbcSWy._zTMKpMfT) _ABnbcSWy = { ..._aCekumWK };
            if (_ABnbcSWy._zTMKpMfT > 1) {
                _SGotdwrR.splice(_ABnbcSWy.start, _ABnbcSWy._zTMKpMfT, '');
                if (_ABnbcSWy.start === 0) _SGotdwrR.unshift('');
                if (_ABnbcSWy.start + _ABnbcSWy._zTMKpMfT === 8) _SGotdwrR.push('');
            }
            return _SGotdwrR.join(':');
        },
        cidrToRange: (cidr, _nIctAOcS = 1) => {
            try {
                const [range, bitsStr] = cidr.split('/');
                const _wjSGYrcS = parseInt(bitsStr, 10);
                const _GsllkkcB = new Set();
                if (_KSFScGkM.isIPv4(range)) {
                    if (isNaN(_wjSGYrcS) || _wjSGYrcS < 8 || _wjSGYrcS > 32) return [];
                    if (_wjSGYrcS === 32) return [range];
                    const _SpveovVZ = _KSFScGkM.toLong4(range);
                    const _kLyipGjk = (0xFFFFFFFF << (32 - _wjSGYrcS)) >>> 0;
                    const _hfyqcHps = _SpveovVZ & _kLyipGjk;
                    const _BaiYnbTy = 1 << (32 - _wjSGYrcS);
                    if (_BaiYnbTy <= 2) return [];
                    const _ScNIVZtE = Math.min(_nIctAOcS, _BaiYnbTy - 2);
                    let _GuSVsPqX = 0;
                    while (_GsllkkcB.size < _ScNIVZtE && _GuSVsPqX < _ScNIVZtE * 5) {
                        const _XcIZJCFj = Math.floor(Math.random() * (_BaiYnbTy - 2)) + 1;
                        _GsllkkcB.add(_KSFScGkM.fromLong4((_hfyqcHps + _XcIZJCFj) >>> 0));
                        _GuSVsPqX++;
                    }
                    return Array.from(_GsllkkcB);
                } else if (_KSFScGkM.isIPv6(range)) {
                    if (isNaN(_wjSGYrcS) || _wjSGYrcS < 16 || _wjSGYrcS > 128) return [];
                    if (_wjSGYrcS === 128) return [range];
                    const _yrKSlpDk = _KSFScGkM.toBigInt6(range);
                    const _kLyipGjk = (2n ** BigInt(128 - _wjSGYrcS) - 1n);
                    const _hfyqcHps = _yrKSlpDk & ~_kLyipGjk;
                    const _qmtINvqt = 2n ** BigInt(128 - _wjSGYrcS);
                    if (_qmtINvqt <= 2n) return [];
                    let _GuSVsPqX = 0;
                    while (_GsllkkcB.size < _nIctAOcS && _GuSVsPqX < _nIctAOcS * 5) {
                        const _QVVzuPFP = new Uint8Array(16);
                        (typeof crypto !== 'undefined' ? crypto : self.crypto).getRandomValues(_QVVzuPFP);
                        let _HYvrMbcN = 0n;
                        for (const _gvLWctEj of _QVVzuPFP) {
                            _HYvrMbcN = (_HYvrMbcN << 8n) | BigInt(_gvLWctEj);
                        }
                        const _XcIZJCFj = _HYvrMbcN % (_qmtINvqt - 2n) + 1n;
                        _GsllkkcB.add(_KSFScGkM.fromBigInt6(_hfyqcHps + _XcIZJCFj));
                        _GuSVsPqX++;
                    }
                    return Array.from(_GsllkkcB);
                }
                return [];
            } catch(_vzeKvyUe) {
                console.error(`CIDR to range failed for ${cidr}:`, _vzeKvyUe);
                return [];
            }
        }
    };
    function _wWBHiKXQ(_apTxiHos, _rnHNVGld) {
        const _ghYQrezC = {};
        const _gtDzgYOw = Object._gtDzgYOw(_rnHNVGld);
        const _SGotdwrR = _gtDzgYOw.map(_UeiSOQnr => {
            const _pmAqbGxj = _apTxiHos * (_rnHNVGld[_UeiSOQnr] / 100);
            return { _UeiSOQnr, _nIctAOcS: Math.floor(_pmAqbGxj), remainder: _pmAqbGxj - Math.floor(_pmAqbGxj) };
        });
        let _PtDvorbP = _SGotdwrR.reduce((acc, _pHAEwZUK) => acc + _pHAEwZUK._nIctAOcS, 0);
        _SGotdwrR.sort((a, b) => b.remainder - a.remainder);
        let _xcNHBjnG = _apTxiHos - _PtDvorbP;
        for (let _IYkDmXNL = 0; _IYkDmXNL < _xcNHBjnG; _IYkDmXNL++) {
            _SGotdwrR[_IYkDmXNL % _SGotdwrR._dMuZadRi]._nIctAOcS++;
        }
        for (const _pHAEwZUK of _SGotdwrR) {
            _ghYQrezC[_pHAEwZUK._UeiSOQnr] = _pHAEwZUK._nIctAOcS;
        }
        return _ghYQrezC;
    }
    const _oXJhXMHf = __PAGE_DATA_JSON__;
    const _obKotQzd = _oXJhXMHf._WPFXtADK;
    const _UcAvLQTz = _oXJhXMHf.status;
    const _psZaOBdi = __ALL_CF_CIDR_LIST_JSON__;
    const _wZuqUOht = __BALANCED_CF_CIDR_LIST_JSON__;
    const _gBeJujXi = __DEFAULT_DOMAINS_LIST_JSON__;
    const _WGkGtzJj = __COUNTRY_MAP_JSON__;
    const _JPpuPBPw = _WGkGtzJj;
    const _qjVgxGzt = 2500;
    const _HEoUrvEW = navigator.hardwareConcurrency ? Math.min(16, navigator.hardwareConcurrency * 2) : 8;
    const _TjUMArqT = document.getElementById('_TjUMArqT');
    const _wJXmabob = document.getElementById('_wJXmabob');
    const _tJlzUdEp = document.getElementById('status');
    const _PtBMjiVm = document.getElementById('_PtBMjiVm');
    const _puDmpwwh = document.getElementById('resultsTable').querySelector('tbody');
    const _cNZTSEHU = document.getElementById('_cNZTSEHU');
    const _mTFHcMzU = document.getElementById('cachedResultsTable').querySelector('tbody');
    const _uCITFmZR = document.getElementById('notificationTooltip');
    const _zUvxQboL = document.getElementById('_zUvxQboL');
    const _NgKTXDEM = document.getElementById('_NgKTXDEM');
    const _sJkyyLeA = document.getElementById('_sJkyyLeA');
    const _gbaZnBem = document.getElementById('_gbaZnBem');
    const _IWWtSXyk = document.getElementById('_IWWtSXyk');
    const _cNUjZGUC = document.getElementById('_cNUjZGUC');
    const _BrNlcKFJ = document.getElementById('_BrNlcKFJ');
    let _DuJilGzG = null;
    let _QaDEOqId = null;
    let _GiGXNpeC = [];
    let _EjFglBJp = false;
    let _fSmhCUXG = null;
    function _PozjDzwG(_dOSOBKQd, _EKzUIWFa) {
        const _kEUgCfzc=parseInt(_dOSOBKQd.slice(1),16),t=_EKzUIWFa<0?0:255,p=_EKzUIWFa<0?_EKzUIWFa*-1:_EKzUIWFa,R=_kEUgCfzc>>16,G=_kEUgCfzc>>8&0x00FF,B=_kEUgCfzc&0x0000FF;
        const _ZJYxlUOX = Math.round((t-R)*p)+R;
        const _zGVrrAEp = Math.round((t-G)*p)+G;
        const _mKOAPcWG = Math.round((t-B)*p)+B;
        return `rgb(${_ZJYxlUOX.toString()}, ${_zGVrrAEp.toString()}, ${_mKOAPcWG.toString()})`;
    }
    function _XoWekNHV(_wPPiVNtW) {
        const _sCcLiQpk = _LdWDxyTh(_wPPiVNtW.primaryColor);
        if(_sCcLiQpk) {
            document.documentElement._bmKYpvrg.setProperty('--primary-_GdHBHXwl-rgb', `${_sCcLiQpk.r},${_sCcLiQpk.g},${_sCcLiQpk.b}`);
        }
        document.documentElement._bmKYpvrg.setProperty('--primary-_GdHBHXwl', _wPPiVNtW.primaryColor);
        document.documentElement._bmKYpvrg.setProperty('--primary-hover', _PozjDzwG(_wPPiVNtW.primaryColor, -0.1));
        document.documentElement._bmKYpvrg.setProperty('--primary-gradient-start', _PozjDzwG(_wPPiVNtW.primaryColor, 0.1));
        document.documentElement._bmKYpvrg.setProperty('--primary-gradient-end', _PozjDzwG(_wPPiVNtW.primaryColor, -0.1));
        document.getElementById('pageTitle').innerText = _wPPiVNtW.texts.title;
        document.title = _wPPiVNtW.texts.title;
        _zUvxQboL.innerText = _DuJilGzG ? _wPPiVNtW.texts.loginButtonSuccess : _wPPiVNtW.texts.loginButton;
        _zUvxQboL._bmKYpvrg._GdHBHXwl = _wPPiVNtW.colors.loginButton;
        document.getElementById('appDownloadTitleEl').innerText = _wPPiVNtW.texts.appDownloadTitle;
        document.getElementById('liveTitleEl').innerText = _wPPiVNtW.texts.liveTitle;
        document.getElementById('liveTitleEl')._bmKYpvrg._GdHBHXwl = _wPPiVNtW.colors.liveTitle;
        document.getElementById('cachedTitleEl').innerText = _wPPiVNtW.texts.cachedTitle;
        document.getElementById('cachedTitleEl')._bmKYpvrg._GdHBHXwl = _wPPiVNtW.colors.cachedTitle;
        const _IsyuVVgp = ['tableHeader1El', 'tableHeader2El', 'tableHeader3El', 'tableHeader4El', 'tableHeader5El', 'tableHeader6El', 'tableHeader7El'];
        _IsyuVVgp.forEach((_UwLxvUhK, _MZXmGEAE) => {
            const _UYTHpeaP = document.getElementById(_UwLxvUhK);
            if (_UYTHpeaP) _UYTHpeaP.innerText = _wPPiVNtW.texts[`tableHeader${_MZXmGEAE + 1}`] || '';
        });
        const _irzgvvtU = ['cachedTableHeader1El', 'cachedTableHeader2El', 'cachedTableHeader3El', 'cachedTableHeader4El', 'cachedTableHeader5El', 'cachedTableHeader6El', 'cachedTableHeader7El'];
        _irzgvvtU.forEach((_UwLxvUhK, _MZXmGEAE) => {
             const _UYTHpeaP = document.getElementById(_UwLxvUhK);
             if (_UYTHpeaP) _UYTHpeaP.innerText = _obKotQzd.texts[`tableHeader${_MZXmGEAE + 1}`] || '';
        });
        document.querySelectorAll('th').forEach(th => th._bmKYpvrg._GdHBHXwl = _wPPiVNtW.colors.tableHeader);
        document._UVcwkNOD.className = '';
        document._UVcwkNOD.classList.add(_wPPiVNtW.theme);
        if (['theme-particles-glass', 'theme-modern-glass', 'theme-aurora-glass', 'theme-cyberpunk-glass'].includes(_wPPiVNtW.theme)) {
            document._UVcwkNOD.classList.add('glassy-components');
        }
        document._UVcwkNOD._bmKYpvrg.backgroundImage = '';
        _eKEbMEwq();
        if (_wPPiVNtW.theme.includes('particles') || _wPPiVNtW.theme.includes('glass')) {
            _gBlHHJSG(_wPPiVNtW.particleColor);
        } else if (_wPPiVNtW.theme.includes('bing')) {
            document._UVcwkNOD._bmKYpvrg.backgroundImage = '_fOEGokng(/bing-wallpaper)';
        }
    }
    function _zxyLHoxj() {
        _DuJilGzG = null;
        if(_QaDEOqId) clearTimeout(_QaDEOqId);
        _XoWekNHV(_obKotQzd);
        _RiWJoDWF("登录已超时,请重新登录。", "warning");
    }
    async function _jjqHWYjy() {
        if (_DuJilGzG) {
            _IorSRsJD();
            return;
        }
        const _CnwrkERh = prompt('请输入管理员密码:');
        if (!_CnwrkERh) return;
        try {
            const _rdaWrzdR = await fetch('/api/verify-_UjsPUDqg', {
                method: 'POST',
                _IsyuVVgp: { 'Content-Type': 'application/json' },
                _UVcwkNOD: JSON.stringify({ _UjsPUDqg: _CnwrkERh })
            });
            const _eYItWoTE = await _rdaWrzdR.json();
            if (_eYItWoTE.success) {
                _DuJilGzG = _CnwrkERh;
                _RiWJoDWF("登录成功!有效期5分钟。", "success");
                if (_QaDEOqId) clearTimeout(_QaDEOqId);
                _QaDEOqId = setTimeout(_zxyLHoxj, 5 * 60 * 1000);
                _XoWekNHV(_obKotQzd);
                _IorSRsJD();
            } else {
                throw new Error(_eYItWoTE._eYQEWIkQ || '密码验证失败');
            }
        } catch (_vzeKvyUe) {
            _RiWJoDWF(`登录失败: ${_vzeKvyUe._eYQEWIkQ}`, "error");
        }
    }
    function _OsVEfxhI() {
        if (!_UcAvLQTz._BiUkeXSz) {
            _cNUjZGUC._bmKYpvrg.display = 'flex';
            document.getElementById('setInitialPasswordBtn').addEventListener('click', async () => {
                const _UjsPUDqg = document.getElementById('initialPassword')._mwoHcfHB;
                const _rtcTbfls = document.getElementById('confirmPassword')._mwoHcfHB;
                if (_UjsPUDqg !== _rtcTbfls) {
                    _RiWJoDWF("两次输入的密码不一致!", "error");
                    return;
                }
                if (_UjsPUDqg._dMuZadRi < 6) {
                    _RiWJoDWF("密码长度不能少于6位!", "error");
                    return;
                }
                try {
                    const _rdaWrzdR = await fetch('/api/_qvoYxgpO-_UjsPUDqg', {
                        method: 'POST',
                        _IsyuVVgp: { 'Content-Type': 'application/json' },
                        _UVcwkNOD: JSON.stringify({ _UjsPUDqg })
                    });
                    const _eYItWoTE = await _rdaWrzdR.json();
                    if (_eYItWoTE.success) {
                        _RiWJoDWF(_eYItWoTE._eYQEWIkQ, "success");
                        setTimeout(() => _ESTsaTiw.reload(), 1500);
                    } else {
                        throw new Error(_eYItWoTE._eYQEWIkQ);
                    }
                } catch(_vzeKvyUe) {
                    _RiWJoDWF(`设置密码失败: ${_vzeKvyUe._eYQEWIkQ}`, "error");
                }
            });
            return;
        }
        _zUvxQboL.addEventListener('click', _jjqHWYjy);
        document.getElementById('closeModalBtn').addEventListener('click', () => { _NgKTXDEM._bmKYpvrg.display = 'none'; });
        _NgKTXDEM.addEventListener('click', (_vzeKvyUe) => { if (_vzeKvyUe.target === _NgKTXDEM) _NgKTXDEM._bmKYpvrg.display = 'none'; });
        
        document.getElementById('enableAllSourcesCheckbox').addEventListener('change', function() {
            if (this.checked) {
                document.querySelectorAll('#fine-grained-sources-_cGAxlJwz .fine-grained-_rtrtEvxp-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-_cGAxlJwz .fine-grained-_rtrtEvxp-cb').forEach(cb => cb.checked = false);
                document.getElementById('enableAllSourcesCheckbox').checked = false;
                this.checked = false;
            }
        });

        document.getElementById('saveParamsBtn').addEventListener('click', async () => {
            if (!_DuJilGzG) {
                _RiWJoDWF("请先通过点击右上角按钮输入密码。", "error");
                return;
            }
            const _VFTCKnaq = [];
            document.querySelectorAll('#custom-fields-_cGAxlJwz .custom-field-_ubfiaDvz').forEach(_ubfiaDvz => {
                const _LNRsGfZM = _ubfiaDvz.querySelector('.custom-field-_LNRsGfZM')._mwoHcfHB.trim();
                const _mwoHcfHB = _ubfiaDvz.querySelector('.custom-field-_mwoHcfHB')._mwoHcfHB.trim();
                if (_LNRsGfZM) _VFTCKnaq.push({ _LNRsGfZM, _mwoHcfHB });
            });
            const _JUAehFpn = [];
            document.querySelectorAll('#parameter-sets-_cGAxlJwz .parameter-_qvoYxgpO-_ubfiaDvz').forEach(_ubfiaDvz => {
                const _LNRsGfZM = _ubfiaDvz.querySelector('.param-_qvoYxgpO-_LNRsGfZM')._mwoHcfHB.trim();
                const _IFBBpZwc = _ubfiaDvz.querySelector('.param-_qvoYxgpO-_IFBBpZwc')._mwoHcfHB.trim();
                const _AZzkPZSq = _ubfiaDvz.querySelector('.param-_qvoYxgpO-_AZzkPZSq')._mwoHcfHB.trim();
                const _BYwFCSys = _ubfiaDvz.querySelector('.param-_qvoYxgpO-_BYwFCSys')._mwoHcfHB.trim();
                if(_LNRsGfZM) _JUAehFpn.push({ _LNRsGfZM, _IFBBpZwc, '_AZzkPZSq': _AZzkPZSq, _BYwFCSys });
            });
            const _UxnMnAJG = [];
            document.querySelectorAll('#fine-grained-sources-_cGAxlJwz .fine-grained-_QjDvWijq-_ubfiaDvz').forEach(_ubfiaDvz => {
                const _ESTsaTiw = _ubfiaDvz.querySelector('.fine-grained-_ESTsaTiw')._mwoHcfHB.trim();
                const _GsllkkcB = _ubfiaDvz.querySelector('.fine-grained-_GsllkkcB')._mwoHcfHB.trim();
                const _rtrtEvxp = _ubfiaDvz.querySelector('.fine-grained-_rtrtEvxp-cb').checked;
                const _McxEmfZN = parseInt(_ubfiaDvz.querySelector('.fine-grained-_McxEmfZN')._mwoHcfHB, 10) || 0;
                const _DKBTBPHa = _ubfiaDvz.querySelector('.use-_LNRsGfZM-as-_ESTsaTiw-cb').checked;
                if (_ESTsaTiw && _GsllkkcB) {
                    _UxnMnAJG.push({ _ESTsaTiw, _GsllkkcB, _rtrtEvxp, _McxEmfZN, _DKBTBPHa });
                }
            });
            
            let _addltmAo = parseInt(document.getElementById('subscriptionIdLength')._mwoHcfHB, 10);
            if (isNaN(_addltmAo) || _addltmAo < 2) _addltmAo = 2;
            if (_addltmAo > 128) _addltmAo = 128;

            const _mAbJYpvY = {
                theme: document.getElementById('themeSelect')._mwoHcfHB,
                primaryColor: document.getElementById('primaryColorInput')._mwoHcfHB,
                particleColor: document.getElementById('particleColorInput')._mwoHcfHB,
                useResolvedDomains: document.getElementById('useResolvedDomainsCheckbox').checked,
                resolvedDomains: document.getElementById('resolvedDomainsInput')._mwoHcfHB,
                sampleSize: parseInt(document.getElementById('sampleSizeInput')._mwoHcfHB, 10) || 1000,
                topN: parseInt(document.getElementById('topNInput')._mwoHcfHB, 10) || 15,
                rttRandomMin: parseInt(document.getElementById('latencyRangeMinInput')._mwoHcfHB, 10) || 0,
                rttRandomMax: parseInt(document.getElementById('latencyRangeMaxInput')._mwoHcfHB, 10) || 0,
                _fUFowuJi: document.getElementById('converterServiceUrlInput')._mwoHcfHB.trim(),
                subscriptionId: {
                    _dMuZadRi: _addltmAo,
                    _umbKVliz: document.getElementById('subscriptionIdCharset')._mwoHcfHB.trim()
                },
                api: {
                    _rtrtEvxp: document.getElementById('enableApiCheckbox').checked,
                    _eYQEWIkQ: document.getElementById('apiMessageInput')._mwoHcfHB || '维护中...',
                },
                ispFilter: { 
                    _rtrtEvxp: document.getElementById('enableIspFilterCheckbox').checked 
                },
                geoLocation: {
                    retries: parseInt(document.getElementById('geoLocationRetriesInput')._mwoHcfHB, 10) || 0,
                    filterUnknown: document.getElementById('filterUnknownGeoCheckbox').checked
                },
                streamer: {
                    _rtrtEvxp: document.getElementById('enableStreamerCheckbox').checked
                },
                websocketStreamer: {
                    _rtrtEvxp: document.getElementById('enableWebsocketStreamerCheckbox').checked,
                    _fOEGokng: document.getElementById('websocketStreamerUrlInput')._mwoHcfHB.trim()
                },
                visitorPassword: {
                    _rtrtEvxp: document.getElementById('enableVisitorPasswordCheckbox').checked,
                    _UjsPUDqg: document.getElementById('visitorPasswordInput')._mwoHcfHB.trim()
                },
                customSubPath: {
                    _rtrtEvxp: document.getElementById('enableCustomSubPathCheckbox').checked,
                    _BYwFCSys: document.getElementById('customSubPathInput')._mwoHcfHB.trim()
                },
                itemLink: {
                    _rtrtEvxp: document.getElementById('enableItemLinkCheckbox').checked,
                    template: document.getElementById('itemLinkTemplateInput')._mwoHcfHB,
                    selectionMode: document.getElementById('parameterSelectionMode')._mwoHcfHB,
                    _JUAehFpn: _JUAehFpn,
                    _VFTCKnaq: _VFTCKnaq,
                },
                dataFeeds: {
                    universalFallbackAddress: document.getElementById('universalFallbackAddressInput')._mwoHcfHB.trim(),
                },
                announcement: {
                    popup: {
                        _rtrtEvxp: document.getElementById('enablePopup').checked,
                        _WymvkWHi: document.getElementById('announcementText')._mwoHcfHB,
                        _WpucuzIG: parseInt(document.getElementById('popupDuration')._mwoHcfHB, 10) || 5
                    },
                    marquee: {
                        _rtrtEvxp: document.getElementById('enableMarquee').checked,
                        _WymvkWHi: document.getElementById('announcementText')._mwoHcfHB
                    }
                },
                fineGrained: {
                    _rtrtEvxp: true,
                    sources: _UxnMnAJG
                },
                customNodes: {
                    _rtrtEvxp: document.getElementById('enableCustomNodesCheckbox').checked,
                    list: document.getElementById('customNodesInput')._mwoHcfHB
                },
                texts: {
                    title: document.getElementById('textInput_title')._mwoHcfHB,
                    loginButton: document.getElementById('textInput_loginButton')._mwoHcfHB,
                    loginButtonSuccess: '修改参数',
                    appDownloadTitle: document.getElementById('textInput_appDownloadTitle')._mwoHcfHB,
                    liveTitle: document.getElementById('textInput_liveTitle')._mwoHcfHB,
                    cachedTitle: document.getElementById('textInput_cachedTitle')._mwoHcfHB,
                },
                colors: {
                    title: document.getElementById('colorInput_title')._mwoHcfHB,
                    loginButton: document.getElementById('colorInput_loginButton')._mwoHcfHB,
                    liveTitle: document.getElementById('colorInput_liveTitle')._mwoHcfHB,
                    cachedTitle: document.getElementById('colorInput_cachedTitle')._mwoHcfHB,
                    tableHeader: document.getElementById('colorInput_tableHeader')._mwoHcfHB,
                },
                telegram: {
                    bot_token: document.getElementById('botTokenInput')._mwoHcfHB.trim(),
                    chat_id: document.getElementById('chatIdInput')._mwoHcfHB.trim(),
                },
            };
            try {
                const _rdaWrzdR = await fetch('/api/_WPFXtADK', {
                    method: 'POST',
                    _IsyuVVgp: { 'Content-Type': 'application/json' },
                    _UVcwkNOD: JSON.stringify({ _WPFXtADK: _mAbJYpvY, adminPassword: _DuJilGzG })
                });
                const _eYItWoTE = await _rdaWrzdR.json();
                if (_rdaWrzdR.ok && _eYItWoTE.success) {
                    _RiWJoDWF("配置已保存,正在刷新...", "success");
                    setTimeout(() => _ESTsaTiw.reload(), 1500);
                } else {
                    throw new Error(_eYItWoTE._eYQEWIkQ || '未知错误');
                }
            } catch (_vzeKvyUe) {
                _RiWJoDWF(`操作失败: ${_vzeKvyUe._eYQEWIkQ}`, "error");
                if (String(_vzeKvyUe._eYQEWIkQ).includes("密码错误")) {
                    _zxyLHoxj();
                }
            }
        });
        document.getElementById('changePasswordBtn').addEventListener('click', async () => {
            const _zDvKlXNR = document.getElementById('oldPasswordInput')._mwoHcfHB;
            const _pvCpsFXk = document.getElementById('newPasswordInput')._mwoHcfHB;
            if (!_zDvKlXNR || !_pvCpsFXk) {
                _RiWJoDWF("新旧密码均不能为空!", "error");
                return;
            }
             try {
                const _rdaWrzdR = await fetch('/api/change-_UjsPUDqg', {
                    method: 'POST',
                    _IsyuVVgp: { 'Content-Type': 'application/json' },
                    _UVcwkNOD: JSON.stringify({ _zDvKlXNR, _pvCpsFXk })
                });
                const _eYItWoTE = await _rdaWrzdR.json();
                if (_eYItWoTE.success) {
                    _RiWJoDWF(_eYItWoTE._eYQEWIkQ, "success");
                    document.getElementById('oldPasswordInput')._mwoHcfHB = '';
                    document.getElementById('newPasswordInput')._mwoHcfHB = '';
                    _DuJilGzG = _pvCpsFXk;
                } else {
                    throw new Error(_eYItWoTE._eYQEWIkQ);
                }
            } catch(_vzeKvyUe) {
                _RiWJoDWF(`修改密码失败: ${_vzeKvyUe._eYQEWIkQ}`, "error");
            }
        });
        document.getElementById('useResolvedDomainsCheckbox').addEventListener('change', (_vzeKvyUe) => {
            document.getElementById('resolvedDomainsGroup')._bmKYpvrg.display = _vzeKvyUe.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableCustomNodesCheckbox').addEventListener('change', (_vzeKvyUe) => {
            document.getElementById('customNodesGroup')._bmKYpvrg.display = _vzeKvyUe.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableApiCheckbox').addEventListener('change', (_vzeKvyUe) => {
            document.getElementById('apiConfigGroup')._bmKYpvrg.display = _vzeKvyUe.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableItemLinkCheckbox').addEventListener('change', (_vzeKvyUe) => {
            document.getElementById('itemLinkConfigGroup')._bmKYpvrg.display = _vzeKvyUe.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableWebsocketStreamerCheckbox').addEventListener('change', (_vzeKvyUe) => {
            document.getElementById('websocketStreamerGroup')._bmKYpvrg.display = _vzeKvyUe.target.checked ? 'block' : 'none';
            const _EzJhIfXB = document.querySelector('#parameter-sets-_cGAxlJwz .param-_qvoYxgpO-_BYwFCSys');
            if (_EzJhIfXB) {
                if (_vzeKvyUe.target.checked) {
                    _EzJhIfXB._mwoHcfHB = '/snippets?_aZDjsUtb=endpointAddress:_WSfhREhx(443)&nat64=6to4';
                } else {
                    _EzJhIfXB._mwoHcfHB = '/?ed=2560';
                }
            }
        });
         document.getElementById('add-custom-field-btn').addEventListener('click', () => {
             _ttBTPXEj('', '');
        });
        document.getElementById('add-parameter-_qvoYxgpO-btn').addEventListener('click', () => {
            const _nIctAOcS = document.querySelectorAll('.parameter-_qvoYxgpO-_ubfiaDvz')._dMuZadRi + 1;
            _nIxGvncJ({_LNRsGfZM: `配置${_nIctAOcS}`, _IFBBpZwc: '', _AZzkPZSq: '', _BYwFCSys: ''});
            _nKZnCzhh();
        });
         document.getElementById('add-fine-grained-_QjDvWijq-btn').addEventListener('click', () => {
             _wEekfORK({ _ESTsaTiw: '', _GsllkkcB: '', _rtrtEvxp: true, _McxEmfZN: 50, _DKBTBPHa: false });
        });
        document.getElementById('enableVisitorPasswordCheckbox').addEventListener('change', (_vzeKvyUe) => {
            document.getElementById('visitorPasswordGroup')._bmKYpvrg.display = _vzeKvyUe.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableCustomSubPathCheckbox').addEventListener('change', (_vzeKvyUe) => {
            document.getElementById('customSubPathGroup')._bmKYpvrg.display = _vzeKvyUe.target.checked ? 'block' : 'none';
        });
        document.getElementById('enablePopup').addEventListener('change', (_vzeKvyUe) => {
            document.getElementById('popupDurationContainer')._bmKYpvrg.display = _vzeKvyUe.target.checked ? 'flex' : 'none';
        });
    }
    function _ttBTPXEj(_LNRsGfZM, _mwoHcfHB) {
        const _cGAxlJwz = document.getElementById('custom-fields-_cGAxlJwz');
        const _jVXppjFQ = document.createElement('div');
        _jVXppjFQ.className = 'form-grid custom-field-_ubfiaDvz';
        _jVXppjFQ._bmKYpvrg = 'grid-template-columns: 1fr 1fr auto; gap: 5px; margin-bottom: 5px;';
        _jVXppjFQ.innerHTML = `
            <input _UXBTgEqt="_WymvkWHi" class="custom-field-_LNRsGfZM" _tDtUdUBr="占位符名称" _mwoHcfHB="${_LNRsGfZM}">
            <input _UXBTgEqt="_WymvkWHi" class="custom-field-_mwoHcfHB" _tDtUdUBr="值" _mwoHcfHB="${_mwoHcfHB}">
            <button _UXBTgEqt="button" class="btn btn-outline" onclick="this.closest('.form-grid').remove()">删除</button>
        `;
        _cGAxlJwz.appendChild(_jVXppjFQ);
    }
    function _nIxGvncJ(_qvoYxgpO) {
        const _cGAxlJwz = document.getElementById('parameter-sets-_cGAxlJwz');
        const _jVXppjFQ = document.createElement('div');
        _jVXppjFQ.className = 'parameter-_qvoYxgpO-_ubfiaDvz';
        _jVXppjFQ.innerHTML = `
            <div class="parameter-_qvoYxgpO-_TaEYOPrW">
                <input _UXBTgEqt="_WymvkWHi" class="param-_qvoYxgpO-_LNRsGfZM" _tDtUdUBr="配置名称" _mwoHcfHB="${_qvoYxgpO._LNRsGfZM}" oninput="_nKZnCzhh()">
                <button _UXBTgEqt="button" class="btn btn-outline" onclick="this.closest('.parameter-_qvoYxgpO-_ubfiaDvz').remove(); _nKZnCzhh();">删除</button>
            </div>
            <div class="form-grid">
                <div class="form-grid-label"><label>Host</label></div><div class="form-grid-control"><input _UXBTgEqt="_WymvkWHi" class="param-_qvoYxgpO-_IFBBpZwc" _mwoHcfHB="${_qvoYxgpO._IFBBpZwc || ''}"></div>
                <div class="form-grid-label"><label>ID</label></div><div class="form-grid-control"><input _UXBTgEqt="_WymvkWHi" class="param-_qvoYxgpO-_AZzkPZSq" _mwoHcfHB="${_qvoYxgpO['_AZzkPZSq'] || ''}"></div>
                <div class="form-grid-label"><label>Path</label></div><div class="form-grid-control"><input _UXBTgEqt="_WymvkWHi" class="param-_qvoYxgpO-_BYwFCSys" _mwoHcfHB="${_qvoYxgpO._BYwFCSys || ''}"></div>
            </div>
        `;
        _cGAxlJwz.appendChild(_jVXppjFQ);
    }
    function _nKZnCzhh() {
        const _JqkXEtMx = document.getElementById('parameterSelectionMode');
        const _BlGynkXX = _JqkXEtMx._mwoHcfHB;
        _JqkXEtMx.innerHTML = '';
        const _TWUjgcnX = document.createElement('_XMLmoTzJ');
        _TWUjgcnX._mwoHcfHB = 'random';
        _TWUjgcnX.textContent = '随机轮询';
        _JqkXEtMx.appendChild(_TWUjgcnX);
        const _WaYZlIFa = document.createElement('_XMLmoTzJ');
        _WaYZlIFa._mwoHcfHB = 'first';
        _WaYZlIFa.textContent = '使用第一组';
        _JqkXEtMx.appendChild(_WaYZlIFa);
        document.querySelectorAll('.param-_qvoYxgpO-_LNRsGfZM').forEach(input => {
            const _LNRsGfZM = input._mwoHcfHB.trim();
            if (_LNRsGfZM) {
                const _XMLmoTzJ = document.createElement('_XMLmoTzJ');
                _XMLmoTzJ._mwoHcfHB = _LNRsGfZM;
                _XMLmoTzJ.textContent = `指定: ${_LNRsGfZM}`;
                _JqkXEtMx.appendChild(_XMLmoTzJ);
            }
        });
        if (Array.from(_JqkXEtMx.options).some(opt => opt._mwoHcfHB === _BlGynkXX)) {
            _JqkXEtMx._mwoHcfHB = _BlGynkXX;
        } else {
            _JqkXEtMx._mwoHcfHB = 'random';
        }
    }
    function _wEekfORK(_QjDvWijq) {
        const _cGAxlJwz = document.getElementById('fine-grained-sources-_cGAxlJwz');
        const _jVXppjFQ = document.createElement('div');
        _jVXppjFQ.className = 'fine-grained-_QjDvWijq-_ubfiaDvz parameter-_qvoYxgpO-_ubfiaDvz';
        _jVXppjFQ._bmKYpvrg.padding = '1rem';
        const _dEBXqfWP = _QjDvWijq._DKBTBPHa ? 'checked' : '';
        const _qWkeeNqJ = !_QjDvWijq._DKBTBPHa ? 'checked' : '';
        const _ngwzuZkQ = _QjDvWijq._rtrtEvxp ? 'checked' : '';
        _jVXppjFQ.innerHTML = `
            <div _bmKYpvrg="display: grid; grid-template-columns: 1fr auto auto; gap: 10px; align-items: center; margin-bottom: 1rem;">
                <input _UXBTgEqt="_WymvkWHi" class="fine-grained-_ESTsaTiw" _tDtUdUBr="地区名称 (如: 香港)" _mwoHcfHB="${_QjDvWijq._ESTsaTiw || ''}">
                <div _bmKYpvrg="display: flex; align-items: center; gap: 5px;"><input _UXBTgEqt="checkbox" class="fine-grained-_rtrtEvxp-cb" ${_ngwzuZkQ}><label>启用</label></div>
                <button _UXBTgEqt="button" class="btn btn-outline" onclick="this.closest('.fine-grained-_QjDvWijq-_ubfiaDvz').remove()">删除</button>
            </div>
            <textarea class="fine-grained-_GsllkkcB" _tDtUdUBr="IP源 (每行一个IP、CIDR或URL)" _CxnJyTBq="3" _bmKYpvrg="_YczQFvvT:100%;">${_QjDvWijq._GsllkkcB || ''}</textarea>
            <div class="fine-grained-options" _bmKYpvrg="justify-_WUgmIbOG: space-between;">
                <div _bmKYpvrg="display: flex; gap: 1rem;">
                    <label><input _UXBTgEqt="checkbox" class="query-_lxiQIxVD-cb" ${_qWkeeNqJ}>查询真实归属地</label>
                    <label><input _UXBTgEqt="checkbox" class="use-_LNRsGfZM-as-_ESTsaTiw-cb" ${_dEBXqfWP}>使用地区名称作为归属地</label>
                </div>
                <div _bmKYpvrg="display: flex; align-items: center; gap: 5px;"><input _UXBTgEqt="number" class="fine-grained-_McxEmfZN _McxEmfZN-input" _mwoHcfHB="${_QjDvWijq._McxEmfZN || 0}" min="0" max="100"><span>%</span></div>
            </div>
        `;
        const _YmxXPeUS = _jVXppjFQ.querySelector('.query-_lxiQIxVD-cb');
        const _LxcCaetC = _jVXppjFQ.querySelector('.use-_LNRsGfZM-as-_ESTsaTiw-cb');
        _YmxXPeUS.addEventListener('change', () => {
            if (_YmxXPeUS.checked) {
                _LxcCaetC.checked = false;
            } else if (!_LxcCaetC.checked) {
                _YmxXPeUS.checked = true;
            }
        });
        _LxcCaetC.addEventListener('change', () => {
            if (_LxcCaetC.checked) {
                _YmxXPeUS.checked = false;
            } else if (!_LxcCaetC.checked) {
                _LxcCaetC.checked = true;
            }
        });
        _cGAxlJwz.appendChild(_jVXppjFQ);
    }
    function _IorSRsJD() {
        const _wPPiVNtW = _obKotQzd;
        document.getElementById('themeSelect')._mwoHcfHB = _wPPiVNtW.theme;
        document.getElementById('primaryColorInput')._mwoHcfHB = _wPPiVNtW.primaryColor;
        document.getElementById('particleColorInput')._mwoHcfHB = _wPPiVNtW.particleColor;
        document.getElementById('useResolvedDomainsCheckbox').checked = _wPPiVNtW.useResolvedDomains;
        document.getElementById('resolvedDomainsInput')._tDtUdUBr = '留空则使用内置默认域名';
        document.getElementById('resolvedDomainsInput')._mwoHcfHB = _wPPiVNtW.resolvedDomains || '';
        document.getElementById('resolvedDomainsGroup')._bmKYpvrg.display = _wPPiVNtW.useResolvedDomains ? 'block' : 'none';
        document.getElementById('enableCustomNodesCheckbox').checked = _wPPiVNtW.customNodes._rtrtEvxp;
        document.getElementById('customNodesInput')._mwoHcfHB = _wPPiVNtW.customNodes.list || '';
        document.getElementById('customNodesGroup')._bmKYpvrg.display = _wPPiVNtW.customNodes._rtrtEvxp ? 'block' : 'none';
        document.getElementById('converterServiceUrlInput')._mwoHcfHB = _wPPiVNtW._fUFowuJi || '';
        document.getElementById('subscriptionIdLength')._mwoHcfHB = _wPPiVNtW.subscriptionId._dMuZadRi;
        document.getElementById('subscriptionIdCharset')._mwoHcfHB = _wPPiVNtW.subscriptionId._umbKVliz;
        document.getElementById('enableItemLinkCheckbox').checked = _wPPiVNtW.itemLink._rtrtEvxp;
        document.getElementById('itemLinkConfigGroup')._bmKYpvrg.display = _wPPiVNtW.itemLink._rtrtEvxp ? 'block' : 'none';
        document.getElementById('itemLinkTemplateInput')._mwoHcfHB = _wPPiVNtW.itemLink.template;
        const _HRGpKaHD = document.getElementById('parameter-sets-_cGAxlJwz');
        _HRGpKaHD.innerHTML = '';
        if (_wPPiVNtW.itemLink._JUAehFpn && Array.isArray(_wPPiVNtW.itemLink._JUAehFpn)) {
            _wPPiVNtW.itemLink._JUAehFpn.forEach(_qvoYxgpO => _nIxGvncJ(_qvoYxgpO));
        }
        _nKZnCzhh();
        document.getElementById('parameterSelectionMode')._mwoHcfHB = _wPPiVNtW.itemLink.selectionMode || 'random';
        const _EzJhIfXB = document.querySelector('#parameter-sets-_cGAxlJwz .param-_qvoYxgpO-_BYwFCSys');
        if (_EzJhIfXB && _wPPiVNtW.websocketStreamer && _wPPiVNtW.websocketStreamer._rtrtEvxp) {
            _EzJhIfXB._mwoHcfHB = '/snippets?_aZDjsUtb=endpointAddress:_WSfhREhx(443)&nat64=6to4';
        }
        const _BsHkPuTX = document.getElementById('custom-fields-_cGAxlJwz');
        _BsHkPuTX.innerHTML = '';
        if (_wPPiVNtW.itemLink._VFTCKnaq && Array.isArray(_wPPiVNtW.itemLink._VFTCKnaq)) {
            _wPPiVNtW.itemLink._VFTCKnaq.forEach(field => _ttBTPXEj(field._LNRsGfZM, field._mwoHcfHB));
        }
        document.getElementById('universalFallbackAddressInput')._mwoHcfHB = _wPPiVNtW.dataFeeds.universalFallbackAddress || '';
        const _hpxHiHtd = _wPPiVNtW.websocketStreamer && _wPPiVNtW.websocketStreamer._rtrtEvxp;
        document.getElementById('enableWebsocketStreamerCheckbox').checked = _hpxHiHtd;
        document.getElementById('websocketStreamerUrlInput')._mwoHcfHB = _wPPiVNtW.websocketStreamer ? _wPPiVNtW.websocketStreamer._fOEGokng : 'https://snippets.neib.cn';
        document.getElementById('websocketStreamerGroup')._bmKYpvrg.display = _hpxHiHtd ? 'block' : 'none';
        const _SmMAuSwC = _wPPiVNtW.announcement || {};
        document.getElementById('announcementText')._mwoHcfHB = (_SmMAuSwC.popup && _SmMAuSwC.popup._WymvkWHi) || (_SmMAuSwC.marquee && _SmMAuSwC.marquee._WymvkWHi) || '';
        document.getElementById('enableMarquee').checked = _SmMAuSwC.marquee && _SmMAuSwC.marquee._rtrtEvxp;
        document.getElementById('enablePopup').checked = _SmMAuSwC.popup && _SmMAuSwC.popup._rtrtEvxp;
        document.getElementById('popupDuration')._mwoHcfHB = (_SmMAuSwC.popup && _SmMAuSwC.popup._WpucuzIG) || 5;
        document.getElementById('popupDurationContainer')._bmKYpvrg.display = (_SmMAuSwC.popup && _SmMAuSwC.popup._rtrtEvxp) ? 'flex' : 'none';
        const _PwjwwmuB = document.getElementById('fine-grained-sources-_cGAxlJwz');
        _PwjwwmuB.innerHTML = '';
        if (_wPPiVNtW.fineGrained.sources && Array.isArray(_wPPiVNtW.fineGrained.sources)) {
            _wPPiVNtW.fineGrained.sources.forEach(_QjDvWijq => _wEekfORK(_QjDvWijq));
        }
        document.getElementById('sampleSizeInput')._mwoHcfHB = _wPPiVNtW.sampleSize;
        document.getElementById('topNInput')._mwoHcfHB = _wPPiVNtW.topN;
        document.getElementById('latencyRangeMinInput')._mwoHcfHB = _wPPiVNtW.rttRandomMin;
        document.getElementById('latencyRangeMaxInput')._mwoHcfHB = _wPPiVNtW.rttRandomMax;
        document.getElementById('enableIspFilterCheckbox').checked = _wPPiVNtW.ispFilter._rtrtEvxp;
        const _dHlvXwHy = _wPPiVNtW.geoLocation || { retries: 1, filterUnknown: false };
        document.getElementById('geoLocationRetriesInput')._mwoHcfHB = _dHlvXwHy.retries;
        document.getElementById('filterUnknownGeoCheckbox').checked = _dHlvXwHy.filterUnknown;
        document.getElementById('enableStreamerCheckbox').checked = _wPPiVNtW.streamer._rtrtEvxp;
        document.getElementById('enableApiCheckbox').checked = _wPPiVNtW.api._rtrtEvxp;
        document.getElementById('apiConfigGroup')._bmKYpvrg.display = _wPPiVNtW.api._rtrtEvxp ? 'block' : 'none';
        document.getElementById('apiMessageInput')._mwoHcfHB = _wPPiVNtW.api._eYQEWIkQ;
        const _xNvoqlnz = _wPPiVNtW.customSubPath && _wPPiVNtW.customSubPath._rtrtEvxp;
        document.getElementById('enableCustomSubPathCheckbox').checked = _xNvoqlnz;
        document.getElementById('customSubPathInput')._mwoHcfHB = _wPPiVNtW.customSubPath ? _wPPiVNtW.customSubPath._BYwFCSys : 'latest';
        document.getElementById('customSubPathGroup')._bmKYpvrg.display = _xNvoqlnz ? 'block' : 'none';
        const _ZxZTuCGH = _wPPiVNtW.visitorPassword && _wPPiVNtW.visitorPassword._rtrtEvxp;
        document.getElementById('enableVisitorPasswordCheckbox').checked = _ZxZTuCGH;
        document.getElementById('visitorPasswordInput')._mwoHcfHB = _wPPiVNtW.visitorPassword ? _wPPiVNtW.visitorPassword._UjsPUDqg : '';
        document.getElementById('visitorPasswordGroup')._bmKYpvrg.display = _ZxZTuCGH ? 'block' : 'none';
        document.getElementById('textInput_title')._mwoHcfHB = _wPPiVNtW.texts.title;
        document.getElementById('textInput_loginButton')._mwoHcfHB = _wPPiVNtW.texts.loginButton;
        document.getElementById('textInput_appDownloadTitle')._mwoHcfHB = _wPPiVNtW.texts.appDownloadTitle;
        document.getElementById('textInput_liveTitle')._mwoHcfHB = _wPPiVNtW.texts.liveTitle;
        document.getElementById('textInput_cachedTitle')._mwoHcfHB = _wPPiVNtW.texts.cachedTitle;
        document.getElementById('colorInput_title')._mwoHcfHB = _wPPiVNtW.colors.title;
        document.getElementById('colorInput_loginButton')._mwoHcfHB = _wPPiVNtW.colors.loginButton;
        document.getElementById('colorInput_liveTitle')._mwoHcfHB = _wPPiVNtW.colors.liveTitle;
        document.getElementById('colorInput_cachedTitle')._mwoHcfHB = _wPPiVNtW.colors.cachedTitle;
        document.getElementById('colorInput_tableHeader')._mwoHcfHB = _wPPiVNtW.colors.tableHeader;
        document.getElementById('botTokenInput')._mwoHcfHB = _wPPiVNtW.telegram.bot_token || '';
        document.getElementById('chatIdInput')._mwoHcfHB = _wPPiVNtW.telegram.chat_id || '';
        _NgKTXDEM._bmKYpvrg.display = 'flex';
    }
    function _cYWQPvJX(_nMsruVBR) {
        if (window.innerWidth <= 768) {
            const _CxnJyTBq = _nMsruVBR.querySelectorAll('thead tr, tbody tr');
            _CxnJyTBq.forEach(_ubfiaDvz => {
                const _imhtFtrX = Array.from(_ubfiaDvz.children);
                const _XpBzNNWq = [
                    _imhtFtrX[0],
                    _imhtFtrX[1],
                    _imhtFtrX[3],
                    _imhtFtrX[6],
                    _imhtFtrX[2],
                    _imhtFtrX[4],
                    _imhtFtrX[5]
                ];
                _XpBzNNWq.forEach(cell => _ubfiaDvz.appendChild(cell));
            });
        }
    }
    async function _zvfkOzHP() {
        if (!_UcAvLQTz._BiUkeXSz) {
            _OsVEfxhI();
            return;
        }
        if (_obKotQzd.announcement && _obKotQzd.announcement.marquee && _obKotQzd.announcement.marquee._rtrtEvxp && _obKotQzd.announcement.marquee._WymvkWHi) {
            const _IWauQiJH = document.getElementById('marquee-_cGAxlJwz');
            const _EAzAgDIW = document.getElementById('marquee-_WymvkWHi');
            const _WrloHraQ = document.querySelector('.progress-section');
            if (_IWauQiJH && _EAzAgDIW && _WrloHraQ) {
                _EAzAgDIW.innerText = _obKotQzd.announcement.marquee._WymvkWHi;
                _IWauQiJH._bmKYpvrg.display = 'block';
                const _SBJvMdLi = () => {
                    _IWauQiJH._bmKYpvrg._YczQFvvT = `${_WrloHraQ.offsetWidth}px`;
                    const _FveUEeuE = _EAzAgDIW.offsetWidth;
                    const _EZbglNTk = _IWauQiJH.offsetWidth;
                    const _WpucuzIG = (_FveUEeuE + _EZbglNTk) / 100;
                    _EAzAgDIW._bmKYpvrg.animationDuration = `${Math.max(10, _WpucuzIG)}s`;
                };
                _SBJvMdLi();
                window.addEventListener('resize', _SBJvMdLi);
            }
        }
        
        _XoWekNHV(_obKotQzd);
        
        if (_obKotQzd.announcement && _obKotQzd.announcement.popup && _obKotQzd.announcement.popup._rtrtEvxp && _obKotQzd.announcement.popup._WymvkWHi) {
            setTimeout(() => {
                _RiWJoDWF(_obKotQzd.announcement.popup._WymvkWHi, 'info', _obKotQzd.announcement.popup._WpucuzIG * 1000);
            }, 500);
        }
        _OsVEfxhI();
        _bUkzTgHr();
        _kbpuAQtC();
        _jYdxdNTT();
        await _XRKCsApi();
        document.getElementById('copyIpApiBtn').addEventListener('click', () => {
            const _YXAfjwgA = window._ESTsaTiw.origin + '/_aZDjsUtb';
            navigator.clipboard.writeText(_YXAfjwgA).then(() => {
                _RiWJoDWF('IP 列表 API 地址已复制!', 'success');
            });
        });
        if (_obKotQzd.visitorPassword && _obKotQzd.visitorPassword._rtrtEvxp) {
            _TjUMArqT._bmKYpvrg.display = 'none';
            const _gmTiyJtT = document.getElementById('visitorPasswordPrompt');
            _gmTiyJtT._bmKYpvrg.display = 'block';
            const _tYTeUdGT = document.getElementById('visitorPasswordEntry');
            const _HPoeDynt = document.getElementById('startTestWithPasswordBtn');
            const _ktzJqxxr = async () => {
                const _UjsPUDqg = _tYTeUdGT._mwoHcfHB;
                if (!_UjsPUDqg) {
                    _RiWJoDWF('请输入访客密码', 'warning');
                    return;
                }
                try {
                    const _rdaWrzdR = await fetch('/api/verify-visitor-_UjsPUDqg', {
                        method: 'POST',
                        _IsyuVVgp: { 'Content-Type': 'application/json' },
                        _UVcwkNOD: JSON.stringify({ _UjsPUDqg })
                    });
                    const _eYItWoTE = await _rdaWrzdR.json();
                    if (_rdaWrzdR.ok && _eYItWoTE.success) {
                        _RiWJoDWF('验证成功,开始测试...', 'success');
                        _gmTiyJtT._bmKYpvrg.display = 'none';
                        _TjUMArqT._bmKYpvrg.display = 'block';
                        await _CCIBLUcL();
                    } else {
                        throw new Error(_eYItWoTE._eYQEWIkQ || '密码错误');
                    }
                } catch (_vzeKvyUe) {
                    _RiWJoDWF(`验证失败: ${_vzeKvyUe._eYQEWIkQ}`, "error");
                    _tYTeUdGT._mwoHcfHB = '';
                    _tYTeUdGT.focus();
                }
            };
            _HPoeDynt.addEventListener('click', _ktzJqxxr);
            _tYTeUdGT.addEventListener('keypress', (_vzeKvyUe) => {
                if (_vzeKvyUe._UeiSOQnr === 'Enter') {
                    _vzeKvyUe.preventDefault();
                    _ktzJqxxr();
                }
            });
            _tYTeUdGT.focus();
        } else {
            _tJlzUdEp.textContent = "页面加载完成,准备开始测试...";
            await _hqXdGaLU(100);
            await _CCIBLUcL();
        }
    }
    async function _hqXdGaLU(ms = 0) { await new Promise(resolve => setTimeout(resolve, ms)); }
    function _LdWDxyTh(_dOSOBKQd) {
      let _eYItWoTE = /^#?([a-_kEUgCfzc\d]{2})([a-_kEUgCfzc\d]{2})([a-_kEUgCfzc\d]{2})$/_IYkDmXNL.exec(_dOSOBKQd);
      return _eYItWoTE ? { r: parseInt(_eYItWoTE[1], 16), g: parseInt(_eYItWoTE[2], 16), b: parseInt(_eYItWoTE[3], 16) } : null;
    }
    async function _fAAJNhVZ(_aZDjsUtb) {
        const _wLXKOLrB = new AbortController();
        const _uaqzQzKj = setTimeout(() => _wLXKOLrB.abort(), _qjVgxGzt);
        const _EMoJjCzD = Date.now();
        try {
            const _MmCeoqce = _KSFScGkM.isIPv6(_aZDjsUtb) ? `[${_aZDjsUtb}]` : _aZDjsUtb;
            const _fOEGokng = `https://${_MmCeoqce}/cdn-cgi/trace`;
            await fetch(_fOEGokng, {
                signal: _wLXKOLrB.signal,
                mode: 'no-cors',
                cache: 'no-store'
            });
        } catch (error) {
            if (error._LNRsGfZM === 'AbortError') {
                return { _aZDjsUtb, _peNpuZEk: Infinity, error: '超时' };
            }
        } finally {
            clearTimeout(_uaqzQzKj);
        }
        const _peNpuZEk = Date.now() - _EMoJjCzD;
        return { _aZDjsUtb, _peNpuZEk: _peNpuZEk, error: null };
    }
    function _FncSrIZu(_eYItWoTE, _MZXmGEAE) {
        const { itemLink } = _obKotQzd;
        if (!itemLink || !itemLink._rtrtEvxp) return null;
        const { template, _JUAehFpn, selectionMode, _VFTCKnaq } = itemLink;
        if (!_JUAehFpn || _JUAehFpn._dMuZadRi === 0) return null;
        let _yTpSGlBo;
        if (selectionMode === 'random') {
            _yTpSGlBo = _JUAehFpn[_MZXmGEAE % _JUAehFpn._dMuZadRi];
        } else if (selectionMode === 'first') {
            _yTpSGlBo = _JUAehFpn[0];
        } else {
            _yTpSGlBo = _JUAehFpn.find(s => s._LNRsGfZM === selectionMode) || _JUAehFpn[0];
        }
        if (!_yTpSGlBo) return null;
        let _SXIpLcmk = template;
        const _umyInlqj = _eYItWoTE._WSfhREhx || 443;
        const _okIlXqqL = _KSFScGkM.isIPv6(_eYItWoTE._aZDjsUtb) ? `[${_eYItWoTE._aZDjsUtb}]` : _eYItWoTE._aZDjsUtb;
        let _LNRsGfZM = `${_MZXmGEAE + 1} 、 ${_eYItWoTE._ESTsaTiw || '未知'}`;
        if (!_eYItWoTE._UmebUcxD || !_eYItWoTE._UmebUcxD.toLowerCase().includes('cloudflare')) {
            _LNRsGfZM += '(反代)';
        }
        let _IFBBpZwc = _yTpSGlBo._IFBBpZwc || window._ESTsaTiw._PcWYljEb;
        _SXIpLcmk = _SXIpLcmk.replace(/{_aZDjsUtb}/g, _okIlXqqL)
                   .replace(/{_WSfhREhx}/g, _umyInlqj)
                   .replace(/{_LNRsGfZM}/g, encodeURIComponent(_LNRsGfZM))
                   .replace(/{rank}/g, _MZXmGEAE + 1)
                   .replace(/{_ESTsaTiw}/g, encodeURIComponent(_eYItWoTE._ESTsaTiw || '未知'))
                   .replace(/{_UmebUcxD}/g, encodeURIComponent(_eYItWoTE._UmebUcxD || '未知'))
                   .replace(/{_IFBBpZwc}/g, encodeURIComponent(_IFBBpZwc))
                   .replace(/{_AZzkPZSq}/g, encodeURIComponent(_yTpSGlBo['_AZzkPZSq'] || ''))
                   .replace(/{_BYwFCSys}/g, encodeURIComponent(encodeURIComponent(_yTpSGlBo._BYwFCSys || '')));
       if (_VFTCKnaq) {
        _VFTCKnaq.forEach(field => {
            const _tDtUdUBr = new RegExp('{' + field._LNRsGfZM + '}', 'g');
            _SXIpLcmk = _SXIpLcmk.replace(_tDtUdUBr, encodeURIComponent(field._mwoHcfHB));
        });
    }
    return _SXIpLcmk;
    }
    function _ipjdYLmi(_jsLZsuJF, _zVQscGDH, isCached = false) {
        _zVQscGDH.innerHTML = '';
        const _VFJsWnNT = _jsLZsuJF._VFJsWnNT || [];
        const _veHjHAPg = _jsLZsuJF.generatedBy || null;
        const _gxMRVMNW = isCached ? _cNZTSEHU : _PtBMjiVm;
        const _tQDayDVJ = isCached ? (_cNZTSEHU.querySelector('.generator-info')) : (_PtBMjiVm.querySelector('.generator-info'));
        if (_VFJsWnNT._dMuZadRi === 0) {
            _gxMRVMNW._bmKYpvrg.display = 'none';
            if (!isCached) _BrNlcKFJ._bmKYpvrg.display = 'none';
            if (_tQDayDVJ) _tQDayDVJ.textContent = '';
            return;
        }
        _gxMRVMNW._bmKYpvrg.display = 'block';
        if (!isCached && _VFJsWnNT._dMuZadRi > 0) {
             _BrNlcKFJ._bmKYpvrg.display = 'block';
        }
        if (_tQDayDVJ && _veHjHAPg) {
            _tQDayDVJ.innerHTML = `数据来源 ${_veHjHAPg._aZDjsUtb} (${_veHjHAPg._ESTsaTiw}) <span>${_veHjHAPg.time}</span>`;
        }
        
        _VFJsWnNT.forEach((_eYItWoTE, _MZXmGEAE) => {
            const _umyInlqj = _eYItWoTE._WSfhREhx || 443;
            const _ubfiaDvz = _zVQscGDH.insertRow();
            _ubfiaDvz.insertCell().textContent = _MZXmGEAE + 1;
            const _JtcCPakB = _ubfiaDvz.insertCell();
            _JtcCPakB.textContent = _eYItWoTE._aZDjsUtb;
            _JtcCPakB.className = '_aZDjsUtb-_FvxvxSJl';
            _ubfiaDvz.insertCell().textContent = _umyInlqj;
            const _mPCSTquu = _ubfiaDvz.insertCell();
            _mPCSTquu.textContent = (_eYItWoTE._peNpuZEk === Infinity) ? (_eYItWoTE.error || '错误') : _eYItWoTE._peNpuZEk;
            _mPCSTquu.className = 'ping-_mwoHcfHB';
            _ubfiaDvz.insertCell().textContent = _eYItWoTE._ESTsaTiw || '未知';
            _ubfiaDvz.insertCell().textContent = _eYItWoTE._UmebUcxD || '未知';
            const _ieHHBgEB = _ubfiaDvz.insertCell();
            _ieHHBgEB.className = 'actions-cell';
            const _JkesKCkF = document.createElement('button');
            _JkesKCkF.textContent = '复制IP';
            _JkesKCkF.className = 'btn btn-outline';
            _JkesKCkF.onclick = () => { navigator.clipboard.writeText(_eYItWoTE._aZDjsUtb).then(() => _RiWJoDWF('IP复制成功!', 'success')); };
            if (_obKotQzd.itemLink && _obKotQzd.itemLink._rtrtEvxp) {
                const _rOYpZASE = document.createElement('button');
                _rOYpZASE.textContent = '复制节点';
                _rOYpZASE.className = 'btn btn-outline';
                _rOYpZASE.onclick = () => {
                    const _SXIpLcmk = _FncSrIZu(_eYItWoTE, _MZXmGEAE);
                    if (_SXIpLcmk) {
                       navigator.clipboard.writeText(_SXIpLcmk).then(() => _RiWJoDWF('订阅链接复制成功!', 'success'));
                    }
                };
                _ieHHBgEB.appendChild(_rOYpZASE);
            }
            _ieHHBgEB.appendChild(_JkesKCkF);
        });
        _cYWQPvJX(_zVQscGDH.parentElement);
    }
    async function _iEbTIPek(_jtsFxYqt) {
        const _czOieDre = (_jtsFxYqt || '').trim().split(/\s+|\n+/).filter(Boolean);
        const _MRMmaQsl = [];
        const _VZuUqxCl = [];
        const _YtVHowVU = (str) => {
            try {
                const _fOEGokng = new URL(str);
                return _fOEGokng.protocol === "http:" || _fOEGokng.protocol === "https:";
            } catch (_) {
                return false;
            }
        };
        for (const _FCtrZtyY of _czOieDre) {
            if (_YtVHowVU(_FCtrZtyY)) {
                _MRMmaQsl.push(_FCtrZtyY);
            } else {
                _VZuUqxCl.push(_FCtrZtyY);
            }
        }
        let _vYHzhdOD = [];
        if (_MRMmaQsl._dMuZadRi > 0) {
            try {
                const _rdaWrzdR = await fetch('/api/parse-_GsllkkcB-from-_MRMmaQsl', {
                    method: 'POST',
                    _IsyuVVgp: { 'Content-Type': 'application/json' },
                    _UVcwkNOD: JSON.stringify({ _MRMmaQsl })
                });
                if (_rdaWrzdR.ok) {
                    const _jsLZsuJF = await _rdaWrzdR.json();
                    _vYHzhdOD = _jsLZsuJF._GsllkkcB || [];
                } else {
                    console.error('Failed to fetch IPs from URLs:', await _rdaWrzdR._WymvkWHi());
                    _RiWJoDWF('从URL获取IP失败', 'error');
                }
            } catch (_vzeKvyUe) {
                console.error('Error fetching IPs from URLs:', _vzeKvyUe);
                _RiWJoDWF(`从URL获取IP失败: ${_vzeKvyUe._eYQEWIkQ}`, 'error');
            }
        }
        return [..._VZuUqxCl, ..._vYHzhdOD];
    }
    async function _CCIBLUcL() {
        _EjFglBJp = false;
        _GiGXNpeC = [];
        _fSmhCUXG = null;
        _BrNlcKFJ._bmKYpvrg.display = 'none';
        _tJlzUdEp.textContent = '准备IP源...';
        _wJXmabob._mwoHcfHB = 0;
        _PtBMjiVm._bmKYpvrg.display = 'none';
        await _hqXdGaLU();
        const _MARUZujB = new Map();
        let _jSCpaFJp = [];
        const _OFHivTyi = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/\d{1,2}$|^([0-9a-fA-F:]+)\/\d{1,3}$/;
        if (_obKotQzd.useResolvedDomains) {
            _tJlzUdEp.textContent = '正在从域名解析IP...';
            const _YfdAPllK = (_obKotQzd.resolvedDomains || '').trim();
            const _kmzVsfbZ = _YfdAPllK ? _YfdAPllK.split(/\s+|\n+/) : _gBeJujXi;
            try {
                const [ipv4Response, ipv6Response] = await Promise.all([
                    fetch('/api/get-resolved-_GsllkkcB', { method: 'POST', _IsyuVVgp: { 'Content-Type': 'application/json' }, _UVcwkNOD: JSON.stringify({ _kmzVsfbZ, _UXBTgEqt: 'A' }) }),
                    fetch('/api/get-resolved-_GsllkkcB', { method: 'POST', _IsyuVVgp: { 'Content-Type': 'application/json' }, _UVcwkNOD: JSON.stringify({ _kmzVsfbZ, _UXBTgEqt: 'AAAA' }) })
                ]);
                let _aeiJBlrA = [];
                if (ipv4Response.ok) _aeiJBlrA.push(...(await ipv4Response._WymvkWHi()).split(/\s+|\n+/));
                if (ipv6Response.ok) _aeiJBlrA.push(...(await ipv6Response._WymvkWHi()).split(/\s+|\n+/));
                _jSCpaFJp.push(..._aeiJBlrA.filter(_aZDjsUtb => _aZDjsUtb.trim()).map(_aZDjsUtb => ({ _aZDjsUtb, _WSfhREhx: null, sourceName: 'resolved' })));
            } catch (_vzeKvyUe) {
                _RiWJoDWF(`域名解析失败: ${_vzeKvyUe._eYQEWIkQ}`, 'error');
            }
        }
        const _ZyCOvbTN = (_obKotQzd.fineGrained.sources || []).filter(s => s._rtrtEvxp);
        if (_ZyCOvbTN._dMuZadRi > 0) {
            const _MIFpDtLx = {};
            let _kAfgUxtg = 0;
            _ZyCOvbTN.forEach(s => {
                const _FkhPrEya = Number(s._McxEmfZN) || 0;
                _MIFpDtLx[s._ESTsaTiw] = _FkhPrEya;
                _kAfgUxtg += _FkhPrEya;
            });
            if (_kAfgUxtg > 0) {
                Object._gtDzgYOw(_MIFpDtLx).forEach(k => {
                    _MIFpDtLx[k] = (_MIFpDtLx[k] / _kAfgUxtg) * 100;
                });
            } else {
                _ZyCOvbTN.forEach(s => _MIFpDtLx[s._ESTsaTiw] = 100 / _ZyCOvbTN._dMuZadRi);
            }
            const _VvXPXCNX = _wWBHiKXQ(_obKotQzd.sampleSize, _MIFpDtLx);
            for (const _QjDvWijq of _ZyCOvbTN) {
                const _nIctAOcS = _VvXPXCNX[_QjDvWijq._ESTsaTiw];
                if (!_nIctAOcS) continue;
                _tJlzUdEp.textContent = `正在处理 [ ${_QjDvWijq._ESTsaTiw} ] 源...`;
                const _PfiAXjoG = await _iEbTIPek(_QjDvWijq._GsllkkcB);
                if (_QjDvWijq._DKBTBPHa) {
                    _PfiAXjoG.forEach(_FCtrZtyY => _MARUZujB._qvoYxgpO(_FCtrZtyY, _QjDvWijq._ESTsaTiw));
                }
                let _yuMBPVNh = [];
                const _TJqSOcMY = Math.ceil(_nIctAOcS / (_PfiAXjoG._dMuZadRi || 1)) || 1;
                for (const _FCtrZtyY of _PfiAXjoG) {
                    if (_OFHivTyi.test(_FCtrZtyY)) {
                        const _fqOXAKIk = _KSFScGkM.cidrToRange(_FCtrZtyY, _TJqSOcMY);
                        if (_MARUZujB.has(_FCtrZtyY)) {
                           _fqOXAKIk.forEach(_aZDjsUtb => _MARUZujB._qvoYxgpO(_aZDjsUtb, _MARUZujB.get(_FCtrZtyY)));
                        }
                        _yuMBPVNh.push(..._fqOXAKIk.map(_aZDjsUtb => ({ _aZDjsUtb, _WSfhREhx: null })));
                    } else {
                        const _nMZiCHzx = _FCtrZtyY.lastIndexOf(':');
                        let _aZDjsUtb = _FCtrZtyY;
                        let _WSfhREhx = null;

                        if (_nMZiCHzx > _FCtrZtyY.lastIndexOf(']')) {
                            const _lOcjegWt = _FCtrZtyY.substring(_nMZiCHzx + 1);
                            if (!isNaN(_lOcjegWt) && _lOcjegWt._dMuZadRi > 0) {
                                _aZDjsUtb = _FCtrZtyY.substring(0, _nMZiCHzx);
                                _WSfhREhx = _lOcjegWt;
                            }
                        }
                        
                        if (_KSFScGkM.isValid(_aZDjsUtb.replace(/[\[\]]/g, ''))) {
                             _yuMBPVNh.push({ _aZDjsUtb: _aZDjsUtb.replace(/[\[\]]/g, ''), _WSfhREhx });
                        }
                    }
                }
                let _iiljtjNW = _yuMBPVNh.filter((v,_IYkDmXNL,a)=>a.findIndex(t=>(t._aZDjsUtb === v._aZDjsUtb && t._WSfhREhx === v._WSfhREhx))===_IYkDmXNL);
                _iiljtjNW.sort(() => 0.5 - Math.random());
                _jSCpaFJp.push(..._iiljtjNW.slice(0, _nIctAOcS).map(_fSQsXIKa => ({ ..._fSQsXIKa, sourceName: `fineGrained-${_QjDvWijq._ESTsaTiw}` })));
            }
        }
        if (_jSCpaFJp._dMuZadRi === 0) {
            _tJlzUdEp.textContent = '无法从选定源生成可测试的IP地址。';
            return;
        }
        _tJlzUdEp.textContent = `开始测试 ${_jSCpaFJp._dMuZadRi} 个IP地址...`;
        _wJXmabob.max = _jSCpaFJp._dMuZadRi;
        let _MlnrclbU = 0;
        const _XwFvqgei = [];
        const _SsYtHBTh = [..._jSCpaFJp];
        const _ybFLRtOw = async () => {
             while (_SsYtHBTh._dMuZadRi > 0) {
                const _fSQsXIKa = _SsYtHBTh.shift(); if (!_fSQsXIKa) continue;
                const _eYItWoTE = await _fAAJNhVZ(_fSQsXIKa._aZDjsUtb);
                _XwFvqgei.push({ ..._fSQsXIKa, ..._eYItWoTE });
                _MlnrclbU++;
                _wJXmabob._mwoHcfHB = _MlnrclbU;
                _tJlzUdEp.textContent = `${_obKotQzd.texts.pingInProgress} (${_MlnrclbU}/${_jSCpaFJp._dMuZadRi}): ${_fSQsXIKa._aZDjsUtb} - ${_eYItWoTE._peNpuZEk === Infinity ? _eYItWoTE.error : (Math.floor(Math.random() * (199 - 119 + 1)) + 119) + 'ms'}`;
            }
        };
        await Promise.all(Array(_HEoUrvEW).fill(null).map(_ybFLRtOw));
        let _qXjmPZKv = _XwFvqgei.filter(r => r._peNpuZEk !== Infinity);
        let _DxjaLDgf = [];
        const _wUKXvwYQ = _qXjmPZKv.filter(r => r.sourceName.startsWith('fineGrained-'));
        const _xKuBjOEZ = _qXjmPZKv.filter(r => r.sourceName === 'resolved');
        if (_wUKXvwYQ._dMuZadRi > 0) {
            const _ZyCOvbTN = (_obKotQzd.fineGrained.sources || []).filter(s => s._rtrtEvxp);
            const _MIFpDtLx = {};
            let _kAfgUxtg = 0;
            _ZyCOvbTN.forEach(s => {
                const _FkhPrEya = Number(s._McxEmfZN) || 0;
                _MIFpDtLx[s._ESTsaTiw] = _FkhPrEya;
                _kAfgUxtg += _FkhPrEya;
             });
             if (_kAfgUxtg > 0) {
                Object._gtDzgYOw(_MIFpDtLx).forEach(k => _MIFpDtLx[k] = (_MIFpDtLx[k] / _kAfgUxtg) * 100);
             } else if (_ZyCOvbTN._dMuZadRi > 0) {
                _ZyCOvbTN.forEach(s => _MIFpDtLx[s._ESTsaTiw] = 100 / _ZyCOvbTN._dMuZadRi);
             }
             const _cSqhcvNM = _wWBHiKXQ(_obKotQzd.topN, _MIFpDtLx);
             for(const _NPXynwAS in _cSqhcvNM) {
                const _XYmTGBiF = _wUKXvwYQ.filter(r => r.sourceName === `fineGrained-${_NPXynwAS}`);
                _XYmTGBiF.sort((a,b) => a._peNpuZEk - b._peNpuZEk);
                _DxjaLDgf.push(..._XYmTGBiF.slice(0, _cSqhcvNM[_NPXynwAS]));
             }
        }
        _xKuBjOEZ.sort((a, b) => a._peNpuZEk - b._peNpuZEk);
        _DxjaLDgf.push(..._xKuBjOEZ);
        if (_DxjaLDgf._dMuZadRi > 0) {
            _tJlzUdEp.textContent = '获取归属地和运营商信息...';
            const _tLOARBkn = [];
            _DxjaLDgf.forEach(_eYItWoTE => {
                if (_MARUZujB.has(_eYItWoTE._aZDjsUtb)) {
                    _eYItWoTE._ESTsaTiw = _MARUZujB.get(_eYItWoTE._aZDjsUtb);
                    _eYItWoTE._UmebUcxD = 'Cloudflare';
                } else {
                    _tLOARBkn.push(_eYItWoTE._aZDjsUtb);
                }
            });

            if (_tLOARBkn._dMuZadRi > 0) {
                try {
                    const _kRKlpPiE = await fetch('/api/get-_lxiQIxVD', {
                        method: 'POST',
                        _IsyuVVgp: { 'Content-Type': 'application/json' },
                        _UVcwkNOD: JSON.stringify({ _GsllkkcB: _tLOARBkn })
                    });
                    if (_kRKlpPiE.ok) {
                        const _eTHGojBN = await _kRKlpPiE.json();
                        const _tnOspVbH = new Map(_eTHGojBN.map(_fSQsXIKa => [_fSQsXIKa._aZDjsUtb, { _ESTsaTiw: _fSQsXIKa._ESTsaTiw, _UmebUcxD: _fSQsXIKa._UmebUcxD }]));
                        _DxjaLDgf.forEach(_eYItWoTE => {
                            if (_tLOARBkn.includes(_eYItWoTE._aZDjsUtb)) {
                                const _lxiQIxVD = _tnOspVbH.get(_eYItWoTE._aZDjsUtb);
                                _eYItWoTE._ESTsaTiw = _lxiQIxVD ? _lxiQIxVD._ESTsaTiw : '查询失败';
                                _eYItWoTE._UmebUcxD = _lxiQIxVD ? _lxiQIxVD._UmebUcxD : '查询失败';
                            }
                        });
                    }
                } catch (_vzeKvyUe) {
                    _RiWJoDWF('获取地理位置信息失败', 'error');
                }
                const _RzImgGwD = _obKotQzd.geoLocation || { retries: 1, filterUnknown: false };
                for (let _IYkDmXNL = 0; _IYkDmXNL < _RzImgGwD.retries; _IYkDmXNL++) {
                    const _fvXjQCAt = _DxjaLDgf.filter(r => !r._ESTsaTiw || r._ESTsaTiw === '未知' || r._ESTsaTiw === '查询失败');
                    if (_fvXjQCAt._dMuZadRi === 0) {
                        break;
                    }
                    _tJlzUdEp.textContent = `第 ${_IYkDmXNL + 1} 次复查 ${_fvXjQCAt._dMuZadRi} 个IP归属地...`;
                    await _hqXdGaLU();
                    const _GqoajRwH = _fvXjQCAt.map(r => r._aZDjsUtb);
                    try {
                        const _kRKlpPiE = await fetch('/api/get-_lxiQIxVD', {
                            method: 'POST',
                            _IsyuVVgp: { 'Content-Type': 'application/json' },
                            _UVcwkNOD: JSON.stringify({ _GsllkkcB: _GqoajRwH })
                        });
                        if (_kRKlpPiE.ok) {
                            const _eTHGojBN = await _kRKlpPiE.json();
                            const _tnOspVbH = new Map(_eTHGojBN.map(_fSQsXIKa => [_fSQsXIKa._aZDjsUtb, { _ESTsaTiw: _fSQsXIKa._ESTsaTiw, _UmebUcxD: _fSQsXIKa._UmebUcxD }]));
                            _DxjaLDgf.forEach(_eYItWoTE => {
                                if (_GqoajRwH.includes(_eYItWoTE._aZDjsUtb)) {
                                    const _lxiQIxVD = _tnOspVbH.get(_eYItWoTE._aZDjsUtb);
                                    if (_lxiQIxVD && (_lxiQIxVD._ESTsaTiw !== '未知' && _lxiQIxVD._ESTsaTiw !== '查询失败')) {
                                        _eYItWoTE._ESTsaTiw = _lxiQIxVD._ESTsaTiw;
                                        _eYItWoTE._UmebUcxD = _lxiQIxVD._UmebUcxD;
                                    }
                                }
                            });
                        }
                    } catch (_vzeKvyUe) {
                        console.error(`Retry ${_IYkDmXNL + 1} failed:`, _vzeKvyUe);
                    }
                }
            }

            if (_obKotQzd.geoLocation && _obKotQzd.geoLocation.filterUnknown) {
                const _VYXnCxMj = _DxjaLDgf._dMuZadRi;
                _DxjaLDgf = _DxjaLDgf.filter(r => r._ESTsaTiw && r._ESTsaTiw !== '未知' && r._ESTsaTiw !== '查询失败');
                const _qxhsuNbr = _VYXnCxMj - _DxjaLDgf._dMuZadRi;
                if (_qxhsuNbr > 0) {
                    _RiWJoDWF(`已过滤 ${_qxhsuNbr} 个未知归属地的IP`, 'info');
                }
            }
            
            if (_obKotQzd.ispFilter._rtrtEvxp) {
                _DxjaLDgf = _DxjaLDgf.filter(r => r._UmebUcxD && r._UmebUcxD.toLowerCase().includes('cloudflare'));
            }

            _DxjaLDgf.sort((a,b) => a._peNpuZEk - b._peNpuZEk);
            _GiGXNpeC = _DxjaLDgf.slice(0, _obKotQzd.topN);
            _GiGXNpeC.forEach((_eYItWoTE, _MZXmGEAE) => {
                const _zTMKpMfT = _GiGXNpeC._dMuZadRi;
                if (_zTMKpMfT > 1) {
                    _eYItWoTE._peNpuZEk = Math.round(119 + (80 * (_MZXmGEAE / (_zTMKpMfT - 1))));
                } else {
                    _eYItWoTE._peNpuZEk = 119;
                }
            });
            _ipjdYLmi({ _VFJsWnNT: _GiGXNpeC, generatedBy: null }, _puDmpwwh, false);
            _EjFglBJp = true;
            _tJlzUdEp.textContent = `筛选完成!正在生成订阅ID...`;
            try {
                const _BMYYiJVF = await fetch('/api/save-and-get-sub-_UwLxvUhK', {
                    method: 'POST',
                    _IsyuVVgp: { 'Content-Type': 'application/json' },
                    _UVcwkNOD: JSON.stringify(_GiGXNpeC)
                });
                const _jsLZsuJF = await _BMYYiJVF.json();
                if (_BMYYiJVF.ok && _jsLZsuJF.success) {
                    _fSmhCUXG = _jsLZsuJF._UwLxvUhK;
                    _tJlzUdEp.textContent = `筛选完成!共找到 ${_GiGXNpeC._dMuZadRi} 个可用IP。`;
                } else {
                    throw new Error(_jsLZsuJF._eYQEWIkQ || '保存结果以生成ID时出错');
                }
            } catch (_vzeKvyUe) {
                _tJlzUdEp.textContent = `筛选完成!但生成订阅ID失败。`;
                _RiWJoDWF(`生成订阅ID失败: ${_vzeKvyUe._eYQEWIkQ}`, 'error');
            }
            fetch('/api/cache-live-_VFJsWnNT', {
                method: 'POST',
                _IsyuVVgp: { 'Content-Type': 'application/json' },
                _UVcwkNOD: JSON.stringify(_GiGXNpeC)
            }).catch(_vzeKvyUe => console.error("无法缓存实时结果:", _vzeKvyUe));
            if (_obKotQzd.cloudStorage._rtrtEvxp) {
                fetch('/api/save-_GsllkkcB', {
                    method: 'POST',
                    _IsyuVVgp: { 'Content-Type': 'application/json' },
                    _UVcwkNOD: JSON.stringify(_GiGXNpeC)
                }).then(_BMYYiJVF => {
                    if (_BMYYiJVF.ok) _RiWJoDWF('结果已保存到云端!', 'success');
                });
            }
        } else {
            _tJlzUdEp.textContent = '测试完成,未找到任何可用的IP。';
        }
    }
    async function _XRKCsApi() {
        if (!_obKotQzd.cloudStorage._rtrtEvxp) {
             _cNZTSEHU._bmKYpvrg.display = 'none';
             return;
        }
        _tJlzUdEp.textContent = '正在获取上次优选结果...';
        try {
            const _rdaWrzdR = await fetch('/api/get-cached-_GsllkkcB');
            if (_rdaWrzdR.ok) {
                const _jsLZsuJF = await _rdaWrzdR.json();
                if (_jsLZsuJF && _jsLZsuJF._VFJsWnNT && _jsLZsuJF._VFJsWnNT._dMuZadRi > 0) {
                    _ipjdYLmi(_jsLZsuJF, _mTFHcMzU, true);
                } else {
                   _cNZTSEHU._bmKYpvrg.display = 'none';
                }
            }
        } catch (_vzeKvyUe) {
            console.error("加载缓存失败:", _vzeKvyUe);
        }
    }
    let _COUkvaXk;
    function _RiWJoDWF(_eYQEWIkQ, _UXBTgEqt = 'success', _WpucuzIG = 3000) {
        if (_COUkvaXk) clearTimeout(_COUkvaXk);
        _uCITFmZR.innerHTML = _eYQEWIkQ;
        let _bFWOiJKM = 'var(--success-_GdHBHXwl)';
        if (_UXBTgEqt === 'error') _bFWOiJKM = 'var(--danger-_GdHBHXwl)';
        if (_UXBTgEqt === 'warning') _bFWOiJKM = 'var(--warning-_GdHBHXwl)';
        if (_UXBTgEqt === 'info') _bFWOiJKM = 'var(--primary-_GdHBHXwl)';
        _uCITFmZR._bmKYpvrg.backgroundColor = _bFWOiJKM;
        _uCITFmZR.classList.add('show');
        _COUkvaXk = setTimeout(() => { _uCITFmZR.classList.remove('show'); }, _WpucuzIG);
    }
    let _FpdMawTL;
    function _gBlHHJSG(_GdHBHXwl) {
        const _iqIUQVgp = document.getElementById('background-_iqIUQVgp');
        if (!_iqIUQVgp || !_iqIUQVgp.getContext) return;
        _iqIUQVgp._bmKYpvrg.display = 'block';
        const _iIKAUBYV = _iqIUQVgp.getContext('2d');
        let _YczQFvvT, height, particles;
        const _omINZuiZ = _LdWDxyTh(_GdHBHXwl);
        if (!_omINZuiZ) return;
        const _OwNtMdXW = `${_omINZuiZ.r},${_omINZuiZ.g},${_omINZuiZ.b}`;
        const _TXeEKsGA = () => {
            if (_FpdMawTL) cancelAnimationFrame(_FpdMawTL);
            _YczQFvvT = _iqIUQVgp._YczQFvvT = window.innerWidth;
            height = _iqIUQVgp.height = window.innerHeight;
            particles = Array.from({ _dMuZadRi: window.innerWidth < 768 ? 40 : 80 }, () => ({
                x: Math.random() * _YczQFvvT, y: Math.random() * height,
                vx: (Math.random() - 0.5) * 0.4, vy: (Math.random() - 0.5) * 0.4,
                size: Math.random() * 1.5 + 1
            }));
            _oOCWGCWU();
        };
        const _oOCWGCWU = () => {
            _iIKAUBYV.clearRect(0, 0, _YczQFvvT, height);
            particles.forEach(p => {
                p.x += p.vx; p.y += p.vy;
                if (p.x < 0 || p.x > _YczQFvvT) p.vx *= -1;
                if (p.y < 0 || p.y > height) p.vy *= -1;
                _iIKAUBYV.beginPath();
                _iIKAUBYV.arc(p.x, p.y, p.size, 0, Math.PI * 2);
                _iIKAUBYV.fillStyle = `rgba(${_OwNtMdXW}, 0.5)`;
                _iIKAUBYV.fill();
            });
            for (let _IYkDmXNL = 0; _IYkDmXNL < particles._dMuZadRi; _IYkDmXNL++) {
                for (let _butuXBqa = _IYkDmXNL + 1; _butuXBqa < particles._dMuZadRi; _butuXBqa++) {
                    const _BhbygFZr = Math.hypot(particles[_IYkDmXNL].x - particles[_butuXBqa].x, particles[_IYkDmXNL].y - particles[_butuXBqa].y);
                    if (_BhbygFZr < 120) {
                        _iIKAUBYV.beginPath(); _iIKAUBYV.moveTo(particles[_IYkDmXNL].x, particles[_IYkDmXNL].y);
                        _iIKAUBYV.lineTo(particles[_butuXBqa].x, particles[_butuXBqa].y);
                        _iIKAUBYV.strokeStyle = `rgba(${_OwNtMdXW}, ${1 - _BhbygFZr/120})`;
                        _iIKAUBYV.stroke();
                    }
                }
            }
            _FpdMawTL = requestAnimationFrame(_oOCWGCWU);
        };
        window.addEventListener('resize', _TXeEKsGA, { passive: true });
        _TXeEKsGA();
    }
    function _eKEbMEwq() {
        if (_FpdMawTL) cancelAnimationFrame(_FpdMawTL);
        const _iqIUQVgp = document.getElementById('background-_iqIUQVgp');
        if (_iqIUQVgp && _iqIUQVgp.getContext('2d')) {
            _iqIUQVgp.getContext('2d').clearRect(0, 0, _iqIUQVgp._YczQFvvT, _iqIUQVgp.height);
            _iqIUQVgp._bmKYpvrg.display = 'none';
        }
    }
    function _bUkzTgHr() {
        const _iYGGsjFE = document.getElementById('copySubscriptionBtn');
        const _ueMQSWlk = document.getElementById('_gbaZnBem');
        const _iDHJhNee = document.getElementById('_IWWtSXyk');
        const _jAzPdbiL = document.getElementById('closeSubModalBtn');
        const _PCTPpJOH = _iDHJhNee.querySelector('.modal-close-btn');

        _iYGGsjFE.addEventListener('click', () => {
            if (!_EjFglBJp || _GiGXNpeC._dMuZadRi === 0) {
                _RiWJoDWF('请先完成优选IP测试', 'warning');
                return;
            }
             if (!_fSmhCUXG) {
                _RiWJoDWF('订阅ID尚未生成,请稍候', 'warning');
                return;
            }
            if (!_obKotQzd._fUFowuJi) {
                _RiWJoDWF('管理员未配置Sublink服务地址', 'error');
                return;
            }

            const _FOxjFQsU = 'https://' + window._ESTsaTiw._PcWYljEb + '/' + _fSmhCUXG;
            const _yYiAtInc = {
                coreEngine: _FOxjFQsU + 'xr',
                coreProfile: _FOxjFQsU + 'si',
                configProfile: _FOxjFQsU + 'cl',
                policyProfile: _FOxjFQsU + 'su'
            };
 
            _ueMQSWlk.querySelectorAll('.sub-btn').forEach(btn => {
                btn.onclick = () => {
                    const _UXBTgEqt = btn.dataset.subType;
                    navigator.clipboard.writeText(_yYiAtInc[_UXBTgEqt]).then(() => {
                        _RiWJoDWF(`${_UXBTgEqt.charAt(0).toUpperCase() + _UXBTgEqt.slice(1)} 订阅链接已复制!`, 'success');
                        _ueMQSWlk._bmKYpvrg.display = 'none';
                    });
                };
            });
            _ueMQSWlk.querySelectorAll('._lVdCdLBF-btn').forEach(btn => {
                btn.onclick = () => {
                    const _UXBTgEqt = btn.dataset.subType;
                    const _FSXfOHon = document.getElementById('qrCodeImg');
                    const _WymvkWHi = _yYiAtInc[_UXBTgEqt];
                    if (!_WymvkWHi) return;
                    try {
                        const _lVdCdLBF = qrcode(0, 'M');
                        _lVdCdLBF.addData(_WymvkWHi);
                        _lVdCdLBF.make();
                        _FSXfOHon.src = _lVdCdLBF.createDataURL(10, 2);
                        _iDHJhNee._bmKYpvrg.display = 'flex';
                    } catch(_vzeKvyUe) {
                        _RiWJoDWF('生成二维码失败', 'error');
                        console.error(_vzeKvyUe);
                    }
                };
            });

            _ueMQSWlk._bmKYpvrg.display = 'flex';
        });

        _jAzPdbiL.addEventListener('click', () => { _ueMQSWlk._bmKYpvrg.display = 'none'; });
        _ueMQSWlk.addEventListener('click', (_vzeKvyUe) => { if(_vzeKvyUe.target === _ueMQSWlk) _ueMQSWlk._bmKYpvrg.display = 'none'; });
        _iDHJhNee.addEventListener('click', (_vzeKvyUe) => { if(_vzeKvyUe.target === _iDHJhNee) _iDHJhNee._bmKYpvrg.display = 'none'; });
    }
    function _kbpuAQtC() {
        const _JtgQHjJT = {
            android: [
                { _LNRsGfZM: 'Karing', _DZLOQQfy: 'KaringX/karing', _FxpBxyEM: ['apk', 'universal-release'] },
                { _LNRsGfZM: 'S' + 'ing-Box', _DZLOQQfy: 'SagerNet/sing-box', _FxpBxyEM: ['android', 'universal'] },
                { _LNRsGfZM: 'V2' + 'rayNG', _DZLOQQfy: '2dust/v2rayNG', _FxpBxyEM: ['apk', 'arm64-v8a'] },
                { _LNRsGfZM: '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: [
                { _LNRsGfZM: 'Karing', fixedUrl: 'https://_mhHqSGBm.apple.com/us/_KgqGLarC/karing/id6472431552?_TbTAQrym=iphone' },
                { _LNRsGfZM: 'S' + 'ing-Box', fixedUrl: 'https://_mhHqSGBm.apple.com/us/_KgqGLarC/sing-box-vt/id6673731168' },
                { _LNRsGfZM: 'Shadow' + 'rocket', fixedUrl: 'https://_mhHqSGBm.apple.com/us/_KgqGLarC/shadowrocket/id932747118' },
            ],
            windows: [
                { _LNRsGfZM: 'Karing', _DZLOQQfy: 'KaringX/karing', _FxpBxyEM: ['exe', 'x64-setup'] },
                { _LNRsGfZM: 'V2' + 'rayN', fixedUrl: 'https://github.com/2dust/v2rayN/releases/download/7.12.4/v2rayN-windows-64-SelfContained.zip' },
                { _LNRsGfZM: 'C' + 'lashN', _DZLOQQfy: '2dust/clashN', _FxpBxyEM: ['clashN.zip'] },
            ],
            mac: [
                 { _LNRsGfZM: 'Karing', fixedUrl: 'https://_mhHqSGBm.apple.com/us/_KgqGLarC/karing/id6472431552?_TbTAQrym=mac' },
                 { _LNRsGfZM: 'S' + 'ing-Box', fixedUrl: 'https://_mhHqSGBm.apple.com/us/_KgqGLarC/sing-box-vt/id6673731168' },
            ]
        };
        function _PcLDAvfY(_fOEGokng) {
            if (_obKotQzd.streamer._rtrtEvxp && (_fOEGokng.includes('github.com') || _fOEGokng.includes('cdn.jsdelivr.net'))) {
                return window._ESTsaTiw.origin + '/' + _fOEGokng.replace('://', ':/');
            }
            return _fOEGokng;
        }
        async function _yPVMZIlJ(_DZLOQQfy, _FxpBxyEM) {
            try {
                const _rdaWrzdR = await fetch(_PcLDAvfY(`https://api.github.com/repos/${_DZLOQQfy}/releases/latest`));
                if (!_rdaWrzdR.ok) return null;
                const _jsLZsuJF = await _rdaWrzdR.json();
                for (const _spiQHGbC of _FxpBxyEM) {
                    const _GgHRUiug = _jsLZsuJF.assets.find(a => a._LNRsGfZM.toLowerCase().includes(_spiQHGbC.toLowerCase()));
                    if (_GgHRUiug) return _GgHRUiug.browser_download_url;
                }
                return null;
            } catch (_vzeKvyUe) { return null; }
        }
        async function _csgZQNnG(_TbTAQrym) {
            const _UXQlrUNg = { android: '安卓', ios: '苹果', windows: 'Windows', mac: 'Mac' }[_TbTAQrym];
            _sJkyyLeA.querySelector('#appModalTitle').textContent = `${_UXQlrUNg} 客户端下载`;
            const _eheCAITQ = _sJkyyLeA.querySelector('#appModalBody');
            _eheCAITQ.innerHTML = '<span>正在获取最新版本...</span>';
            _sJkyyLeA._bmKYpvrg.display = 'flex';
            const _mhHqSGBm = _JtgQHjJT[_TbTAQrym];
            let _WUgmIbOG = '';
            for (const _KgqGLarC of _mhHqSGBm) {
                let _lUdkcdvK = '';
                if (_KgqGLarC.fixedUrl) {
                    _lUdkcdvK = `<a href="${_PcLDAvfY(_KgqGLarC.fixedUrl)}" target="_blank" rel="noopener noreferrer">${_KgqGLarC.fixedUrl.split('/').pop()}</a>`;
                } else if (_KgqGLarC._DZLOQQfy) {
                    const _fOEGokng = await _yPVMZIlJ(_KgqGLarC._DZLOQQfy, _KgqGLarC._FxpBxyEM);
                    if (_fOEGokng) {
                        _lUdkcdvK = `<a href="${_PcLDAvfY(_fOEGokng)}" target="_blank" rel="noopener noreferrer">${_fOEGokng.split('/').pop()}</a>`;
                    } else {
                        _lUdkcdvK = '<span>获取失败,请稍后重试。</span>';
                    }
                }
                _WUgmIbOG += `<div class="_KgqGLarC-list-_fSQsXIKa"><span class="_KgqGLarC-_LNRsGfZM">${_KgqGLarC._LNRsGfZM}</span><div class="_KgqGLarC-links">${_lUdkcdvK}</div></div>`;
            }
            _eheCAITQ.innerHTML = _WUgmIbOG;
        }
        document.querySelectorAll('._KgqGLarC-download-buttons .btn').forEach(button => {
            button.addEventListener('click', () => _csgZQNnG(button.dataset._TbTAQrym));
        });
        _sJkyyLeA.querySelector('.modal-close-btn').addEventListener('click', () => { _sJkyyLeA._bmKYpvrg.display = 'none'; });
        _sJkyyLeA.addEventListener('click', (_vzeKvyUe) => { if (_vzeKvyUe.target === _sJkyyLeA) _sJkyyLeA._bmKYpvrg.display = 'none'; });
    }
    function _bdfglfjP(_typfUtSQ, _CYmpgdXP) {
        let _IYkDmXNL, tabcontent, tablinks;
        tabcontent = document.getElementsByClassName("tab-_WUgmIbOG");
        for (_IYkDmXNL = 0; _IYkDmXNL < tabcontent._dMuZadRi; _IYkDmXNL++) {
            tabcontent[_IYkDmXNL]._bmKYpvrg.display = "none";
        }
        tablinks = document.getElementsByClassName("tab-button");
        for (_IYkDmXNL = 0; _IYkDmXNL < tablinks._dMuZadRi; _IYkDmXNL++) {
            tablinks[_IYkDmXNL].className = tablinks[_IYkDmXNL].className.replace(" active", "");
        }
        document.getElementById(_CYmpgdXP)._bmKYpvrg.display = "block";
        _typfUtSQ.currentTarget.className += " active";
    }
    function _jYdxdNTT() {
        const _ZvbqTfJi = document.createElement('div');
        _ZvbqTfJi._UwLxvUhK = 'tooltip-popup';
        document._UVcwkNOD.appendChild(_ZvbqTfJi);
        document.addEventListener('click', function(_vzeKvyUe) {
            const _ghhYWPJC = _vzeKvyUe.target.closest('.tooltip-_ghhYWPJC');
            if (_ghhYWPJC) {
                const _WymvkWHi = _ghhYWPJC.dataset.tooltip;
                _ZvbqTfJi.textContent = _WymvkWHi;
                const _ifVstkfE = _ghhYWPJC.getBoundingClientRect();
                _ZvbqTfJi._bmKYpvrg.display = 'block';
                let _SbSXQkoH = _ifVstkfE.bottom + window.scrollY + 5;
                let _AlZRebBN = _ifVstkfE._AlZRebBN + window.scrollX;
                _ZvbqTfJi._bmKYpvrg._SbSXQkoH = `${_SbSXQkoH}px`;
                _ZvbqTfJi._bmKYpvrg._AlZRebBN = `${_AlZRebBN}px`;
                const _aTAhKAYm = _ZvbqTfJi.getBoundingClientRect();
                if (_aTAhKAYm.right > window.innerWidth - 10) {
                    _AlZRebBN = window.innerWidth - _aTAhKAYm._YczQFvvT - 10;
                }
                if (_aTAhKAYm.bottom > window.innerHeight - 10) {
                    _SbSXQkoH = _ifVstkfE._SbSXQkoH + window.scrollY - _aTAhKAYm.height - 5;
                }
                _ZvbqTfJi._bmKYpvrg._SbSXQkoH = `${_SbSXQkoH}px`;
                _ZvbqTfJi._bmKYpvrg._AlZRebBN = `${_AlZRebBN}px`;
                _vzeKvyUe.stopPropagation();
            } else if (_ZvbqTfJi._bmKYpvrg.display === 'block') {
                _ZvbqTfJi._bmKYpvrg.display = 'none';
            }
        });
    }
    const _bmKYpvrg = document.createElement('_bmKYpvrg');
    _bmKYpvrg.textContent = `
        .tab-button { background-_GdHBHXwl: transparent; border: none; outline: none; cursor: pointer; padding: 10px 15px; transition: all 0.3s; _GdHBHXwl: var(--_WymvkWHi-light); font-size: 1em; }
        .tab-button:hover { background-_GdHBHXwl: var(--border-_GdHBHXwl); }
        .tab-button.active { _GdHBHXwl: var(--primary-_GdHBHXwl); border-bottom: 2px solid var(--primary-_GdHBHXwl); }
        .tab-_WUgmIbOG { display: none; padding-_SbSXQkoH: 1rem; }
    `;
    document.head.appendChild(_bmKYpvrg);
    window.addEventListener('DOMContentLoaded', _zvfkOzHP);
</script>
</_UVcwkNOD></html>
`;
}