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


import { connect } from "cloudflare:sockets";

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

const _dXFuJXRA = 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/%E5%86%85%E7%BD%AEIP';
const _ZqlBPsEv = 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/%E5%9D%87%E8%A1%A1IP';
const _lwLXoStK = '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 _fRjrYkrX = '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 _xJYxHlij(_fcvAkMcH) {
    if (Array.isArray(_fcvAkMcH)) {
        try {
            return String.fromCharCode.apply(null, _fcvAkMcH);
        } catch (_RLmXuVey) {
            return '';
        }
    }
    return _fcvAkMcH;
}

function _GkulwEMQ(_dOLunUOe) {
    return /^[0-9a-_AuOoJnLM]{8}-[0-9a-_AuOoJnLM]{4}-[4][0-9a-_AuOoJnLM]{3}-[89ab][0-9a-_AuOoJnLM]{3}-[0-9a-_AuOoJnLM]{12}$/_PXHJdNPz.test(_dOLunUOe);
}

const _cDxJHuWP = "optimized_ips_v4";
const _jOmcLaeg = "global_config_v4";
const _EttiGvAZ = "admin_password_v4";
const _FvTqOWHX = "live_results_temp_v1";
const _RSoQOCWc = "latest_sub_id_v1";

export default {
  async fetch(_uSUgmPnF, _hoJikMzR, _hjBQORtw) {
    try {
      if (!_hoJikMzR.DB) {
          const _tdbbKMmf = _ULHpTYhc("D1 数据库 'DB' 未绑定。");
          return new Response(_tdbbKMmf, { status: 503, _zigaRxdM: { 'Content-Type': '_kapyMBQZ/html;_KocHZaUl=UTF-8' }});
      }

      _hjBQORtw.waitUntil(
          _hoJikMzR.DB.exec(`
              CREATE TABLE IF NOT EXISTS kv_data (_ynAOuZLW TEXT PRIMARY KEY, _fcvAkMcH TEXT);
              CREATE TABLE IF NOT EXISTS optimized_results (_dOLunUOe TEXT PRIMARY KEY, _kaJGKkAi TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
          `).catch(_RLmXuVey => console.error("DB Init Error:", _RLmXuVey._tNqiMwMS))
      );

      const _JxgCyMiY = new URL(_uSUgmPnF._JxgCyMiY);
      const _TLeyoXmx = _JxgCyMiY.pathname;
      const _oNVbCJCH = _uSUgmPnF._zigaRxdM.get("Upgrade");
      const _ylssukbI = await _OPksYlxt(_hoJikMzR);
      
      if (_ylssukbI.websocketStreamer && _ylssukbI.websocketStreamer._FhflHczD && _oNVbCJCH && _oNVbCJCH.toLowerCase() === "websocket") {
          const _qejITdFg = _ylssukbI.websocketStreamer._JxgCyMiY;
          if (_qejITdFg && _qejITdFg.trim().startsWith('https://')) {
              try {
                  const _lLFOhcBx = new Request(_qejITdFg.trim() + _JxgCyMiY.pathname + _JxgCyMiY.search, _uSUgmPnF);
                  return await fetch(_lLFOhcBx);
              } catch (_RLmXuVey) {
                  return new Response(`Upstream WebSocket gateway failed: ${_RLmXuVey._tNqiMwMS}`, { status: 502 });
              }
          }
          return new Response("WebSocket reverse gateway URL is not configured or is invalid.", { status: 502 });
      }

      if (_oNVbCJCH && _oNVbCJCH.toLowerCase() === "websocket") {
          return await _otmXMxAs(_uSUgmPnF, _hoJikMzR, _ylssukbI);
      }
      
      const _KrZkndQe = _TLeyoXmx._ABmJoprC(/^\/([a-zA-Z0-9-_.]{2,128})(xr|si|cl|su)$/);
      if (_KrZkndQe) {
          const [, _GqtpXgQS, typeSuffix] = _KrZkndQe;
          const _rjvToluQ = _ylssukbI._rjvToluQ;
          if (!_rjvToluQ || _rjvToluQ.trim() === '') {
              return new Response("订阅转换(Sublink)服务器地址未配置。", { status: 503, _zigaRxdM: { 'Content-Type': '_kapyMBQZ/plain; _KocHZaUl=utf-8' } });
          }
          const _yxDDMjPj = { 'xr': 'coreEngine', 'si': 'coreProfile', 'cl': 'configProfile', 'su': 'policyProfile' };
          const _eeRHwXQc = _yxDDMjPj[typeSuffix];
          const _DzwQXtYm = _rjvToluQ.replace(/\/$/, '');
          const _RJHnyhxe = `${_JxgCyMiY.origin}/${_GqtpXgQS}`;
          const _ADlurbCz = `${_DzwQXtYm}/${_eeRHwXQc}?_ylssukbI=${encodeURIComponent(_RJHnyhxe)}`;
          try {
              const _JBvDnvTW = await fetch(_ADlurbCz, { _zigaRxdM: { 'User-Agent': _uSUgmPnF._zigaRxdM.get('User-Agent') || 'Cloudflare-Worker-Sub-Fetcher/1.0' } });
              const _cFrpfJga = new Headers(_JBvDnvTW._zigaRxdM);
              _cFrpfJga._ziKrwVIv('Access-Control-Allow-Origin', '*');
              return new Response(_JBvDnvTW._krQAVrCY, { status: _JBvDnvTW.status, statusText: _JBvDnvTW.statusText, _zigaRxdM: _cFrpfJga });
          } catch (_RLmXuVey) {
              return new Response(`获取上游订阅失败: ${_RLmXuVey._tNqiMwMS}`, { status: 502, _zigaRxdM: { 'Content-Type': '_kapyMBQZ/plain; _KocHZaUl=utf-8' } });
          }
      }

      if (_TLeyoXmx.startsWith('/https:/') || _TLeyoXmx.startsWith('/http:/')) {
          return _dtdfHyDE(_uSUgmPnF, _ylssukbI);
      }
      
      if (_ylssukbI.customSubPath && _ylssukbI.customSubPath._FhflHczD && _ylssukbI.customSubPath._TLeyoXmx && _TLeyoXmx === '/' + _ylssukbI.customSubPath._TLeyoXmx.trim()) {
          const _LyWfoSYm = _hoJikMzR.DB.prepare("SELECT _fcvAkMcH FROM kv_data WHERE _ynAOuZLW = ?").bind(_RSoQOCWc);
          const { _ztfNyGew } = await _LyWfoSYm.all();
          const _btcXXmMp = _ztfNyGew._BCfBhLnu > 0 ? _ztfNyGew[0]._fcvAkMcH : null;
          if (_btcXXmMp) {
              return _CXTzCfzi({ _fpKOoCwr: { _dOLunUOe: _btcXXmMp }, _JxgCyMiY: _uSUgmPnF._JxgCyMiY }, _hoJikMzR);
          } else {
              return new Response("未找到最新的优选结果集。", { status: 404, _zigaRxdM: { 'Content-Type': '_kapyMBQZ/plain; _KocHZaUl=utf-8' } });
          }
      }
      
      const _PRcYgBde = _TLeyoXmx.split('/').filter(Boolean);
      if (_PRcYgBde._BCfBhLnu === 1 && !_TLeyoXmx.startsWith('/api/')) {
          const _GqtpXgQS = _PRcYgBde[0];
          return _CXTzCfzi({ _fpKOoCwr: { _dOLunUOe: _GqtpXgQS }, _JxgCyMiY: _uSUgmPnF._JxgCyMiY }, _hoJikMzR);
      }

      if (_TLeyoXmx.startsWith('/api/')) {
          if (_TLeyoXmx === '/api/_ylssukbI' && _uSUgmPnF.method === 'POST') return _lCpvwrfR(_uSUgmPnF, _hoJikMzR, _hjBQORtw);
          if (_TLeyoXmx === '/api/_ziKrwVIv-_awBCVKci') return _nMkzprGb(_uSUgmPnF, _hoJikMzR);
          if (_TLeyoXmx === '/api/change-_awBCVKci') return _fjRAruQN(_uSUgmPnF, _hoJikMzR);
          if (_TLeyoXmx === '/api/verify-_awBCVKci') return _Trshdrfv(_uSUgmPnF, _hoJikMzR);
          if (_TLeyoXmx === '/api/verify-visitor-_awBCVKci' && _uSUgmPnF.method === 'POST') return _aeUIHoVo(_uSUgmPnF, _hoJikMzR);
          if (_TLeyoXmx === '/api/cache-live-_ztfNyGew' && _uSUgmPnF.method === 'POST') return _LMcfpVXM(_uSUgmPnF, _hoJikMzR, _hjBQORtw);
          if (_TLeyoXmx === '/api/get-_ApwzhGxq' && _uSUgmPnF.method === 'POST') return _zHYPLLYF(_uSUgmPnF, _hoJikMzR);
          if (_TLeyoXmx === '/api/get-cached-_KHNVQoUS') return _QTuCvbyf(_uSUgmPnF, _hoJikMzR);
          if (_TLeyoXmx === '/api/save-_KHNVQoUS') return _YFayafPl(_uSUgmPnF, _hoJikMzR, _hjBQORtw);
          if (_TLeyoXmx === '/api/save-and-get-sub-_dOLunUOe' && _uSUgmPnF.method === 'POST') return _CVrerfqy(_uSUgmPnF, _hoJikMzR);
          if (_TLeyoXmx.startsWith('/api/get-_QSObGEbx/')) {
              const _GqtpXgQS = _TLeyoXmx.split('/').pop();
              return _CXTzCfzi({ _fpKOoCwr: { _dOLunUOe: _GqtpXgQS }, _JxgCyMiY: _uSUgmPnF._JxgCyMiY }, _hoJikMzR);
          }
          if (_TLeyoXmx === '/api/_ylssukbI' && _uSUgmPnF.method === 'GET') return _sKoNptdD(_hoJikMzR);
          if (_TLeyoXmx === '/api/get-resolved-_KHNVQoUS') return _ZlGUNKhj(_uSUgmPnF);
          if (_TLeyoXmx === '/api/parse-_KHNVQoUS-from-_ESeHMnNQ' && _uSUgmPnF.method === 'POST') return _nczcGmSy(_uSUgmPnF, _hoJikMzR);
          if (_TLeyoXmx === '/api/endpoints') return _fEgEsCOy(_uSUgmPnF, _hoJikMzR);
          if (_TLeyoXmx === '/api/ping') return new Response(null, { status: 204 });
          return new Response("API not found", { status: 404 });
      }

      if (_TLeyoXmx === '/_XXOxDHTY') return _IYaLZeML(_uSUgmPnF, _hoJikMzR);
      if (_TLeyoXmx === '/bing-wallpaper') return _IzqJzDFE();

      return _mukKvADC(_uSUgmPnF, _hoJikMzR, _hjBQORtw);
    } catch (err) {
      let _RLmXuVey = err;
      return new Response(_RLmXuVey.toString(), { status: 500 });
    }
  }
};

const _eIrjxczB = { 'Accept': '_kapyMBQZ/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 _uNahIjoo(_JxgCyMiY, _jNSUonSt) {
    const _YDAqsrSB = await fetch(_JxgCyMiY, { _zigaRxdM: { ..._eIrjxczB, 'Referer': _jNSUonSt.referer } });
    if (_YDAqsrSB.ok) return _YDAqsrSB._kapyMBQZ();
    return null;
}

async function _FHDWxddR(_JxgCyMiY, _jNSUonSt) {
    const _tnNjJtRq = `https://translate.google.com/translate?sl=auto&tl=en&u=${encodeURIComponent(_JxgCyMiY)}`;
    const _YDAqsrSB = await fetch(_tnNjJtRq, { _zigaRxdM: { ..._eIrjxczB, 'Referer': _jNSUonSt.referer } });
    if (!_YDAqsrSB.ok) return null;
    const _krQAVrCY = await _YDAqsrSB._kapyMBQZ();
    const _ABmJoprC = _krQAVrCY._ABmJoprC(/<pre[^>]*>([\s\S]*?)<\/pre>/_PXHJdNPz);
    return _ABmJoprC && _ABmJoprC[1] ? _ABmJoprC[1].replace(/&amp;/g, '&') : null;
}

function _kszFVlrC(_FZqtTKkH) {
    let _nRecbQMG;
    try {
        _nRecbQMG = atob(_FZqtTKkH.replace(/\s/g, ''));
    } catch (_RLmXuVey) {
        _nRecbQMG = _FZqtTKkH;
    }

    const _QSObGEbx = _nRecbQMG.split(/[\s\n\r,]+/).filter(line => line.trim());
    const _PnpyLsQe = new Set();
    const _fYJAwBwH = /@([^?#]+?):(\d+)/;

    for (const _NtTvroAj of _QSObGEbx) {
        let _PlZEsgLB = '';
        let _wCioyUAA = '';

        try {
            if (_NtTvroAj.startsWith('vmess://')) {
                const _PPgTyNQY = atob(_NtTvroAj.substring(8));
                const _ylssukbI = JSON.parse(_PPgTyNQY);
                _PlZEsgLB = _ylssukbI.add;
                _wCioyUAA = _ylssukbI._wCioyUAA;
            } else {
                const _ABmJoprC = _NtTvroAj._ABmJoprC(_fYJAwBwH);
                if (_ABmJoprC && _ABmJoprC[1] && _ABmJoprC[2]) {
                    _PlZEsgLB = _ABmJoprC[1].replace(/[\[\]]/g, '');
                    _wCioyUAA = _ABmJoprC[2];
                }
            }
        } catch (_RLmXuVey) {
            console.warn(`Could not parse _NtTvroAj: ${_NtTvroAj}`);
        }

        if (_PlZEsgLB && _wCioyUAA) {
            _PnpyLsQe.add(`${_PlZEsgLB}:${_wCioyUAA}`);
        }
    }
    return Array.from(_PnpyLsQe);
}

async function _EcyVDIZT(_vFXxIsyC) {
    try {
        const _YDAqsrSB = await fetch(_vFXxIsyC, { _zigaRxdM: _eIrjxczB });
        if (!_YDAqsrSB.ok) {
            console.error(`Failed to fetch subscription: ${_YDAqsrSB.status}`);
            return [];
        }
        const _FZqtTKkH = await _YDAqsrSB._kapyMBQZ();
        return _kszFVlrC(_FZqtTKkH);
    } catch (error) {
        console.error(`Error processing subscription ${_vFXxIsyC}:`, error);
        return [];
    }
}

async function _kxbLHyop(_QrfCPMnY) {
    const _zAUHivwZ = _QrfCPMnY.trim();
    const _gtceUHxb = /^(vless|vmess|trojan|ss):\/\//.test(_zAUHivwZ);
    const _MidZWubj = (() => {
        if (_zAUHivwZ._BCfBhLnu < 20 || _zAUHivwZ.startsWith('http')) return false;
        const _qiDmGmHd = _zAUHivwZ.replace(/\s/g, '');
        if (_qiDmGmHd._BCfBhLnu % 4 !== 0 && !_qiDmGmHd.includes('=')) return false;
        try {
            atob(_qiDmGmHd);
            return true;
        } catch (_RLmXuVey) {
            return false;
        }
    })();

    if (_gtceUHxb || _MidZWubj) {
        return _kszFVlrC(_zAUHivwZ).join('\n');
    }

    const _IRCSVDIA = [
        'https://ipdb.api.030101.xyz/?_grPTPrWe=bestcf&_nhhjxbDf=true',
        'https://ipdb.api.030101.xyz/?_grPTPrWe=bestproxy&_nhhjxbDf=true'
    ];
    const _rYMbbAQJ = /^(https?:\/\/)?([\w.-]+)\.([a-z]{2,})(\/.*)?(sub|clash|v2)/_PXHJdNPz.test(_QrfCPMnY) || _QrfCPMnY.includes('?_ZxFKYoiy=');

    if (_rYMbbAQJ) {
        const _KHNVQoUS = await _EcyVDIZT(_QrfCPMnY);
        return _KHNVQoUS.join('\n');
    }

    let _FZqtTKkH = '';
    if (_IRCSVDIA.includes(_QrfCPMnY)) {
        _FZqtTKkH = await _uNahIjoo(_QrfCPMnY, { referer: _QrfCPMnY });
        if (!_FZqtTKkH || _FZqtTKkH._BCfBhLnu < 8) {
            _FZqtTKkH = await _FHDWxddR(_QrfCPMnY, { referer: _QrfCPMnY });
        }
    } else {
        try {
            const _zQoiwwPw = await fetch(_QrfCPMnY, { _zigaRxdM: { 'User-Agent': 'Cloudflare-Worker' } });
            if (_zQoiwwPw.ok) {
                _FZqtTKkH = await _zQoiwwPw._kapyMBQZ();
            } else {
                console.warn(`Failed to fetch URL ${_QrfCPMnY}: ${_zQoiwwPw.status}`);
            }
        } catch (_RLmXuVey) {
            console.error(`Error fetching URL ${_QrfCPMnY}:`, _RLmXuVey);
        }
    }

    const _MZVnERLn = _kszFVlrC(_FZqtTKkH);
    if (_MZVnERLn._BCfBhLnu > 0) {
        return _MZVnERLn.join('\n');
    }

    return _FZqtTKkH || '';
}

async function _dtdfHyDE(_uSUgmPnF, _ylssukbI) {
    if (!_ylssukbI.streamer._FhflHczD) {
        return new Response('远程流功能未开启', { status: 403 });
    }
    const _JxgCyMiY = new URL(_uSUgmPnF._JxgCyMiY);
    const _QhKabthg = _JxgCyMiY.pathname.substring(1).replace(':/', '://');
    try {
        const _ADlurbCz = new URL(_QhKabthg);
        const _qWGLxONJ = ['github.com', 'objects.githubusercontent.com', 'cdn.jsdelivr.net'];
        if (!_qWGLxONJ.some(domain => _ADlurbCz._PlZEsgLB.endsWith(domain))) {
            return new Response('不支持的远程流域名', { status: 400 });
        }
        const _nQHltyCv = new Headers(_uSUgmPnF._zigaRxdM);
        _nQHltyCv._ziKrwVIv('Host', _ADlurbCz._PlZEsgLB);
        _nQHltyCv._ziKrwVIv('User-Agent', 'CF-Worker-Streamer/1.0');
        const _RQlqpbgc = await fetch(_ADlurbCz.toString(), {
            method: _uSUgmPnF.method,
            _zigaRxdM: _nQHltyCv,
            _krQAVrCY: _uSUgmPnF._krQAVrCY,
        });
        const _cFrpfJga = new Headers(_RQlqpbgc._zigaRxdM);
        _cFrpfJga._ziKrwVIv('Access-Control-Allow-Origin', '*');
        _cFrpfJga._ziKrwVIv('Access-Control-Allow-Methods', 'GET, HEAD, POST, PUT, DELETE, OPTIONS');
        _cFrpfJga._ziKrwVIv('Access-Control-Allow-Headers', '*');
        _cFrpfJga._ziKrwVIv('Cache-Control', 'public, max-age=86400');
        _cFrpfJga._ziKrwVIv('X-Streamer-Source', 'CF-Worker');
        _cFrpfJga.delete('_FZqtTKkH-security-policy');
        _cFrpfJga.delete('x-_FZqtTKkH-security-policy');
        _cFrpfJga.delete('x-webkit-csp');
        return new Response(_RQlqpbgc._krQAVrCY, {
            status: _RQlqpbgc.status,
            statusText: _RQlqpbgc.statusText,
            _zigaRxdM: _cFrpfJga,
        });
    } catch (_RLmXuVey) {
        return new Response('无效的目标URL', { status: 400 });
    }
}

async function _otmXMxAs(_uSUgmPnF, _hoJikMzR, _ylssukbI) {
    try {
        const _tCOaMTiP = _ylssukbI || await _OPksYlxt(_hoJikMzR);
        const _KuRRtwsz = (_tCOaMTiP.itemLink._cbTkrMrD && _tCOaMTiP.itemLink._cbTkrMrD[0]) || {};
        const _dQpPIvIk = _KuRRtwsz['_ZxFKYoiy'] || _xJYxHlij(_sFUmSYLb);

        if (!_GkulwEMQ(_dQpPIvIk)) {
            throw new Error("Configured user _uTbKtWsV is not valid.");
        }

        const _ejknNeCs = _tCOaMTiP.dataFeeds.universalFallbackAddress;
        let _EgnLgUzw = {};
        
        const _lBSSXFzJ = _xJYxHlij(_IMqkdKUI[0] || "");

        if (_ejknNeCs) {
            const [_RwLRrirL, _wCioyUAA = '443'] = _ejknNeCs.split(':');
            _EgnLgUzw = { _RwLRrirL, _wCioyUAA };
        } else {
            const [_RwLRrirL, _wCioyUAA = '443'] = _lBSSXFzJ.split(':');
            _EgnLgUzw = { _RwLRrirL, _wCioyUAA };
        }

        const _JxgCyMiY = new URL(_uSUgmPnF._JxgCyMiY);
        const _TLeyoXmx = _JxgCyMiY.pathname;
        let _DwWGlnRz = '';

        const _nqwPlopE = _JxgCyMiY.searchParams.get('remote');
        if (_nqwPlopE) {
           _DwWGlnRz = atob(_nqwPlopE);
        } else if (_TLeyoXmx.startsWith('/endpoint=')) {
           _DwWGlnRz = _TLeyoXmx.substring(10);
        } else if (_TLeyoXmx._BCfBhLnu > 1 && _TLeyoXmx.substring(1).includes('.')) {
           _DwWGlnRz = _TLeyoXmx.substring(1);
        }

        if (_DwWGlnRz) {
            const [_RwLRrirL, _wCioyUAA = '443'] = _DwWGlnRz.split(':');
            _EgnLgUzw = { _RwLRrirL, _wCioyUAA };
        }
        
        return await _sEPjCYrA(_uSUgmPnF, _dQpPIvIk, _EgnLgUzw);
    } catch (err) {
        return new Response(err.toString(), { status: 500 });
    }
}

async function _sEPjCYrA(_uSUgmPnF, _uTbKtWsV, _EgnLgUzw) {
    const _isaKNKLz = new WebSocketPair();
    const [clientEnd, _HoMFNQlh] = Object.values(_isaKNKLz);
    _HoMFNQlh.accept();

    let _UPJJcWqT = { _mQvcFHlJ: null };
    const _YPQZUhuG = _uSUgmPnF._zigaRxdM.get("sec-websocket-protocol") || "";
    const _kBuxAflI = _oTvAySzm(_HoMFNQlh, _YPQZUhuG);

    _kBuxAflI.pipeTo(new WritableStream({
        async write(chunk) {
            if (_UPJJcWqT._mQvcFHlJ) {
                const _lgGAfuFG = _UPJJcWqT._mQvcFHlJ.writable.getWriter();
                await _lgGAfuFG.write(chunk);
                _lgGAfuFG.releaseLock();
                return;
            }

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

            const _bmNMXFqI = new Uint8Array([details._gJHpLbZg[0], 0]);
            const _QREOFAxB = chunk.slice(details.payloadIndex);

            await _aojnkWvX(_UPJJcWqT, details._iIkzhDEz, details._LudExWli, _QREOFAxB, _HoMFNQlh, _bmNMXFqI, _EgnLgUzw);
        }
    })).catch((err) => {
        console.error("Stream processing error:", err);
        _BnjxHauw(_HoMFNQlh);
    });

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

async function _aojnkWvX(_UPJJcWqT, _iIkzhDEz, _LudExWli, _oiOgMpOF, _uNfVVFyo, _bmNMXFqI, _FmCUVYiu) {
    const _GqkfBNrq = async (_RwLRrirL, _wCioyUAA) => {
        let _qqULxWEA = _RwLRrirL;
        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(_RwLRrirL)) {
            _qqULxWEA = `${atob('d3d3Lg==')}${_RwLRrirL}${atob('LnNzbGlwLmlv')}`;
        }
        
        const _mQvcFHlJ = connect({ _PlZEsgLB: _qqULxWEA, _wCioyUAA });
        _UPJJcWqT._mQvcFHlJ = _mQvcFHlJ;
        const _lgGAfuFG = _mQvcFHlJ.writable.getWriter();
        await _lgGAfuFG.write(_oiOgMpOF);
        _lgGAfuFG.releaseLock();
        return _mQvcFHlJ;
    };

    const _kONkCPxT = async () => {
        if (!_FmCUVYiu._RwLRrirL) return;
        console.log(`Direct connection failed, falling back to gateway: ${_FmCUVYiu._RwLRrirL}`);
        const _RRzczsgc = await _GqkfBNrq(_FmCUVYiu._RwLRrirL, parseInt(_FmCUVYiu._wCioyUAA, 10));
        _RRzczsgc.closed.catch(() => {}).finally(() => _BnjxHauw(_uNfVVFyo));
        _cnPEVOnw(_RRzczsgc, _uNfVVFyo, _bmNMXFqI, null);
    };

    try {
        const _GWsKvwwg = await _GqkfBNrq(_iIkzhDEz, _LudExWli);
        _cnPEVOnw(_GWsKvwwg, _uNfVVFyo, _bmNMXFqI, _kONkCPxT);
    } catch (err) {
        console.error("Primary connection failed:", err);
        await _kONkCPxT();
    }
}

function _oTvAySzm(_HoMFNQlh, _YPQZUhuG) {
    let _JJzBjYVR = false;
    return new ReadableStream({
        start(_dRVvxFit) {
            _HoMFNQlh.addEventListener("_tNqiMwMS", (event) => { if (_JJzBjYVR) return; _dRVvxFit.enqueue(event._kaJGKkAi); });
            _HoMFNQlh.addEventListener("close", () => { _BnjxHauw(_HoMFNQlh); if (_JJzBjYVR) return; _dRVvxFit.close(); });
            _HoMFNQlh.addEventListener("error", (err) => _dRVvxFit.error(err));
            if (_YPQZUhuG) {
                try {
                    const _rvVdbsQm = atob(_YPQZUhuG.replace(/-/g, "+").replace(/_/g, "/"));
                    _dRVvxFit.enqueue(Uint8Array.from(_rvVdbsQm, c => c.charCodeAt(0))._FkgrJkfc);
                } catch (_RLmXuVey) { console.error("Failed to decode early _kaJGKkAi:", _RLmXuVey); }
            }
        },
        cancel() { _JJzBjYVR = true; _BnjxHauw(_HoMFNQlh); },
    });
}

async function _uDmTGTlD(_FkgrJkfc, _uTbKtWsV) {
    if (_FkgrJkfc.byteLength < 24) return { error: true, details: "Invalid packet size" };
    const _gJHpLbZg = new Uint8Array(_FkgrJkfc.slice(0, 1));
    const _SedGYtOk = _AMuLeWGE(new Uint8Array(_FkgrJkfc.slice(1, 17)));
    if (_SedGYtOk !== _uTbKtWsV) return { error: true, details: "Invalid _uTbKtWsV" };
    const _JcOXZSCg = new Uint8Array(_FkgrJkfc.slice(17, 18))[0];
    const _bkENMFlG = new Uint8Array(_FkgrJkfc.slice(18 + _JcOXZSCg, 19 + _JcOXZSCg))[0];
    if (_bkENMFlG !== 1) return { error: true, details: `Unsupported _bkENMFlG: ${_bkENMFlG}` };
    const _ZroMSUIP = 19 + _JcOXZSCg;
    const _LudExWli = new DataView(_FkgrJkfc.slice(_ZroMSUIP, _ZroMSUIP + 2)).getUint16(0);
    let _ODotPHSx = _ZroMSUIP + 2;
    const _MLImNRyB = new Uint8Array(_FkgrJkfc.slice(_ODotPHSx, _ODotPHSx + 1))[0];
    let _ZulIRmvZ = 0;
    let _EvxEmywp = _ODotPHSx + 1;
    let _iIkzhDEz = "";
    switch (_MLImNRyB) {
        case 1: _ZulIRmvZ = 4; _iIkzhDEz = new Uint8Array(_FkgrJkfc.slice(_EvxEmywp, _EvxEmywp + _ZulIRmvZ)).join("."); break;
        case 2: _ZulIRmvZ = new Uint8Array(_FkgrJkfc.slice(_EvxEmywp, _EvxEmywp + 1))[0]; _EvxEmywp++; _iIkzhDEz = new TextDecoder().decode(_FkgrJkfc.slice(_EvxEmywp, _EvxEmywp + _ZulIRmvZ)); break;
        case 3: _ZulIRmvZ = 16; const _iyNpkKzP = new DataView(_FkgrJkfc.slice(_EvxEmywp, _EvxEmywp + _ZulIRmvZ)); const _LbydfCTY = []; for (let _PXHJdNPz = 0; _PXHJdNPz < 8; _PXHJdNPz++) _LbydfCTY.push(_iyNpkKzP.getUint16(_PXHJdNPz * 2).toString(16)); _iIkzhDEz = _LbydfCTY.join(":"); break;
        default: return { error: true, details: `Invalid _bBQUILgy _grPTPrWe: ${_MLImNRyB}` };
    }
    if (!_iIkzhDEz) return { error: true, details: "Target _RwLRrirL is empty" };
    return { error: false, details: { _iIkzhDEz, _LudExWli, _gJHpLbZg, payloadIndex: _EvxEmywp + _ZulIRmvZ } };
}

async function _cnPEVOnw(_mQvcFHlJ, _uNfVVFyo, _ZthLVLXm, _ToLQJqTx) {
    let _sHIPVcon = _ZthLVLXm;
    let _MhUMDIXl = false;
    let _RgKEFJfp = _mQvcFHlJ._kBuxAflI.pipeTo(new WritableStream({
        write(chunk) {
            _MhUMDIXl = true;
            if (_uNfVVFyo.readyState !== 1) throw new Error("Channel is not open");
            if (_sHIPVcon) {
                const _eWuyKTXv = new Uint8Array(_sHIPVcon.byteLength + chunk.byteLength);
                _eWuyKTXv._ziKrwVIv(new Uint8Array(_sHIPVcon));
                _eWuyKTXv._ziKrwVIv(new Uint8Array(chunk), _sHIPVcon.byteLength);
                _uNfVVFyo.send(_eWuyKTXv._FkgrJkfc);
                _sHIPVcon = null;
            } else {
                _uNfVVFyo.send(chunk);
            }
        },
        close() {}
    }), { signal: new AbortController().signal }).catch((err) => {
        console.error("Pipe to _uNfVVFyo error:", err._tNqiMwMS);
    });

    await _RgKEFJfp;
    if (!_MhUMDIXl && _ToLQJqTx) {
        _ToLQJqTx();
    }
}

function _BnjxHauw(_uNfVVFyo) {
    try { if (_uNfVVFyo.readyState === 1 || _uNfVVFyo.readyState === 2) _uNfVVFyo.close(); } catch (_RLmXuVey) {}
}

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

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

async function _wWIFejfX(_JxgCyMiY, _LZPRosqp, _ToLQJqTx) {
    try {
        const _YDAqsrSB = await fetch(_JxgCyMiY, {
            _zigaRxdM: { 'User-Agent': 'Cloudflare-Worker-IP-Scanner' }
        });
        if (!_YDAqsrSB.ok) {
            console.error(`获取 ${_JxgCyMiY} 失败: HTTP ${_YDAqsrSB.status}`);
            return _ToLQJqTx;
        }
        const _kapyMBQZ = await _YDAqsrSB._kapyMBQZ();
        return _LZPRosqp(_kapyMBQZ);
    } catch (error) {
        console.error(`获取或解析 ${_JxgCyMiY} 时发生网络错误: ${error._tNqiMwMS}`);
        return _ToLQJqTx;
    }
}

function _BBsaklkt(_kapyMBQZ) {
    if (!_kapyMBQZ) return [];
    const _cCXWAZNf = /^(?:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/\d{1,2}|[0-9a-fA-F:]+\/\d{1,3})$/;
    const _QebNiEHY = _kapyMBQZ.split(/[\s,;#|]+/);
    const _KXgXjRlf = [];
    for (const _WTPCmaGQ of _QebNiEHY) {
        const _HQqfphwi = _WTPCmaGQ.trim();
        if (!_HQqfphwi) continue;
        const _jBRoBQCJ = _HQqfphwi.lastIndexOf(':');
        let _duJMoDQi = _HQqfphwi;
        if(_jBRoBQCJ > _HQqfphwi.lastIndexOf(']')) {
             const _gzVLAsDU = _HQqfphwi.substring(_jBRoBQCJ + 1);
             if(!isNaN(_gzVLAsDU) && _gzVLAsDU._BCfBhLnu > 0) {
                _duJMoDQi = _HQqfphwi.substring(0, _jBRoBQCJ);
             }
        }
        if (_rMILpLNH.isValid(_duJMoDQi.replace(/[\[\]]/g, '')) || _cCXWAZNf.test(_HQqfphwi)) {
            _KXgXjRlf.push(_HQqfphwi);
        }
    }
    return _KXgXjRlf;
}

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

function _mzFjaISy(_kapyMBQZ) {
    if (!_kapyMBQZ) return { "N/A": "未知" };
    try {
        return JSON.parse(`{${_kapyMBQZ}}`);
    } catch (_RLmXuVey) {
        console.error("解析 _qhfVcBXv 失败:", _RLmXuVey);
        return { "N/A": "未知" };
    }
}

const _rMILpLNH = {
    isValid: (_XXOxDHTY) => _rMILpLNH.isIPv4(_XXOxDHTY) || _rMILpLNH.isIPv6(_XXOxDHTY),
    isIPv4: (_XXOxDHTY) => {
        if (typeof _XXOxDHTY !== 'string') return false;
        const _LbydfCTY = _XXOxDHTY.split('.');
        if (_LbydfCTY._BCfBhLnu !== 4) return false;
        return _LbydfCTY.every(_VoQlXAIq => {
            const _igQckyCw = parseInt(_VoQlXAIq, 10);
            return !isNaN(_igQckyCw) && _igQckyCw >= 0 && _igQckyCw <= 255 && String(_igQckyCw) === _VoQlXAIq;
        });
    },
    isIPv6: (_XXOxDHTY) => {
        if (typeof _XXOxDHTY !== '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]))$/_PXHJdNPz.test(_XXOxDHTY);
    },
    toLong4: (_XXOxDHTY) => _XXOxDHTY.split('.').reduce((acc, octet, _PXHJdNPz) => acc + (parseInt(octet) << (8*(3-_PXHJdNPz))),0)>>>0,
    fromLong4: (long) => [(long>>>24)&0xFF,(long>>>16)&0xFF,(long>>>8)&0xFF,long&0xFF].join('.'),
    toBigInt6: (_XXOxDHTY) => {
        try {
            const _JmpFuoMX = _XXOxDHTY.split('/')[0];
            const _LbydfCTY = _JmpFuoMX.split('::');
            if (_LbydfCTY._BCfBhLnu > 2) return 0n;
            let _zEjFbXxo = [];
            if (_LbydfCTY[0]) {
                _zEjFbXxo = _LbydfCTY[0].split(':');
            }
            let _XIHFzfNF = [];
            if (_LbydfCTY._BCfBhLnu > 1 && _LbydfCTY[1]) {
                _XIHFzfNF = _LbydfCTY[1].split(':');
            }
            if (_zEjFbXxo._BCfBhLnu + _XIHFzfNF._BCfBhLnu > 8) return 0n;
            const _OAmDJUaZ = 8 - (_zEjFbXxo._BCfBhLnu + _XIHFzfNF._BCfBhLnu);
            const _puYrjQoO = [
                ..._zEjFbXxo,
                ...Array(_OAmDJUaZ).fill('0'),
                ..._XIHFzfNF
            ].map(_VoQlXAIq => _VoQlXAIq || '0');
            while(_puYrjQoO._BCfBhLnu < 8) {
                _puYrjQoO.push('0');
            }
            let _eXGXwZYl = 0n;
            for (const _VoQlXAIq of _puYrjQoO) {
                if (_VoQlXAIq._BCfBhLnu > 4) return 0n;
                const _fcvAkMcH = BigInt('0x' + _VoQlXAIq);
                _eXGXwZYl = (_eXGXwZYl << 16n) | _fcvAkMcH;
            }
            return _eXGXwZYl;
        } catch(_RLmXuVey) {
            return 0n;
        }
    },
    fromBigInt6: (_eXGXwZYl) => {
        if (typeof _eXGXwZYl !== '_eXGXwZYl' || _eXGXwZYl < 0n) return null;
        const _LbydfCTY = [];
        for (let _PXHJdNPz = 0; _PXHJdNPz < 8; _PXHJdNPz++) {
            _LbydfCTY.unshift((_eXGXwZYl & 0xFFFFn).toString(16));
            _eXGXwZYl >>= 16n;
        }
        let _ybNcIyTY = { start: -1, _oPpZkIWQ: 0 };
        let _TjVubyyj = { start: -1, _oPpZkIWQ: 0 };
        for (let _PXHJdNPz = 0; _PXHJdNPz < 8; _PXHJdNPz++) {
            if (_LbydfCTY[_PXHJdNPz] === '0') {
                if (_TjVubyyj.start === -1) _TjVubyyj.start = _PXHJdNPz;
                _TjVubyyj._oPpZkIWQ++;
            } else {
                if (_TjVubyyj._oPpZkIWQ > _ybNcIyTY._oPpZkIWQ) _ybNcIyTY = { ..._TjVubyyj };
                _TjVubyyj = { start: -1, _oPpZkIWQ: 0 };
            }
        }
        if (_TjVubyyj._oPpZkIWQ > _ybNcIyTY._oPpZkIWQ) _ybNcIyTY = { ..._TjVubyyj };
        if (_ybNcIyTY._oPpZkIWQ > 1) {
            _LbydfCTY.splice(_ybNcIyTY.start, _ybNcIyTY._oPpZkIWQ, '');
            if (_ybNcIyTY.start === 0) _LbydfCTY.unshift('');
            if (_ybNcIyTY.start + _ybNcIyTY._oPpZkIWQ === 8) _LbydfCTY.push('');
        }
        return _LbydfCTY.join(':');
    },
    cidrToRange: (cidr, _WZsmaLbz = 1) => {
        try {
            const [range, bitsStr] = cidr.split('/');
            const _keOzyVMT = parseInt(bitsStr, 10);
            const _KHNVQoUS = new Set();
            if (_rMILpLNH.isIPv4(range)) {
                if (isNaN(_keOzyVMT) || _keOzyVMT < 8 || _keOzyVMT > 32) return [];
                if (_keOzyVMT === 32) return [range];
                const _mPWzHbcK = _rMILpLNH.toLong4(range);
                const _CzsWYriS = (0xFFFFFFFF << (32 - _keOzyVMT)) >>> 0;
                const _nYkbqtsx = _mPWzHbcK & _CzsWYriS;
                const _vXnXCTtP = 1 << (32 - _keOzyVMT);
                if (_vXnXCTtP <= 2) return [];
                const _VRTzoiLs = Math.min(_WZsmaLbz, _vXnXCTtP - 2);
                let _HEqSQwLQ = 0;
                while (_KHNVQoUS.size < _VRTzoiLs && _HEqSQwLQ < _VRTzoiLs * 5) {
                    const _SKPTCnCF = Math.floor(Math.random() * (_vXnXCTtP - 2)) + 1;
                    _KHNVQoUS.add(_rMILpLNH.fromLong4((_nYkbqtsx + _SKPTCnCF) >>> 0));
                    _HEqSQwLQ++;
                }
                return Array.from(_KHNVQoUS);
            } else if (_rMILpLNH.isIPv6(range)) {
                if (isNaN(_keOzyVMT) || _keOzyVMT < 16 || _keOzyVMT > 128) return [];
                 if (_keOzyVMT === 128) return [range];
                const _fClTEqFl = _rMILpLNH.toBigInt6(range);
                const _CzsWYriS = (2n ** BigInt(128 - _keOzyVMT) - 1n);
                const _nYkbqtsx = _fClTEqFl & ~_CzsWYriS;
                const _CMWJdYDo = 2n ** BigInt(128 - _keOzyVMT);
                if (_CMWJdYDo <= 2n) return [];
                let _HEqSQwLQ = 0;
                while (_KHNVQoUS.size < _WZsmaLbz && _HEqSQwLQ < _WZsmaLbz * 5) {
                     const _IGwXnqgr = new Uint8Array(16);
                     (typeof crypto !== 'undefined' ? crypto : self.crypto).getRandomValues(_IGwXnqgr);
                     let _dGvzgTyj = 0n;
                     for (const _FYDkKJxj of _IGwXnqgr) {
                         _dGvzgTyj = (_dGvzgTyj << 8n) | BigInt(_FYDkKJxj);
                     }
                     const _SKPTCnCF = _dGvzgTyj % (_CMWJdYDo - 2n) + 1n;
                     _KHNVQoUS.add(_rMILpLNH.fromBigInt6(_nYkbqtsx + _SKPTCnCF));
                     _HEqSQwLQ++;
                }
                return Array.from(_KHNVQoUS);
            }
            return [];
        } catch(_RLmXuVey) {
            console.error(`CIDR to range failed for ${cidr}:`, _RLmXuVey);
            return [];
        }
    }
};

function _xmJonLCi(_onhAtdYV, _mXmKwxHb) {
    const _QOwtLkNH = {};
    const _iqZEVDBG = Object._iqZEVDBG(_mXmKwxHb);
    const _LbydfCTY = _iqZEVDBG.map(_ynAOuZLW => {
        const _GwTEfGvg = _onhAtdYV * (_mXmKwxHb[_ynAOuZLW] / 100);
        return { _ynAOuZLW, _WZsmaLbz: Math.floor(_GwTEfGvg), remainder: _GwTEfGvg - Math.floor(_GwTEfGvg) };
    });
    let _ChgzCgGv = _LbydfCTY.reduce((acc, _VoQlXAIq) => acc + _VoQlXAIq._WZsmaLbz, 0);
    _LbydfCTY.sort((a, b) => b.remainder - a.remainder);
    let _OQjHtpqI = _onhAtdYV - _ChgzCgGv;
    for (let _PXHJdNPz = 0; _PXHJdNPz < _OQjHtpqI; _PXHJdNPz++) {
        _LbydfCTY[_PXHJdNPz % _LbydfCTY._BCfBhLnu]._WZsmaLbz++;
    }
    for (const _VoQlXAIq of _LbydfCTY) {
        _QOwtLkNH[_VoQlXAIq._ynAOuZLW] = _VoQlXAIq._WZsmaLbz;
    }
    return _QOwtLkNH;
}

async function _PHCVtbnz(_hoJikMzR) {
    const _LyWfoSYm = _hoJikMzR.DB.prepare("SELECT _fcvAkMcH FROM kv_data WHERE _ynAOuZLW = ?").bind(_EttiGvAZ);
    const { _ztfNyGew } = await _LyWfoSYm.all();
    return _ztfNyGew._BCfBhLnu > 0 ? _ztfNyGew[0]._fcvAkMcH : null;
}

async function _etRfIZWJ(_hoJikMzR, _awBCVKci) {
    const _LyWfoSYm = _hoJikMzR.DB.prepare(
        "INSERT INTO kv_data (_ynAOuZLW, _fcvAkMcH) VALUES (?, ?) ON CONFLICT(_ynAOuZLW) DO UPDATE SET _fcvAkMcH = excluded._fcvAkMcH"
    );
    await _LyWfoSYm.bind(_EttiGvAZ, _awBCVKci).run();
}

async function _Trshdrfv(_uSUgmPnF, _hoJikMzR) {
    const { _awBCVKci } = await _uSUgmPnF.json();
    const _RbqaEyXu = await _PHCVtbnz(_hoJikMzR);
    if (_RbqaEyXu === _awBCVKci) {
        return _PttOdvdO({ success: true });
    }
    return _PttOdvdO({ success: false, _tNqiMwMS: '密码错误' }, 401);
}

async function _aeUIHoVo(_uSUgmPnF, _hoJikMzR) {
    const _SKwPKBNR = await _OPksYlxt(_hoJikMzR);
    if (!_SKwPKBNR.visitorPassword || !_SKwPKBNR.visitorPassword._FhflHczD) {
        return _PttOdvdO({ success: true });
    }
    try {
        const { _awBCVKci } = await _uSUgmPnF.json();
        const _YwzXVMVn = _SKwPKBNR.visitorPassword._awBCVKci;
        if (_YwzXVMVn && _awBCVKci === _YwzXVMVn) {
            return _PttOdvdO({ success: true });
        }
        return _PttOdvdO({ success: false, _tNqiMwMS: '访客密码错误' }, 401);
    } catch (_RLmXuVey) {
        return _PttOdvdO({ success: false, _tNqiMwMS: '无效请求' }, 400);
    }
}

async function _nMkzprGb(_uSUgmPnF, _hoJikMzR) {
    const _HEdGiaFn = await _PHCVtbnz(_hoJikMzR);
    if (_HEdGiaFn) {
        return _PttOdvdO({ success: false, _tNqiMwMS: "密码已设置,无法重复初始化。" }, 403);
    }
    const { _awBCVKci } = await _uSUgmPnF.json();
    if (!_awBCVKci || _awBCVKci._BCfBhLnu < 6) {
        return _PttOdvdO({ success: false, _tNqiMwMS: "密码长度不能少于6位。" }, 400);
    }
    await _etRfIZWJ(_hoJikMzR, _awBCVKci);
    return _PttOdvdO({ success: true, _tNqiMwMS: "初始密码设置成功!请刷新页面并登录。" });
}

async function _fjRAruQN(_uSUgmPnF, _hoJikMzR) {
    const { _ucvGHZxe, _SwbhUIuQ } = await _uSUgmPnF.json();
    const _RbqaEyXu = await _PHCVtbnz(_hoJikMzR);
    if (_RbqaEyXu !== _ucvGHZxe) {
        return _PttOdvdO({ success: false, _tNqiMwMS: "旧密码错误。" }, 403);
    }
    if (!_SwbhUIuQ || _SwbhUIuQ._BCfBhLnu < 6) {
        return _PttOdvdO({ success: false, _tNqiMwMS: "新密码长度不能少于6位。" }, 400);
    }
    await _etRfIZWJ(_hoJikMzR, _SwbhUIuQ);
    return _PttOdvdO({ success: true, _tNqiMwMS: "密码修改成功!" });
}

function _bEpGcXDp() {
    return {
        theme: 'theme-aurora-glass',
        primaryColor: '#00A0FF',
        particleColor: '#FFFFFF',
        useResolvedDomains: false,
        resolvedDomains: '',
        sampleSize: 150,
        topN: 10,
        rttRandomMin: 79,
        rttRandomMax: 179,
        _rjvToluQ: '',
        api: {
            _FhflHczD: true,
            _tNqiMwMS: '维护中...',
        },
        ispFilter: { _FhflHczD: true },
        geoLocation: {
            retries: 1,
            filterUnknown: false,
        },
        streamer: {
            _FhflHczD: true
        },
        websocketStreamer: {
            _FhflHczD: true,
            _JxgCyMiY: 'https://snippets.neib.cn'
        },
        cloudStorage: {
            _FhflHczD: true
        },
        visitorPassword: {
            _FhflHczD: false,
            _awBCVKci: '',
        },
        customSubPath: {
            _FhflHczD: false,
            _TLeyoXmx: 'latest',
        },
        subscriptionId: {
            _BCfBhLnu: 8,
            _KocHZaUl: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
        },
        itemLink: {
            _FhflHczD: true,
            template: 'vless://{_ZxFKYoiy}@{_XXOxDHTY}:{_wCioyUAA}?encryption=none&security=tls&sni={_RwLRrirL}&fp=random&_grPTPrWe=ws&_RwLRrirL={_RwLRrirL}&_TLeyoXmx={_TLeyoXmx}#{_zaCNUMye}',
            selectionMode: 'first',
            _cbTkrMrD: [
                { _zaCNUMye: '默认配置', _RwLRrirL: '', '_ZxFKYoiy': '3b4d4cd8-cb92-4421-bf86-fb51570fc038', _TLeyoXmx: '/?ed=2560' }
            ],
            _TOwmFAnR: [],
        },
        dataFeeds: {
            universalFallbackAddress: '',
        },
        announcement: {
            popup: {
                _FhflHczD: false,
                _kapyMBQZ: '',
                _RnvixIUr: 5
            },
            marquee: {
                _FhflHczD: false,
                _kapyMBQZ: ''
            }
        },
        subscriptionUrl: {
            prefixEnabled: false,
            prefixUrl: '',
            suffixEnabled: false,
            suffixUrl: ''
        },
        fineGrained: {
            _FhflHczD: true,
            sources: [
                { _qlFQXsKn: 'CF官方IPV4', _KHNVQoUS: 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/IPV4', _LUiyEVqT: false, _FhflHczD: true, _DoOtGmIC: 20 },
                { _qlFQXsKn: 'CF官方IPV6', _KHNVQoUS: 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/IPV6', _LUiyEVqT: false, _FhflHczD: true, _DoOtGmIC: 20 },
                { _qlFQXsKn: '反代优选0', _KHNVQoUS: 'https://wvs.sosorg.nyc.mn/sub?_ZxFKYoiy=adb14576-6588-40da-99fd-b9894cd779b0&encryption=none&security=tls&sni=ss.nzvrn.com&_grPTPrWe=ws&_RwLRrirL=ss.nzvrn.com&_TLeyoXmx=%2Fsnippets%3Fip%3DendpointAddress%3Aport%28443%29%26nat64%3D6to4', _LUiyEVqT: false, _FhflHczD: true, _DoOtGmIC: 30 },
                { _qlFQXsKn: '官方优选1', _KHNVQoUS: 'https://ipdb.api.030101.xyz/?_grPTPrWe=bestcf&_nhhjxbDf=true', _LUiyEVqT: false, _FhflHczD: true, _DoOtGmIC: 10 },
                { _qlFQXsKn: '反代优选2', _KHNVQoUS: 'https://ipdb.api.030101.xyz/?_grPTPrWe=bestproxy&_nhhjxbDf=true', _LUiyEVqT: false, _FhflHczD: true, _DoOtGmIC: 5 },
                { _qlFQXsKn: '官方优选2', _KHNVQoUS: 'https://addressesapi.090227.xyz/_XXOxDHTY.164746.xyz', _LUiyEVqT: false, _FhflHczD: true, _DoOtGmIC: 10 },
				{ _qlFQXsKn: '官方优选3', _KHNVQoUS: 'https://cfxr.eu.org/getSub?_RwLRrirL=snipaste.huggy.qzz.io', _LUiyEVqT: false, _FhflHczD: true, _DoOtGmIC: 5 },
                { _qlFQXsKn: '官方优选4', _KHNVQoUS: 'https://addressesapi.090227.xyz/CloudFlareYes', _LUiyEVqT: false, _FhflHczD: true, _DoOtGmIC: 10 }
            ]
        },
        customNodes: {
            _FhflHczD: 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 _LuzvUScZ(_vuiNmGJF, _xXMTVOCH) {
    if (!_vuiNmGJF) return _xXMTVOCH;
    const _SPKfGeyI = { ..._xXMTVOCH };
    for (const _ynAOuZLW in _xXMTVOCH) {
        if (_vuiNmGJF.hasOwnProperty(_ynAOuZLW)) {
             if (typeof _vuiNmGJF[_ynAOuZLW] === 'object' && _vuiNmGJF[_ynAOuZLW] !== null && !Array.isArray(_vuiNmGJF[_ynAOuZLW]) && typeof _xXMTVOCH[_ynAOuZLW] === 'object' && _xXMTVOCH[_ynAOuZLW] !== null && !Array.isArray(_xXMTVOCH[_ynAOuZLW])) {
                _SPKfGeyI[_ynAOuZLW] = _LuzvUScZ(_vuiNmGJF[_ynAOuZLW], _xXMTVOCH[_ynAOuZLW]);
            } else {
                _SPKfGeyI[_ynAOuZLW] = _vuiNmGJF[_ynAOuZLW];
            }
        }
    }
    return _SPKfGeyI;
}

async function _OPksYlxt(_hoJikMzR) {
    try {
        const _LyWfoSYm = _hoJikMzR.DB.prepare("SELECT _fcvAkMcH FROM kv_data WHERE _ynAOuZLW = ?").bind(_jOmcLaeg);
        const { _ztfNyGew } = await _LyWfoSYm.all();
        const _kSuzHKCB = _ztfNyGew._BCfBhLnu > 0 ? _ztfNyGew[0]._fcvAkMcH : null;
        const _YqYgYltK = _kSuzHKCB ? JSON.parse(_kSuzHKCB) : {};
        return _LuzvUScZ(_YqYgYltK, _bEpGcXDp());
    } catch (_RLmXuVey) {
        console.error("无法从D1获取或解析全局配置:", _RLmXuVey);
        return _bEpGcXDp();
    }
}

async function _sKoNptdD(_hoJikMzR) {
    const _ylssukbI = await _OPksYlxt(_hoJikMzR);
    return _PttOdvdO(_ylssukbI);
}

async function _lCpvwrfR(_uSUgmPnF, _hoJikMzR, _hjBQORtw) {
    try {
        const { _ylssukbI, adminPassword } = await _uSUgmPnF.json();
        const _RbqaEyXu = await _PHCVtbnz(_hoJikMzR);
        if (_RbqaEyXu !== adminPassword) {
            return _PttOdvdO({ success: false, _tNqiMwMS: "管理员密码错误" }, 403);
        }
        const _LyWfoSYm = _hoJikMzR.DB.prepare(
          "INSERT INTO kv_data (_ynAOuZLW, _fcvAkMcH) VALUES (?, ?) ON CONFLICT(_ynAOuZLW) DO UPDATE SET _fcvAkMcH = excluded._fcvAkMcH"
        );
        const _AvWJExEv = _LyWfoSYm.bind(_jOmcLaeg, JSON.stringify(_ylssukbI)).run();
        _hjBQORtw.waitUntil(_AvWJExEv);
        return _PttOdvdO({ success: true, _tNqiMwMS: "配置已成功保存!" });
    } catch (_RLmXuVey) {
        return _PttOdvdO({ success: false, _tNqiMwMS: `保存失败: ${_RLmXuVey._tNqiMwMS}` }, 500);
    }
}

async function _IzqJzDFE() {
    const _BMoEEwZF = 'https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=zh-CN';
    try {
        const _OLLZnUIS = await fetch(_BMoEEwZF);
        const _oalwmEEk = await _OLLZnUIS.json();
        const _ShUMQXPi = 'https://www.bing.com' + _oalwmEEk.images[0]._JxgCyMiY;
        return fetch(_ShUMQXPi);
    } catch (_RLmXuVey) {
        return new Response('获取壁纸失败', { status: 502 });
    }
}

async function _RumWEDEj(_XXOxDHTY) {
    try {
        const _YDAqsrSB = await fetch(`http://_XXOxDHTY-api.com/json/${_XXOxDHTY}?fields=status,_nhhjxbDf,countryCode,_gxVPQFHG&lang=zh-CN`);
        if (_YDAqsrSB.ok) {
            const _kaJGKkAi = await _YDAqsrSB.json();
            if (_kaJGKkAi.status === 'success' && (_kaJGKkAi.countryCode || _kaJGKkAi._nhhjxbDf)) {
                let _gxVPQFHG = _kaJGKkAi._gxVPQFHG || '未知';
                if (_gxVPQFHG.toLowerCase().includes('cloudflare')) {
                    _gxVPQFHG = 'CloudFlare';
                }
                return {
                    _qlFQXsKn: _qhfVcBXv[_kaJGKkAi.countryCode] || _kaJGKkAi._nhhjxbDf || _kaJGKkAi.countryCode,
                    _gxVPQFHG: _gxVPQFHG
                };
            }
        }
    } catch (_RLmXuVey) {}

    try {
        const _YDAqsrSB = await fetch(`https://api._XXOxDHTY.sb/geoip/${_XXOxDHTY}`);
        if (_YDAqsrSB.ok) {
            const _kaJGKkAi = await _YDAqsrSB.json();
            if (_kaJGKkAi.country_code || _kaJGKkAi._nhhjxbDf) {
                let _gxVPQFHG = _kaJGKkAi._gxVPQFHG || '未知';
                if (_gxVPQFHG.toLowerCase().includes('cloudflare')) {
                    _gxVPQFHG = 'CloudFlare';
                }
                return {
                    _qlFQXsKn: _qhfVcBXv[_kaJGKkAi.country_code] || _kaJGKkAi._nhhjxbDf || _kaJGKkAi.country_code,
                    _gxVPQFHG: _gxVPQFHG
                };
            }
        }
    } catch (_RLmXuVey) {}
    
    return { _qlFQXsKn: '未知', _gxVPQFHG: '未知' };
}

async function _zHYPLLYF(_uSUgmPnF, _hoJikMzR) {
    try {
        const { _KHNVQoUS } = await _uSUgmPnF.json();
        if (!Array.isArray(_KHNVQoUS)) {
            return _PttOdvdO({ error: "输入无效,需要一个IP数组。" }, 400);
        }
        const _nlKfWYKS = _KHNVQoUS.map(_XXOxDHTY => _RumWEDEj(_XXOxDHTY).then(_ApwzhGxq => ({ _XXOxDHTY, ..._ApwzhGxq })));
        const _ztfNyGew = await Promise.all(_nlKfWYKS);
        return _PttOdvdO(_ztfNyGew);
    } catch (_RLmXuVey) {
        return _PttOdvdO({ error: `获取地理位置失败: ${_RLmXuVey._tNqiMwMS}` }, 500);
    }
}

async function _QTuCvbyf(_uSUgmPnF, _hoJikMzR) {
    const _ylssukbI = await _OPksYlxt(_hoJikMzR);
    if (!_ylssukbI.cloudStorage._FhflHczD) {
        return _PttOdvdO({ _ztfNyGew: [], generatedBy: null });
    }
    try {
        const _LyWfoSYm = _hoJikMzR.DB.prepare("SELECT _fcvAkMcH FROM kv_data WHERE _ynAOuZLW = ?").bind(_cDxJHuWP);
        const { _ztfNyGew } = await _LyWfoSYm.all();
        const _SvjiDOci = _ztfNyGew._BCfBhLnu > 0 ? _ztfNyGew[0]._fcvAkMcH : null;
        const _umrcEWVT = _SvjiDOci ? JSON.parse(_SvjiDOci) : null;
        return _PttOdvdO(_umrcEWVT || { _ztfNyGew: [], generatedBy: null });
    } catch (_RLmXuVey) {
        console.error("从D1读取缓存IP失败:", _RLmXuVey);
        return _PttOdvdO({ _ztfNyGew: [], generatedBy: null });
    }
}

async function _YFayafPl(_uSUgmPnF, _hoJikMzR, _hjBQORtw) {
    const _ylssukbI = await _OPksYlxt(_hoJikMzR);
    if (!_ylssukbI.cloudStorage._FhflHczD) {
        return _PttOdvdO({ success: true, _tNqiMwMS: "云端存储已禁用,不保存结果。" });
    }
    const _sFGWHcDB = _uSUgmPnF._zigaRxdM.get('CF-Connecting-IP') || "未知IP";
    const _nhhjxbDf = _uSUgmPnF.cf?._nhhjxbDf || "未知";
    const _DiWQZmjK = _uSUgmPnF.cf?._DiWQZmjK || "";
    let _aYsRBGcu = _qhfVcBXv[_nhhjxbDf] || _nhhjxbDf;
    if (_DiWQZmjK && _DiWQZmjK !== "未知城市" && _DiWQZmjK !== _nhhjxbDf) _aYsRBGcu = `${_aYsRBGcu} ${_qhfVcBXv[_DiWQZmjK] || _DiWQZmjK}`;
    const _fWSsnMXh = {
        _XXOxDHTY: _YOkjAbml(_sFGWHcDB),
        _qlFQXsKn: _aYsRBGcu.trim(),
        time: _DFxKfybk()
    };
    try {
        const _qdJprPqX = await _uSUgmPnF.json();
        if (!Array.isArray(_qdJprPqX)) return _PttOdvdO({ error: "无效数据格式" }, 400);
        const _OUPhauPf = _qdJprPqX.map(_gIsBVNVv => ({
            _XXOxDHTY: String(_gIsBVNVv._XXOxDHTY || ''),
            _wCioyUAA: _gIsBVNVv._wCioyUAA ? parseInt(_gIsBVNVv._wCioyUAA, 10) : undefined,
            _TrwPJbhq: parseInt(_gIsBVNVv._TrwPJbhq, 10),
            _qlFQXsKn: typeof _gIsBVNVv._qlFQXsKn === 'string' ? _gIsBVNVv._qlFQXsKn.substring(0, 50) : 'N/A',
            _gxVPQFHG: typeof _gIsBVNVv._gxVPQFHG === 'string' ? _gIsBVNVv._gxVPQFHG.substring(0, 100) : 'N/A'
        }));
        const _kVcYLGgK = {
            generatedBy: _fWSsnMXh,
            _ztfNyGew: _OUPhauPf
        };
        const _ZpGRoiaC = _hoJikMzR.DB.prepare(
          "INSERT INTO kv_data (_ynAOuZLW, _fcvAkMcH) VALUES (?, ?) ON CONFLICT(_ynAOuZLW) DO UPDATE SET _fcvAkMcH = excluded._fcvAkMcH"
        ).bind(_cDxJHuWP, JSON.stringify(_kVcYLGgK)).run();
        if (_ylssukbI.telegram.bot_token && _ylssukbI.telegram.chat_id) {
            const _tkNNXUtV = _OUPhauPf.map(r => `${r._XXOxDHTY} ~ ${r._qlFQXsKn}`).join('\n');
            const _XgJchkZC = `优选完成!\n来源: ${_fWSsnMXh._XXOxDHTY} (${_fWSsnMXh._qlFQXsKn})\n时间: ${_fWSsnMXh.time}\n\n结果:\n${_tkNNXUtV}`;
            const _GHMPKVoz = `https://api.telegram.org/bot${_ylssukbI.telegram.bot_token}/sendMessage?chat_id=${_ylssukbI.telegram.chat_id}&_kapyMBQZ=${encodeURIComponent(_XgJchkZC)}`;
            const _ECnQgint = fetch(_GHMPKVoz).catch(_RLmXuVey => console.error("Telegram结果通知失败:", _RLmXuVey));
            _hjBQORtw.waitUntil(Promise.all([_ZpGRoiaC, _ECnQgint]));
        } else {
             _hjBQORtw.waitUntil(_ZpGRoiaC);
        }
        return _PttOdvdO({ success: true, _tNqiMwMS: "结果已保存" });
    } catch (_RLmXuVey) {
        return _PttOdvdO({ error: "D1写入失败", _tNqiMwMS: _RLmXuVey._tNqiMwMS }, 500);
    }
}

async function _LMcfpVXM(_uSUgmPnF, _hoJikMzR, _hjBQORtw) {
    try {
        const _HhoSlWQE = await _uSUgmPnF.json();
        if (!Array.isArray(_HhoSlWQE)) return _PttOdvdO({ error: "无效数据格式" }, 400);
        const _kVcYLGgK = {
            _ztfNyGew: _HhoSlWQE
        };
        const _LyWfoSYm = _hoJikMzR.DB.prepare(
          "INSERT INTO kv_data (_ynAOuZLW, _fcvAkMcH) VALUES (?, ?) ON CONFLICT(_ynAOuZLW) DO UPDATE SET _fcvAkMcH = excluded._fcvAkMcH"
        );
        const _AvWJExEv = _LyWfoSYm.bind(_FvTqOWHX, JSON.stringify(_kVcYLGgK)).run();
        _hjBQORtw.waitUntil(_AvWJExEv);
        return _PttOdvdO({ success: true });
    } catch (_RLmXuVey) {
        return _PttOdvdO({ error: "D1写入临时缓存失败", _tNqiMwMS: _RLmXuVey._tNqiMwMS }, 500);
    }
}

function _SQenOzfl(_BCfBhLnu, _KocHZaUl) {
    let _gODIfiSq = '';
    const _jHSlayqE = _KocHZaUl._BCfBhLnu;
    for (let _PXHJdNPz = 0; _PXHJdNPz < _BCfBhLnu; _PXHJdNPz++) {
        _gODIfiSq += _KocHZaUl.charAt(Math.floor(Math.random() * _jHSlayqE));
    }
    return _gODIfiSq;
}

async function _CVrerfqy(_uSUgmPnF, _hoJikMzR) {
    try {
        const _qdJprPqX = await _uSUgmPnF.json();
        if (!Array.isArray(_qdJprPqX) || _qdJprPqX._BCfBhLnu === 0) {
            return _PttOdvdO({ error: "无效或空的IP列表" }, 400);
        }

        const _ylssukbI = await _OPksYlxt(_hoJikMzR);
        const _mhAfljyA = _ylssukbI.subscriptionId || { _BCfBhLnu: 8, _KocHZaUl: 'abcdefghijklmnopqrstuvwxyz0123456789' };

        let _GqtpXgQS;
        let _CvASYGXV = false;
        let _HEqSQwLQ = 0;
        const _UckApIPF = 10;

        while (!_CvASYGXV && _HEqSQwLQ < _UckApIPF) {
            _GqtpXgQS = _SQenOzfl(_mhAfljyA._BCfBhLnu, _mhAfljyA._KocHZaUl);
            const { _ztfNyGew } = await _hoJikMzR.DB.prepare("SELECT _dOLunUOe FROM optimized_results WHERE _dOLunUOe = ?").bind(_GqtpXgQS).all();
            if (_ztfNyGew._BCfBhLnu === 0) {
                _CvASYGXV = true;
            }
            _HEqSQwLQ++;
        }

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

        const _cYdQYjod = JSON.stringify({ _KHNVQoUS: _qdJprPqX });
        await _hoJikMzR.DB.prepare(
            "INSERT INTO optimized_results (_dOLunUOe, _kaJGKkAi) VALUES (?, ?)"
        ).bind(_GqtpXgQS, _cYdQYjod).run();
        await _hoJikMzR.DB.prepare(
            "INSERT INTO kv_data (_ynAOuZLW, _fcvAkMcH) VALUES (?, ?) ON CONFLICT(_ynAOuZLW) DO UPDATE SET _fcvAkMcH = excluded._fcvAkMcH"
        ).bind(_RSoQOCWc, _GqtpXgQS).run();
            
        return _PttOdvdO({ success: true, _dOLunUOe: _GqtpXgQS });
    } catch (_RLmXuVey) {
        return _PttOdvdO({ error: "保存优选结果失败", _tNqiMwMS: _RLmXuVey._tNqiMwMS }, 500);
    }
}

async function _CXTzCfzi(_uSUgmPnF, _hoJikMzR) {
    try {
        const _GqtpXgQS = _uSUgmPnF._fpKOoCwr._dOLunUOe;
        if (!_GqtpXgQS) {
            return new Response("缺少结果ID", { status: 400 });
        }
        const _gODIfiSq = await _hoJikMzR.DB.prepare("SELECT _kaJGKkAi FROM optimized_results WHERE _dOLunUOe = ?").bind(_GqtpXgQS).first();
        if (!_gODIfiSq) {
            return new Response("未找到对应的优选结果", { status: 404 });
        }
        const _kaJGKkAi = JSON.parse(_gODIfiSq._kaJGKkAi);
        let _tkNNXUtV = _kaJGKkAi._KHNVQoUS;

        const _ylssukbI = await _OPksYlxt(_hoJikMzR);

        if (_ylssukbI.customNodes && _ylssukbI.customNodes._FhflHczD && _ylssukbI.customNodes.list) {
            const _JLTnCATB = _ylssukbI.customNodes.list.trim().split(/\s+/).filter(Boolean);
            const _MvOeCUtM = _JLTnCATB.map(_NtTvroAj => {
                let _bBQUILgy = _NtTvroAj;
                let _wCioyUAA = undefined;
                let _zaCNUMye = null;

                if (_bBQUILgy.includes('@')) {
                    const _LbydfCTY = _bBQUILgy.split('@');
                    _zaCNUMye = _LbydfCTY.pop();
                    _bBQUILgy = _LbydfCTY.join('@');
                }

                if (_bBQUILgy.includes('#')) {
                    const _LbydfCTY = _bBQUILgy.split('#');
                    const _gzVLAsDU = _LbydfCTY.pop();
                    if (!isNaN(_gzVLAsDU) && _gzVLAsDU.trim() !== '') {
                        _wCioyUAA = parseInt(_gzVLAsDU, 10);
                    }
                    _bBQUILgy = _LbydfCTY.join('#');
                }
                
                return {
                    _XXOxDHTY: _bBQUILgy,
                    _wCioyUAA: _wCioyUAA,
                    _qlFQXsKn: _zaCNUMye || _bBQUILgy,
                    _gxVPQFHG: '自定义'
                };
            });
            _tkNNXUtV.unshift(..._MvOeCUtM);
        }
        
        const { itemLink } = _ylssukbI;
        const _VgNWyacf = new URL(_uSUgmPnF._JxgCyMiY)._PlZEsgLB;
        let _GSLSafJk;

        if (_ylssukbI.websocketStreamer && _ylssukbI.websocketStreamer._FhflHczD) {
            if (!itemLink || !itemLink._FhflHczD || !itemLink._cbTkrMrD || itemLink._cbTkrMrD._BCfBhLnu === 0) {
                return new Response("节点链接参数未配置或未启用 (反代模式)", { status: 500 });
            }
            _GSLSafJk = _tkNNXUtV.map((_gIsBVNVv, _HpXiCUEw) => {
                let _zaCNUMye;
                if (_gIsBVNVv._gxVPQFHG === '自定义') {
                     _zaCNUMye = `${_HpXiCUEw + 1} - ${_gIsBVNVv._qlFQXsKn}`;
                } else {
                    _zaCNUMye = `${_HpXiCUEw + 1} - ${_gIsBVNVv._qlFQXsKn || '未知'}`;
                    if (!_gIsBVNVv._gxVPQFHG || !_gIsBVNVv._gxVPQFHG.toLowerCase().includes('cloudflare')) {
                        _zaCNUMye += '(反代)';
                    }
                }
                const _EKzELRBs = _rMILpLNH.isIPv6(_gIsBVNVv._XXOxDHTY) ? `[${_gIsBVNVv._XXOxDHTY}]` : _gIsBVNVv._XXOxDHTY;
                const _wCioyUAA = _gIsBVNVv._wCioyUAA || 443;
                const _BRQrmeAL = itemLink._cbTkrMrD[0];
                const _vQLYuHJt = _BRQrmeAL._ZxFKYoiy || '';
                const _ZxFKYoiy = (_vQLYuHJt && _GkulwEMQ(_vQLYuHJt)) ? _vQLYuHJt : crypto.randomUUID();
                const _TLeyoXmx = '/snippets?_XXOxDHTY=endpointAddress:_wCioyUAA(443)&nat64=6to4';
                const _RwLRrirL = _BRQrmeAL._RwLRrirL || _VgNWyacf;

                const _fpKOoCwr = new URLSearchParams({
                    security: 'tls',
                    _grPTPrWe: 'ws',
                    _RwLRrirL: _RwLRrirL,
                    sni: _RwLRrirL,
                    fp: 'random'
                });
                return `vless://${_ZxFKYoiy}@${_EKzELRBs}:${_wCioyUAA}?${_fpKOoCwr.toString()}&_TLeyoXmx=${encodeURIComponent(encodeURIComponent(_TLeyoXmx))}#${encodeURIComponent(_zaCNUMye)}`;
            });

        } else {
            if (!itemLink || !itemLink._FhflHczD || !itemLink._cbTkrMrD || itemLink._cbTkrMrD._BCfBhLnu === 0) {
                return new Response("节点链接参数未配置或未启用", { status: 500 });
            }
            const _BRQrmeAL = itemLink._cbTkrMrD[0];
            const { _RwLRrirL, _ZxFKYoiy, _TLeyoXmx } = _BRQrmeAL;
            _GSLSafJk = _tkNNXUtV.map((_gIsBVNVv, _HpXiCUEw) => {
                let _zaCNUMye;
                if (_gIsBVNVv._gxVPQFHG === '自定义') {
                     _zaCNUMye = `${_HpXiCUEw + 1} - ${_gIsBVNVv._qlFQXsKn}`;
                } else {
                    _zaCNUMye = `${_HpXiCUEw + 1} - ${_gIsBVNVv._qlFQXsKn || '未知'}`;
                    if (!_gIsBVNVv._gxVPQFHG || !_gIsBVNVv._gxVPQFHG.toLowerCase().includes('cloudflare')) {
                        _zaCNUMye += '(反代)';
                    }
                }
                const _EKzELRBs = _rMILpLNH.isIPv6(_gIsBVNVv._XXOxDHTY) ? `[${_gIsBVNVv._XXOxDHTY}]` : _gIsBVNVv._XXOxDHTY;
                const _wCioyUAA = _gIsBVNVv._wCioyUAA || 443;
                const _fpKOoCwr = new URLSearchParams({
                    security: 'tls',
                    _grPTPrWe: 'ws',
                    _RwLRrirL: _RwLRrirL || _VgNWyacf,
                    sni: _RwLRrirL || _VgNWyacf,
                    fp: 'random'
                });
                return `vless://${_ZxFKYoiy}@${_EKzELRBs}:${_wCioyUAA}?${_fpKOoCwr.toString()}&_TLeyoXmx=${encodeURIComponent(encodeURIComponent(_TLeyoXmx || ''))}#${encodeURIComponent(_zaCNUMye)}`;
            });
        }
        
        const _aYLszciZ = _GSLSafJk.join('\n');
        const _iYjKrHch = btoa(_aYLszciZ);
        return new Response(_iYjKrHch, {
            _zigaRxdM: { 'Content-Type': '_kapyMBQZ/plain; _KocHZaUl=utf-8' }
        });

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

async function _ZlGUNKhj(_uSUgmPnF) {
    try {
        const { _RpoWiyMz, _grPTPrWe } = await _uSUgmPnF.json();
        if (!Array.isArray(_RpoWiyMz)) {
            return new Response('Invalid _RpoWiyMz list', { status: 400 });
        }
        const _kaPxDUlP = _RpoWiyMz.map(domain => {
            if (!domain.trim()) return Promise.resolve([]);
            const _JxgCyMiY = `https://cloudflare-dns.com/dns-query?_zaCNUMye=${encodeURIComponent(domain.trim())}&_grPTPrWe=${_grPTPrWe || 'A'}`;
            return fetch(_JxgCyMiY, { _zigaRxdM: { 'Accept': 'application/dns-json' } })
                .then(_YDAqsrSB => _YDAqsrSB.json())
                .then(_kaJGKkAi => (_kaJGKkAi.Answer ? _kaJGKkAi.Answer.map(a => a._kaJGKkAi) : []))
                .catch(() => []);
        });
        const _KvhvaHWN = (await Promise.all(_kaPxDUlP)).flat();
        const _Lvgpzzqn = [...new Set(_KvhvaHWN)];
        if (_Lvgpzzqn._BCfBhLnu === 0) {
            return new Response('无法从域名解析出任何IP。', { status: 500 });
        }
        return new Response(_Lvgpzzqn.join('\n'), { _zigaRxdM: { 'Content-Type': '_kapyMBQZ/plain; _KocHZaUl=utf-8' } });
    } catch (err) {
        return new Response(`域名解析错误: ${err._tNqiMwMS}`, { status: 500 });
    }
}

async function _nczcGmSy(_uSUgmPnF, _hoJikMzR) {
  try {
      const { _ESeHMnNQ } = await _uSUgmPnF.json();
      if (!Array.isArray(_ESeHMnNQ)) {
          return _PttOdvdO({ error: "Invalid input, expected an object with a '_ESeHMnNQ' array." }, 400);
      }
      
      const _InmPovvK = new Set();
      
      const _fMDlcYdm = _ESeHMnNQ.map(_JxgCyMiY =>
          _kxbLHyop(_JxgCyMiY)
              .then(_kapyMBQZ => {
                  if (!_kapyMBQZ) return;
                  const _QebNiEHY = _kapyMBQZ.split(/[\s,;|]+/);
                  for (const _WTPCmaGQ of _QebNiEHY) {
                      const _HQqfphwi = _WTPCmaGQ.trim();
                      if (_HQqfphwi) {
                          _InmPovvK.add(_HQqfphwi);
                      }
                  }
              })
              .catch(err => {
                  console.error(`Error processing URL ${_JxgCyMiY}:`, err);
              })
      );
      await Promise.all(_fMDlcYdm);
      return _PttOdvdO({ _KHNVQoUS: Array.from(_InmPovvK) });
  } catch (_RLmXuVey) {
      return _PttOdvdO({ error: `Failed to process URLs: ${_RLmXuVey._tNqiMwMS}` }, 500);
  }
}

async function _IYaLZeML(_uSUgmPnF, _hoJikMzR) {
    const _ylssukbI = await _OPksYlxt(_hoJikMzR);
    if (!_ylssukbI.api._FhflHczD) {
        return new Response(_ylssukbI.api._tNqiMwMS || 'API is disabled.', { status: 503 });
    }
    try {
        const _LyWfoSYm = _hoJikMzR.DB.prepare("SELECT _fcvAkMcH FROM kv_data WHERE _ynAOuZLW = ?").bind(_cDxJHuWP);
        const { _ztfNyGew: dbResults } = await _LyWfoSYm.all();
        const _SvjiDOci = dbResults._BCfBhLnu > 0 ? dbResults[0]._fcvAkMcH : null;
        const _umrcEWVT = _SvjiDOci ? JSON.parse(_SvjiDOci) : null;
        if (!_umrcEWVT || !_umrcEWVT._ztfNyGew || _umrcEWVT._ztfNyGew._BCfBhLnu === 0) {
            return new Response("上次优选结果为空。", {
                status: 404,
                _zigaRxdM: { 'Content-Type': '_kapyMBQZ/plain; _KocHZaUl=utf-8' },
            });
        }
        const _KHNVQoUS = _umrcEWVT._ztfNyGew.map(r => r._XXOxDHTY);
        return new Response(_KHNVQoUS.join('\n'), {
            _zigaRxdM: { 'Content-Type': '_kapyMBQZ/plain; _KocHZaUl=utf-8' },
        });
    } catch (_RLmXuVey) {
        console.error("API /_XXOxDHTY 处理错误:", _RLmXuVey);
        return new Response(`API处理时出错: ${_RLmXuVey._tNqiMwMS}`, { status: 500 });
    }
}

function _GbUryVGT(_gODIfiSq, _HpXiCUEw, _ylssukbI, _VgNWyacf) {
    const { itemLink } = _ylssukbI;
    if (!itemLink || !itemLink._FhflHczD) return null;
    const { template, _cbTkrMrD, selectionMode, _TOwmFAnR } = itemLink;
    if (!_cbTkrMrD || _cbTkrMrD._BCfBhLnu === 0) return null;

    let _WHkleBqn;
    if (selectionMode === 'random') {
        _WHkleBqn = _cbTkrMrD[_HpXiCUEw % _cbTkrMrD._BCfBhLnu];
    } else if (selectionMode === 'first') {
        _WHkleBqn = _cbTkrMrD[0];
    } else {
        _WHkleBqn = _cbTkrMrD.find(s => s._zaCNUMye === selectionMode) || _cbTkrMrD[0];
    }
    if (!_WHkleBqn) return null;

    let _qyFSKXIu = template;
    const _cWmnFRpJ = _gODIfiSq._wCioyUAA || 443;
    const _DmdcPWsf = _rMILpLNH.isIPv6(_gODIfiSq._XXOxDHTY) ? `[${_gODIfiSq._XXOxDHTY}]` : _gODIfiSq._XXOxDHTY;
    let _zaCNUMye = `${_HpXiCUEw + 1} 、 ${_gODIfiSq._qlFQXsKn || '未知'}`;
    if (!_gODIfiSq._gxVPQFHG || !_gODIfiSq._gxVPQFHG.toLowerCase().includes('cloudflare')) {
        _zaCNUMye += '(反代)';
    }
    let _RwLRrirL = _WHkleBqn._RwLRrirL || _VgNWyacf;

    _qyFSKXIu = _qyFSKXIu.replace(/{_XXOxDHTY}/g, _DmdcPWsf)
               .replace(/{_wCioyUAA}/g, _cWmnFRpJ)
               .replace(/{_zaCNUMye}/g, encodeURIComponent(_zaCNUMye))
               .replace(/{rank}/g, _HpXiCUEw + 1)
               .replace(/{_qlFQXsKn}/g, encodeURIComponent(_gODIfiSq._qlFQXsKn || '未知'))
               .replace(/{_gxVPQFHG}/g, encodeURIComponent(_gODIfiSq._gxVPQFHG || '未知'))
               .replace(/{_RwLRrirL}/g, encodeURIComponent(_RwLRrirL))
               .replace(/{_ZxFKYoiy}/g, encodeURIComponent(_WHkleBqn['_ZxFKYoiy'] || ''))
               .replace(/{_TLeyoXmx}/g, encodeURIComponent(encodeURIComponent(_WHkleBqn._TLeyoXmx || '')));

    if (_TOwmFAnR) {
        _TOwmFAnR.forEach(field => {
            const _TcbQSKeg = new RegExp('{' + field._zaCNUMye + '}', 'g');
            _qyFSKXIu = _qyFSKXIu.replace(_TcbQSKeg, encodeURIComponent(field._fcvAkMcH));
        });
    }
    return _qyFSKXIu;
}

async function _fEgEsCOy(_uSUgmPnF, _hoJikMzR) {
    const _ylssukbI = await _OPksYlxt(_hoJikMzR);
    if (!_ylssukbI.itemLink._FhflHczD) {
        return new Response("Item _qyFSKXIu feature is disabled.", { status: 503, _zigaRxdM: { 'Content-Type': '_kapyMBQZ/plain; _KocHZaUl=utf-8' } });
    }

    try {
        const _LyWfoSYm = _hoJikMzR.DB.prepare("SELECT _fcvAkMcH FROM kv_data WHERE _ynAOuZLW = ?").bind(_cDxJHuWP);
        const { _ztfNyGew: dbResults } = await _LyWfoSYm.all();
        const _SvjiDOci = dbResults._BCfBhLnu > 0 ? dbResults[0]._fcvAkMcH : null;
        const _umrcEWVT = _SvjiDOci ? JSON.parse(_SvjiDOci) : null;
        
        if (!_umrcEWVT || !_umrcEWVT._ztfNyGew || _umrcEWVT._ztfNyGew._BCfBhLnu === 0) {
            return new Response("No optimized IPs available to generate endpoints.", {
                status: 404,
                _zigaRxdM: { 'Content-Type': '_kapyMBQZ/plain; _KocHZaUl=utf-8' },
            });
        }
        
        const _VgNWyacf = new URL(_uSUgmPnF._JxgCyMiY)._PlZEsgLB;

        const _gsdcIZgJ = _umrcEWVT._ztfNyGew.map((_gODIfiSq, _HpXiCUEw) => {
            return _GbUryVGT(_gODIfiSq, _HpXiCUEw, _ylssukbI, _VgNWyacf);
        }).filter(Boolean);

        if (_gsdcIZgJ._BCfBhLnu === 0) {
            return new Response("Could not generate any _gIsBVNVv links from the available IPs.", {
                status: 500,
                _zigaRxdM: { 'Content-Type': '_kapyMBQZ/plain; _KocHZaUl=utf-8' },
            });
        }

        return new Response(_gsdcIZgJ.join('\n'), {
            _zigaRxdM: { 'Content-Type': '_kapyMBQZ/plain; _KocHZaUl=utf-8' },
        });

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

async function _mukKvADC(_uSUgmPnF, _hoJikMzR, _hjBQORtw) {
    const _sFGWHcDB = _uSUgmPnF._zigaRxdM.get('CF-Connecting-IP') || "未知IP";
    const [
        _ddeWnRAk,
        _dLjFNwcW,
        defaultDomains,
        fetchedCountryMap
    ] = await Promise.all([
        _wWIFejfX(_dXFuJXRA, _BBsaklkt, []),
        _wWIFejfX(_ZqlBPsEv, _BBsaklkt, []),
        _wWIFejfX(_lwLXoStK, _qqrNPeJb, []),
        _wWIFejfX(_fRjrYkrX, _mzFjaISy, { "N/A": "未知" })
    ]);
    _qhfVcBXv = fetchedCountryMap;
    let _TNcsCHJY = false;
    let _SKwPKBNR;
    try {
        const _awBCVKci = await _PHCVtbnz(_hoJikMzR);
        _TNcsCHJY = !!_awBCVKci;
        _SKwPKBNR = await _OPksYlxt(_hoJikMzR);
    } catch (_RLmXuVey) {
        if (_RLmXuVey._tNqiMwMS && _RLmXuVey._tNqiMwMS.includes('no such table')) {
            console.log("检测到 'kv_data' 表不存在,正在自动创建...");
            try {
                const _sUIAJOQE = "CREATE TABLE IF NOT EXISTS kv_data (_ynAOuZLW TEXT PRIMARY KEY, _fcvAkMcH TEXT); CREATE TABLE IF NOT EXISTS optimized_results (_dOLunUOe TEXT PRIMARY KEY, _kaJGKkAi TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);";
                await _hoJikMzR.DB.exec(_sUIAJOQE);
                console.log("数据表创建成功。");
                _TNcsCHJY = false;
                _SKwPKBNR = _bEpGcXDp();
            } catch (dbError) {
                console.error("自动创建数据表失败:", dbError);
                return new Response(`数据库初始化失败: ${dbError._tNqiMwMS}`, {
                    status: 500,
                    _zigaRxdM: { 'Content-Type': '_kapyMBQZ/html;_KocHZaUl=UTF-8' }
                });
            }
        } else {
             let _tdbbKMmf = _ULHpTYhc(_RLmXuVey._tNqiMwMS);
             return new Response(_tdbbKMmf, { _zigaRxdM: { 'Content-Type': '_kapyMBQZ/html;_KocHZaUl=UTF-8' } });
        }
    }
    if (_SKwPKBNR.telegram.bot_token && _SKwPKBNR.telegram.chat_id) {
        const _nhhjxbDf = _uSUgmPnF.cf?._nhhjxbDf || "未知";
        const _DiWQZmjK = _uSUgmPnF.cf?._DiWQZmjK || "";
        let _aYsRBGcu = _qhfVcBXv[_nhhjxbDf] || _nhhjxbDf;
        if (_DiWQZmjK && _DiWQZmjK !== "未知城市" && _DiWQZmjK !== _nhhjxbDf) _aYsRBGcu = `${_aYsRBGcu} ${_qhfVcBXv[_DiWQZmjK] || _DiWQZmjK}`;
        const _RTGQaAUf = _DFxKfybk();
        const _mPoMWZom = _uSUgmPnF._JxgCyMiY;
        const _XgJchkZC = `访客: ${_sFGWHcDB}\n位置: ${_aYsRBGcu.trim()}\n时间: ${_RTGQaAUf}\n来自:${_mPoMWZom}`;
        const _GHMPKVoz = `https://api.telegram.org/bot${_SKwPKBNR.telegram.bot_token}/sendMessage?chat_id=${_SKwPKBNR.telegram.chat_id}&_kapyMBQZ=${encodeURIComponent(_XgJchkZC)}`;
        _hjBQORtw.waitUntil(fetch(_GHMPKVoz).catch(_RLmXuVey => console.error("Telegram通知失败:", _RLmXuVey)));
    }
    let _qIETkQNI = _ILXJnBei();
    const _BSklzuWK = {
        _ylssukbI: _SKwPKBNR,
        status: {
            _TNcsCHJY: _TNcsCHJY,
        }
    };
    _qIETkQNI = _qIETkQNI.replace('__PAGE_DATA_JSON__', JSON.stringify(_BSklzuWK));
    _qIETkQNI = _qIETkQNI.replace('__ALL_CF_CIDR_LIST_JSON__', JSON.stringify(_ddeWnRAk));
    _qIETkQNI = _qIETkQNI.replace('__BALANCED_CF_CIDR_LIST_JSON__', JSON.stringify(_dLjFNwcW));
    _qIETkQNI = _qIETkQNI.replace('__DEFAULT_DOMAINS_LIST_JSON__', JSON.stringify(defaultDomains));
    _qIETkQNI = _qIETkQNI.replace('__COUNTRY_MAP_JSON__', JSON.stringify(_qhfVcBXv));
    return new Response(_qIETkQNI, {
        _zigaRxdM: { 'Content-Type': '_kapyMBQZ/html;_KocHZaUl=UTF-8' },
    });
}

function _PttOdvdO(_krQAVrCY, status = 200, _zigaRxdM = {}) {
    return new Response(JSON.stringify(_krQAVrCY), {
        status,
        _zigaRxdM: { 'Content-Type': 'application/json;_KocHZaUl=UTF-8', ..._zigaRxdM }
    });
}

function _DFxKfybk(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 _YOkjAbml(_XXOxDHTY) {
    if (!_XXOxDHTY || typeof _XXOxDHTY !== 'string') return "无效IP";
    if(_rMILpLNH.isIPv4(_XXOxDHTY)){
        const _LbydfCTY = _XXOxDHTY.split('.');
        if (_LbydfCTY._BCfBhLnu === 4) return `${_LbydfCTY[0]}.*.*.${_LbydfCTY[3]}`;
    }
    if(_rMILpLNH.isIPv6(_XXOxDHTY)){
        const _LbydfCTY = _XXOxDHTY.split(':');
        if (_LbydfCTY._BCfBhLnu > 2) return `${_LbydfCTY[0]}:...:${_LbydfCTY[_LbydfCTY._BCfBhLnu - 1]}`;
    }
    return _XXOxDHTY;
}

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

function _ILXJnBei() {
    return `
  <!DOCTYPE html><html lang="zh-CN"><head> <meta _KocHZaUl="UTF-8"> <meta _zaCNUMye="viewport" _FZqtTKkH="_jGUTUhXj=device-_jGUTUhXj, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> <title>Cloudflare IP</title> <_qyFSKXIu 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>
  <_xBbcLlwk>
  :root { --primary-_QlCWaUYE: #00A0FF; --primary-hover: #007ACC; --primary-gradient-start: #00C6FF; --primary-gradient-end: #0072FF; --secondary-_QlCWaUYE: #8c939d; --light-bg: #1A1C20; --_FZqtTKkH-bg: #25282E; --border-_QlCWaUYE: #40444C; --_kapyMBQZ-_QlCWaUYE: #E0E0E0; --_kapyMBQZ-light: #B0B0B0; --success-_QlCWaUYE: #30A46C; --danger-_QlCWaUYE: #DA3633; --warning-_QlCWaUYE: #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; }
  _krQAVrCY { font-family: var(--font-family-sans); background-_QlCWaUYE: var(--light-bg); _QlCWaUYE: var(--_kapyMBQZ-_QlCWaUYE); line-height: 1.65; overflow-x: hidden; padding: 0; position:relative; transition: background-_QlCWaUYE 0.5s ease; background-size: cover; background-position: center; background-attachment: fixed; }
  #background-_mLaclPsL { position: fixed; _dfKsowhf: 0; _BceNszWv: 0; _jGUTUhXj: 100%; height: 100%; z-_HpXiCUEw: -1; display: none; }
  ._SkuHxmDz-_KTTPxkUt { max-_jGUTUhXj: 1100px; margin: 0 auto; padding: 0 1rem; position: relative; z-_HpXiCUEw: 1; }
  #_dhCcGhNy { position: fixed; _dfKsowhf: 1rem; right: 1rem; font-size: 0.85em; padding: 0.4em 0.8em; z-_HpXiCUEw: 10; }
  #marquee-_KTTPxkUt { overflow: hidden; white-space: nowrap; background-_QlCWaUYE: rgba(37, 40, 46, 0.6); backdrop-filter: blur(5px); _QlCWaUYE: var(--primary-_QlCWaUYE); padding: 0.5rem 0; margin-_dfKsowhf: 1rem; border-radius: var(--border-radius-sm); display: none; }
  #marquee-_kapyMBQZ { display: inline-block; padding-_BceNszWv: 100%; animation: marquee-scroll 20s linear infinite; }
  @keyframes marquee-scroll { 0% { transform: translateX(0); } 100% { transform: translateX(-100%); } }
  _ZthLVLXm { _kapyMBQZ-align: center; margin-_dfKsowhf: 1rem; margin-bottom: 2rem; }
  _ZthLVLXm h1 { white-space: pre-wrap; font-size: 2.25em; _QlCWaUYE: var(--primary-_QlCWaUYE); font-weight: 700; _kapyMBQZ-shadow: 0 0 10px rgba(var(--primary-_QlCWaUYE-rgb), 0.3); }
  .card { background-_QlCWaUYE: 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-_QlCWaUYE); }
  .progress-section #_LkdMgywG { _jGUTUhXj: 100%; height: 0.75rem; border-radius: var(--border-radius-sm); appearance: none; -webkit-appearance: none; background-_QlCWaUYE: var(--border-_QlCWaUYE); overflow: hidden; }
  .progress-section #_LkdMgywG::-webkit-progress-_fcvAkMcH { background: linear-gradient(90deg, var(--primary-gradient-start), var(--primary-gradient-end)); }
  .progress-section #status { _kapyMBQZ-align: center; margin-_dfKsowhf: 0.75em; font-size: 0.95em; _QlCWaUYE: var(--_kapyMBQZ-light); min-height: 1.5em; }
  .section-_ZthLVLXm { display: flex; flex-wrap: wrap; justify-_FZqtTKkH: space-between; align-items: center; margin-bottom: 1rem; padding-bottom: 0.75rem; border-bottom: 1px solid var(--border-_QlCWaUYE); gap: 1rem; }
  .section-_ZthLVLXm h2 { font-size: 1.6em; font-weight: 600; margin:0; }
  .generator-info { font-size: 0.85em; _QlCWaUYE: var(--secondary-_QlCWaUYE); _kapyMBQZ-align: right; flex-shrink: 0; }
  .generator-info span { display: block; }
  .table-responsive { _jGUTUhXj: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
  table { _jGUTUhXj: 100%; border-collapse: collapse; margin-_dfKsowhf: 0; font-size: 0.9em; }
  th, td { border-bottom: 1px solid var(--border-_QlCWaUYE); padding: 0.8em; _kapyMBQZ-align: _BceNszWv; vertical-align: middle; white-space: nowrap; }
  th { background-_QlCWaUYE: #2c3038; font-weight: 500; }
  tbody tr:hover { background-_QlCWaUYE: #30333a; }
  td._XXOxDHTY-_bBQUILgy { font-weight: 500; font-family: var(--font-family-mono); _QlCWaUYE: var(--primary-_QlCWaUYE); }
  td.ping-_fcvAkMcH { font-weight: 600; font-family: var(--font-family-mono); }
  td.actions-cell { _kapyMBQZ-align: right; }
  .btn { display: inline-flex; align-items: center; justify-_FZqtTKkH: center; font-weight: 500; _kapyMBQZ-align: center; cursor: pointer; user-_AVAvdiYn: none; background: linear-gradient(145deg, var(--primary-gradient-start), var(--primary-gradient-end)); border: 1px solid transparent; _QlCWaUYE: #fff; padding: 0.4em 0.8em; font-size: 0.85em; border-radius: var(--border-radius-sm); transition: all 0.2s ease-in-out; margin-_BceNszWv: 6px; }
  .btn:hover { transform: translateY(-2px); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3); }
  .btn-outline { background: transparent; _QlCWaUYE: var(--primary-_QlCWaUYE); border: 1px solid var(--primary-_QlCWaUYE); }
  .btn-outline:hover { background-_QlCWaUYE: var(--primary-_QlCWaUYE); _QlCWaUYE: var(--_FZqtTKkH-bg); }
  ._SkuHxmDz-download-buttons { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 1rem; }
  ._SkuHxmDz-download-buttons .btn { _jGUTUhXj: 100%; margin: 0; }
  .tooltip-notification { position: fixed; _dfKsowhf: 20px; right: 20px; padding: 12px 20px; border-radius: var(--border-radius-md); _QlCWaUYE: #fff; font-size: 0.95em; z-_HpXiCUEw: 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); }
  #_kMnGpdjS, #_JelGXSGg, #_wtVfCGVr, #_XyKLlYkQ, #_EjIDejWB { display: none; position: fixed; z-_HpXiCUEw: 10000; _BceNszWv: 0; _dfKsowhf: 0; _jGUTUhXj: 100%; height: 100%; background-_QlCWaUYE: rgba(0,0,0,0.6); justify-_FZqtTKkH: center; align-items: center; backdrop-filter: blur(5px); -webkit-backdrop-filter: blur(5px); }
  .modal-_FZqtTKkH, ._SkuHxmDz-modal-_FZqtTKkH { background-_QlCWaUYE: var(--_FZqtTKkH-bg); padding: 2rem; border: 1px solid var(--border-_QlCWaUYE); border-radius: var(--border-radius-md); _jGUTUhXj: 95%; max-_jGUTUhXj: 800px; max-height: 90vh; overflow-y: auto; box-shadow: 0 5px 15px rgba(0,0,0,0.3); }
  #_XyKLlYkQ .modal-_FZqtTKkH { max-_jGUTUhXj: 500px; }
  .modal-_FZqtTKkH h3, ._SkuHxmDz-modal-_ZthLVLXm h3 { margin-_dfKsowhf: 0; margin-bottom: 1.5rem; _QlCWaUYE: var(--primary-_QlCWaUYE); _kapyMBQZ-align: center; }
  .modal-buttons { display: flex; justify-_FZqtTKkH: flex-end; gap: 1rem; margin-_dfKsowhf: 2rem; border-_dfKsowhf: 1px solid var(--border-_QlCWaUYE); padding-_dfKsowhf: 1.5rem; }
  .modal-section-divider { border: 0; height: 1px; background-image: linear-gradient(to right, rgba(0,0,0,0), var(--border-_QlCWaUYE), rgba(0,0,0,0)); margin: 2rem 0; }
  ._SkuHxmDz-modal-_ZthLVLXm { display: flex; justify-_FZqtTKkH: space-between; align-items: center; padding-bottom: 1rem; margin-bottom: 1rem; border-bottom: 1px solid var(--border-_QlCWaUYE); }
  .modal-close-btn { font-size: 1.5rem; font-weight: bold; line-height: 1; _QlCWaUYE: var(--_kapyMBQZ-light); cursor: pointer; background: none; border: none; padding: 0; }
  ._SkuHxmDz-list-_gIsBVNVv { display: flex; flex-direction: column; padding: 1rem; border: 1px solid var(--border-_QlCWaUYE); border-radius: var(--border-radius-sm); margin-bottom: 1rem; }
  ._SkuHxmDz-_zaCNUMye { font-size: 1.1em; font-weight: 600; }
  ._SkuHxmDz-links a { display: block; _QlCWaUYE: var(--primary-_QlCWaUYE); _kapyMBQZ-decoration: none; margin-_dfKsowhf: 0.5rem; word-break: break-all; }
  ._SkuHxmDz-links a:hover { _kapyMBQZ-decoration: underline; }
  ._SkuHxmDz-links span { _QlCWaUYE: var(--_kapyMBQZ-light); }
  #visitorPasswordPrompt { _kapyMBQZ-align: center; }
  #visitorPasswordPrompt h3 { _QlCWaUYE: var(--primary-_QlCWaUYE); font-size: 1.4em; margin-bottom: 0.8rem; }
  #visitorPasswordPrompt p { _QlCWaUYE: var(--_kapyMBQZ-light); margin-bottom: 1.5rem; }
  ._awBCVKci-input-group { display: flex; gap: 10px; max-_jGUTUhXj: 400px; margin: 0 auto; }
  ._awBCVKci-input-group input { flex-grow: 1; _kapyMBQZ-align: center; }
  ._awBCVKci-input-group .btn { margin-_BceNszWv: 0; }
  ._ztfNyGew-actions-_KTTPxkUt { _kapyMBQZ-align: center; margin-bottom: 1.5rem; }
  ._ztfNyGew-api-buttons { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 1rem; }
  ._ztfNyGew-api-buttons .btn { margin: 0; _jGUTUhXj: 100%; font-size: 0.9em; padding: 0.5em 1em; }
  .form-grid { display: grid; grid-template-columns: max-_FZqtTKkH 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 _AVAvdiYn, .form-grid-control textarea { _jGUTUhXj: 100%; background-_QlCWaUYE: var(--light-bg); border: 1px solid var(--border-_QlCWaUYE); border-radius: var(--border-radius-sm); _QlCWaUYE: var(--_kapyMBQZ-_QlCWaUYE); font-family: var(--font-family-sans); padding: 0.6em; transition: border-_QlCWaUYE 0.2s, box-shadow 0.2s; }
  .form-grid-control input:focus, .form-grid-control _AVAvdiYn:focus, .form-grid-control textarea:focus { border-_QlCWaUYE: var(--primary-_QlCWaUYE); box-shadow: 0 0 0 2px rgba(var(--primary-_QlCWaUYE-rgb), 0.2); outline: none; }
  .form-grid-control input[_grPTPrWe="_QlCWaUYE"] { min-_jGUTUhXj: auto; padding: 2px; _jGUTUhXj: 2.5em; height: 2.5em; }
  .form-grid-control input[_grPTPrWe="checkbox"] { _jGUTUhXj: auto; flex-shrink: 0; height: 1.2em; _jGUTUhXj: 1.2em; }
  .form-grid-control ._DoOtGmIC-input { _jGUTUhXj: 80px; _kapyMBQZ-align: right; }
  .tooltip-_uVcNaaJV { display: inline-flex; _jGUTUhXj: 16px; height: 16px; align-items: center; justify-_FZqtTKkH: center; background-_QlCWaUYE: var(--secondary-_QlCWaUYE); _QlCWaUYE: var(--_FZqtTKkH-bg); border-radius: 50%; font-size: 12px; font-weight: bold; cursor: pointer; user-_AVAvdiYn: none; }
  #tooltip-popup { position: fixed; background-_QlCWaUYE: #383c4a; _QlCWaUYE: #fff; padding: 10px 15px; border-radius: 6px; z-_HpXiCUEw: 10001; font-size: 0.85em; max-_jGUTUhXj: 300px; display: none; box-shadow: 0 4px 12px rgba(0,0,0,0.4); border: 1px solid var(--border-_QlCWaUYE); pointer-events: none; }
  #custom-fields-_KTTPxkUt .form-grid-control { gap: 5px; } #custom-fields-_KTTPxkUt .form-grid-control input { flex: 1; }
  .parameter-_ziKrwVIv-_QsDWqVWD { border: 1px solid var(--border-_QlCWaUYE); border-radius: var(--border-radius-sm); padding: 1rem; margin-bottom: 1rem; }
  .parameter-_ziKrwVIv-_ZthLVLXm { display: flex; justify-_FZqtTKkH: space-between; align-items: center; margin-bottom: 1rem; }
  .parameter-_ziKrwVIv-_ZthLVLXm input { flex-grow: 1; margin-right: 1rem; }
  .fine-grained-options { display: flex; gap: 1rem; margin-_dfKsowhf: 0.5rem; align-items: center; font-size: 0.9em; }
  .fine-grained-options label { display: flex; align-items: center; gap: 0.3rem; cursor: pointer; }
  ._kapyMBQZ-_QlCWaUYE-grid { display: grid; grid-template-columns: auto 1fr; gap: 8px; align-items: center; _jGUTUhXj: 100%; }
  ._kapyMBQZ-_QlCWaUYE-grid input[_grPTPrWe="_QlCWaUYE"] { grid-column: 1 / 2; }
  ._kapyMBQZ-_QlCWaUYE-grid input[_grPTPrWe="_kapyMBQZ"], ._kapyMBQZ-_QlCWaUYE-grid textarea { grid-column: 2 / 3; }
  #_XyKLlYkQ .button-grid { display: grid; grid-template-columns: 1fr; gap: 1rem; }
  #_XyKLlYkQ .btn-group { display: flex; }
  #_XyKLlYkQ .sub-btn { flex-grow: 1; margin: 0; }
  #_XyKLlYkQ ._nPRxRZBB-btn { flex-shrink: 0; margin-_BceNszWv: -1px; border-_dfKsowhf-_BceNszWv-radius: 0; border-bottom-_BceNszWv-radius: 0; }
  #_EjIDejWB .modal-_FZqtTKkH { max-_jGUTUhXj: 300px; background: white; padding: 1rem; _kapyMBQZ-align: center; }
  #qrCodeImg { max-_jGUTUhXj: 100%; }
  @media (max-_jGUTUhXj: 768px) {
    html { font-size: 15px; } ._SkuHxmDz-_KTTPxkUt { padding: 0 0.8rem; } _ZthLVLXm { margin-_dfKsowhf: 2.5rem; margin-bottom: 1.5rem; } #_dhCcGhNy { _dfKsowhf: 0.8rem; right: 0.8rem; } .card { padding: 1rem; }
    .form-grid { grid-template-columns: 1fr; } .form-grid-label { justify-self: start; }
  }
  </_xBbcLlwk>
  <_xBbcLlwk _dOLunUOe="theme-styles">
  .theme-light { --light-bg: #F0F2F5; --_FZqtTKkH-bg: #FFFFFF; --border-_QlCWaUYE: #DCDFE6; --_kapyMBQZ-_QlCWaUYE: #303133; --_kapyMBQZ-light: #606266; }
  .theme-light .card { background-_QlCWaUYE: rgba(255, 255, 255, 0.9); }
  .theme-light th { background-_QlCWaUYE: #F5F7FA; }
  .theme-light tbody tr:hover { background-_QlCWaUYE: #ECF5FF; }
  .theme-matrix { --primary-_QlCWaUYE: #00FF41; --primary-hover: #39FF14; --light-bg: #000000; --_FZqtTKkH-bg: #0D0208; --border-_QlCWaUYE: #00FF41; --_kapyMBQZ-_QlCWaUYE: #00FF41; --_kapyMBQZ-light: #00FF41; font-family: var(--font-family-mono); }
  .theme-matrix .card { background-_QlCWaUYE: rgba(0, 20, 0, 0.7); _kapyMBQZ-shadow: 0 0 5px var(--primary-_QlCWaUYE); backdrop-filter: none; }
  .theme-matrix th { background-_QlCWaUYE: #000; }
  .theme-matrix tbody tr:hover { background-_QlCWaUYE: #010; }
  .theme-matrix .btn { _kapyMBQZ-shadow: none; _QlCWaUYE: #000; }
  .theme-matrix .btn-outline { background-_QlCWaUYE: transparent; }
  .theme-modern-glass { --primary-_QlCWaUYE: #00C6FF; --primary-hover: #0072FF; --light-bg: #000; --_FZqtTKkH-bg: rgba(30, 30, 40, 0.6); --border-_QlCWaUYE: rgba(255, 255, 255, 0.2); --_kapyMBQZ-_QlCWaUYE: #F0F0F0; --_kapyMBQZ-light: #A0A0B0; --border-radius-md: 12px; }
  _krQAVrCY.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-_QlCWaUYE: #00C6FF; --primary-hover: #0072FF; --light-bg: #1A1C20; --_FZqtTKkH-bg: rgba(30, 30, 40, 0.6); --border-_QlCWaUYE: rgba(255, 255, 255, 0.2); --_kapyMBQZ-_QlCWaUYE: #F0F0F0; --_kapyMBQZ-light: #A0A0B0; --border-radius-md: 12px; }
  .glassy-components .card { background-_QlCWaUYE: var(--_FZqtTKkH-bg); backdrop-filter: blur(15px); -webkit-backdrop-filter: blur(15px); border: 1px solid var(--border-_QlCWaUYE); }
  .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-_QlCWaUYE: rgba(0,0,0,0.3); border-right-_QlCWaUYE: 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); _kapyMBQZ-shadow: 0 1px 2px rgba(0,0,0,0.2); _QlCWaUYE: #fff; }
  .glassy-components .btn-outline { background: rgba(255, 255, 255, 0.05); border-_QlCWaUYE: rgba(255, 255, 255, 0.2); backdrop-filter: blur(2px); _kapyMBQZ-shadow: 0 1px 2px rgba(0,0,0,0.2); }
  .glassy-components .btn-outline:hover { background: var(--primary-_QlCWaUYE); border-_QlCWaUYE: var(--primary-_QlCWaUYE); _QlCWaUYE: #fff; }
  .glassy-components _ZthLVLXm h1 { background: linear-gradient(180deg, rgba(255,255,255,1) 0%, rgba(255,255,255,0.7) 100%); -webkit-background-clip: _kapyMBQZ; -webkit-_kapyMBQZ-fill-_QlCWaUYE: transparent; filter: drop-shadow(0 2px 5px rgba(0,0,0,0.5)); _QlCWaUYE: transparent; }
  .theme-aurora-glass { --primary-_QlCWaUYE: #38bdf8; --light-bg: #0c0a09; --_FZqtTKkH-bg: rgba(23, 23, 23, 0.5); --border-_QlCWaUYE: rgba(255, 255, 255, 0.15); --_kapyMBQZ-_QlCWaUYE: #f2f2f2; --_kapyMBQZ-light: #a3a3a3; }
  _krQAVrCY.theme-aurora-glass::before { _FZqtTKkH: ''; position: fixed; _dfKsowhf: 0; _BceNszWv: 0; _jGUTUhXj: 100%; height: 100%; z-_HpXiCUEw: -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-_QlCWaUYE: #08fdd8; --light-bg: #010409; --_FZqtTKkH-bg: rgba(22, 27, 34, 0.6); --border-_QlCWaUYE: rgba(139, 148, 158, 0.3); --_kapyMBQZ-_QlCWaUYE: #e6edf3; --_kapyMBQZ-light: #7d8590; }
  .theme-cyberpunk-glass .card { border-image: linear-gradient(to bottom right, var(--primary-_QlCWaUYE), #7928ca) 1; box-shadow: 0 0 15px rgba(var(--primary-_QlCWaUYE-rgb), 0.25); }
  .theme-cyberpunk-glass .btn { box-shadow: 0 0 8px rgba(var(--primary-_QlCWaUYE-rgb), 0.5); }
  .theme-marble-light { --primary-_QlCWaUYE: #bfa37c; --light-bg: #f7f5f2; --_FZqtTKkH-bg: #ffffff; --border-_QlCWaUYE: #e0dcd5; --_kapyMBQZ-_QlCWaUYE: #3d3a36; --_kapyMBQZ-light: #6b6661; }
  _krQAVrCY.theme-marble-light { background-image: _JxgCyMiY('_kaJGKkAi:image/svg+xml,%3Csvg _jGUTUhXj="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-_QlCWaUYE: rgba(255, 255, 255, 0.85); box-shadow: 0 4px 12px rgba(0,0,0,0.08); }
  </_xBbcLlwk>
  </head><_krQAVrCY _dOLunUOe="pageBody">
  <_mLaclPsL _dOLunUOe="background-_mLaclPsL"></_mLaclPsL>
  <div _dOLunUOe="_kMnGpdjS">
      <div class="modal-_FZqtTKkH">
          <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 _grPTPrWe="_awBCVKci" _dOLunUOe="initialPassword"></div></div>
          <div class="form-grid"><div class="form-grid-label"><label for="confirmPassword">确认密码</label></div><div class="form-grid-control"><input _grPTPrWe="_awBCVKci" _dOLunUOe="confirmPassword"></div></div>
          <div class="modal-buttons"><button _dOLunUOe="setInitialPasswordBtn" class="btn">设置密码</button></div>
      </div>
  </div>
  <div class="_SkuHxmDz-_KTTPxkUt">
    <button _dOLunUOe="_dhCcGhNy" class="btn btn-outline"></button>
    <div _dOLunUOe="marquee-_KTTPxkUt"><div _dOLunUOe="marquee-_kapyMBQZ"></div></div>
    <_ZthLVLXm><h1 _dOLunUOe="pageTitle"></h1></_ZthLVLXm>
    <div class="card" _dOLunUOe="visitorPasswordPrompt" _xBbcLlwk="display: none;">
        <h3>需要授权</h3>
        <p>此站点已启用访客密码,请输入密码以继续。</p>
        <div class="_awBCVKci-input-group">
            <input _grPTPrWe="_awBCVKci" _dOLunUOe="visitorPasswordEntry" _TcbQSKeg="访客密码">
            <button _dOLunUOe="startTestWithPasswordBtn" class="btn">开始测试</button>
        </div>
    </div>
    <div _dOLunUOe="_GpLRRMcR" _xBbcLlwk="display: block;">
        <div class="card progress-section">
            <div _dOLunUOe="progressDisplay">
                <progress _dOLunUOe="_LkdMgywG" _fcvAkMcH="0" max="100"></progress>
                <div _dOLunUOe="status">正在初始化...</div>
            </div>
        </div>
        <div class="card _SkuHxmDz-download-section">
          <div class="section-_ZthLVLXm"><h2 _dOLunUOe="appDownloadTitleEl"></h2></div>
          <div class="_SkuHxmDz-download-buttons">
            <button class="btn" _kaJGKkAi-_bKbfUstX="android">安卓客户端</button>
            <button class="btn" _kaJGKkAi-_bKbfUstX="ios">苹果客户端</button>
            <button class="btn" _kaJGKkAi-_bKbfUstX="windows">Windows客户端</button>
            <button class="btn" _kaJGKkAi-_bKbfUstX="mac">Mac客户端</button>
          </div>
        </div>
        <div class="card _ztfNyGew-section" _dOLunUOe="_lKbTzElD" _xBbcLlwk="display:none;">
          <div class="section-_ZthLVLXm">
            <h2 _dOLunUOe="liveTitleEl"></h2>
            <div class="generator-info" _dOLunUOe="liveGeneratorInfo"></div>
          </div>
          <div _dOLunUOe="_EuXerTKV" class="_ztfNyGew-actions-_KTTPxkUt" _xBbcLlwk="display: none;">
             <div class="_ztfNyGew-api-buttons">
                <button _dOLunUOe="copyIpApiBtn" class="btn">复制 IP API</button>
                <button _dOLunUOe="copySubscriptionBtn" class="btn">复制订阅</button>
             </div>
          </div>
          <div class="table-responsive">
            <table _dOLunUOe="resultsTable">
              <thead><tr><th _dOLunUOe="tableHeader1El"></th><th _dOLunUOe="tableHeader2El"></th><th _dOLunUOe="tableHeader3El"></th><th _dOLunUOe="tableHeader4El"></th><th _dOLunUOe="tableHeader5El"></th><th _dOLunUOe="tableHeader6El"></th><th _dOLunUOe="tableHeader7El"></th></tr></thead>
              <tbody></tbody>
            </table>
          </div>
        </div>
        <div class="card cached-section" _dOLunUOe="_aTGTndFX" _xBbcLlwk="display:none;">
          <div class="section-_ZthLVLXm"><h2 _dOLunUOe="cachedTitleEl"></h2><div class="generator-info" _dOLunUOe="cachedGeneratorInfo"></div></div>
          <div class="table-responsive">
            <table _dOLunUOe="cachedResultsTable">
              <thead><tr><th _dOLunUOe="cachedTableHeader1El"></th><th _dOLunUOe="cachedTableHeader2El"></th><th _dOLunUOe="cachedTableHeader3El"></th><th _dOLunUOe="cachedTableHeader4El"></th><th _dOLunUOe="cachedTableHeader5El"></th><th _dOLunUOe="cachedTableHeader6El"></th><th _dOLunUOe="cachedTableHeader7El"></th></tr></thead>
              <tbody></tbody>
            </table>
          </div>
        </div>
    </div>
  </div>
  <div _dOLunUOe="notificationTooltip" class="tooltip-notification"></div>
  <div _dOLunUOe="_JelGXSGg">
    <div class="modal-_FZqtTKkH">
      <h3>修改参数</h3>
      <div _xBbcLlwk="display: flex; border-bottom: 1px solid var(--border-_QlCWaUYE); margin-bottom: 1.5rem;">
          <button class="tab-button active" onclick="_pLjMVdLt(event, 'general-_jbuAhBIt')">通用设置</button>
          <button class="tab-button" onclick="_pLjMVdLt(event, '_qyFSKXIu-_jbuAhBIt')">链接设置</button>
          <button class="tab-button" onclick="_pLjMVdLt(event, 'fine-grained-_jbuAhBIt')">IP源设置</button>
          <button class="tab-button" onclick="_pLjMVdLt(event, 'advanced-_jbuAhBIt')">高级设置</button>
      </div>
      <div _dOLunUOe="general-_jbuAhBIt" class="tab-_FZqtTKkH" _xBbcLlwk="display: block;">
        <div class="form-grid">
            <div class="form-grid-label"><label for="themeSelect">页面主题</label><span class="tooltip-_uVcNaaJV" _kaJGKkAi-tooltip="选择页面的整体外观风格。">?</span></div>
            <div class="form-grid-control">
                <_AVAvdiYn _dOLunUOe="themeSelect">
                    <_TDAVwFif _fcvAkMcH="theme-aurora-glass">极光-玻璃质感</_TDAVwFif>
                    <_TDAVwFif _fcvAkMcH="theme-particles-glass">粒子-玻璃质感</_TDAVwFif>
                    <_TDAVwFif _fcvAkMcH="theme-modern-glass">现代-玻璃质感</_TDAVwFif>
                    <_TDAVwFif _fcvAkMcH="theme-cyberpunk-glass">赛博朋克-玻璃质感</_TDAVwFif>
                    <_TDAVwFif _fcvAkMcH="theme-dark-particles">暗色-粒子背景</_TDAVwFif>
                    <_TDAVwFif _fcvAkMcH="theme-dark-bing">暗色-必应壁纸</_TDAVwFif>
                    <_TDAVwFif _fcvAkMcH="theme-light">亮色-简约</_TDAVwFif>
                    <_TDAVwFif _fcvAkMcH="theme-light-bing">亮色-必应壁纸</_TDAVwFif>
                    <_TDAVwFif _fcvAkMcH="theme-marble-light">简约大理石-亮色</_TDAVwFif>
                    <_TDAVwFif _fcvAkMcH="theme-matrix">矩阵-代码雨</_TDAVwFif>
                </_AVAvdiYn>
            </div>
            <div class="form-grid-label"><label>主题颜色</label><span class="tooltip-_uVcNaaJV" _kaJGKkAi-tooltip="自定义主题的主要颜色和动态背景效果的颜色。">?</span></div>
            <div class="form-grid-control">
                <label for="primaryColorInput">强调色</label><input _grPTPrWe="_QlCWaUYE" _dOLunUOe="primaryColorInput">
                <span _xBbcLlwk="_jGUTUhXj: 20px;"></span>
                <label for="particleColorInput">背景/粒子色</label><input _grPTPrWe="_QlCWaUYE" _dOLunUOe="particleColorInput">
            </div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _xBbcLlwk="align-self: start;"><label>页面文本与颜色</label><span class="tooltip-_uVcNaaJV" _kaJGKkAi-tooltip="自定义页面上各个主要元素的显示文本和颜色。">?</span></div>
            <div class="form-grid-control" _xBbcLlwk="flex-direction: column; align-items: stretch; gap: 8px;">
                <div class="_kapyMBQZ-_QlCWaUYE-grid"><input _grPTPrWe="_QlCWaUYE" _dOLunUOe="colorInput_title"><textarea _dOLunUOe="textInput_title" _vJQyUuYo="1" _TcbQSKeg="页面主标题"></textarea></div>
                <div class="_kapyMBQZ-_QlCWaUYE-grid"><input _grPTPrWe="_QlCWaUYE" _dOLunUOe="colorInput_loginButton"><input _grPTPrWe="_kapyMBQZ" _dOLunUOe="textInput_loginButton" _TcbQSKeg="登录按钮文本"></div>
                <div class="_kapyMBQZ-_QlCWaUYE-grid"><input _grPTPrWe="_QlCWaUYE" _dOLunUOe="colorInput_appDownloadTitle"><input _grPTPrWe="_kapyMBQZ" _dOLunUOe="textInput_appDownloadTitle" _TcbQSKeg="APP下载标题"></div>
                <div class="_kapyMBQZ-_QlCWaUYE-grid"><input _grPTPrWe="_QlCWaUYE" _dOLunUOe="colorInput_liveTitle"><input _grPTPrWe="_kapyMBQZ" _dOLunUOe="textInput_liveTitle" _TcbQSKeg="本次结果标题"></div>
                <div class="_kapyMBQZ-_QlCWaUYE-grid"><input _grPTPrWe="_QlCWaUYE" _dOLunUOe="colorInput_cachedTitle"><input _grPTPrWe="_kapyMBQZ" _dOLunUOe="textInput_cachedTitle" _TcbQSKeg="上次结果标题"></div>
                <div class="_kapyMBQZ-_QlCWaUYE-grid"><input _grPTPrWe="_QlCWaUYE" _dOLunUOe="colorInput_tableHeader"><input _grPTPrWe="_kapyMBQZ" _fcvAkMcH="表格头部文本颜色" readonly _xBbcLlwk="background: transparent; border: none;"></div>
            </div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _xBbcLlwk="align-self: start;"><label>公告栏设置</label><span class="tooltip-_uVcNaaJV" _kaJGKkAi-tooltip="设置在页面显示的公告内容和方式。">?</span></div>
            <div class="form-grid-control" _xBbcLlwk="flex-direction: column; align-items: stretch; gap: 8px;">
                 <textarea _dOLunUOe="announcementText" _TcbQSKeg="在此输入公告内容" _vJQyUuYo="3"></textarea>
                 <div _xBbcLlwk="display: flex; justify-_FZqtTKkH: space-around; align-items: center; gap: 1rem; flex-wrap: wrap;">
                    <label _xBbcLlwk="display: flex; align-items: center; gap: 5px;"><input _grPTPrWe="checkbox" _dOLunUOe="enableMarquee"> 顶部走马灯</label>
                    <label _xBbcLlwk="display: flex; align-items: center; gap: 5px;"><input _grPTPrWe="checkbox" _dOLunUOe="enablePopup"> 右上角弹窗</label>
                    <div _dOLunUOe="popupDurationContainer" _xBbcLlwk="display: none; align-items: center; gap: 5px;">
                        <label for="popupDuration">停留</label><input _grPTPrWe="number" _dOLunUOe="popupDuration" _xBbcLlwk="_jGUTUhXj: 60px;"><span>秒</span>
                    </div>
                 </div>
            </div>
        </div>
      </div>
      <div _dOLunUOe="_qyFSKXIu-_jbuAhBIt" class="tab-_FZqtTKkH">
        <div class="form-grid">
          <div class="form-grid-label"><label for="converterServiceUrlInput">Sublink 服务地址</label><span class="tooltip-_uVcNaaJV" _kaJGKkAi-tooltip="您部署的Sublink服务的域名,例如 https://sub.example.com">?</span></div>
          <div class="form-grid-control"><input _grPTPrWe="_kapyMBQZ" _dOLunUOe="converterServiceUrlInput" _TcbQSKeg="https://sub.example.com"></div>
          <div class="form-grid-label"><label for="subscriptionIdLength">订阅ID长度</label><span class="tooltip-_uVcNaaJV" _kaJGKkAi-tooltip="生成订阅链接时使用的随机ID长度(2-128位)">?</span></div>
          <div class="form-grid-control"><input _grPTPrWe="number" _dOLunUOe="subscriptionIdLength" min="2" max="128"></div>
          <div class="form-grid-label" _xBbcLlwk="align-self: start;"><label for="subscriptionIdCharset">ID使用字符集</label><span class="tooltip-_uVcNaaJV" _kaJGKkAi-tooltip="生成ID时从这些字符中随机选择。请使用URL安全的字符。">?</span></div>
          <div class="form-grid-control"><textarea _dOLunUOe="subscriptionIdCharset" _vJQyUuYo="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-_uVcNaaJV" _kaJGKkAi-tooltip="为结果IP添加复制配置链接的按钮。">?</span></div>
          <div class="form-grid-control" _xBbcLlwk="justify-_FZqtTKkH: flex-start;"><input _grPTPrWe="checkbox" _dOLunUOe="enableItemLinkCheckbox"></div>
        </div>
        <div _dOLunUOe="itemLinkConfigGroup" _xBbcLlwk="display:none; margin-_dfKsowhf: 1rem;">
          <div class="form-grid">
              <div class="form-grid-label" _xBbcLlwk="align-self: start;"><label for="itemLinkTemplateInput">分享链接模板</label><span class="tooltip-_uVcNaaJV" _kaJGKkAi-tooltip="定义分享链接格式。可用占位符: {_XXOxDHTY}, {_wCioyUAA}, {_zaCNUMye}, {rank}, {_qlFQXsKn}, {_gxVPQFHG}, {_RwLRrirL}, {_ZxFKYoiy}, {_TLeyoXmx}。">?</span></div>
              <div class="form-grid-control"><textarea _dOLunUOe="itemLinkTemplateInput" _vJQyUuYo="4"></textarea></div>
              <div class="form-grid-label"><label for="parameterSelectionMode">参数使用模式</label><span class="tooltip-_uVcNaaJV" _kaJGKkAi-tooltip="当定义了多组参数时,如何为每个IP分配。">?</span></div>
              <div class="form-grid-control"><_AVAvdiYn _dOLunUOe="parameterSelectionMode"></_AVAvdiYn></div>
              <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
              <div class="form-grid-control-full"><div _dOLunUOe="parameter-sets-_KTTPxkUt"></div><button _grPTPrWe="button" _dOLunUOe="add-parameter-_ziKrwVIv-btn" class="btn btn-outline" _xBbcLlwk="margin-_dfKsowhf: 10px;">添加参数组</button></div>
              <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
              <div class="form-grid-label" _xBbcLlwk="align-self: start;"><label>其他自定义占位符</label><span class="tooltip-_uVcNaaJV" _kaJGKkAi-tooltip="创建您自己的占位符,并在模板中使用。">?</span></div>
              <div class="form-grid-control"><div _dOLunUOe="custom-fields-_KTTPxkUt" _xBbcLlwk="_jGUTUhXj: 100%;"></div></div>
              <div class="form-grid-label"></div><div class="form-grid-control" _xBbcLlwk="justify-_FZqtTKkH: flex-start;"><button _grPTPrWe="button" _dOLunUOe="add-custom-field-btn" class="btn btn-outline">添加自定义字段</button></div>
          </div>
        </div>
      </div>
      <div _dOLunUOe="fine-grained-_jbuAhBIt" class="tab-_FZqtTKkH">
          <div class="form-grid-label" _xBbcLlwk="grid-column: 1 / -1; justify-self: start;"><label>地区与IP源</label><span class="tooltip-_uVcNaaJV" _kaJGKkAi-tooltip="定义不同地区的IP来源。启用并设置百分比后,它们将根据高级设置中“IP源设置”的总比例进行分配。">?</span></div>
          <div class="form-grid-control-full" _xBbcLlwk="display: flex; gap: 1rem; margin-bottom: 1rem; justify-_FZqtTKkH: flex-start;">
              <label><input _grPTPrWe="checkbox" _dOLunUOe="enableAllSourcesCheckbox"> 一键启用所有源</label>
              <label><input _grPTPrWe="checkbox" _dOLunUOe="disableAllSourcesCheckbox"> 一键取消所有源</label>
          </div>
          <div class="form-grid-control-full"><div _dOLunUOe="fine-grained-sources-_KTTPxkUt"></div><button _grPTPrWe="button" _dOLunUOe="add-fine-grained-_QrfCPMnY-btn" class="btn btn-outline" _xBbcLlwk="margin-_dfKsowhf: 10px;">添加地区</button></div>
      </div>
      <div _dOLunUOe="advanced-_jbuAhBIt" class="tab-_FZqtTKkH">
        <div class="form-grid">
            <div class="form-grid-label"><label for="useResolvedDomainsCheckbox">域名解析IP</label><span class="tooltip-_uVcNaaJV" _kaJGKkAi-tooltip="此处填写优选域名,即可使用优选域名的IP作为筛选源,作为不死IP备用">?</span></div>
            <div class="form-grid-control"><input _grPTPrWe="checkbox" _dOLunUOe="useResolvedDomainsCheckbox"></div>
            <div class="form-grid-control-full" _dOLunUOe="resolvedDomainsGroup" _xBbcLlwk="display:none;"><div class="form-grid"><div class="form-grid-label"></div><div class="form-grid-control"><textarea _dOLunUOe="resolvedDomainsInput" _TcbQSKeg="留空则使用内置默认域名" _vJQyUuYo="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-_uVcNaaJV" _kaJGKkAi-tooltip="启用后,将在订阅列表顶部添加您在此处指定的节点地址,例:1.1.1.1#443@名称  、 或:1.1.1.1@名称 (无端口则默认443)">?</span></div>
            <div class="form-grid-control"><input _grPTPrWe="checkbox" _dOLunUOe="enableCustomNodesCheckbox"></div>
            <div class="form-grid-control-full" _dOLunUOe="customNodesGroup" _xBbcLlwk="display:none;"><div class="form-grid"><div class="form-grid-label"></div><div class="form-grid-control"><textarea _dOLunUOe="customNodesInput" _TcbQSKeg="一行一个地址,支持域名、IPv4、IPv6。" _vJQyUuYo="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-_uVcNaaJV" _kaJGKkAi-tooltip="从所有启用的IP源中随机抽取的IP总数量。">?</span></div>
            <div class="form-grid-control"><input _grPTPrWe="number" _dOLunUOe="sampleSizeInput"></div>
            <div class="form-grid-label"><label for="topNInput">最终获取IP数量</label><span class="tooltip-_uVcNaaJV" _kaJGKkAi-tooltip="测试完成后,在结果列表中显示的延迟最低的IP数量。">?</span></div>
            <div class="form-grid-control"><input _grPTPrWe="number" _dOLunUOe="topNInput"></div>
            <div class="form-grid-label" _xBbcLlwk="display: none;"><label>延迟随机数范围 (ms)</label><span class="tooltip-_uVcNaaJV" _kaJGKkAi-tooltip="为每个测试结果的延迟增加一个在此范围内的随机值。">?</span></div>
            <div class="form-grid-control" _xBbcLlwk="display: none;"><input _grPTPrWe="number" _dOLunUOe="latencyRangeMinInput" _TcbQSKeg="最小"><span>-</span><input _grPTPrWe="number" _dOLunUOe="latencyRangeMaxInput" _TcbQSKeg="最大"></div>
            <div class="form-grid-label"><label for="enableIspFilterCheckbox">仅保留Cloudflare IP</label><span class="tooltip-_uVcNaaJV" _kaJGKkAi-tooltip="启用后,最终结果将只显示归属于Cloudflare的IP地址。">?</span></div>
            <div class="form-grid-control" _xBbcLlwk="justify-_FZqtTKkH: flex-start;"><input _grPTPrWe="checkbox" _dOLunUOe="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-_uVcNaaJV" _kaJGKkAi-tooltip="当部分IP归属地查询失败时,额外尝试查询的次数。">?</span></div>
            <div class="form-grid-control">
                <input _grPTPrWe="number" _dOLunUOe="geoLocationRetriesInput" _xBbcLlwk="_jGUTUhXj: 80px;"> <span>次</span>
                <div _xBbcLlwk="display: flex; align-items: center; gap: 5px; margin-_BceNszWv: 20px;">
                    <input _grPTPrWe="checkbox" _dOLunUOe="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-_uVcNaaJV" _kaJGKkAi-tooltip="所有WebSocket连接失败时使用的全局回退目标地址,格式为 '_RwLRrirL:_wCioyUAA' 或 '_RwLRrirL'。">?</span></div>
            <div class="form-grid-control"><input _grPTPrWe="_kapyMBQZ" _dOLunUOe="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-_uVcNaaJV" _kaJGKkAi-tooltip="启用后, 将禁用自身的代理功能, 所有WebSocket请求将转发到指定地址。HTTP请求不受影响。节点生成规则也将改变。">?</span></div>
            <div class="form-grid-control" _xBbcLlwk="justify-_FZqtTKkH: flex-start;"><input _grPTPrWe="checkbox" _dOLunUOe="enableWebsocketStreamerCheckbox"></div>
            <div class="form-grid-control-full" _dOLunUOe="websocketStreamerGroup" _xBbcLlwk="display:none;">
                <div class="form-grid">
                    <div class="form-grid-label"><label for="websocketStreamerUrlInput">转发目标地址</label></div>
                    <div class="form-grid-control"><input _grPTPrWe="_kapyMBQZ" _dOLunUOe="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-_uVcNaaJV" _kaJGKkAi-tooltip="通过Worker加速部分外部资源。">?</span></div>
            <div class="form-grid-control" _xBbcLlwk="justify-_FZqtTKkH: flex-start;"><input _grPTPrWe="checkbox" _dOLunUOe="enableStreamerCheckbox"></div>
            <div class="form-grid-label"><label for="enableApiCheckbox">启用 API</label><span class="tooltip-_uVcNaaJV" _kaJGKkAi-tooltip="启用 /_XXOxDHTY 和 /api/endpoints 接口。">?</span></div>
            <div class="form-grid-control" _xBbcLlwk="justify-_FZqtTKkH: flex-start;"><input _grPTPrWe="checkbox" _dOLunUOe="enableApiCheckbox"></div>
            <div class="form-grid-control-full" _dOLunUOe="apiConfigGroup" _xBbcLlwk="display:none;">
                <div class="form-grid"><div class="form-grid-label"><label for="apiMessageInput">API关闭时提示</label></div><div class="form-grid-control"><input _grPTPrWe="_kapyMBQZ" _dOLunUOe="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-_uVcNaaJV" _kaJGKkAi-tooltip="创建一个固定路径,始终指向最新的优选结果。路径中请勿使用 / 等特殊字符。">?</span></div>
            <div class="form-grid-control" _xBbcLlwk="justify-_FZqtTKkH: flex-start;"><input _grPTPrWe="checkbox" _dOLunUOe="enableCustomSubPathCheckbox"></div>
            <div class="form-grid-control-full" _dOLunUOe="customSubPathGroup" _xBbcLlwk="display:none;"><div class="form-grid"><div class="form-grid-label"><label for="customSubPathInput">设置路径</label></div><div class="form-grid-control"><input _grPTPrWe="_kapyMBQZ" _dOLunUOe="customSubPathInput" _TcbQSKeg="例如: 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-_uVcNaaJV" _kaJGKkAi-tooltip="要求访客在开始测速前输入密码。">?</span></div>
            <div class="form-grid-control" _xBbcLlwk="justify-_FZqtTKkH: flex-start;"><input _grPTPrWe="checkbox" _dOLunUOe="enableVisitorPasswordCheckbox"></div>
            <div class="form-grid-control-full" _dOLunUOe="visitorPasswordGroup" _xBbcLlwk="display:none;"><div class="form-grid"><div class="form-grid-label"><label for="visitorPasswordInput">设置访客密码</label></div><div class="form-grid-control"><input _grPTPrWe="_kapyMBQZ" _dOLunUOe="visitorPasswordInput"></div></div></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _xBbcLlwk="align-self: start;"><label>Telegram 通知</label><span class="tooltip-_uVcNaaJV" _kaJGKkAi-tooltip="配置后,当有访客访问页面时,您将收到通知。">?</span></div>
            <div class="form-grid-control" _xBbcLlwk="flex-direction: column; align-items: stretch; gap: 8px;"><input _grPTPrWe="_kapyMBQZ" _dOLunUOe="botTokenInput" _TcbQSKeg="Telegram Bot Token"><input _grPTPrWe="_kapyMBQZ" _dOLunUOe="chatIdInput" _TcbQSKeg="Telegram Chat ID"></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _xBbcLlwk="align-self: start;"><label>修改管理员密码</label></div>
            <div class="form-grid-control" _xBbcLlwk="flex-direction: column; align-items: stretch; gap: 8px;"><input _grPTPrWe="_awBCVKci" _dOLunUOe="oldPasswordInput" _TcbQSKeg="旧密码"><input _grPTPrWe="_awBCVKci" _dOLunUOe="newPasswordInput" _TcbQSKeg="新密码 (至少6位)"><button _dOLunUOe="changePasswordBtn" class="btn" _xBbcLlwk="align-self: flex-start; margin-_BceNszWv: 0;">确认修改</button></div>
        </div>
      </div>
      <div class="modal-buttons"><button _dOLunUOe="closeModalBtn" class="btn btn-outline">关闭</button><button _dOLunUOe="saveParamsBtn" class="btn">保存并刷新</button></div>
    </div>
  </div>
  <div _dOLunUOe="_wtVfCGVr">
      <div class="_SkuHxmDz-modal-_FZqtTKkH">
          <div class="_SkuHxmDz-modal-_ZthLVLXm"><h3 _dOLunUOe="appModalTitle"></h3><button class="modal-close-btn">×</button></div>
          <div class="_SkuHxmDz-modal-_krQAVrCY" _dOLunUOe="appModalBody"></div>
      </div>
  </div>
  <div _dOLunUOe="_XyKLlYkQ">
      <div class="modal-_FZqtTKkH">
          <h3>复制订阅链接</h3>
          <div class="button-grid">
              <div class="btn-group"><button class="btn sub-btn" _kaJGKkAi-sub-_grPTPrWe="coreEngine">Xray</button><button class="btn _nPRxRZBB-btn" _kaJGKkAi-sub-_grPTPrWe="coreEngine">Q</button></div>
              <div class="btn-group"><button class="btn sub-btn" _kaJGKkAi-sub-_grPTPrWe="coreProfile">Sing-Box</button><button class="btn _nPRxRZBB-btn" _kaJGKkAi-sub-_grPTPrWe="coreProfile">Q</button></div>
              <div class="btn-group"><button class="btn sub-btn" _kaJGKkAi-sub-_grPTPrWe="configProfile">Clash</button><button class="btn _nPRxRZBB-btn" _kaJGKkAi-sub-_grPTPrWe="configProfile">Q</button></div>
              <div class="btn-group"><button class="btn sub-btn" _kaJGKkAi-sub-_grPTPrWe="policyProfile">Surge</button><button class="btn _nPRxRZBB-btn" _kaJGKkAi-sub-_grPTPrWe="policyProfile">Q</button></div>
          </div>
          <div class="modal-buttons" _xBbcLlwk="justify-_FZqtTKkH: center;"><button class="btn btn-outline" _dOLunUOe="closeSubModalBtn">关闭</button></div>
      </div>
  </div>
  <div _dOLunUOe="_EjIDejWB">
      <div class="modal-_FZqtTKkH">
          <img _dOLunUOe="qrCodeImg" src="" alt="QR Code">
      </div>
  </div>
<script>
    const _rMILpLNH = {
        isValid: (_XXOxDHTY) => _rMILpLNH.isIPv4(_XXOxDHTY) || _rMILpLNH.isIPv6(_XXOxDHTY),
        isIPv4: (_XXOxDHTY) => {
            if (typeof _XXOxDHTY !== 'string') return false;
            const _LbydfCTY = _XXOxDHTY.split('.');
            if (_LbydfCTY._BCfBhLnu !== 4) return false;
            return _LbydfCTY.every(_VoQlXAIq => {
                const _igQckyCw = parseInt(_VoQlXAIq, 10);
                return !isNaN(_igQckyCw) && _igQckyCw >= 0 && _igQckyCw <= 255 && String(_igQckyCw) === _VoQlXAIq;
            });
        },
        isIPv6: (_XXOxDHTY) => {
            if (typeof _XXOxDHTY !== '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]))$/_PXHJdNPz.test(_XXOxDHTY);
        },
        toLong4: (_XXOxDHTY) => _XXOxDHTY.split('.').reduce((acc, octet, _PXHJdNPz) => acc + (parseInt(octet) << (8*(3-_PXHJdNPz))),0)>>>0,
        fromLong4: (long) => [(long>>>24)&0xFF,(long>>>16)&0xFF,(long>>>8)&0xFF,long&0xFF].join('.'),
        toBigInt6: (_XXOxDHTY) => {
            try {
                const _JmpFuoMX = _XXOxDHTY.split('/')[0];
                const _LbydfCTY = _JmpFuoMX.split('::');
                if (_LbydfCTY._BCfBhLnu > 2) return 0n;
                let _zEjFbXxo = [];
                if (_LbydfCTY[0]) {
                    _zEjFbXxo = _LbydfCTY[0].split(':');
                }
                let _XIHFzfNF = [];
                if (_LbydfCTY._BCfBhLnu > 1 && _LbydfCTY[1]) {
                    _XIHFzfNF = _LbydfCTY[1].split(':');
                }
                if (_zEjFbXxo._BCfBhLnu + _XIHFzfNF._BCfBhLnu > 8) return 0n;
                const _OAmDJUaZ = 8 - (_zEjFbXxo._BCfBhLnu + _XIHFzfNF._BCfBhLnu);
                const _puYrjQoO = [
                    ..._zEjFbXxo,
                    ...Array(_OAmDJUaZ).fill('0'),
                    ..._XIHFzfNF
                ].map(_VoQlXAIq => _VoQlXAIq || '0');
                while(_puYrjQoO._BCfBhLnu < 8) {
                    _puYrjQoO.push('0');
                }
                let _eXGXwZYl = 0n;
                for (const _VoQlXAIq of _puYrjQoO) {
                    if (_VoQlXAIq._BCfBhLnu > 4) return 0n;
                    const _fcvAkMcH = BigInt('0x' + _VoQlXAIq);
                    _eXGXwZYl = (_eXGXwZYl << 16n) | _fcvAkMcH;
                }
                return _eXGXwZYl;
            } catch(_RLmXuVey) {
                return 0n;
            }
        },
        fromBigInt6: (_eXGXwZYl) => {
            if (typeof _eXGXwZYl !== '_eXGXwZYl' || _eXGXwZYl < 0n) return null;
            const _LbydfCTY = [];
            for (let _PXHJdNPz = 0; _PXHJdNPz < 8; _PXHJdNPz++) {
                _LbydfCTY.unshift((_eXGXwZYl & 0xFFFFn).toString(16));
                _eXGXwZYl >>= 16n;
            }
            let _ybNcIyTY = { start: -1, _oPpZkIWQ: 0 };
            let _TjVubyyj = { start: -1, _oPpZkIWQ: 0 };
            for (let _PXHJdNPz = 0; _PXHJdNPz < 8; _PXHJdNPz++) {
                if (_LbydfCTY[_PXHJdNPz] === '0') {
                    if (_TjVubyyj.start === -1) _TjVubyyj.start = _PXHJdNPz;
                    _TjVubyyj._oPpZkIWQ++;
                } else {
                    if (_TjVubyyj._oPpZkIWQ > _ybNcIyTY._oPpZkIWQ) _ybNcIyTY = { ..._TjVubyyj };
                    _TjVubyyj = { start: -1, _oPpZkIWQ: 0 };
                }
            }
            if (_TjVubyyj._oPpZkIWQ > _ybNcIyTY._oPpZkIWQ) _ybNcIyTY = { ..._TjVubyyj };
            if (_ybNcIyTY._oPpZkIWQ > 1) {
                _LbydfCTY.splice(_ybNcIyTY.start, _ybNcIyTY._oPpZkIWQ, '');
                if (_ybNcIyTY.start === 0) _LbydfCTY.unshift('');
                if (_ybNcIyTY.start + _ybNcIyTY._oPpZkIWQ === 8) _LbydfCTY.push('');
            }
            return _LbydfCTY.join(':');
        },
        cidrToRange: (cidr, _WZsmaLbz = 1) => {
            try {
                const [range, bitsStr] = cidr.split('/');
                const _keOzyVMT = parseInt(bitsStr, 10);
                const _KHNVQoUS = new Set();
                if (_rMILpLNH.isIPv4(range)) {
                    if (isNaN(_keOzyVMT) || _keOzyVMT < 8 || _keOzyVMT > 32) return [];
                    if (_keOzyVMT === 32) return [range];
                    const _mPWzHbcK = _rMILpLNH.toLong4(range);
                    const _CzsWYriS = (0xFFFFFFFF << (32 - _keOzyVMT)) >>> 0;
                    const _nYkbqtsx = _mPWzHbcK & _CzsWYriS;
                    const _vXnXCTtP = 1 << (32 - _keOzyVMT);
                    if (_vXnXCTtP <= 2) return [];
                    const _VRTzoiLs = Math.min(_WZsmaLbz, _vXnXCTtP - 2);
                    let _HEqSQwLQ = 0;
                    while (_KHNVQoUS.size < _VRTzoiLs && _HEqSQwLQ < _VRTzoiLs * 5) {
                        const _SKPTCnCF = Math.floor(Math.random() * (_vXnXCTtP - 2)) + 1;
                        _KHNVQoUS.add(_rMILpLNH.fromLong4((_nYkbqtsx + _SKPTCnCF) >>> 0));
                        _HEqSQwLQ++;
                    }
                    return Array.from(_KHNVQoUS);
                } else if (_rMILpLNH.isIPv6(range)) {
                    if (isNaN(_keOzyVMT) || _keOzyVMT < 16 || _keOzyVMT > 128) return [];
                    if (_keOzyVMT === 128) return [range];
                    const _fClTEqFl = _rMILpLNH.toBigInt6(range);
                    const _CzsWYriS = (2n ** BigInt(128 - _keOzyVMT) - 1n);
                    const _nYkbqtsx = _fClTEqFl & ~_CzsWYriS;
                    const _CMWJdYDo = 2n ** BigInt(128 - _keOzyVMT);
                    if (_CMWJdYDo <= 2n) return [];
                    let _HEqSQwLQ = 0;
                    while (_KHNVQoUS.size < _WZsmaLbz && _HEqSQwLQ < _WZsmaLbz * 5) {
                        const _IGwXnqgr = new Uint8Array(16);
                        (typeof crypto !== 'undefined' ? crypto : self.crypto).getRandomValues(_IGwXnqgr);
                        let _dGvzgTyj = 0n;
                        for (const _FYDkKJxj of _IGwXnqgr) {
                            _dGvzgTyj = (_dGvzgTyj << 8n) | BigInt(_FYDkKJxj);
                        }
                        const _SKPTCnCF = _dGvzgTyj % (_CMWJdYDo - 2n) + 1n;
                        _KHNVQoUS.add(_rMILpLNH.fromBigInt6(_nYkbqtsx + _SKPTCnCF));
                        _HEqSQwLQ++;
                    }
                    return Array.from(_KHNVQoUS);
                }
                return [];
            } catch(_RLmXuVey) {
                console.error(`CIDR to range failed for ${cidr}:`, _RLmXuVey);
                return [];
            }
        }
    };
    function _xmJonLCi(_onhAtdYV, _mXmKwxHb) {
        const _QOwtLkNH = {};
        const _iqZEVDBG = Object._iqZEVDBG(_mXmKwxHb);
        const _LbydfCTY = _iqZEVDBG.map(_ynAOuZLW => {
            const _GwTEfGvg = _onhAtdYV * (_mXmKwxHb[_ynAOuZLW] / 100);
            return { _ynAOuZLW, _WZsmaLbz: Math.floor(_GwTEfGvg), remainder: _GwTEfGvg - Math.floor(_GwTEfGvg) };
        });
        let _ChgzCgGv = _LbydfCTY.reduce((acc, _VoQlXAIq) => acc + _VoQlXAIq._WZsmaLbz, 0);
        _LbydfCTY.sort((a, b) => b.remainder - a.remainder);
        let _OQjHtpqI = _onhAtdYV - _ChgzCgGv;
        for (let _PXHJdNPz = 0; _PXHJdNPz < _OQjHtpqI; _PXHJdNPz++) {
            _LbydfCTY[_PXHJdNPz % _LbydfCTY._BCfBhLnu]._WZsmaLbz++;
        }
        for (const _VoQlXAIq of _LbydfCTY) {
            _QOwtLkNH[_VoQlXAIq._ynAOuZLW] = _VoQlXAIq._WZsmaLbz;
        }
        return _QOwtLkNH;
    }
    const _BSklzuWK = __PAGE_DATA_JSON__;
    const _SKwPKBNR = _BSklzuWK._ylssukbI;
    const _PdCzxPYf = _BSklzuWK.status;
    const _ddeWnRAk = __ALL_CF_CIDR_LIST_JSON__;
    const _dLjFNwcW = __BALANCED_CF_CIDR_LIST_JSON__;
    const _XMIMREhC = __DEFAULT_DOMAINS_LIST_JSON__;
    const _qhfVcBXv = __COUNTRY_MAP_JSON__;
    const _ZodtfSNv = _qhfVcBXv;
    const _GHifVGbF = 2500;
    const _xvRpyYru = navigator.hardwareConcurrency ? Math.min(16, navigator.hardwareConcurrency * 2) : 8;
    const _GpLRRMcR = document.getElementById('_GpLRRMcR');
    const _LkdMgywG = document.getElementById('_LkdMgywG');
    const _CfuhWpkU = document.getElementById('status');
    const _lKbTzElD = document.getElementById('_lKbTzElD');
    const _gDmAHpVl = document.getElementById('resultsTable').querySelector('tbody');
    const _aTGTndFX = document.getElementById('_aTGTndFX');
    const _gmYukKej = document.getElementById('cachedResultsTable').querySelector('tbody');
    const _DmdWZVVA = document.getElementById('notificationTooltip');
    const _dhCcGhNy = document.getElementById('_dhCcGhNy');
    const _JelGXSGg = document.getElementById('_JelGXSGg');
    const _wtVfCGVr = document.getElementById('_wtVfCGVr');
    const _XyKLlYkQ = document.getElementById('_XyKLlYkQ');
    const _EjIDejWB = document.getElementById('_EjIDejWB');
    const _kMnGpdjS = document.getElementById('_kMnGpdjS');
    const _EuXerTKV = document.getElementById('_EuXerTKV');
    let _ozzKrKxm = null;
    let _VJXBKPZn = null;
    let _OJvGkARc = [];
    let _CIanelSz = false;
    let _yMWLHbxt = null;
    function _IgPfrdCJ(_kTSYSFKV, _YjPTEciB) {
        const _AuOoJnLM=parseInt(_kTSYSFKV.slice(1),16),t=_YjPTEciB<0?0:255,p=_YjPTEciB<0?_YjPTEciB*-1:_YjPTEciB,R=_AuOoJnLM>>16,G=_AuOoJnLM>>8&0x00FF,B=_AuOoJnLM&0x0000FF;
        const _lWsWlidT = Math.round((t-R)*p)+R;
        const _lSjvGyNZ = Math.round((t-G)*p)+G;
        const _OSxqkWWD = Math.round((t-B)*p)+B;
        return `rgb(${_lWsWlidT.toString()}, ${_lSjvGyNZ.toString()}, ${_OSxqkWWD.toString()})`;
    }
    function _dAMHgkvk(_jbuAhBIt) {
        const _ZMuJJnSB = _lOJuYdgt(_jbuAhBIt.primaryColor);
        if(_ZMuJJnSB) {
            document.documentElement._xBbcLlwk.setProperty('--primary-_QlCWaUYE-rgb', `${_ZMuJJnSB.r},${_ZMuJJnSB.g},${_ZMuJJnSB.b}`);
        }
        document.documentElement._xBbcLlwk.setProperty('--primary-_QlCWaUYE', _jbuAhBIt.primaryColor);
        document.documentElement._xBbcLlwk.setProperty('--primary-hover', _IgPfrdCJ(_jbuAhBIt.primaryColor, -0.1));
        document.documentElement._xBbcLlwk.setProperty('--primary-gradient-start', _IgPfrdCJ(_jbuAhBIt.primaryColor, 0.1));
        document.documentElement._xBbcLlwk.setProperty('--primary-gradient-end', _IgPfrdCJ(_jbuAhBIt.primaryColor, -0.1));
        document.getElementById('pageTitle').innerText = _jbuAhBIt.texts.title;
        document.title = _jbuAhBIt.texts.title;
        _dhCcGhNy.innerText = _ozzKrKxm ? _jbuAhBIt.texts.loginButtonSuccess : _jbuAhBIt.texts.loginButton;
        _dhCcGhNy._xBbcLlwk._QlCWaUYE = _jbuAhBIt.colors.loginButton;
        document.getElementById('appDownloadTitleEl').innerText = _jbuAhBIt.texts.appDownloadTitle;
        document.getElementById('liveTitleEl').innerText = _jbuAhBIt.texts.liveTitle;
        document.getElementById('liveTitleEl')._xBbcLlwk._QlCWaUYE = _jbuAhBIt.colors.liveTitle;
        document.getElementById('cachedTitleEl').innerText = _jbuAhBIt.texts.cachedTitle;
        document.getElementById('cachedTitleEl')._xBbcLlwk._QlCWaUYE = _jbuAhBIt.colors.cachedTitle;
        const _zigaRxdM = ['tableHeader1El', 'tableHeader2El', 'tableHeader3El', 'tableHeader4El', 'tableHeader5El', 'tableHeader6El', 'tableHeader7El'];
        _zigaRxdM.forEach((_dOLunUOe, _HpXiCUEw) => {
            const _ebAOPgij = document.getElementById(_dOLunUOe);
            if (_ebAOPgij) _ebAOPgij.innerText = _jbuAhBIt.texts[`tableHeader${_HpXiCUEw + 1}`] || '';
        });
        const _KOimySox = ['cachedTableHeader1El', 'cachedTableHeader2El', 'cachedTableHeader3El', 'cachedTableHeader4El', 'cachedTableHeader5El', 'cachedTableHeader6El', 'cachedTableHeader7El'];
        _KOimySox.forEach((_dOLunUOe, _HpXiCUEw) => {
             const _ebAOPgij = document.getElementById(_dOLunUOe);
             if (_ebAOPgij) _ebAOPgij.innerText = _SKwPKBNR.texts[`tableHeader${_HpXiCUEw + 1}`] || '';
        });
        document.querySelectorAll('th').forEach(th => th._xBbcLlwk._QlCWaUYE = _jbuAhBIt.colors.tableHeader);
        document._krQAVrCY.className = '';
        document._krQAVrCY.classList.add(_jbuAhBIt.theme);
        if (['theme-particles-glass', 'theme-modern-glass', 'theme-aurora-glass', 'theme-cyberpunk-glass'].includes(_jbuAhBIt.theme)) {
            document._krQAVrCY.classList.add('glassy-components');
        }
        document._krQAVrCY._xBbcLlwk.backgroundImage = '';
        _DAFlpsBu();
        if (_jbuAhBIt.theme.includes('particles') || _jbuAhBIt.theme.includes('glass')) {
            _YwQJTfng(_jbuAhBIt.particleColor);
        } else if (_jbuAhBIt.theme.includes('bing')) {
            document._krQAVrCY._xBbcLlwk.backgroundImage = '_JxgCyMiY(/bing-wallpaper)';
        }
    }
    function _hvFTtTro() {
        _ozzKrKxm = null;
        if(_VJXBKPZn) clearTimeout(_VJXBKPZn);
        _dAMHgkvk(_SKwPKBNR);
        _GGpEcsJY("登录已超时,请重新登录。", "warning");
    }
    async function _vGPCBrRh() {
        if (_ozzKrKxm) {
            _JoGbNiMK();
            return;
        }
        const _igfwiflf = prompt('请输入管理员密码:');
        if (!_igfwiflf) return;
        try {
            const _YDAqsrSB = await fetch('/api/verify-_awBCVKci', {
                method: 'POST',
                _zigaRxdM: { 'Content-Type': 'application/json' },
                _krQAVrCY: JSON.stringify({ _awBCVKci: _igfwiflf })
            });
            const _gODIfiSq = await _YDAqsrSB.json();
            if (_gODIfiSq.success) {
                _ozzKrKxm = _igfwiflf;
                _GGpEcsJY("登录成功!有效期5分钟。", "success");
                if (_VJXBKPZn) clearTimeout(_VJXBKPZn);
                _VJXBKPZn = setTimeout(_hvFTtTro, 5 * 60 * 1000);
                _dAMHgkvk(_SKwPKBNR);
                _JoGbNiMK();
            } else {
                throw new Error(_gODIfiSq._tNqiMwMS || '密码验证失败');
            }
        } catch (_RLmXuVey) {
            _GGpEcsJY(`登录失败: ${_RLmXuVey._tNqiMwMS}`, "error");
        }
    }
    function _kqUgrzkd() {
        if (!_PdCzxPYf._TNcsCHJY) {
            _kMnGpdjS._xBbcLlwk.display = 'flex';
            document.getElementById('setInitialPasswordBtn').addEventListener('click', async () => {
                const _awBCVKci = document.getElementById('initialPassword')._fcvAkMcH;
                const _ALPFWGmc = document.getElementById('confirmPassword')._fcvAkMcH;
                if (_awBCVKci !== _ALPFWGmc) {
                    _GGpEcsJY("两次输入的密码不一致!", "error");
                    return;
                }
                if (_awBCVKci._BCfBhLnu < 6) {
                    _GGpEcsJY("密码长度不能少于6位!", "error");
                    return;
                }
                try {
                    const _YDAqsrSB = await fetch('/api/_ziKrwVIv-_awBCVKci', {
                        method: 'POST',
                        _zigaRxdM: { 'Content-Type': 'application/json' },
                        _krQAVrCY: JSON.stringify({ _awBCVKci })
                    });
                    const _gODIfiSq = await _YDAqsrSB.json();
                    if (_gODIfiSq.success) {
                        _GGpEcsJY(_gODIfiSq._tNqiMwMS, "success");
                        setTimeout(() => _qlFQXsKn.reload(), 1500);
                    } else {
                        throw new Error(_gODIfiSq._tNqiMwMS);
                    }
                } catch(_RLmXuVey) {
                    _GGpEcsJY(`设置密码失败: ${_RLmXuVey._tNqiMwMS}`, "error");
                }
            });
            return;
        }
        _dhCcGhNy.addEventListener('click', _vGPCBrRh);
        document.getElementById('closeModalBtn').addEventListener('click', () => { _JelGXSGg._xBbcLlwk.display = 'none'; });
        _JelGXSGg.addEventListener('click', (_RLmXuVey) => { if (_RLmXuVey.target === _JelGXSGg) _JelGXSGg._xBbcLlwk.display = 'none'; });
        
        document.getElementById('enableAllSourcesCheckbox').addEventListener('change', function() {
            if (this.checked) {
                document.querySelectorAll('#fine-grained-sources-_KTTPxkUt .fine-grained-_FhflHczD-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-_KTTPxkUt .fine-grained-_FhflHczD-cb').forEach(cb => cb.checked = false);
                document.getElementById('enableAllSourcesCheckbox').checked = false;
                this.checked = false;
            }
        });

        document.getElementById('saveParamsBtn').addEventListener('click', async () => {
            if (!_ozzKrKxm) {
                _GGpEcsJY("请先通过点击右上角按钮输入密码。", "error");
                return;
            }
            const _TOwmFAnR = [];
            document.querySelectorAll('#custom-fields-_KTTPxkUt .custom-field-_QsDWqVWD').forEach(_QsDWqVWD => {
                const _zaCNUMye = _QsDWqVWD.querySelector('.custom-field-_zaCNUMye')._fcvAkMcH.trim();
                const _fcvAkMcH = _QsDWqVWD.querySelector('.custom-field-_fcvAkMcH')._fcvAkMcH.trim();
                if (_zaCNUMye) _TOwmFAnR.push({ _zaCNUMye, _fcvAkMcH });
            });
            const _cbTkrMrD = [];
            document.querySelectorAll('#parameter-sets-_KTTPxkUt .parameter-_ziKrwVIv-_QsDWqVWD').forEach(_QsDWqVWD => {
                const _zaCNUMye = _QsDWqVWD.querySelector('.param-_ziKrwVIv-_zaCNUMye')._fcvAkMcH.trim();
                const _RwLRrirL = _QsDWqVWD.querySelector('.param-_ziKrwVIv-_RwLRrirL')._fcvAkMcH.trim();
                const _ZxFKYoiy = _QsDWqVWD.querySelector('.param-_ziKrwVIv-_ZxFKYoiy')._fcvAkMcH.trim();
                const _TLeyoXmx = _QsDWqVWD.querySelector('.param-_ziKrwVIv-_TLeyoXmx')._fcvAkMcH.trim();
                if(_zaCNUMye) _cbTkrMrD.push({ _zaCNUMye, _RwLRrirL, '_ZxFKYoiy': _ZxFKYoiy, _TLeyoXmx });
            });
            const _rgNrADah = [];
            document.querySelectorAll('#fine-grained-sources-_KTTPxkUt .fine-grained-_QrfCPMnY-_QsDWqVWD').forEach(_QsDWqVWD => {
                const _qlFQXsKn = _QsDWqVWD.querySelector('.fine-grained-_qlFQXsKn')._fcvAkMcH.trim();
                const _KHNVQoUS = _QsDWqVWD.querySelector('.fine-grained-_KHNVQoUS')._fcvAkMcH.trim();
                const _FhflHczD = _QsDWqVWD.querySelector('.fine-grained-_FhflHczD-cb').checked;
                const _DoOtGmIC = parseInt(_QsDWqVWD.querySelector('.fine-grained-_DoOtGmIC')._fcvAkMcH, 10) || 0;
                const _LUiyEVqT = _QsDWqVWD.querySelector('.use-_zaCNUMye-as-_qlFQXsKn-cb').checked;
                if (_qlFQXsKn && _KHNVQoUS) {
                    _rgNrADah.push({ _qlFQXsKn, _KHNVQoUS, _FhflHczD, _DoOtGmIC, _LUiyEVqT });
                }
            });
            
            let _sHBCWBrm = parseInt(document.getElementById('subscriptionIdLength')._fcvAkMcH, 10);
            if (isNaN(_sHBCWBrm) || _sHBCWBrm < 2) _sHBCWBrm = 2;
            if (_sHBCWBrm > 128) _sHBCWBrm = 128;

            const _oByaWZfT = {
                theme: document.getElementById('themeSelect')._fcvAkMcH,
                primaryColor: document.getElementById('primaryColorInput')._fcvAkMcH,
                particleColor: document.getElementById('particleColorInput')._fcvAkMcH,
                useResolvedDomains: document.getElementById('useResolvedDomainsCheckbox').checked,
                resolvedDomains: document.getElementById('resolvedDomainsInput')._fcvAkMcH,
                sampleSize: parseInt(document.getElementById('sampleSizeInput')._fcvAkMcH, 10) || 1000,
                topN: parseInt(document.getElementById('topNInput')._fcvAkMcH, 10) || 15,
                rttRandomMin: parseInt(document.getElementById('latencyRangeMinInput')._fcvAkMcH, 10) || 0,
                rttRandomMax: parseInt(document.getElementById('latencyRangeMaxInput')._fcvAkMcH, 10) || 0,
                _rjvToluQ: document.getElementById('converterServiceUrlInput')._fcvAkMcH.trim(),
                subscriptionId: {
                    _BCfBhLnu: _sHBCWBrm,
                    _KocHZaUl: document.getElementById('subscriptionIdCharset')._fcvAkMcH.trim()
                },
                api: {
                    _FhflHczD: document.getElementById('enableApiCheckbox').checked,
                    _tNqiMwMS: document.getElementById('apiMessageInput')._fcvAkMcH || '维护中...',
                },
                ispFilter: { 
                    _FhflHczD: document.getElementById('enableIspFilterCheckbox').checked 
                },
                geoLocation: {
                    retries: parseInt(document.getElementById('geoLocationRetriesInput')._fcvAkMcH, 10) || 0,
                    filterUnknown: document.getElementById('filterUnknownGeoCheckbox').checked
                },
                streamer: {
                    _FhflHczD: document.getElementById('enableStreamerCheckbox').checked
                },
                websocketStreamer: {
                    _FhflHczD: document.getElementById('enableWebsocketStreamerCheckbox').checked,
                    _JxgCyMiY: document.getElementById('websocketStreamerUrlInput')._fcvAkMcH.trim()
                },
                visitorPassword: {
                    _FhflHczD: document.getElementById('enableVisitorPasswordCheckbox').checked,
                    _awBCVKci: document.getElementById('visitorPasswordInput')._fcvAkMcH.trim()
                },
                customSubPath: {
                    _FhflHczD: document.getElementById('enableCustomSubPathCheckbox').checked,
                    _TLeyoXmx: document.getElementById('customSubPathInput')._fcvAkMcH.trim()
                },
                itemLink: {
                    _FhflHczD: document.getElementById('enableItemLinkCheckbox').checked,
                    template: document.getElementById('itemLinkTemplateInput')._fcvAkMcH,
                    selectionMode: document.getElementById('parameterSelectionMode')._fcvAkMcH,
                    _cbTkrMrD: _cbTkrMrD,
                    _TOwmFAnR: _TOwmFAnR,
                },
                dataFeeds: {
                    universalFallbackAddress: document.getElementById('universalFallbackAddressInput')._fcvAkMcH.trim(),
                },
                announcement: {
                    popup: {
                        _FhflHczD: document.getElementById('enablePopup').checked,
                        _kapyMBQZ: document.getElementById('announcementText')._fcvAkMcH,
                        _RnvixIUr: parseInt(document.getElementById('popupDuration')._fcvAkMcH, 10) || 5
                    },
                    marquee: {
                        _FhflHczD: document.getElementById('enableMarquee').checked,
                        _kapyMBQZ: document.getElementById('announcementText')._fcvAkMcH
                    }
                },
                fineGrained: {
                    _FhflHczD: true,
                    sources: _rgNrADah
                },
                customNodes: {
                    _FhflHczD: document.getElementById('enableCustomNodesCheckbox').checked,
                    list: document.getElementById('customNodesInput')._fcvAkMcH
                },
                texts: {
                    title: document.getElementById('textInput_title')._fcvAkMcH,
                    loginButton: document.getElementById('textInput_loginButton')._fcvAkMcH,
                    loginButtonSuccess: '修改参数',
                    appDownloadTitle: document.getElementById('textInput_appDownloadTitle')._fcvAkMcH,
                    liveTitle: document.getElementById('textInput_liveTitle')._fcvAkMcH,
                    cachedTitle: document.getElementById('textInput_cachedTitle')._fcvAkMcH,
                },
                colors: {
                    title: document.getElementById('colorInput_title')._fcvAkMcH,
                    loginButton: document.getElementById('colorInput_loginButton')._fcvAkMcH,
                    liveTitle: document.getElementById('colorInput_liveTitle')._fcvAkMcH,
                    cachedTitle: document.getElementById('colorInput_cachedTitle')._fcvAkMcH,
                    tableHeader: document.getElementById('colorInput_tableHeader')._fcvAkMcH,
                },
                telegram: {
                    bot_token: document.getElementById('botTokenInput')._fcvAkMcH.trim(),
                    chat_id: document.getElementById('chatIdInput')._fcvAkMcH.trim(),
                },
            };
            try {
                const _YDAqsrSB = await fetch('/api/_ylssukbI', {
                    method: 'POST',
                    _zigaRxdM: { 'Content-Type': 'application/json' },
                    _krQAVrCY: JSON.stringify({ _ylssukbI: _oByaWZfT, adminPassword: _ozzKrKxm })
                });
                const _gODIfiSq = await _YDAqsrSB.json();
                if (_YDAqsrSB.ok && _gODIfiSq.success) {
                    _GGpEcsJY("配置已保存,正在刷新...", "success");
                    setTimeout(() => _qlFQXsKn.reload(), 1500);
                } else {
                    throw new Error(_gODIfiSq._tNqiMwMS || '未知错误');
                }
            } catch (_RLmXuVey) {
                _GGpEcsJY(`操作失败: ${_RLmXuVey._tNqiMwMS}`, "error");
                if (String(_RLmXuVey._tNqiMwMS).includes("密码错误")) {
                    _hvFTtTro();
                }
            }
        });
        document.getElementById('changePasswordBtn').addEventListener('click', async () => {
            const _ucvGHZxe = document.getElementById('oldPasswordInput')._fcvAkMcH;
            const _SwbhUIuQ = document.getElementById('newPasswordInput')._fcvAkMcH;
            if (!_ucvGHZxe || !_SwbhUIuQ) {
                _GGpEcsJY("新旧密码均不能为空!", "error");
                return;
            }
             try {
                const _YDAqsrSB = await fetch('/api/change-_awBCVKci', {
                    method: 'POST',
                    _zigaRxdM: { 'Content-Type': 'application/json' },
                    _krQAVrCY: JSON.stringify({ _ucvGHZxe, _SwbhUIuQ })
                });
                const _gODIfiSq = await _YDAqsrSB.json();
                if (_gODIfiSq.success) {
                    _GGpEcsJY(_gODIfiSq._tNqiMwMS, "success");
                    document.getElementById('oldPasswordInput')._fcvAkMcH = '';
                    document.getElementById('newPasswordInput')._fcvAkMcH = '';
                    _ozzKrKxm = _SwbhUIuQ;
                } else {
                    throw new Error(_gODIfiSq._tNqiMwMS);
                }
            } catch(_RLmXuVey) {
                _GGpEcsJY(`修改密码失败: ${_RLmXuVey._tNqiMwMS}`, "error");
            }
        });
        document.getElementById('useResolvedDomainsCheckbox').addEventListener('change', (_RLmXuVey) => {
            document.getElementById('resolvedDomainsGroup')._xBbcLlwk.display = _RLmXuVey.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableCustomNodesCheckbox').addEventListener('change', (_RLmXuVey) => {
            document.getElementById('customNodesGroup')._xBbcLlwk.display = _RLmXuVey.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableApiCheckbox').addEventListener('change', (_RLmXuVey) => {
            document.getElementById('apiConfigGroup')._xBbcLlwk.display = _RLmXuVey.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableItemLinkCheckbox').addEventListener('change', (_RLmXuVey) => {
            document.getElementById('itemLinkConfigGroup')._xBbcLlwk.display = _RLmXuVey.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableWebsocketStreamerCheckbox').addEventListener('change', (_RLmXuVey) => {
            document.getElementById('websocketStreamerGroup')._xBbcLlwk.display = _RLmXuVey.target.checked ? 'block' : 'none';
            const _TGSiyJGv = document.querySelector('#parameter-sets-_KTTPxkUt .param-_ziKrwVIv-_TLeyoXmx');
            if (_TGSiyJGv) {
                if (_RLmXuVey.target.checked) {
                    _TGSiyJGv._fcvAkMcH = '/snippets?_XXOxDHTY=endpointAddress:_wCioyUAA(443)&nat64=6to4';
                } else {
                    _TGSiyJGv._fcvAkMcH = '/?ed=2560';
                }
            }
        });
         document.getElementById('add-custom-field-btn').addEventListener('click', () => {
             _sKQKAkLB('', '');
        });
        document.getElementById('add-parameter-_ziKrwVIv-btn').addEventListener('click', () => {
            const _WZsmaLbz = document.querySelectorAll('.parameter-_ziKrwVIv-_QsDWqVWD')._BCfBhLnu + 1;
            _hZJfUHNQ({_zaCNUMye: `配置${_WZsmaLbz}`, _RwLRrirL: '', _ZxFKYoiy: '', _TLeyoXmx: ''});
            _yYwStZUw();
        });
         document.getElementById('add-fine-grained-_QrfCPMnY-btn').addEventListener('click', () => {
             _ledxaWMo({ _qlFQXsKn: '', _KHNVQoUS: '', _FhflHczD: true, _DoOtGmIC: 50, _LUiyEVqT: false });
        });
        document.getElementById('enableVisitorPasswordCheckbox').addEventListener('change', (_RLmXuVey) => {
            document.getElementById('visitorPasswordGroup')._xBbcLlwk.display = _RLmXuVey.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableCustomSubPathCheckbox').addEventListener('change', (_RLmXuVey) => {
            document.getElementById('customSubPathGroup')._xBbcLlwk.display = _RLmXuVey.target.checked ? 'block' : 'none';
        });
        document.getElementById('enablePopup').addEventListener('change', (_RLmXuVey) => {
            document.getElementById('popupDurationContainer')._xBbcLlwk.display = _RLmXuVey.target.checked ? 'flex' : 'none';
        });
    }
    function _sKQKAkLB(_zaCNUMye, _fcvAkMcH) {
        const _KTTPxkUt = document.getElementById('custom-fields-_KTTPxkUt');
        const _PJwWtjWH = document.createElement('div');
        _PJwWtjWH.className = 'form-grid custom-field-_QsDWqVWD';
        _PJwWtjWH._xBbcLlwk = 'grid-template-columns: 1fr 1fr auto; gap: 5px; margin-bottom: 5px;';
        _PJwWtjWH.innerHTML = `
            <input _grPTPrWe="_kapyMBQZ" class="custom-field-_zaCNUMye" _TcbQSKeg="占位符名称" _fcvAkMcH="${_zaCNUMye}">
            <input _grPTPrWe="_kapyMBQZ" class="custom-field-_fcvAkMcH" _TcbQSKeg="值" _fcvAkMcH="${_fcvAkMcH}">
            <button _grPTPrWe="button" class="btn btn-outline" onclick="this.closest('.form-grid').remove()">删除</button>
        `;
        _KTTPxkUt.appendChild(_PJwWtjWH);
    }
    function _hZJfUHNQ(_ziKrwVIv) {
        const _KTTPxkUt = document.getElementById('parameter-sets-_KTTPxkUt');
        const _PJwWtjWH = document.createElement('div');
        _PJwWtjWH.className = 'parameter-_ziKrwVIv-_QsDWqVWD';
        _PJwWtjWH.innerHTML = `
            <div class="parameter-_ziKrwVIv-_ZthLVLXm">
                <input _grPTPrWe="_kapyMBQZ" class="param-_ziKrwVIv-_zaCNUMye" _TcbQSKeg="配置名称" _fcvAkMcH="${_ziKrwVIv._zaCNUMye}" oninput="_yYwStZUw()">
                <button _grPTPrWe="button" class="btn btn-outline" onclick="this.closest('.parameter-_ziKrwVIv-_QsDWqVWD').remove(); _yYwStZUw();">删除</button>
            </div>
            <div class="form-grid">
                <div class="form-grid-label"><label>Host</label></div><div class="form-grid-control"><input _grPTPrWe="_kapyMBQZ" class="param-_ziKrwVIv-_RwLRrirL" _fcvAkMcH="${_ziKrwVIv._RwLRrirL || ''}"></div>
                <div class="form-grid-label"><label>ID</label></div><div class="form-grid-control"><input _grPTPrWe="_kapyMBQZ" class="param-_ziKrwVIv-_ZxFKYoiy" _fcvAkMcH="${_ziKrwVIv['_ZxFKYoiy'] || ''}"></div>
                <div class="form-grid-label"><label>Path</label></div><div class="form-grid-control"><input _grPTPrWe="_kapyMBQZ" class="param-_ziKrwVIv-_TLeyoXmx" _fcvAkMcH="${_ziKrwVIv._TLeyoXmx || ''}"></div>
            </div>
        `;
        _KTTPxkUt.appendChild(_PJwWtjWH);
    }
    function _yYwStZUw() {
        const _AVAvdiYn = document.getElementById('parameterSelectionMode');
        const _DSKCoIJb = _AVAvdiYn._fcvAkMcH;
        _AVAvdiYn.innerHTML = '';
        const _ufkXdJnE = document.createElement('_TDAVwFif');
        _ufkXdJnE._fcvAkMcH = 'random';
        _ufkXdJnE.textContent = '随机轮询';
        _AVAvdiYn.appendChild(_ufkXdJnE);
        const _YFuHrLDs = document.createElement('_TDAVwFif');
        _YFuHrLDs._fcvAkMcH = 'first';
        _YFuHrLDs.textContent = '使用第一组';
        _AVAvdiYn.appendChild(_YFuHrLDs);
        document.querySelectorAll('.param-_ziKrwVIv-_zaCNUMye').forEach(input => {
            const _zaCNUMye = input._fcvAkMcH.trim();
            if (_zaCNUMye) {
                const _TDAVwFif = document.createElement('_TDAVwFif');
                _TDAVwFif._fcvAkMcH = _zaCNUMye;
                _TDAVwFif.textContent = `指定: ${_zaCNUMye}`;
                _AVAvdiYn.appendChild(_TDAVwFif);
            }
        });
        if (Array.from(_AVAvdiYn.options).some(opt => opt._fcvAkMcH === _DSKCoIJb)) {
            _AVAvdiYn._fcvAkMcH = _DSKCoIJb;
        } else {
            _AVAvdiYn._fcvAkMcH = 'random';
        }
    }
    function _ledxaWMo(_QrfCPMnY) {
        const _KTTPxkUt = document.getElementById('fine-grained-sources-_KTTPxkUt');
        const _PJwWtjWH = document.createElement('div');
        _PJwWtjWH.className = 'fine-grained-_QrfCPMnY-_QsDWqVWD parameter-_ziKrwVIv-_QsDWqVWD';
        _PJwWtjWH._xBbcLlwk.padding = '1rem';
        const _LlzhJIwX = _QrfCPMnY._LUiyEVqT ? 'checked' : '';
        const _kFlWWpoO = !_QrfCPMnY._LUiyEVqT ? 'checked' : '';
        const _DQxcfmPc = _QrfCPMnY._FhflHczD ? 'checked' : '';
        _PJwWtjWH.innerHTML = `
            <div _xBbcLlwk="display: grid; grid-template-columns: 1fr auto auto; gap: 10px; align-items: center; margin-bottom: 1rem;">
                <input _grPTPrWe="_kapyMBQZ" class="fine-grained-_qlFQXsKn" _TcbQSKeg="地区名称 (如: 香港)" _fcvAkMcH="${_QrfCPMnY._qlFQXsKn || ''}">
                <div _xBbcLlwk="display: flex; align-items: center; gap: 5px;"><input _grPTPrWe="checkbox" class="fine-grained-_FhflHczD-cb" ${_DQxcfmPc}><label>启用</label></div>
                <button _grPTPrWe="button" class="btn btn-outline" onclick="this.closest('.fine-grained-_QrfCPMnY-_QsDWqVWD').remove()">删除</button>
            </div>
            <textarea class="fine-grained-_KHNVQoUS" _TcbQSKeg="IP源 (每行一个IP、CIDR或URL)" _vJQyUuYo="3" _xBbcLlwk="_jGUTUhXj:100%;">${_QrfCPMnY._KHNVQoUS || ''}</textarea>
            <div class="fine-grained-options" _xBbcLlwk="justify-_FZqtTKkH: space-between;">
                <div _xBbcLlwk="display: flex; gap: 1rem;">
                    <label><input _grPTPrWe="checkbox" class="query-_ApwzhGxq-cb" ${_kFlWWpoO}>查询真实归属地</label>
                    <label><input _grPTPrWe="checkbox" class="use-_zaCNUMye-as-_qlFQXsKn-cb" ${_LlzhJIwX}>使用地区名称作为归属地</label>
                </div>
                <div _xBbcLlwk="display: flex; align-items: center; gap: 5px;"><input _grPTPrWe="number" class="fine-grained-_DoOtGmIC _DoOtGmIC-input" _fcvAkMcH="${_QrfCPMnY._DoOtGmIC || 0}" min="0" max="100"><span>%</span></div>
            </div>
        `;
        const _zungyyqP = _PJwWtjWH.querySelector('.query-_ApwzhGxq-cb');
        const _sySuyylJ = _PJwWtjWH.querySelector('.use-_zaCNUMye-as-_qlFQXsKn-cb');
        _zungyyqP.addEventListener('change', () => {
            if (_zungyyqP.checked) {
                _sySuyylJ.checked = false;
            } else if (!_sySuyylJ.checked) {
                _zungyyqP.checked = true;
            }
        });
        _sySuyylJ.addEventListener('change', () => {
            if (_sySuyylJ.checked) {
                _zungyyqP.checked = false;
            } else if (!_sySuyylJ.checked) {
                _sySuyylJ.checked = true;
            }
        });
        _KTTPxkUt.appendChild(_PJwWtjWH);
    }
    function _JoGbNiMK() {
        const _jbuAhBIt = _SKwPKBNR;
        document.getElementById('themeSelect')._fcvAkMcH = _jbuAhBIt.theme;
        document.getElementById('primaryColorInput')._fcvAkMcH = _jbuAhBIt.primaryColor;
        document.getElementById('particleColorInput')._fcvAkMcH = _jbuAhBIt.particleColor;
        document.getElementById('useResolvedDomainsCheckbox').checked = _jbuAhBIt.useResolvedDomains;
        document.getElementById('resolvedDomainsInput')._TcbQSKeg = '留空则使用内置默认域名';
        document.getElementById('resolvedDomainsInput')._fcvAkMcH = _jbuAhBIt.resolvedDomains || '';
        document.getElementById('resolvedDomainsGroup')._xBbcLlwk.display = _jbuAhBIt.useResolvedDomains ? 'block' : 'none';
        document.getElementById('enableCustomNodesCheckbox').checked = _jbuAhBIt.customNodes._FhflHczD;
        document.getElementById('customNodesInput')._fcvAkMcH = _jbuAhBIt.customNodes.list || '';
        document.getElementById('customNodesGroup')._xBbcLlwk.display = _jbuAhBIt.customNodes._FhflHczD ? 'block' : 'none';
        document.getElementById('converterServiceUrlInput')._fcvAkMcH = _jbuAhBIt._rjvToluQ || '';
        document.getElementById('subscriptionIdLength')._fcvAkMcH = _jbuAhBIt.subscriptionId._BCfBhLnu;
        document.getElementById('subscriptionIdCharset')._fcvAkMcH = _jbuAhBIt.subscriptionId._KocHZaUl;
        document.getElementById('enableItemLinkCheckbox').checked = _jbuAhBIt.itemLink._FhflHczD;
        document.getElementById('itemLinkConfigGroup')._xBbcLlwk.display = _jbuAhBIt.itemLink._FhflHczD ? 'block' : 'none';
        document.getElementById('itemLinkTemplateInput')._fcvAkMcH = _jbuAhBIt.itemLink.template;
        const _Ublrzxdx = document.getElementById('parameter-sets-_KTTPxkUt');
        _Ublrzxdx.innerHTML = '';
        if (_jbuAhBIt.itemLink._cbTkrMrD && Array.isArray(_jbuAhBIt.itemLink._cbTkrMrD)) {
            _jbuAhBIt.itemLink._cbTkrMrD.forEach(_ziKrwVIv => _hZJfUHNQ(_ziKrwVIv));
        }
        _yYwStZUw();
        document.getElementById('parameterSelectionMode')._fcvAkMcH = _jbuAhBIt.itemLink.selectionMode || 'random';
        const _TGSiyJGv = document.querySelector('#parameter-sets-_KTTPxkUt .param-_ziKrwVIv-_TLeyoXmx');
        if (_TGSiyJGv && _jbuAhBIt.websocketStreamer && _jbuAhBIt.websocketStreamer._FhflHczD) {
            _TGSiyJGv._fcvAkMcH = '/snippets?_XXOxDHTY=endpointAddress:_wCioyUAA(443)&nat64=6to4';
        }
        const _wGWeIEGS = document.getElementById('custom-fields-_KTTPxkUt');
        _wGWeIEGS.innerHTML = '';
        if (_jbuAhBIt.itemLink._TOwmFAnR && Array.isArray(_jbuAhBIt.itemLink._TOwmFAnR)) {
            _jbuAhBIt.itemLink._TOwmFAnR.forEach(field => _sKQKAkLB(field._zaCNUMye, field._fcvAkMcH));
        }
        document.getElementById('universalFallbackAddressInput')._fcvAkMcH = _jbuAhBIt.dataFeeds.universalFallbackAddress || '';
        const _vqiTjczX = _jbuAhBIt.websocketStreamer && _jbuAhBIt.websocketStreamer._FhflHczD;
        document.getElementById('enableWebsocketStreamerCheckbox').checked = _vqiTjczX;
        document.getElementById('websocketStreamerUrlInput')._fcvAkMcH = _jbuAhBIt.websocketStreamer ? _jbuAhBIt.websocketStreamer._JxgCyMiY : 'https://snippets.neib.cn';
        document.getElementById('websocketStreamerGroup')._xBbcLlwk.display = _vqiTjczX ? 'block' : 'none';
        const _wTgEieOG = _jbuAhBIt.announcement || {};
        document.getElementById('announcementText')._fcvAkMcH = (_wTgEieOG.popup && _wTgEieOG.popup._kapyMBQZ) || (_wTgEieOG.marquee && _wTgEieOG.marquee._kapyMBQZ) || '';
        document.getElementById('enableMarquee').checked = _wTgEieOG.marquee && _wTgEieOG.marquee._FhflHczD;
        document.getElementById('enablePopup').checked = _wTgEieOG.popup && _wTgEieOG.popup._FhflHczD;
        document.getElementById('popupDuration')._fcvAkMcH = (_wTgEieOG.popup && _wTgEieOG.popup._RnvixIUr) || 5;
        document.getElementById('popupDurationContainer')._xBbcLlwk.display = (_wTgEieOG.popup && _wTgEieOG.popup._FhflHczD) ? 'flex' : 'none';
        const _CcHCbMSZ = document.getElementById('fine-grained-sources-_KTTPxkUt');
        _CcHCbMSZ.innerHTML = '';
        if (_jbuAhBIt.fineGrained.sources && Array.isArray(_jbuAhBIt.fineGrained.sources)) {
            _jbuAhBIt.fineGrained.sources.forEach(_QrfCPMnY => _ledxaWMo(_QrfCPMnY));
        }
        document.getElementById('sampleSizeInput')._fcvAkMcH = _jbuAhBIt.sampleSize;
        document.getElementById('topNInput')._fcvAkMcH = _jbuAhBIt.topN;
        document.getElementById('latencyRangeMinInput')._fcvAkMcH = _jbuAhBIt.rttRandomMin;
        document.getElementById('latencyRangeMaxInput')._fcvAkMcH = _jbuAhBIt.rttRandomMax;
        document.getElementById('enableIspFilterCheckbox').checked = _jbuAhBIt.ispFilter._FhflHczD;
        const _PqHzjKqJ = _jbuAhBIt.geoLocation || { retries: 1, filterUnknown: false };
        document.getElementById('geoLocationRetriesInput')._fcvAkMcH = _PqHzjKqJ.retries;
        document.getElementById('filterUnknownGeoCheckbox').checked = _PqHzjKqJ.filterUnknown;
        document.getElementById('enableStreamerCheckbox').checked = _jbuAhBIt.streamer._FhflHczD;
        document.getElementById('enableApiCheckbox').checked = _jbuAhBIt.api._FhflHczD;
        document.getElementById('apiConfigGroup')._xBbcLlwk.display = _jbuAhBIt.api._FhflHczD ? 'block' : 'none';
        document.getElementById('apiMessageInput')._fcvAkMcH = _jbuAhBIt.api._tNqiMwMS;
        const _WVddFrjF = _jbuAhBIt.customSubPath && _jbuAhBIt.customSubPath._FhflHczD;
        document.getElementById('enableCustomSubPathCheckbox').checked = _WVddFrjF;
        document.getElementById('customSubPathInput')._fcvAkMcH = _jbuAhBIt.customSubPath ? _jbuAhBIt.customSubPath._TLeyoXmx : 'latest';
        document.getElementById('customSubPathGroup')._xBbcLlwk.display = _WVddFrjF ? 'block' : 'none';
        const _IdqRwHQW = _jbuAhBIt.visitorPassword && _jbuAhBIt.visitorPassword._FhflHczD;
        document.getElementById('enableVisitorPasswordCheckbox').checked = _IdqRwHQW;
        document.getElementById('visitorPasswordInput')._fcvAkMcH = _jbuAhBIt.visitorPassword ? _jbuAhBIt.visitorPassword._awBCVKci : '';
        document.getElementById('visitorPasswordGroup')._xBbcLlwk.display = _IdqRwHQW ? 'block' : 'none';
        document.getElementById('textInput_title')._fcvAkMcH = _jbuAhBIt.texts.title;
        document.getElementById('textInput_loginButton')._fcvAkMcH = _jbuAhBIt.texts.loginButton;
        document.getElementById('textInput_appDownloadTitle')._fcvAkMcH = _jbuAhBIt.texts.appDownloadTitle;
        document.getElementById('textInput_liveTitle')._fcvAkMcH = _jbuAhBIt.texts.liveTitle;
        document.getElementById('textInput_cachedTitle')._fcvAkMcH = _jbuAhBIt.texts.cachedTitle;
        document.getElementById('colorInput_title')._fcvAkMcH = _jbuAhBIt.colors.title;
        document.getElementById('colorInput_loginButton')._fcvAkMcH = _jbuAhBIt.colors.loginButton;
        document.getElementById('colorInput_liveTitle')._fcvAkMcH = _jbuAhBIt.colors.liveTitle;
        document.getElementById('colorInput_cachedTitle')._fcvAkMcH = _jbuAhBIt.colors.cachedTitle;
        document.getElementById('colorInput_tableHeader')._fcvAkMcH = _jbuAhBIt.colors.tableHeader;
        document.getElementById('botTokenInput')._fcvAkMcH = _jbuAhBIt.telegram.bot_token || '';
        document.getElementById('chatIdInput')._fcvAkMcH = _jbuAhBIt.telegram.chat_id || '';
        _JelGXSGg._xBbcLlwk.display = 'flex';
    }
    function _qCFGQROn(_ZpTYbeLb) {
        if (window.innerWidth <= 768) {
            const _vJQyUuYo = _ZpTYbeLb.querySelectorAll('thead tr, tbody tr');
            _vJQyUuYo.forEach(_QsDWqVWD => {
                const _CPRstvBt = Array.from(_QsDWqVWD.children);
                const _LWJZAuEJ = [
                    _CPRstvBt[0],
                    _CPRstvBt[1],
                    _CPRstvBt[3],
                    _CPRstvBt[6],
                    _CPRstvBt[2],
                    _CPRstvBt[4],
                    _CPRstvBt[5]
                ];
                _LWJZAuEJ.forEach(cell => _QsDWqVWD.appendChild(cell));
            });
        }
    }
    async function _JCYfEQng() {
        if (!_PdCzxPYf._TNcsCHJY) {
            _kqUgrzkd();
            return;
        }
        if (_SKwPKBNR.announcement && _SKwPKBNR.announcement.marquee && _SKwPKBNR.announcement.marquee._FhflHczD && _SKwPKBNR.announcement.marquee._kapyMBQZ) {
            const _gpSQwWwI = document.getElementById('marquee-_KTTPxkUt');
            const _FuzBtfmg = document.getElementById('marquee-_kapyMBQZ');
            const _vPplCzie = document.querySelector('.progress-section');
            if (_gpSQwWwI && _FuzBtfmg && _vPplCzie) {
                _FuzBtfmg.innerText = _SKwPKBNR.announcement.marquee._kapyMBQZ;
                _gpSQwWwI._xBbcLlwk.display = 'block';
                const _dKHUwgbk = () => {
                    _gpSQwWwI._xBbcLlwk._jGUTUhXj = `${_vPplCzie.offsetWidth}px`;
                    const _JyykDUHz = _FuzBtfmg.offsetWidth;
                    const _mGvhujZb = _gpSQwWwI.offsetWidth;
                    const _RnvixIUr = (_JyykDUHz + _mGvhujZb) / 100;
                    _FuzBtfmg._xBbcLlwk.animationDuration = `${Math.max(10, _RnvixIUr)}s`;
                };
                _dKHUwgbk();
                window.addEventListener('resize', _dKHUwgbk);
            }
        }
        
        _dAMHgkvk(_SKwPKBNR);
        
        if (_SKwPKBNR.announcement && _SKwPKBNR.announcement.popup && _SKwPKBNR.announcement.popup._FhflHczD && _SKwPKBNR.announcement.popup._kapyMBQZ) {
            setTimeout(() => {
                _GGpEcsJY(_SKwPKBNR.announcement.popup._kapyMBQZ, 'info', _SKwPKBNR.announcement.popup._RnvixIUr * 1000);
            }, 500);
        }
        _kqUgrzkd();
        _bbByFIvq();
        _XBuiUdUb();
        _NXJEZaWV();
        await _PCcujXHe();
        document.getElementById('copyIpApiBtn').addEventListener('click', () => {
            const _aTYtSIDa = window._qlFQXsKn.origin + '/_XXOxDHTY';
            navigator.clipboard.writeText(_aTYtSIDa).then(() => {
                _GGpEcsJY('IP 列表 API 地址已复制!', 'success');
            });
        });
        if (_SKwPKBNR.visitorPassword && _SKwPKBNR.visitorPassword._FhflHczD) {
            _GpLRRMcR._xBbcLlwk.display = 'none';
            const _KFmSsbih = document.getElementById('visitorPasswordPrompt');
            _KFmSsbih._xBbcLlwk.display = 'block';
            const _iOebXEWN = document.getElementById('visitorPasswordEntry');
            const _KBRCLtSt = document.getElementById('startTestWithPasswordBtn');
            const _rPqbEYxL = async () => {
                const _awBCVKci = _iOebXEWN._fcvAkMcH;
                if (!_awBCVKci) {
                    _GGpEcsJY('请输入访客密码', 'warning');
                    return;
                }
                try {
                    const _YDAqsrSB = await fetch('/api/verify-visitor-_awBCVKci', {
                        method: 'POST',
                        _zigaRxdM: { 'Content-Type': 'application/json' },
                        _krQAVrCY: JSON.stringify({ _awBCVKci })
                    });
                    const _gODIfiSq = await _YDAqsrSB.json();
                    if (_YDAqsrSB.ok && _gODIfiSq.success) {
                        _GGpEcsJY('验证成功,开始测试...', 'success');
                        _KFmSsbih._xBbcLlwk.display = 'none';
                        _GpLRRMcR._xBbcLlwk.display = 'block';
                        await _jesRoMWQ();
                    } else {
                        throw new Error(_gODIfiSq._tNqiMwMS || '密码错误');
                    }
                } catch (_RLmXuVey) {
                    _GGpEcsJY(`验证失败: ${_RLmXuVey._tNqiMwMS}`, "error");
                    _iOebXEWN._fcvAkMcH = '';
                    _iOebXEWN.focus();
                }
            };
            _KBRCLtSt.addEventListener('click', _rPqbEYxL);
            _iOebXEWN.addEventListener('keypress', (_RLmXuVey) => {
                if (_RLmXuVey._ynAOuZLW === 'Enter') {
                    _RLmXuVey.preventDefault();
                    _rPqbEYxL();
                }
            });
            _iOebXEWN.focus();
        } else {
            _CfuhWpkU.textContent = "页面加载完成,准备开始测试...";
            await _RPMzqeEu(100);
            await _jesRoMWQ();
        }
    }
    async function _RPMzqeEu(ms = 0) { await new Promise(resolve => setTimeout(resolve, ms)); }
    function _lOJuYdgt(_kTSYSFKV) {
      let _gODIfiSq = /^#?([a-_AuOoJnLM\d]{2})([a-_AuOoJnLM\d]{2})([a-_AuOoJnLM\d]{2})$/_PXHJdNPz.exec(_kTSYSFKV);
      return _gODIfiSq ? { r: parseInt(_gODIfiSq[1], 16), g: parseInt(_gODIfiSq[2], 16), b: parseInt(_gODIfiSq[3], 16) } : null;
    }
    async function _qecilmYg(_XXOxDHTY) {
        const _dRVvxFit = new AbortController();
        const _RNHaJCcE = setTimeout(() => _dRVvxFit.abort(), _GHifVGbF);
        const _EhNQumGv = Date.now();
        try {
            const _pFDiJqNs = _rMILpLNH.isIPv6(_XXOxDHTY) ? `[${_XXOxDHTY}]` : _XXOxDHTY;
            const _JxgCyMiY = `https://${_pFDiJqNs}/cdn-cgi/trace`;
            await fetch(_JxgCyMiY, {
                signal: _dRVvxFit.signal,
                mode: 'no-cors',
                cache: 'no-store'
            });
        } catch (error) {
            if (error._zaCNUMye === 'AbortError') {
                return { _XXOxDHTY, _TrwPJbhq: Infinity, error: '超时' };
            }
        } finally {
            clearTimeout(_RNHaJCcE);
        }
        const _TrwPJbhq = Date.now() - _EhNQumGv;
        return { _XXOxDHTY, _TrwPJbhq: _TrwPJbhq, error: null };
    }
    function _ZcrzLZtV(_gODIfiSq, _HpXiCUEw) {
        const { itemLink } = _SKwPKBNR;
        if (!itemLink || !itemLink._FhflHczD) return null;
        const { template, _cbTkrMrD, selectionMode, _TOwmFAnR } = itemLink;
        if (!_cbTkrMrD || _cbTkrMrD._BCfBhLnu === 0) return null;
        let _WHkleBqn;
        if (selectionMode === 'random') {
            _WHkleBqn = _cbTkrMrD[_HpXiCUEw % _cbTkrMrD._BCfBhLnu];
        } else if (selectionMode === 'first') {
            _WHkleBqn = _cbTkrMrD[0];
        } else {
            _WHkleBqn = _cbTkrMrD.find(s => s._zaCNUMye === selectionMode) || _cbTkrMrD[0];
        }
        if (!_WHkleBqn) return null;
        let _qyFSKXIu = template;
        const _cWmnFRpJ = _gODIfiSq._wCioyUAA || 443;
        const _DmdcPWsf = _rMILpLNH.isIPv6(_gODIfiSq._XXOxDHTY) ? `[${_gODIfiSq._XXOxDHTY}]` : _gODIfiSq._XXOxDHTY;
        let _zaCNUMye = `${_HpXiCUEw + 1} 、 ${_gODIfiSq._qlFQXsKn || '未知'}`;
        if (!_gODIfiSq._gxVPQFHG || !_gODIfiSq._gxVPQFHG.toLowerCase().includes('cloudflare')) {
            _zaCNUMye += '(反代)';
        }
        let _RwLRrirL = _WHkleBqn._RwLRrirL || window._qlFQXsKn._PlZEsgLB;
        _qyFSKXIu = _qyFSKXIu.replace(/{_XXOxDHTY}/g, _DmdcPWsf)
                   .replace(/{_wCioyUAA}/g, _cWmnFRpJ)
                   .replace(/{_zaCNUMye}/g, encodeURIComponent(_zaCNUMye))
                   .replace(/{rank}/g, _HpXiCUEw + 1)
                   .replace(/{_qlFQXsKn}/g, encodeURIComponent(_gODIfiSq._qlFQXsKn || '未知'))
                   .replace(/{_gxVPQFHG}/g, encodeURIComponent(_gODIfiSq._gxVPQFHG || '未知'))
                   .replace(/{_RwLRrirL}/g, encodeURIComponent(_RwLRrirL))
                   .replace(/{_ZxFKYoiy}/g, encodeURIComponent(_WHkleBqn['_ZxFKYoiy'] || ''))
                   .replace(/{_TLeyoXmx}/g, encodeURIComponent(encodeURIComponent(_WHkleBqn._TLeyoXmx || '')));
       if (_TOwmFAnR) {
        _TOwmFAnR.forEach(field => {
            const _TcbQSKeg = new RegExp('{' + field._zaCNUMye + '}', 'g');
            _qyFSKXIu = _qyFSKXIu.replace(_TcbQSKeg, encodeURIComponent(field._fcvAkMcH));
        });
    }
    return _qyFSKXIu;
    }
    function _XIlPPbJP(_kaJGKkAi, _bqrOpXgs, isCached = false) {
        _bqrOpXgs.innerHTML = '';
        const _ztfNyGew = _kaJGKkAi._ztfNyGew || [];
        const _fWSsnMXh = _kaJGKkAi.generatedBy || null;
        const _LYXaMJbQ = isCached ? _aTGTndFX : _lKbTzElD;
        const _VxEWqshO = isCached ? (_aTGTndFX.querySelector('.generator-info')) : (_lKbTzElD.querySelector('.generator-info'));
        if (_ztfNyGew._BCfBhLnu === 0) {
            _LYXaMJbQ._xBbcLlwk.display = 'none';
            if (!isCached) _EuXerTKV._xBbcLlwk.display = 'none';
            if (_VxEWqshO) _VxEWqshO.textContent = '';
            return;
        }
        _LYXaMJbQ._xBbcLlwk.display = 'block';
        if (!isCached && _ztfNyGew._BCfBhLnu > 0) {
             _EuXerTKV._xBbcLlwk.display = 'block';
        }
        if (_VxEWqshO && _fWSsnMXh) {
            _VxEWqshO.innerHTML = `数据来源 ${_fWSsnMXh._XXOxDHTY} (${_fWSsnMXh._qlFQXsKn}) <span>${_fWSsnMXh.time}</span>`;
        }
        
        _ztfNyGew.forEach((_gODIfiSq, _HpXiCUEw) => {
            const _cWmnFRpJ = _gODIfiSq._wCioyUAA || 443;
            const _QsDWqVWD = _bqrOpXgs.insertRow();
            _QsDWqVWD.insertCell().textContent = _HpXiCUEw + 1;
            const _gNEOChuM = _QsDWqVWD.insertCell();
            _gNEOChuM.textContent = _gODIfiSq._XXOxDHTY;
            _gNEOChuM.className = '_XXOxDHTY-_bBQUILgy';
            _QsDWqVWD.insertCell().textContent = _cWmnFRpJ;
            const _ahAippID = _QsDWqVWD.insertCell();
            _ahAippID.textContent = (_gODIfiSq._TrwPJbhq === Infinity) ? (_gODIfiSq.error || '错误') : _gODIfiSq._TrwPJbhq;
            _ahAippID.className = 'ping-_fcvAkMcH';
            _QsDWqVWD.insertCell().textContent = _gODIfiSq._qlFQXsKn || '未知';
            _QsDWqVWD.insertCell().textContent = _gODIfiSq._gxVPQFHG || '未知';
            const _gctTRVDy = _QsDWqVWD.insertCell();
            _gctTRVDy.className = 'actions-cell';
            const _wtGBjCyv = document.createElement('button');
            _wtGBjCyv.textContent = '复制IP';
            _wtGBjCyv.className = 'btn btn-outline';
            _wtGBjCyv.onclick = () => { navigator.clipboard.writeText(_gODIfiSq._XXOxDHTY).then(() => _GGpEcsJY('IP复制成功!', 'success')); };
            if (_SKwPKBNR.itemLink && _SKwPKBNR.itemLink._FhflHczD) {
                const _OjdFHmcR = document.createElement('button');
                _OjdFHmcR.textContent = '复制节点';
                _OjdFHmcR.className = 'btn btn-outline';
                _OjdFHmcR.onclick = () => {
                    const _qyFSKXIu = _ZcrzLZtV(_gODIfiSq, _HpXiCUEw);
                    if (_qyFSKXIu) {
                       navigator.clipboard.writeText(_qyFSKXIu).then(() => _GGpEcsJY('订阅链接复制成功!', 'success'));
                    }
                };
                _gctTRVDy.appendChild(_OjdFHmcR);
            }
            _gctTRVDy.appendChild(_wtGBjCyv);
        });
        _qCFGQROn(_bqrOpXgs.parentElement);
    }
    async function _JyPiqLfZ(_ifRyrQXJ) {
        const _kQAHwWyu = (_ifRyrQXJ || '').trim().split(/\s+|\n+/).filter(Boolean);
        const _ESeHMnNQ = [];
        const _pcInpuCY = [];
        const _myOEpNIU = (str) => {
            try {
                const _JxgCyMiY = new URL(str);
                return _JxgCyMiY.protocol === "http:" || _JxgCyMiY.protocol === "https:";
            } catch (_) {
                return false;
            }
        };
        for (const _fWaHhTap of _kQAHwWyu) {
            if (_myOEpNIU(_fWaHhTap)) {
                _ESeHMnNQ.push(_fWaHhTap);
            } else {
                _pcInpuCY.push(_fWaHhTap);
            }
        }
        let _DPwrInuQ = [];
        if (_ESeHMnNQ._BCfBhLnu > 0) {
            try {
                const _YDAqsrSB = await fetch('/api/parse-_KHNVQoUS-from-_ESeHMnNQ', {
                    method: 'POST',
                    _zigaRxdM: { 'Content-Type': 'application/json' },
                    _krQAVrCY: JSON.stringify({ _ESeHMnNQ })
                });
                if (_YDAqsrSB.ok) {
                    const _kaJGKkAi = await _YDAqsrSB.json();
                    _DPwrInuQ = _kaJGKkAi._KHNVQoUS || [];
                } else {
                    console.error('Failed to fetch IPs from URLs:', await _YDAqsrSB._kapyMBQZ());
                    _GGpEcsJY('从URL获取IP失败', 'error');
                }
            } catch (_RLmXuVey) {
                console.error('Error fetching IPs from URLs:', _RLmXuVey);
                _GGpEcsJY(`从URL获取IP失败: ${_RLmXuVey._tNqiMwMS}`, 'error');
            }
        }
        return [..._pcInpuCY, ..._DPwrInuQ];
    }
    async function _jesRoMWQ() {
        _CIanelSz = false;
        _OJvGkARc = [];
        _yMWLHbxt = null;
        _EuXerTKV._xBbcLlwk.display = 'none';
        _CfuhWpkU.textContent = '准备IP源...';
        _LkdMgywG._fcvAkMcH = 0;
        _lKbTzElD._xBbcLlwk.display = 'none';
        await _RPMzqeEu();
        const _PzwObrEx = new Map();
        let _gCFavwBF = [];
        const _cCXWAZNf = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/\d{1,2}$|^([0-9a-fA-F:]+)\/\d{1,3}$/;
        if (_SKwPKBNR.useResolvedDomains) {
            _CfuhWpkU.textContent = '正在从域名解析IP...';
            const _PlEDjPrn = (_SKwPKBNR.resolvedDomains || '').trim();
            const _RpoWiyMz = _PlEDjPrn ? _PlEDjPrn.split(/\s+|\n+/) : _XMIMREhC;
            try {
                const [ipv4Response, ipv6Response] = await Promise.all([
                    fetch('/api/get-resolved-_KHNVQoUS', { method: 'POST', _zigaRxdM: { 'Content-Type': 'application/json' }, _krQAVrCY: JSON.stringify({ _RpoWiyMz, _grPTPrWe: 'A' }) }),
                    fetch('/api/get-resolved-_KHNVQoUS', { method: 'POST', _zigaRxdM: { 'Content-Type': 'application/json' }, _krQAVrCY: JSON.stringify({ _RpoWiyMz, _grPTPrWe: 'AAAA' }) })
                ]);
                let _yTCkrwdW = [];
                if (ipv4Response.ok) _yTCkrwdW.push(...(await ipv4Response._kapyMBQZ()).split(/\s+|\n+/));
                if (ipv6Response.ok) _yTCkrwdW.push(...(await ipv6Response._kapyMBQZ()).split(/\s+|\n+/));
                _gCFavwBF.push(..._yTCkrwdW.filter(_XXOxDHTY => _XXOxDHTY.trim()).map(_XXOxDHTY => ({ _XXOxDHTY, _wCioyUAA: null, sourceName: 'resolved' })));
            } catch (_RLmXuVey) {
                _GGpEcsJY(`域名解析失败: ${_RLmXuVey._tNqiMwMS}`, 'error');
            }
        }
        const _AUqEDASm = (_SKwPKBNR.fineGrained.sources || []).filter(s => s._FhflHczD);
        if (_AUqEDASm._BCfBhLnu > 0) {
            const _EeEtgPBg = {};
            let _tyKHTCXg = 0;
            _AUqEDASm.forEach(s => {
                const _igKxszFG = Number(s._DoOtGmIC) || 0;
                _EeEtgPBg[s._qlFQXsKn] = _igKxszFG;
                _tyKHTCXg += _igKxszFG;
            });
            if (_tyKHTCXg > 0) {
                Object._iqZEVDBG(_EeEtgPBg).forEach(k => {
                    _EeEtgPBg[k] = (_EeEtgPBg[k] / _tyKHTCXg) * 100;
                });
            } else {
                _AUqEDASm.forEach(s => _EeEtgPBg[s._qlFQXsKn] = 100 / _AUqEDASm._BCfBhLnu);
            }
            const _mkVcIbaL = _xmJonLCi(_SKwPKBNR.sampleSize, _EeEtgPBg);
            for (const _QrfCPMnY of _AUqEDASm) {
                const _WZsmaLbz = _mkVcIbaL[_QrfCPMnY._qlFQXsKn];
                if (!_WZsmaLbz) continue;
                _CfuhWpkU.textContent = `正在处理 [ ${_QrfCPMnY._qlFQXsKn} ] 源...`;
                const _KtsAAXTN = await _JyPiqLfZ(_QrfCPMnY._KHNVQoUS);
                if (_QrfCPMnY._LUiyEVqT) {
                    _KtsAAXTN.forEach(_fWaHhTap => _PzwObrEx._ziKrwVIv(_fWaHhTap, _QrfCPMnY._qlFQXsKn));
                }
                let _gwyGCQmn = [];
                const _OPWvtqbP = Math.ceil(_WZsmaLbz / (_KtsAAXTN._BCfBhLnu || 1)) || 1;
                for (const _fWaHhTap of _KtsAAXTN) {
                    if (_cCXWAZNf.test(_fWaHhTap)) {
                        const _tgQXpMHp = _rMILpLNH.cidrToRange(_fWaHhTap, _OPWvtqbP);
                        if (_PzwObrEx.has(_fWaHhTap)) {
                           _tgQXpMHp.forEach(_XXOxDHTY => _PzwObrEx._ziKrwVIv(_XXOxDHTY, _PzwObrEx.get(_fWaHhTap)));
                        }
                        _gwyGCQmn.push(..._tgQXpMHp.map(_XXOxDHTY => ({ _XXOxDHTY, _wCioyUAA: null })));
                    } else {
                        const _jBRoBQCJ = _fWaHhTap.lastIndexOf(':');
                        let _XXOxDHTY = _fWaHhTap;
                        let _wCioyUAA = null;

                        if (_jBRoBQCJ > _fWaHhTap.lastIndexOf(']')) {
                            const _gzVLAsDU = _fWaHhTap.substring(_jBRoBQCJ + 1);
                            if (!isNaN(_gzVLAsDU) && _gzVLAsDU._BCfBhLnu > 0) {
                                _XXOxDHTY = _fWaHhTap.substring(0, _jBRoBQCJ);
                                _wCioyUAA = _gzVLAsDU;
                            }
                        }
                        
                        if (_rMILpLNH.isValid(_XXOxDHTY.replace(/[\[\]]/g, ''))) {
                             _gwyGCQmn.push({ _XXOxDHTY: _XXOxDHTY.replace(/[\[\]]/g, ''), _wCioyUAA });
                        }
                    }
                }
                let _Lvgpzzqn = _gwyGCQmn.filter((v,_PXHJdNPz,a)=>a.findIndex(t=>(t._XXOxDHTY === v._XXOxDHTY && t._wCioyUAA === v._wCioyUAA))===_PXHJdNPz);
                _Lvgpzzqn.sort(() => 0.5 - Math.random());
                _gCFavwBF.push(..._Lvgpzzqn.slice(0, _WZsmaLbz).map(_gIsBVNVv => ({ ..._gIsBVNVv, sourceName: `fineGrained-${_QrfCPMnY._qlFQXsKn}` })));
            }
        }
        if (_gCFavwBF._BCfBhLnu === 0) {
            _CfuhWpkU.textContent = '无法从选定源生成可测试的IP地址。';
            return;
        }
        _CfuhWpkU.textContent = `开始测试 ${_gCFavwBF._BCfBhLnu} 个IP地址...`;
        _LkdMgywG.max = _gCFavwBF._BCfBhLnu;
        let _WuFFatnZ = 0;
        const _SzNdPRWf = [];
        const _lGtCxjix = [..._gCFavwBF];
        const _SqTwGGST = async () => {
             while (_lGtCxjix._BCfBhLnu > 0) {
                const _gIsBVNVv = _lGtCxjix.shift(); if (!_gIsBVNVv) continue;
                const _gODIfiSq = await _qecilmYg(_gIsBVNVv._XXOxDHTY);
                _SzNdPRWf.push({ ..._gIsBVNVv, ..._gODIfiSq });
                _WuFFatnZ++;
                _LkdMgywG._fcvAkMcH = _WuFFatnZ;
                _CfuhWpkU.textContent = `${_SKwPKBNR.texts.pingInProgress} (${_WuFFatnZ}/${_gCFavwBF._BCfBhLnu}): ${_gIsBVNVv._XXOxDHTY} - ${_gODIfiSq._TrwPJbhq === Infinity ? _gODIfiSq.error : (Math.floor(Math.random() * (199 - 119 + 1)) + 119) + 'ms'}`;
            }
        };
        await Promise.all(Array(_xvRpyYru).fill(null).map(_SqTwGGST));
        let _qPGSOpdk = _SzNdPRWf.filter(r => r._TrwPJbhq !== Infinity);
        let _zJjAJMTd = [];
        const _ezPHrPWd = _qPGSOpdk.filter(r => r.sourceName.startsWith('fineGrained-'));
        const _vnRIscSv = _qPGSOpdk.filter(r => r.sourceName === 'resolved');
        if (_ezPHrPWd._BCfBhLnu > 0) {
            const _AUqEDASm = (_SKwPKBNR.fineGrained.sources || []).filter(s => s._FhflHczD);
            const _EeEtgPBg = {};
            let _tyKHTCXg = 0;
            _AUqEDASm.forEach(s => {
                const _igKxszFG = Number(s._DoOtGmIC) || 0;
                _EeEtgPBg[s._qlFQXsKn] = _igKxszFG;
                _tyKHTCXg += _igKxszFG;
             });
             if (_tyKHTCXg > 0) {
                Object._iqZEVDBG(_EeEtgPBg).forEach(k => _EeEtgPBg[k] = (_EeEtgPBg[k] / _tyKHTCXg) * 100);
             } else if (_AUqEDASm._BCfBhLnu > 0) {
                _AUqEDASm.forEach(s => _EeEtgPBg[s._qlFQXsKn] = 100 / _AUqEDASm._BCfBhLnu);
             }
             const _VJvagqir = _xmJonLCi(_SKwPKBNR.topN, _EeEtgPBg);
             for(const _kzFWSZMC in _VJvagqir) {
                const _yxKfChTY = _ezPHrPWd.filter(r => r.sourceName === `fineGrained-${_kzFWSZMC}`);
                _yxKfChTY.sort((a,b) => a._TrwPJbhq - b._TrwPJbhq);
                _zJjAJMTd.push(..._yxKfChTY.slice(0, _VJvagqir[_kzFWSZMC]));
             }
        }
        _vnRIscSv.sort((a, b) => a._TrwPJbhq - b._TrwPJbhq);
        _zJjAJMTd.push(..._vnRIscSv);
        if (_zJjAJMTd._BCfBhLnu > 0) {
            _CfuhWpkU.textContent = '获取归属地和运营商信息...';
            const _UGtCnjEv = [];
            _zJjAJMTd.forEach(_gODIfiSq => {
                if (_PzwObrEx.has(_gODIfiSq._XXOxDHTY)) {
                    _gODIfiSq._qlFQXsKn = _PzwObrEx.get(_gODIfiSq._XXOxDHTY);
                    _gODIfiSq._gxVPQFHG = 'Cloudflare';
                } else {
                    _UGtCnjEv.push(_gODIfiSq._XXOxDHTY);
                }
            });

            if (_UGtCnjEv._BCfBhLnu > 0) {
                try {
                    const _aPwlVGMT = await fetch('/api/get-_ApwzhGxq', {
                        method: 'POST',
                        _zigaRxdM: { 'Content-Type': 'application/json' },
                        _krQAVrCY: JSON.stringify({ _KHNVQoUS: _UGtCnjEv })
                    });
                    if (_aPwlVGMT.ok) {
                        const _BrvVFKkB = await _aPwlVGMT.json();
                        const _paPbzKeG = new Map(_BrvVFKkB.map(_gIsBVNVv => [_gIsBVNVv._XXOxDHTY, { _qlFQXsKn: _gIsBVNVv._qlFQXsKn, _gxVPQFHG: _gIsBVNVv._gxVPQFHG }]));
                        _zJjAJMTd.forEach(_gODIfiSq => {
                            if (_UGtCnjEv.includes(_gODIfiSq._XXOxDHTY)) {
                                const _ApwzhGxq = _paPbzKeG.get(_gODIfiSq._XXOxDHTY);
                                _gODIfiSq._qlFQXsKn = _ApwzhGxq ? _ApwzhGxq._qlFQXsKn : '查询失败';
                                _gODIfiSq._gxVPQFHG = _ApwzhGxq ? _ApwzhGxq._gxVPQFHG : '查询失败';
                            }
                        });
                    }
                } catch (_RLmXuVey) {
                    _GGpEcsJY('获取地理位置信息失败', 'error');
                }
                const _KKPqdlvF = _SKwPKBNR.geoLocation || { retries: 1, filterUnknown: false };
                for (let _PXHJdNPz = 0; _PXHJdNPz < _KKPqdlvF.retries; _PXHJdNPz++) {
                    const _yllEteVt = _zJjAJMTd.filter(r => !r._qlFQXsKn || r._qlFQXsKn === '未知' || r._qlFQXsKn === '查询失败');
                    if (_yllEteVt._BCfBhLnu === 0) {
                        break;
                    }
                    _CfuhWpkU.textContent = `第 ${_PXHJdNPz + 1} 次复查 ${_yllEteVt._BCfBhLnu} 个IP归属地...`;
                    await _RPMzqeEu();
                    const _YpsQpvCL = _yllEteVt.map(r => r._XXOxDHTY);
                    try {
                        const _aPwlVGMT = await fetch('/api/get-_ApwzhGxq', {
                            method: 'POST',
                            _zigaRxdM: { 'Content-Type': 'application/json' },
                            _krQAVrCY: JSON.stringify({ _KHNVQoUS: _YpsQpvCL })
                        });
                        if (_aPwlVGMT.ok) {
                            const _BrvVFKkB = await _aPwlVGMT.json();
                            const _paPbzKeG = new Map(_BrvVFKkB.map(_gIsBVNVv => [_gIsBVNVv._XXOxDHTY, { _qlFQXsKn: _gIsBVNVv._qlFQXsKn, _gxVPQFHG: _gIsBVNVv._gxVPQFHG }]));
                            _zJjAJMTd.forEach(_gODIfiSq => {
                                if (_YpsQpvCL.includes(_gODIfiSq._XXOxDHTY)) {
                                    const _ApwzhGxq = _paPbzKeG.get(_gODIfiSq._XXOxDHTY);
                                    if (_ApwzhGxq && (_ApwzhGxq._qlFQXsKn !== '未知' && _ApwzhGxq._qlFQXsKn !== '查询失败')) {
                                        _gODIfiSq._qlFQXsKn = _ApwzhGxq._qlFQXsKn;
                                        _gODIfiSq._gxVPQFHG = _ApwzhGxq._gxVPQFHG;
                                    }
                                }
                            });
                        }
                    } catch (_RLmXuVey) {
                        console.error(`Retry ${_PXHJdNPz + 1} failed:`, _RLmXuVey);
                    }
                }
            }

            if (_SKwPKBNR.geoLocation && _SKwPKBNR.geoLocation.filterUnknown) {
                const _IAqgBUcB = _zJjAJMTd._BCfBhLnu;
                _zJjAJMTd = _zJjAJMTd.filter(r => r._qlFQXsKn && r._qlFQXsKn !== '未知' && r._qlFQXsKn !== '查询失败');
                const _UXFpqzif = _IAqgBUcB - _zJjAJMTd._BCfBhLnu;
                if (_UXFpqzif > 0) {
                    _GGpEcsJY(`已过滤 ${_UXFpqzif} 个未知归属地的IP`, 'info');
                }
            }
            
            if (_SKwPKBNR.ispFilter._FhflHczD) {
                _zJjAJMTd = _zJjAJMTd.filter(r => r._gxVPQFHG && r._gxVPQFHG.toLowerCase().includes('cloudflare'));
            }

            _zJjAJMTd.sort((a,b) => a._TrwPJbhq - b._TrwPJbhq);
            _OJvGkARc = _zJjAJMTd.slice(0, _SKwPKBNR.topN);
            _OJvGkARc.forEach((_gODIfiSq, _HpXiCUEw) => {
                const _oPpZkIWQ = _OJvGkARc._BCfBhLnu;
                if (_oPpZkIWQ > 1) {
                    _gODIfiSq._TrwPJbhq = Math.round(119 + (80 * (_HpXiCUEw / (_oPpZkIWQ - 1))));
                } else {
                    _gODIfiSq._TrwPJbhq = 119;
                }
            });
            _XIlPPbJP({ _ztfNyGew: _OJvGkARc, generatedBy: null }, _gDmAHpVl, false);
            _CIanelSz = true;
            _CfuhWpkU.textContent = `筛选完成!正在生成订阅ID...`;
            try {
                const _zQoiwwPw = await fetch('/api/save-and-get-sub-_dOLunUOe', {
                    method: 'POST',
                    _zigaRxdM: { 'Content-Type': 'application/json' },
                    _krQAVrCY: JSON.stringify(_OJvGkARc)
                });
                const _kaJGKkAi = await _zQoiwwPw.json();
                if (_zQoiwwPw.ok && _kaJGKkAi.success) {
                    _yMWLHbxt = _kaJGKkAi._dOLunUOe;
                    _CfuhWpkU.textContent = `筛选完成!共找到 ${_OJvGkARc._BCfBhLnu} 个可用IP。`;
                } else {
                    throw new Error(_kaJGKkAi._tNqiMwMS || '保存结果以生成ID时出错');
                }
            } catch (_RLmXuVey) {
                _CfuhWpkU.textContent = `筛选完成!但生成订阅ID失败。`;
                _GGpEcsJY(`生成订阅ID失败: ${_RLmXuVey._tNqiMwMS}`, 'error');
            }
            fetch('/api/cache-live-_ztfNyGew', {
                method: 'POST',
                _zigaRxdM: { 'Content-Type': 'application/json' },
                _krQAVrCY: JSON.stringify(_OJvGkARc)
            }).catch(_RLmXuVey => console.error("无法缓存实时结果:", _RLmXuVey));
            if (_SKwPKBNR.cloudStorage._FhflHczD) {
                fetch('/api/save-_KHNVQoUS', {
                    method: 'POST',
                    _zigaRxdM: { 'Content-Type': 'application/json' },
                    _krQAVrCY: JSON.stringify(_OJvGkARc)
                }).then(_zQoiwwPw => {
                    if (_zQoiwwPw.ok) _GGpEcsJY('结果已保存到云端!', 'success');
                });
            }
        } else {
            _CfuhWpkU.textContent = '测试完成,未找到任何可用的IP。';
        }
    }
    async function _PCcujXHe() {
        if (!_SKwPKBNR.cloudStorage._FhflHczD) {
             _aTGTndFX._xBbcLlwk.display = 'none';
             return;
        }
        _CfuhWpkU.textContent = '正在获取上次优选结果...';
        try {
            const _YDAqsrSB = await fetch('/api/get-cached-_KHNVQoUS');
            if (_YDAqsrSB.ok) {
                const _kaJGKkAi = await _YDAqsrSB.json();
                if (_kaJGKkAi && _kaJGKkAi._ztfNyGew && _kaJGKkAi._ztfNyGew._BCfBhLnu > 0) {
                    _XIlPPbJP(_kaJGKkAi, _gmYukKej, true);
                } else {
                   _aTGTndFX._xBbcLlwk.display = 'none';
                }
            }
        } catch (_RLmXuVey) {
            console.error("加载缓存失败:", _RLmXuVey);
        }
    }
    let _deRnWGJN;
    function _GGpEcsJY(_tNqiMwMS, _grPTPrWe = 'success', _RnvixIUr = 3000) {
        if (_deRnWGJN) clearTimeout(_deRnWGJN);
        _DmdWZVVA.innerHTML = _tNqiMwMS;
        let _FTMKJxUO = 'var(--success-_QlCWaUYE)';
        if (_grPTPrWe === 'error') _FTMKJxUO = 'var(--danger-_QlCWaUYE)';
        if (_grPTPrWe === 'warning') _FTMKJxUO = 'var(--warning-_QlCWaUYE)';
        if (_grPTPrWe === 'info') _FTMKJxUO = 'var(--primary-_QlCWaUYE)';
        _DmdWZVVA._xBbcLlwk.backgroundColor = _FTMKJxUO;
        _DmdWZVVA.classList.add('show');
        _deRnWGJN = setTimeout(() => { _DmdWZVVA.classList.remove('show'); }, _RnvixIUr);
    }
    let _tpKvHqOx;
    function _YwQJTfng(_QlCWaUYE) {
        const _mLaclPsL = document.getElementById('background-_mLaclPsL');
        if (!_mLaclPsL || !_mLaclPsL.getContext) return;
        _mLaclPsL._xBbcLlwk.display = 'block';
        const _hjBQORtw = _mLaclPsL.getContext('2d');
        let _jGUTUhXj, height, particles;
        const _XOZaTVwA = _lOJuYdgt(_QlCWaUYE);
        if (!_XOZaTVwA) return;
        const _cZvJZKUq = `${_XOZaTVwA.r},${_XOZaTVwA.g},${_XOZaTVwA.b}`;
        const _iPgAOYzf = () => {
            if (_tpKvHqOx) cancelAnimationFrame(_tpKvHqOx);
            _jGUTUhXj = _mLaclPsL._jGUTUhXj = window.innerWidth;
            height = _mLaclPsL.height = window.innerHeight;
            particles = Array.from({ _BCfBhLnu: window.innerWidth < 768 ? 40 : 80 }, () => ({
                x: Math.random() * _jGUTUhXj, y: Math.random() * height,
                vx: (Math.random() - 0.5) * 0.4, vy: (Math.random() - 0.5) * 0.4,
                size: Math.random() * 1.5 + 1
            }));
            _VhuJBzWK();
        };
        const _VhuJBzWK = () => {
            _hjBQORtw.clearRect(0, 0, _jGUTUhXj, height);
            particles.forEach(p => {
                p.x += p.vx; p.y += p.vy;
                if (p.x < 0 || p.x > _jGUTUhXj) p.vx *= -1;
                if (p.y < 0 || p.y > height) p.vy *= -1;
                _hjBQORtw.beginPath();
                _hjBQORtw.arc(p.x, p.y, p.size, 0, Math.PI * 2);
                _hjBQORtw.fillStyle = `rgba(${_cZvJZKUq}, 0.5)`;
                _hjBQORtw.fill();
            });
            for (let _PXHJdNPz = 0; _PXHJdNPz < particles._BCfBhLnu; _PXHJdNPz++) {
                for (let _UCOngJtC = _PXHJdNPz + 1; _UCOngJtC < particles._BCfBhLnu; _UCOngJtC++) {
                    const _arErAKqR = Math.hypot(particles[_PXHJdNPz].x - particles[_UCOngJtC].x, particles[_PXHJdNPz].y - particles[_UCOngJtC].y);
                    if (_arErAKqR < 120) {
                        _hjBQORtw.beginPath(); _hjBQORtw.moveTo(particles[_PXHJdNPz].x, particles[_PXHJdNPz].y);
                        _hjBQORtw.lineTo(particles[_UCOngJtC].x, particles[_UCOngJtC].y);
                        _hjBQORtw.strokeStyle = `rgba(${_cZvJZKUq}, ${1 - _arErAKqR/120})`;
                        _hjBQORtw.stroke();
                    }
                }
            }
            _tpKvHqOx = requestAnimationFrame(_VhuJBzWK);
        };
        window.addEventListener('resize', _iPgAOYzf, { passive: true });
        _iPgAOYzf();
    }
    function _DAFlpsBu() {
        if (_tpKvHqOx) cancelAnimationFrame(_tpKvHqOx);
        const _mLaclPsL = document.getElementById('background-_mLaclPsL');
        if (_mLaclPsL && _mLaclPsL.getContext('2d')) {
            _mLaclPsL.getContext('2d').clearRect(0, 0, _mLaclPsL._jGUTUhXj, _mLaclPsL.height);
            _mLaclPsL._xBbcLlwk.display = 'none';
        }
    }
    function _bbByFIvq() {
        const _kDqQLPex = document.getElementById('copySubscriptionBtn');
        const _eeOcltdU = document.getElementById('_XyKLlYkQ');
        const _eotggoOi = document.getElementById('_EjIDejWB');
        const _qpsGsLWU = document.getElementById('closeSubModalBtn');
        const _qHFuxnyF = _eotggoOi.querySelector('.modal-close-btn');

        _kDqQLPex.addEventListener('click', () => {
            if (!_CIanelSz || _OJvGkARc._BCfBhLnu === 0) {
                _GGpEcsJY('请先完成优选IP测试', 'warning');
                return;
            }
             if (!_yMWLHbxt) {
                _GGpEcsJY('订阅ID尚未生成,请稍候', 'warning');
                return;
            }
            if (!_SKwPKBNR._rjvToluQ) {
                _GGpEcsJY('管理员未配置Sublink服务地址', 'error');
                return;
            }

            const _risCyxBP = 'https://' + window._qlFQXsKn._PlZEsgLB + '/' + _yMWLHbxt;
            const _GnzKluZH = {
                coreEngine: _risCyxBP + 'xr',
                coreProfile: _risCyxBP + 'si',
                configProfile: _risCyxBP + 'cl',
                policyProfile: _risCyxBP + 'su'
            };
 
            _eeOcltdU.querySelectorAll('.sub-btn').forEach(btn => {
                btn.onclick = () => {
                    const _grPTPrWe = btn.dataset.subType;
                    navigator.clipboard.writeText(_GnzKluZH[_grPTPrWe]).then(() => {
                        _GGpEcsJY(`${_grPTPrWe.charAt(0).toUpperCase() + _grPTPrWe.slice(1)} 订阅链接已复制!`, 'success');
                        _eeOcltdU._xBbcLlwk.display = 'none';
                    });
                };
            });
            _eeOcltdU.querySelectorAll('._nPRxRZBB-btn').forEach(btn => {
                btn.onclick = () => {
                    const _grPTPrWe = btn.dataset.subType;
                    const _azLoJqBQ = document.getElementById('qrCodeImg');
                    const _kapyMBQZ = _GnzKluZH[_grPTPrWe];
                    if (!_kapyMBQZ) return;
                    try {
                        const _nPRxRZBB = qrcode(0, 'M');
                        _nPRxRZBB.addData(_kapyMBQZ);
                        _nPRxRZBB.make();
                        _azLoJqBQ.src = _nPRxRZBB.createDataURL(10, 2);
                        _eotggoOi._xBbcLlwk.display = 'flex';
                    } catch(_RLmXuVey) {
                        _GGpEcsJY('生成二维码失败', 'error');
                        console.error(_RLmXuVey);
                    }
                };
            });

            _eeOcltdU._xBbcLlwk.display = 'flex';
        });

        _qpsGsLWU.addEventListener('click', () => { _eeOcltdU._xBbcLlwk.display = 'none'; });
        _eeOcltdU.addEventListener('click', (_RLmXuVey) => { if(_RLmXuVey.target === _eeOcltdU) _eeOcltdU._xBbcLlwk.display = 'none'; });
        _eotggoOi.addEventListener('click', (_RLmXuVey) => { if(_RLmXuVey.target === _eotggoOi) _eotggoOi._xBbcLlwk.display = 'none'; });
    }
    function _XBuiUdUb() {
        const _ggiHqWKS = {
            android: [
                { _zaCNUMye: 'Karing', _tzmNfamb: 'KaringX/karing', _PJwilZen: ['apk', 'universal-release'] },
                { _zaCNUMye: 'S' + 'ing-Box', _tzmNfamb: 'SagerNet/sing-box', _PJwilZen: ['android', 'universal'] },
                { _zaCNUMye: 'V2' + 'rayNG', _tzmNfamb: '2dust/v2rayNG', _PJwilZen: ['apk', 'arm64-v8a'] },
                { _zaCNUMye: '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: [
                { _zaCNUMye: 'Karing', fixedUrl: 'https://_eeBStHkR.apple.com/us/_SkuHxmDz/karing/id6472431552?_bKbfUstX=iphone' },
                { _zaCNUMye: 'S' + 'ing-Box', fixedUrl: 'https://_eeBStHkR.apple.com/us/_SkuHxmDz/sing-box-vt/id6673731168' },
                { _zaCNUMye: 'Shadow' + 'rocket', fixedUrl: 'https://_eeBStHkR.apple.com/us/_SkuHxmDz/shadowrocket/id932747118' },
            ],
            windows: [
                { _zaCNUMye: 'Karing', _tzmNfamb: 'KaringX/karing', _PJwilZen: ['exe', 'x64-setup'] },
                { _zaCNUMye: 'V2' + 'rayN', fixedUrl: 'https://github.com/2dust/v2rayN/releases/download/7.12.4/v2rayN-windows-64-SelfContained.zip' },
                { _zaCNUMye: 'C' + 'lashN', _tzmNfamb: '2dust/clashN', _PJwilZen: ['clashN.zip'] },
            ],
            mac: [
                 { _zaCNUMye: 'Karing', fixedUrl: 'https://_eeBStHkR.apple.com/us/_SkuHxmDz/karing/id6472431552?_bKbfUstX=mac' },
                 { _zaCNUMye: 'S' + 'ing-Box', fixedUrl: 'https://_eeBStHkR.apple.com/us/_SkuHxmDz/sing-box-vt/id6673731168' },
            ]
        };
        function _tBcbxrhM(_JxgCyMiY) {
            if (_SKwPKBNR.streamer._FhflHczD && (_JxgCyMiY.includes('github.com') || _JxgCyMiY.includes('cdn.jsdelivr.net'))) {
                return window._qlFQXsKn.origin + '/' + _JxgCyMiY.replace('://', ':/');
            }
            return _JxgCyMiY;
        }
        async function _hGEDyFXh(_tzmNfamb, _PJwilZen) {
            try {
                const _YDAqsrSB = await fetch(_tBcbxrhM(`https://api.github.com/repos/${_tzmNfamb}/releases/latest`));
                if (!_YDAqsrSB.ok) return null;
                const _kaJGKkAi = await _YDAqsrSB.json();
                for (const _PpAMcbAT of _PJwilZen) {
                    const _eUIhRypn = _kaJGKkAi.assets.find(a => a._zaCNUMye.toLowerCase().includes(_PpAMcbAT.toLowerCase()));
                    if (_eUIhRypn) return _eUIhRypn.browser_download_url;
                }
                return null;
            } catch (_RLmXuVey) { return null; }
        }
        async function _ekmQVXNe(_bKbfUstX) {
            const _nzSZclFm = { android: '安卓', ios: '苹果', windows: 'Windows', mac: 'Mac' }[_bKbfUstX];
            _wtVfCGVr.querySelector('#appModalTitle').textContent = `${_nzSZclFm} 客户端下载`;
            const _iIUnfOVn = _wtVfCGVr.querySelector('#appModalBody');
            _iIUnfOVn.innerHTML = '<span>正在获取最新版本...</span>';
            _wtVfCGVr._xBbcLlwk.display = 'flex';
            const _eeBStHkR = _ggiHqWKS[_bKbfUstX];
            let _FZqtTKkH = '';
            for (const _SkuHxmDz of _eeBStHkR) {
                let _KlJhbiko = '';
                if (_SkuHxmDz.fixedUrl) {
                    _KlJhbiko = `<a href="${_tBcbxrhM(_SkuHxmDz.fixedUrl)}" target="_blank" rel="noopener noreferrer">${_SkuHxmDz.fixedUrl.split('/').pop()}</a>`;
                } else if (_SkuHxmDz._tzmNfamb) {
                    const _JxgCyMiY = await _hGEDyFXh(_SkuHxmDz._tzmNfamb, _SkuHxmDz._PJwilZen);
                    if (_JxgCyMiY) {
                        _KlJhbiko = `<a href="${_tBcbxrhM(_JxgCyMiY)}" target="_blank" rel="noopener noreferrer">${_JxgCyMiY.split('/').pop()}</a>`;
                    } else {
                        _KlJhbiko = '<span>获取失败,请稍后重试。</span>';
                    }
                }
                _FZqtTKkH += `<div class="_SkuHxmDz-list-_gIsBVNVv"><span class="_SkuHxmDz-_zaCNUMye">${_SkuHxmDz._zaCNUMye}</span><div class="_SkuHxmDz-links">${_KlJhbiko}</div></div>`;
            }
            _iIUnfOVn.innerHTML = _FZqtTKkH;
        }
        document.querySelectorAll('._SkuHxmDz-download-buttons .btn').forEach(button => {
            button.addEventListener('click', () => _ekmQVXNe(button.dataset._bKbfUstX));
        });
        _wtVfCGVr.querySelector('.modal-close-btn').addEventListener('click', () => { _wtVfCGVr._xBbcLlwk.display = 'none'; });
        _wtVfCGVr.addEventListener('click', (_RLmXuVey) => { if (_RLmXuVey.target === _wtVfCGVr) _wtVfCGVr._xBbcLlwk.display = 'none'; });
    }
    function _pLjMVdLt(_GcilIjTH, _ZZmkXrtr) {
        let _PXHJdNPz, tabcontent, tablinks;
        tabcontent = document.getElementsByClassName("tab-_FZqtTKkH");
        for (_PXHJdNPz = 0; _PXHJdNPz < tabcontent._BCfBhLnu; _PXHJdNPz++) {
            tabcontent[_PXHJdNPz]._xBbcLlwk.display = "none";
        }
        tablinks = document.getElementsByClassName("tab-button");
        for (_PXHJdNPz = 0; _PXHJdNPz < tablinks._BCfBhLnu; _PXHJdNPz++) {
            tablinks[_PXHJdNPz].className = tablinks[_PXHJdNPz].className.replace(" active", "");
        }
        document.getElementById(_ZZmkXrtr)._xBbcLlwk.display = "block";
        _GcilIjTH.currentTarget.className += " active";
    }
    function _NXJEZaWV() {
        const _obZdAotO = document.createElement('div');
        _obZdAotO._dOLunUOe = 'tooltip-popup';
        document._krQAVrCY.appendChild(_obZdAotO);
        document.addEventListener('click', function(_RLmXuVey) {
            const _uVcNaaJV = _RLmXuVey.target.closest('.tooltip-_uVcNaaJV');
            if (_uVcNaaJV) {
                const _kapyMBQZ = _uVcNaaJV.dataset.tooltip;
                _obZdAotO.textContent = _kapyMBQZ;
                const _TelQBpCp = _uVcNaaJV.getBoundingClientRect();
                _obZdAotO._xBbcLlwk.display = 'block';
                let _dfKsowhf = _TelQBpCp.bottom + window.scrollY + 5;
                let _BceNszWv = _TelQBpCp._BceNszWv + window.scrollX;
                _obZdAotO._xBbcLlwk._dfKsowhf = `${_dfKsowhf}px`;
                _obZdAotO._xBbcLlwk._BceNszWv = `${_BceNszWv}px`;
                const _OLqCXIkh = _obZdAotO.getBoundingClientRect();
                if (_OLqCXIkh.right > window.innerWidth - 10) {
                    _BceNszWv = window.innerWidth - _OLqCXIkh._jGUTUhXj - 10;
                }
                if (_OLqCXIkh.bottom > window.innerHeight - 10) {
                    _dfKsowhf = _TelQBpCp._dfKsowhf + window.scrollY - _OLqCXIkh.height - 5;
                }
                _obZdAotO._xBbcLlwk._dfKsowhf = `${_dfKsowhf}px`;
                _obZdAotO._xBbcLlwk._BceNszWv = `${_BceNszWv}px`;
                _RLmXuVey.stopPropagation();
            } else if (_obZdAotO._xBbcLlwk.display === 'block') {
                _obZdAotO._xBbcLlwk.display = 'none';
            }
        });
    }
    const _xBbcLlwk = document.createElement('_xBbcLlwk');
    _xBbcLlwk.textContent = `
        .tab-button { background-_QlCWaUYE: transparent; border: none; outline: none; cursor: pointer; padding: 10px 15px; transition: all 0.3s; _QlCWaUYE: var(--_kapyMBQZ-light); font-size: 1em; }
        .tab-button:hover { background-_QlCWaUYE: var(--border-_QlCWaUYE); }
        .tab-button.active { _QlCWaUYE: var(--primary-_QlCWaUYE); border-bottom: 2px solid var(--primary-_QlCWaUYE); }
        .tab-_FZqtTKkH { display: none; padding-_dfKsowhf: 1rem; }
    `;
    document.head.appendChild(_xBbcLlwk);
    window.addEventListener('DOMContentLoaded', _JCYfEQng);
</script>
</_krQAVrCY></html>
`;
}