diff --git a/.github/update.log b/.github/update.log index 5b88d500dc..773c6335c9 100644 --- a/.github/update.log +++ b/.github/update.log @@ -1062,3 +1062,4 @@ Update On Mon Jul 14 20:43:09 CEST 2025 Update On Tue Jul 15 20:40:52 CEST 2025 Update On Wed Jul 16 20:41:54 CEST 2025 Update On Thu Jul 17 20:42:37 CEST 2025 +Update On Fri Jul 18 20:40:03 CEST 2025 diff --git a/clash-meta/go.mod b/clash-meta/go.mod index b8072ff86e..8bf0e0848e 100644 --- a/clash-meta/go.mod +++ b/clash-meta/go.mod @@ -27,11 +27,11 @@ require ( github.com/metacubex/randv2 v0.2.0 github.com/metacubex/sing v0.5.4-0.20250605054047-54dc6097da29 github.com/metacubex/sing-mux v0.3.2 - github.com/metacubex/sing-quic v0.0.0-20250628100430-24f13f1e846e + github.com/metacubex/sing-quic v0.0.0-20250718154553-1b193bec4cbb github.com/metacubex/sing-shadowsocks v0.2.11-0.20250621023810-0e9ef9dd0c92 github.com/metacubex/sing-shadowsocks2 v0.2.5-0.20250621023950-93d605a2143d github.com/metacubex/sing-shadowtls v0.0.0-20250503063515-5d9f966d17a2 - github.com/metacubex/sing-tun v0.4.7-0.20250717140042-aefff29eb853 + github.com/metacubex/sing-tun v0.4.7-0.20250718032855-bfa768693dca github.com/metacubex/sing-vmess v0.2.2 github.com/metacubex/sing-wireguard v0.0.0-20250503063753-2dc62acc626f github.com/metacubex/smux v0.0.0-20250503055512-501391591dee diff --git a/clash-meta/go.sum b/clash-meta/go.sum index a0c12b5c4a..a3134f1093 100644 --- a/clash-meta/go.sum +++ b/clash-meta/go.sum @@ -121,16 +121,16 @@ github.com/metacubex/sing v0.5.4-0.20250605054047-54dc6097da29 h1:SD9q025FNTaepu github.com/metacubex/sing v0.5.4-0.20250605054047-54dc6097da29/go.mod h1:ypf0mjwlZm0sKdQSY+yQvmsbWa0hNPtkeqyRMGgoN+w= github.com/metacubex/sing-mux v0.3.2 h1:nJv52pyRivHcaZJKk2JgxpaVvj1GAXG81scSa9N7ncw= github.com/metacubex/sing-mux v0.3.2/go.mod h1:3rt1soewn0O6j89GCLmwAQFsq257u0jf2zQSPhTL3Bw= -github.com/metacubex/sing-quic v0.0.0-20250628100430-24f13f1e846e h1:vGl4pQTL/4wZJGQgMOwIInPyI5KwJ1NmFOLrHwORGo0= -github.com/metacubex/sing-quic v0.0.0-20250628100430-24f13f1e846e/go.mod h1:B60FxaPHjR1SeQB0IiLrgwgvKsaoASfOWdiqhLjmMGA= +github.com/metacubex/sing-quic v0.0.0-20250718154553-1b193bec4cbb h1:U/m3h8lp/j7i8zFgfvScLdZa1/Y8dd74oO7iZaQq80s= +github.com/metacubex/sing-quic v0.0.0-20250718154553-1b193bec4cbb/go.mod h1:B60FxaPHjR1SeQB0IiLrgwgvKsaoASfOWdiqhLjmMGA= github.com/metacubex/sing-shadowsocks v0.2.11-0.20250621023810-0e9ef9dd0c92 h1:Y9ebcKya6ow7VHoESCN5+l4zZvg5eaL2IhI5LLCQxQA= github.com/metacubex/sing-shadowsocks v0.2.11-0.20250621023810-0e9ef9dd0c92/go.mod h1:/squZ38pXrYjqtg8qn+joVvwbpGNYQNp8yxKsMVbCto= github.com/metacubex/sing-shadowsocks2 v0.2.5-0.20250621023950-93d605a2143d h1:Ey3A1tA8lVkRbK1FDmwuWj/57Nr8JMdpoVqe45mFzJg= github.com/metacubex/sing-shadowsocks2 v0.2.5-0.20250621023950-93d605a2143d/go.mod h1:+ukTd0OPFglT3bnKAYTJWYPbuox6HYNXE235r5tHdUk= github.com/metacubex/sing-shadowtls v0.0.0-20250503063515-5d9f966d17a2 h1:gXU+MYPm7Wme3/OAY2FFzVq9d9GxPHOqu5AQfg/ddhI= github.com/metacubex/sing-shadowtls v0.0.0-20250503063515-5d9f966d17a2/go.mod h1:mbfboaXauKJNIHJYxQRa+NJs4JU9NZfkA+I33dS2+9E= -github.com/metacubex/sing-tun v0.4.7-0.20250717140042-aefff29eb853 h1:HJb4CS7XP3sjc4fDDnAlNN9393ewSCn9yuGXjmZ7bJc= -github.com/metacubex/sing-tun v0.4.7-0.20250717140042-aefff29eb853/go.mod h1:2YywXPWW8Z97kTH7RffOeykKzU+l0aiKlglWV1PAS64= +github.com/metacubex/sing-tun v0.4.7-0.20250718032855-bfa768693dca h1:YKUkPAkFbL6CxNwFuNTPExDjiRSGghCC8iusMwURoLs= +github.com/metacubex/sing-tun v0.4.7-0.20250718032855-bfa768693dca/go.mod h1:2YywXPWW8Z97kTH7RffOeykKzU+l0aiKlglWV1PAS64= github.com/metacubex/sing-vmess v0.2.2 h1:nG6GIKF1UOGmlzs+BIetdGHkFZ20YqFVIYp5Htqzp+4= github.com/metacubex/sing-vmess v0.2.2/go.mod h1:CVDNcdSLVYFgTHQlubr88d8CdqupAUDqLjROos+H9xk= github.com/metacubex/sing-wireguard v0.0.0-20250503063753-2dc62acc626f h1:Sr/DYKYofKHKc4GF3qkRGNuj6XA6c0eqPgEDN+VAsYU= diff --git a/clash-nyanpasu/.github/workflows/deps-build-linux.yaml b/clash-nyanpasu/.github/workflows/deps-build-linux.yaml index 23ec381b1f..09f8c4d78f 100644 --- a/clash-nyanpasu/.github/workflows/deps-build-linux.yaml +++ b/clash-nyanpasu/.github/workflows/deps-build-linux.yaml @@ -88,7 +88,7 @@ jobs: - name: Install Node latest uses: actions/setup-node@v4 with: - node-version: latest + node-version: 22 - uses: pnpm/action-setup@v4 name: Install pnpm diff --git a/clash-nyanpasu/.github/workflows/deps-build-macos.yaml b/clash-nyanpasu/.github/workflows/deps-build-macos.yaml index 05c827d8b6..4c1e07561d 100644 --- a/clash-nyanpasu/.github/workflows/deps-build-macos.yaml +++ b/clash-nyanpasu/.github/workflows/deps-build-macos.yaml @@ -68,7 +68,7 @@ jobs: - name: Install Node latest uses: actions/setup-node@v4 with: - node-version: latest + node-version: 22 - uses: denoland/setup-deno@v2 with: deno-version: v2.x diff --git a/clash-nyanpasu/.github/workflows/deps-build-windows-nsis.yaml b/clash-nyanpasu/.github/workflows/deps-build-windows-nsis.yaml index bc4905bc28..00d2b3e25d 100644 --- a/clash-nyanpasu/.github/workflows/deps-build-windows-nsis.yaml +++ b/clash-nyanpasu/.github/workflows/deps-build-windows-nsis.yaml @@ -88,7 +88,7 @@ jobs: - name: Install Node latest uses: actions/setup-node@v4 with: - node-version: latest + node-version: 22 - uses: pnpm/action-setup@v4 name: Install pnpm diff --git a/clash-nyanpasu/.github/workflows/deps-create-updater.yaml b/clash-nyanpasu/.github/workflows/deps-create-updater.yaml index 1ed635c293..1f52b3a55b 100644 --- a/clash-nyanpasu/.github/workflows/deps-create-updater.yaml +++ b/clash-nyanpasu/.github/workflows/deps-create-updater.yaml @@ -45,7 +45,7 @@ jobs: - name: Install Node latest uses: actions/setup-node@v4 with: - node-version: latest + node-version: 22 - uses: pnpm/action-setup@v4 name: Install pnpm diff --git a/clash-nyanpasu/.github/workflows/deps-message-telegram.yaml b/clash-nyanpasu/.github/workflows/deps-message-telegram.yaml index 36b60803fd..9361e102ba 100644 --- a/clash-nyanpasu/.github/workflows/deps-message-telegram.yaml +++ b/clash-nyanpasu/.github/workflows/deps-message-telegram.yaml @@ -27,7 +27,7 @@ jobs: - uses: actions/setup-node@v4 with: - node-version: latest + node-version: 22 - uses: pnpm/action-setup@v4 name: Install pnpm diff --git a/clash-nyanpasu/backend/Cargo.lock b/clash-nyanpasu/backend/Cargo.lock index ca23326125..e4b0fff3b1 100644 --- a/clash-nyanpasu/backend/Cargo.lock +++ b/clash-nyanpasu/backend/Cargo.lock @@ -1349,9 +1349,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.29" +version = "1.2.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c1599538de2394445747c8cf7935946e3cc27e9625f889d979bfb2aaf569362" +checksum = "deec109607ca693028562ed836a5f1c4b8bd77755c4e132fc5ce11b0b6211ae7" dependencies = [ "jobserver", "libc", @@ -1635,9 +1635,9 @@ dependencies = [ [[package]] name = "clipboard-win" -version = "5.4.0" +version = "5.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15efe7a882b08f34e38556b14f2fb3daa98769d06c7f0c1b076dfd0d983bc892" +checksum = "bde03770d3df201d4fb868f2c9c59e66a3e4e2bd06692a0fe701e7103c7e84d4" dependencies = [ "error-code", ] @@ -2322,7 +2322,7 @@ dependencies = [ [[package]] name = "dirs-utils" version = "0.1.0" -source = "git+https://github.com/libnyanpasu/nyanpasu-utils.git#cb483e2fb74c52a20f61724023adec2383179b99" +source = "git+https://github.com/libnyanpasu/nyanpasu-utils.git#b667b551a38076c483aa9aef432e9fc6a425ea4c" dependencies = [ "dirs 6.0.0", "thiserror 2.0.12", @@ -4006,7 +4006,7 @@ dependencies = [ "tokio", "tokio-rustls", "tower-service", - "webpki-roots 1.0.1", + "webpki-roots 1.0.2", ] [[package]] @@ -5405,7 +5405,7 @@ dependencies = [ [[package]] name = "network-utils" version = "0.1.0" -source = "git+https://github.com/libnyanpasu/nyanpasu-utils.git#cb483e2fb74c52a20f61724023adec2383179b99" +source = "git+https://github.com/libnyanpasu/nyanpasu-utils.git#b667b551a38076c483aa9aef432e9fc6a425ea4c" dependencies = [ "log", "tempfile", @@ -5763,7 +5763,7 @@ dependencies = [ [[package]] name = "nyanpasu-utils" version = "0.1.0" -source = "git+https://github.com/libnyanpasu/nyanpasu-utils.git#cb483e2fb74c52a20f61724023adec2383179b99" +source = "git+https://github.com/libnyanpasu/nyanpasu-utils.git#b667b551a38076c483aa9aef432e9fc6a425ea4c" dependencies = [ "camino", "constcat", @@ -6318,7 +6318,7 @@ dependencies = [ [[package]] name = "os-utils" version = "0.1.0" -source = "git+https://github.com/libnyanpasu/nyanpasu-utils.git#cb483e2fb74c52a20f61724023adec2383179b99" +source = "git+https://github.com/libnyanpasu/nyanpasu-utils.git#b667b551a38076c483aa9aef432e9fc6a425ea4c" dependencies = [ "nix 0.30.1", "shared_child", @@ -7672,7 +7672,7 @@ dependencies = [ "wasm-bindgen-futures", "wasm-streams", "web-sys", - "webpki-roots 1.0.1", + "webpki-roots 1.0.2", ] [[package]] @@ -8902,9 +8902,9 @@ dependencies = [ [[package]] name = "sysinfo" -version = "0.36.0" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aab138f5c1bb35231de19049060a87977ad23e04f2303e953bc5c2947ac7dec4" +checksum = "252800745060e7b9ffb7b2badbd8b31cfa4aa2e61af879d0a3bf2a317c20217d" dependencies = [ "libc", "memchr", @@ -10931,14 +10931,14 @@ version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" dependencies = [ - "webpki-roots 1.0.1", + "webpki-roots 1.0.2", ] [[package]] name = "webpki-roots" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8782dd5a41a24eed3a4f40b606249b3e236ca61adf1f25ea4d45c73de122b502" +checksum = "7e8983c3ab33d6fb807cfcdad2491c4ea8cbc8ed839181c7dfd9c67c83e261b2" dependencies = [ "rustls-pki-types", ] diff --git a/clash-nyanpasu/backend/tauri/src/core/clash/api.rs b/clash-nyanpasu/backend/tauri/src/core/clash/api.rs index 4049f867e0..fae3c9df46 100644 --- a/clash-nyanpasu/backend/tauri/src/core/clash/api.rs +++ b/clash-nyanpasu/backend/tauri/src/core/clash/api.rs @@ -1,7 +1,7 @@ use crate::config::Config; -use anyhow::{Result, bail}; +use anyhow::{Context, Result}; use indexmap::IndexMap; -use reqwest::{StatusCode, header::HeaderMap}; +use reqwest::{Method, StatusCode, header::HeaderMap}; use serde::{Deserialize, Serialize}; use serde_yaml::Mapping; use specta::Type; @@ -10,38 +10,27 @@ use std::{ fmt::{self, Display, Formatter}, }; use tracing_attributes::instrument; +use url::Url; /// PUT /configs /// path 是绝对路径 #[instrument] -pub async fn put_configs(path: &str) -> Result<()> { - let (url, headers) = clash_client_info()?; - let url = format!("{url}/configs"); +pub async fn put_configs(config_path: &str) -> Result<()> { + let path = "/configs"; let mut data = HashMap::new(); - data.insert("path", path); + data.insert("path", config_path); - let client = reqwest::ClientBuilder::new().no_proxy().build()?; - let builder = client.put(&url).headers(headers).json(&data); - let response = builder.send().await?.error_for_status()?; + let _ = perform_request((Method::PUT, path, Data(data))).await?; - match response.status() { - StatusCode::NO_CONTENT | StatusCode::ACCEPTED => Ok(()), - _ => { - bail!("failed to put configs") - } - } + Ok(()) } /// PATCH /configs #[instrument] pub async fn patch_configs(config: &Mapping) -> Result<()> { - let (url, headers) = clash_client_info()?; - let url = format!("{url}/configs"); - - let client = reqwest::ClientBuilder::new().no_proxy().build()?; - let builder = client.patch(&url).headers(headers.clone()).json(config); - builder.send().await?.error_for_status()?; + let path = "/configs"; + let _ = perform_request((Method::PATCH, path, Data(config))).await?; Ok(()) } @@ -121,14 +110,9 @@ impl From for ProxyItem { /// 获取代理列表 #[instrument] pub async fn get_proxies() -> Result { - let (url, headers) = clash_client_info()?; - let url = format!("{url}/proxies"); - - let client = reqwest::ClientBuilder::new().no_proxy().build()?; - let builder = client.get(&url).headers(headers); - let response = builder.send().await?.error_for_status()?; - - Ok(response.json::().await?) + let path = "/proxies"; + let resp: ProxiesRes = perform_request((Method::GET, path)).await?.json().await?; + Ok(resp) } /// GET /proxies/{name} @@ -139,14 +123,12 @@ pub async fn get_proxies() -> Result { #[allow(dead_code)] #[instrument] pub async fn get_proxy(name: String) -> Result { - let (url, headers) = clash_client_info()?; - let url = format!("{url}/proxies/{name}"); - - let client = reqwest::ClientBuilder::new().no_proxy().build()?; - let builder = client.get(&url).headers(headers); - let response = builder.send().await?.error_for_status()?; - - Ok(response.json::().await?) + let path = format!("/proxies/{name}"); + let resp: ProxyItem = perform_request((Method::GET, path.as_str())) + .await? + .json() + .await?; + Ok(resp) } /// PUT /proxies/{group} @@ -155,22 +137,13 @@ pub async fn get_proxy(name: String) -> Result { /// name: 代理名称 #[instrument] pub async fn update_proxy(group: &str, name: &str) -> Result<()> { - let (url, headers) = clash_client_info()?; - let url = format!("{url}/proxies/{group}"); + let path = format!("/proxies/{group}"); let mut data = HashMap::new(); data.insert("name", name); - let client = reqwest::ClientBuilder::new().no_proxy().build()?; - let builder = client.put(&url).headers(headers).json(&data); - let response = builder.send().await?.error_for_status()?; - - match response.status() { - StatusCode::ACCEPTED | StatusCode::NO_CONTENT => Ok(()), - status => { - bail!("failed to put proxy with status \"{status}\"") - } - } + let _ = perform_request((Method::PUT, path.as_str(), Data(data))).await?; + Ok(()) } #[derive(Debug, Clone, Deserialize, Serialize, Type)] @@ -223,14 +196,9 @@ pub struct ProvidersProxiesRes { /// 获取所有代理集合的所有代理信息 #[instrument] pub async fn get_providers_proxies() -> Result { - let (url, headers) = clash_client_info()?; - let url = format!("{url}/providers/proxies"); - - let client = reqwest::ClientBuilder::new().no_proxy().build()?; - let builder = client.get(&url).headers(headers); - let response = builder.send().await?.error_for_status()?; - - Ok(response.json::().await?) + let path = "/providers/proxies"; + let resp: ProvidersProxiesRes = perform_request((Method::GET, path)).await?.json().await?; + Ok(resp) } /// GET /providers/proxies/:name @@ -239,14 +207,12 @@ pub async fn get_providers_proxies() -> Result { #[allow(dead_code)] #[instrument] pub async fn get_providers_proxies_group(group: String) -> Result { - let (url, headers) = clash_client_info()?; - let url = format!("{url}/providers/proxies/{group}"); - - let client = reqwest::ClientBuilder::new().no_proxy().build()?; - let builder = client.get(&url).headers(headers); - let response = builder.send().await?.error_for_status()?; - - Ok(response.json::().await?) + let path = format!("/providers/proxies/{group}"); + let resp: ProxyProviderItem = perform_request((Method::GET, path.as_str())) + .await? + .json() + .await?; + Ok(resp) } /// PUT /providers/proxies/:name @@ -254,19 +220,9 @@ pub async fn get_providers_proxies_group(group: String) -> Result Result<()> { - let (url, headers) = clash_client_info()?; - let url = format!("{url}/providers/proxies/{name}"); - - let client = reqwest::ClientBuilder::new().no_proxy().build()?; - let builder = client.put(&url).headers(headers); - let response = builder.send().await?.error_for_status()?; - - match response.status() { - StatusCode::NO_CONTENT | StatusCode::ACCEPTED => Ok(()), - status => { - bail!("failed to put providers proxies name with status \"{status}\"") - } - } + let path = format!("/providers/proxies/{name}"); + let _ = perform_request((Method::PUT, path.as_str())).await?; + Ok(()) } /// GET /providers/proxies/:name/healthcheck @@ -275,14 +231,12 @@ pub async fn update_providers_proxies_group(name: &str) -> Result<()> { #[allow(dead_code)] #[instrument] pub async fn get_providers_proxies_healthcheck(name: String) -> Result { - let (url, headers) = clash_client_info()?; - let url = format!("{url}/providers/proxies/{name}/healthcheck"); - - let client = reqwest::ClientBuilder::new().no_proxy().build()?; - let builder = client.get(&url).headers(headers); - let response = builder.send().await?.error_for_status()?; - - Ok(response.json::().await?) + let path = format!("/providers/proxies/{name}/healthcheck"); + let resp: Mapping = perform_request((Method::GET, path.as_str())) + .await? + .json() + .await?; + Ok(resp) } #[derive(Default, Debug, Clone, Deserialize, Serialize, Type)] @@ -294,21 +248,18 @@ pub struct DelayRes { /// 获取代理延迟 #[instrument] pub async fn get_proxy_delay(name: String, test_url: Option) -> Result { - let (url, headers) = clash_client_info()?; - let url = format!("{url}/proxies/{name}/delay"); + let path = format!("/proxies/{name}/delay"); let default_url = "http://www.gstatic.com/generate_204"; let test_url = test_url .map(|s| if s.is_empty() { default_url.into() } else { s }) .unwrap_or(default_url.into()); - let client = reqwest::ClientBuilder::new().no_proxy().build()?; - let builder = client - .get(&url) - .headers(headers) - .query(&[("timeout", "10000"), ("url", &test_url)]); - let response = builder.send().await?.error_for_status()?; - - Ok(response.json::().await?) + let query = Query([("timeout", "10000"), ("url", &test_url)]); + let resp: DelayRes = perform_request((Method::GET, path.as_str(), query)) + .await? + .json() + .await?; + Ok(resp) } /// 根据clash info获取clash服务地址和请求头 @@ -329,6 +280,142 @@ fn clash_client_info() -> Result<(String, HeaderMap)> { Ok((server, headers)) } +/// The Request Parameters +struct PerformRequest { + method: reqwest::Method, + path: String, + query: Option, + data: Option, +} +/// A newtype wrapper for query parameters +struct Query(T); +/// A newtype wrapper for request body +struct Data(T); + +impl From<(reqwest::Method, &str)> for PerformRequest<(), ()> { + fn from((method, path): (reqwest::Method, &str)) -> Self { + Self { + method, + path: path.to_string(), + data: None, + query: None, + } + } +} + +impl From<(reqwest::Method, &str, Data)> for PerformRequest +where + T: Serialize, +{ + fn from((method, path, Data(data)): (reqwest::Method, &str, Data)) -> Self { + Self { + method, + path: path.to_string(), + data: Some(data), + query: None, + } + } +} + +impl From<(reqwest::Method, &str, Query)> for PerformRequest<(), T> +where + T: Serialize, +{ + fn from((method, path, Query(query)): (reqwest::Method, &str, Query)) -> Self { + Self { + method, + path: path.to_string(), + data: None, + query: Some(query), + } + } +} + +impl From<(reqwest::Method, &str, Query, Data)> for PerformRequest +where + D: Serialize, + Q: Serialize, +{ + fn from( + (method, path, Query(query), Data(data)): (reqwest::Method, &str, Query, Data), + ) -> Self { + Self { + method, + path: path.to_string(), + data: Some(data), + query: Some(query), + } + } +} + +#[instrument(skip_all, fields( + method = tracing::field::Empty, + url = tracing::field::Empty, + query = tracing::field::Empty, + data = tracing::field::Empty, +))] +async fn perform_request(param: impl Into>) -> Result +where + Q: Serialize + core::fmt::Debug, + D: Serialize + core::fmt::Debug, +{ + let PerformRequest { + method, + path, + data, + query, + } = param.into(); + let (host, headers) = clash_client_info().context("failed to get clash client info")?; + let base_url = Url::parse(&host).context("failed to parse host")?; + let opts = url::Url::options().base_url(Some(&base_url)); + let url = opts.parse(&path).context("failed to parse path")?; + + let span = tracing::Span::current(); + span.record("method", tracing::field::display(&method)); + span.record("url", tracing::field::display(&url)); + span.record("query", tracing::field::debug(&query)); + span.record("data", tracing::field::debug(&data)); + + async { + let client = reqwest::ClientBuilder::new().no_proxy().build()?; + let mut builder = client.request(method.clone(), url.clone()).headers(headers); + + if let Some(query) = &query { + builder = builder.query(query); + } + if let Some(data) = &data { + builder = builder.json(data); + } + + let resp = builder.send().await?; + + if let Err(err) = resp.error_for_status_ref() { + match err.status() { + // Try To parse error message + Some(StatusCode::BAD_REQUEST) => { + let Ok(bytes) = resp.bytes().await else { + return Err(err.into()); + }; + + let message: serde_json::Value = match serde_json::from_slice(&bytes) { + Ok(v) => v, + Err(_) => { + let s = String::from_utf8_lossy(&bytes); + serde_json::Value::String(s.to_string()) + } + }; + + return Err(err).context(format!("message: {message}")); + } + _ => return Err(err).context("clash api error"), + } + } + Ok(resp) + } + .await + .inspect_err(|e| tracing::error!(method = %method, url = %url, query = ?query, data = ?data, "failed to perform request: {:?}", e)) +} + /// 缩短clash的日志 #[instrument] pub fn parse_log(log: String) -> String { @@ -390,3 +477,24 @@ fn test_parse_check_output() { assert_eq!(res1, res3); } + +#[test] +fn test_path() { + let host = "http://127.0.0.1:9090"; + let path_with_prefix = "/configs"; + + let base_url = Url::parse(host).context("failed to parse host").unwrap(); + let opts = url::Url::options().base_url(Some(&base_url)); + let url = opts + .parse(path_with_prefix) + .context("failed to parse path") + .unwrap(); + assert_eq!(url.to_string(), "http://127.0.0.1:9090/configs"); + + let path_without_prefix = "configs"; + let url = opts + .parse(path_without_prefix) + .context("failed to parse path") + .unwrap(); + assert_eq!(url.to_string(), "http://127.0.0.1:9090/configs"); +} diff --git a/clash-nyanpasu/backend/tauri/src/utils/init/logging.rs b/clash-nyanpasu/backend/tauri/src/utils/init/logging.rs index a951954ca1..e039a8d9e1 100644 --- a/clash-nyanpasu/backend/tauri/src/utils/init/logging.rs +++ b/clash-nyanpasu/backend/tauri/src/utils/init/logging.rs @@ -75,6 +75,7 @@ pub fn init() -> Result<()> { fmt::layer() .json() .with_writer(appender) + .with_current_span(true) .with_line_number(true) .with_file(true), ); diff --git a/clash-nyanpasu/frontend/nyanpasu/package.json b/clash-nyanpasu/frontend/nyanpasu/package.json index 2b56e7caed..dedd501f39 100644 --- a/clash-nyanpasu/frontend/nyanpasu/package.json +++ b/clash-nyanpasu/frontend/nyanpasu/package.json @@ -58,9 +58,9 @@ "@iconify/json": "2.2.359", "@monaco-editor/react": "4.7.0", "@tanstack/react-query": "5.83.0", - "@tanstack/react-router": "1.128.0", - "@tanstack/react-router-devtools": "1.128.0", - "@tanstack/router-plugin": "1.128.0", + "@tanstack/react-router": "1.128.3", + "@tanstack/react-router-devtools": "1.128.3", + "@tanstack/router-plugin": "1.128.3", "@tauri-apps/plugin-clipboard-manager": "2.3.0", "@tauri-apps/plugin-dialog": "2.3.0", "@tauri-apps/plugin-fs": "2.4.0", @@ -73,8 +73,8 @@ "@types/react-dom": "19.1.6", "@types/validator": "13.15.2", "@vitejs/plugin-legacy": "7.0.1", - "@vitejs/plugin-react": "4.6.0", - "@vitejs/plugin-react-swc": "3.10.2", + "@vitejs/plugin-react": "4.7.0", + "@vitejs/plugin-react-swc": "3.11.0", "change-case": "5.4.4", "clsx": "2.1.1", "core-js": "3.44.0", diff --git a/clash-nyanpasu/frontend/nyanpasu/src/components/setting/setting-system-proxy.tsx b/clash-nyanpasu/frontend/nyanpasu/src/components/setting/setting-system-proxy.tsx index 6f6d99871a..e28f548036 100644 --- a/clash-nyanpasu/frontend/nyanpasu/src/components/setting/setting-system-proxy.tsx +++ b/clash-nyanpasu/frontend/nyanpasu/src/components/setting/setting-system-proxy.tsx @@ -1,6 +1,7 @@ import { useLockFn } from 'ahooks' import { useState } from 'react' import { useTranslation } from 'react-i18next' +import { formatError } from '@/utils' import { message } from '@/utils/notification' import { InputAdornment, List, ListItem } from '@mui/material' import Grid from '@mui/material/Grid' @@ -24,7 +25,7 @@ const TunModeButton = () => { try { await tunMode.upsert(!tunMode.value) } catch (error) { - message(`Activation TUN Mode failed!`, { + message(`Activation TUN Mode failed! \n Error: ${formatError(error)}`, { title: t('Error'), kind: 'error', }) diff --git a/clash-nyanpasu/frontend/nyanpasu/src/routeTree.gen.ts b/clash-nyanpasu/frontend/nyanpasu/src/routeTree.gen.ts index cb90a20a26..ba36b35547 100644 --- a/clash-nyanpasu/frontend/nyanpasu/src/routeTree.gen.ts +++ b/clash-nyanpasu/frontend/nyanpasu/src/routeTree.gen.ts @@ -8,163 +8,70 @@ // You should NOT make any changes in this file as it will be overwritten. // Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified. -// Import Routes +import { Route as rootRouteImport } from './pages/__root' +import { Route as SettingsRouteImport } from './pages/settings' +import { Route as RulesRouteImport } from './pages/rules' +import { Route as ProxiesRouteImport } from './pages/proxies' +import { Route as ProvidersRouteImport } from './pages/providers' +import { Route as ProfilesRouteImport } from './pages/profiles' +import { Route as LogsRouteImport } from './pages/logs' +import { Route as DashboardRouteImport } from './pages/dashboard' +import { Route as ConnectionsRouteImport } from './pages/connections' +import { Route as LayoutRouteImport } from './pages/_layout' +import { Route as IndexRouteImport } from './pages/index' -import { Route as rootRoute } from './pages/__root' -import { Route as SettingsImport } from './pages/settings' -import { Route as RulesImport } from './pages/rules' -import { Route as ProxiesImport } from './pages/proxies' -import { Route as ProvidersImport } from './pages/providers' -import { Route as ProfilesImport } from './pages/profiles' -import { Route as LogsImport } from './pages/logs' -import { Route as DashboardImport } from './pages/dashboard' -import { Route as ConnectionsImport } from './pages/connections' -import { Route as LayoutImport } from './pages/_layout' -import { Route as IndexImport } from './pages/index' - -// Create/Update Routes - -const SettingsRoute = SettingsImport.update({ +const SettingsRoute = SettingsRouteImport.update({ id: '/settings', path: '/settings', - getParentRoute: () => rootRoute, + getParentRoute: () => rootRouteImport, } as any) - -const RulesRoute = RulesImport.update({ +const RulesRoute = RulesRouteImport.update({ id: '/rules', path: '/rules', - getParentRoute: () => rootRoute, + getParentRoute: () => rootRouteImport, } as any) - -const ProxiesRoute = ProxiesImport.update({ +const ProxiesRoute = ProxiesRouteImport.update({ id: '/proxies', path: '/proxies', - getParentRoute: () => rootRoute, + getParentRoute: () => rootRouteImport, } as any) - -const ProvidersRoute = ProvidersImport.update({ +const ProvidersRoute = ProvidersRouteImport.update({ id: '/providers', path: '/providers', - getParentRoute: () => rootRoute, + getParentRoute: () => rootRouteImport, } as any) - -const ProfilesRoute = ProfilesImport.update({ +const ProfilesRoute = ProfilesRouteImport.update({ id: '/profiles', path: '/profiles', - getParentRoute: () => rootRoute, + getParentRoute: () => rootRouteImport, } as any) - -const LogsRoute = LogsImport.update({ +const LogsRoute = LogsRouteImport.update({ id: '/logs', path: '/logs', - getParentRoute: () => rootRoute, + getParentRoute: () => rootRouteImport, } as any) - -const DashboardRoute = DashboardImport.update({ +const DashboardRoute = DashboardRouteImport.update({ id: '/dashboard', path: '/dashboard', - getParentRoute: () => rootRoute, + getParentRoute: () => rootRouteImport, } as any) - -const ConnectionsRoute = ConnectionsImport.update({ +const ConnectionsRoute = ConnectionsRouteImport.update({ id: '/connections', path: '/connections', - getParentRoute: () => rootRoute, + getParentRoute: () => rootRouteImport, } as any) - -const LayoutRoute = LayoutImport.update({ +const LayoutRoute = LayoutRouteImport.update({ id: '/_layout', - getParentRoute: () => rootRoute, + getParentRoute: () => rootRouteImport, } as any) - -const IndexRoute = IndexImport.update({ +const IndexRoute = IndexRouteImport.update({ id: '/', path: '/', - getParentRoute: () => rootRoute, + getParentRoute: () => rootRouteImport, } as any) -// Populate the FileRoutesByPath interface - -declare module '@tanstack/react-router' { - interface FileRoutesByPath { - '/': { - id: '/' - path: '/' - fullPath: '/' - preLoaderRoute: typeof IndexImport - parentRoute: typeof rootRoute - } - '/_layout': { - id: '/_layout' - path: '' - fullPath: '' - preLoaderRoute: typeof LayoutImport - parentRoute: typeof rootRoute - } - '/connections': { - id: '/connections' - path: '/connections' - fullPath: '/connections' - preLoaderRoute: typeof ConnectionsImport - parentRoute: typeof rootRoute - } - '/dashboard': { - id: '/dashboard' - path: '/dashboard' - fullPath: '/dashboard' - preLoaderRoute: typeof DashboardImport - parentRoute: typeof rootRoute - } - '/logs': { - id: '/logs' - path: '/logs' - fullPath: '/logs' - preLoaderRoute: typeof LogsImport - parentRoute: typeof rootRoute - } - '/profiles': { - id: '/profiles' - path: '/profiles' - fullPath: '/profiles' - preLoaderRoute: typeof ProfilesImport - parentRoute: typeof rootRoute - } - '/providers': { - id: '/providers' - path: '/providers' - fullPath: '/providers' - preLoaderRoute: typeof ProvidersImport - parentRoute: typeof rootRoute - } - '/proxies': { - id: '/proxies' - path: '/proxies' - fullPath: '/proxies' - preLoaderRoute: typeof ProxiesImport - parentRoute: typeof rootRoute - } - '/rules': { - id: '/rules' - path: '/rules' - fullPath: '/rules' - preLoaderRoute: typeof RulesImport - parentRoute: typeof rootRoute - } - '/settings': { - id: '/settings' - path: '/settings' - fullPath: '/settings' - preLoaderRoute: typeof SettingsImport - parentRoute: typeof rootRoute - } - } -} - -// Create and export the route tree - export interface FileRoutesByFullPath { '/': typeof IndexRoute - '': typeof LayoutRoute '/connections': typeof ConnectionsRoute '/dashboard': typeof DashboardRoute '/logs': typeof LogsRoute @@ -174,10 +81,8 @@ export interface FileRoutesByFullPath { '/rules': typeof RulesRoute '/settings': typeof SettingsRoute } - export interface FileRoutesByTo { '/': typeof IndexRoute - '': typeof LayoutRoute '/connections': typeof ConnectionsRoute '/dashboard': typeof DashboardRoute '/logs': typeof LogsRoute @@ -187,9 +92,8 @@ export interface FileRoutesByTo { '/rules': typeof RulesRoute '/settings': typeof SettingsRoute } - export interface FileRoutesById { - __root__: typeof rootRoute + __root__: typeof rootRouteImport '/': typeof IndexRoute '/_layout': typeof LayoutRoute '/connections': typeof ConnectionsRoute @@ -201,12 +105,10 @@ export interface FileRoutesById { '/rules': typeof RulesRoute '/settings': typeof SettingsRoute } - export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath fullPaths: | '/' - | '' | '/connections' | '/dashboard' | '/logs' @@ -218,7 +120,6 @@ export interface FileRouteTypes { fileRoutesByTo: FileRoutesByTo to: | '/' - | '' | '/connections' | '/dashboard' | '/logs' @@ -241,7 +142,6 @@ export interface FileRouteTypes { | '/settings' fileRoutesById: FileRoutesById } - export interface RootRouteChildren { IndexRoute: typeof IndexRoute LayoutRoute: typeof LayoutRoute @@ -255,6 +155,81 @@ export interface RootRouteChildren { SettingsRoute: typeof SettingsRoute } +declare module '@tanstack/react-router' { + interface FileRoutesByPath { + '/settings': { + id: '/settings' + path: '/settings' + fullPath: '/settings' + preLoaderRoute: typeof SettingsRouteImport + parentRoute: typeof rootRouteImport + } + '/rules': { + id: '/rules' + path: '/rules' + fullPath: '/rules' + preLoaderRoute: typeof RulesRouteImport + parentRoute: typeof rootRouteImport + } + '/proxies': { + id: '/proxies' + path: '/proxies' + fullPath: '/proxies' + preLoaderRoute: typeof ProxiesRouteImport + parentRoute: typeof rootRouteImport + } + '/providers': { + id: '/providers' + path: '/providers' + fullPath: '/providers' + preLoaderRoute: typeof ProvidersRouteImport + parentRoute: typeof rootRouteImport + } + '/profiles': { + id: '/profiles' + path: '/profiles' + fullPath: '/profiles' + preLoaderRoute: typeof ProfilesRouteImport + parentRoute: typeof rootRouteImport + } + '/logs': { + id: '/logs' + path: '/logs' + fullPath: '/logs' + preLoaderRoute: typeof LogsRouteImport + parentRoute: typeof rootRouteImport + } + '/dashboard': { + id: '/dashboard' + path: '/dashboard' + fullPath: '/dashboard' + preLoaderRoute: typeof DashboardRouteImport + parentRoute: typeof rootRouteImport + } + '/connections': { + id: '/connections' + path: '/connections' + fullPath: '/connections' + preLoaderRoute: typeof ConnectionsRouteImport + parentRoute: typeof rootRouteImport + } + '/_layout': { + id: '/_layout' + path: '' + fullPath: '' + preLoaderRoute: typeof LayoutRouteImport + parentRoute: typeof rootRouteImport + } + '/': { + id: '/' + path: '/' + fullPath: '/' + preLoaderRoute: typeof IndexRouteImport + parentRoute: typeof rootRouteImport + } + } +} + const rootRouteChildren: RootRouteChildren = { IndexRoute: IndexRoute, LayoutRoute: LayoutRoute, @@ -267,59 +242,6 @@ const rootRouteChildren: RootRouteChildren = { RulesRoute: RulesRoute, SettingsRoute: SettingsRoute, } - -export const routeTree = rootRoute +export const routeTree = rootRouteImport ._addFileChildren(rootRouteChildren) ._addFileTypes() - -/* ROUTE_MANIFEST_START -{ - "routes": { - "__root__": { - "filePath": "__root.tsx", - "children": [ - "/", - "/_layout", - "/connections", - "/dashboard", - "/logs", - "/profiles", - "/providers", - "/proxies", - "/rules", - "/settings" - ] - }, - "/": { - "filePath": "index.tsx" - }, - "/_layout": { - "filePath": "_layout.tsx" - }, - "/connections": { - "filePath": "connections.tsx" - }, - "/dashboard": { - "filePath": "dashboard.tsx" - }, - "/logs": { - "filePath": "logs.tsx" - }, - "/profiles": { - "filePath": "profiles.tsx" - }, - "/providers": { - "filePath": "providers.tsx" - }, - "/proxies": { - "filePath": "proxies.tsx" - }, - "/rules": { - "filePath": "rules.tsx" - }, - "/settings": { - "filePath": "settings.tsx" - } - } -} -ROUTE_MANIFEST_END */ diff --git a/clash-nyanpasu/frontend/ui/package.json b/clash-nyanpasu/frontend/ui/package.json index 7926241cb2..8d209e1c68 100644 --- a/clash-nyanpasu/frontend/ui/package.json +++ b/clash-nyanpasu/frontend/ui/package.json @@ -20,7 +20,7 @@ "@tauri-apps/api": "2.6.0", "@types/d3": "7.4.3", "@types/react": "19.1.8", - "@vitejs/plugin-react": "4.6.0", + "@vitejs/plugin-react": "4.7.0", "ahooks": "3.9.0", "d3": "7.9.0", "framer-motion": "12.16.0", diff --git a/clash-nyanpasu/manifest/version.json b/clash-nyanpasu/manifest/version.json index 8c44db63d4..8bbb891733 100644 --- a/clash-nyanpasu/manifest/version.json +++ b/clash-nyanpasu/manifest/version.json @@ -2,7 +2,7 @@ "manifest_version": 1, "latest": { "mihomo": "v1.19.11", - "mihomo_alpha": "alpha-6337151", + "mihomo_alpha": "alpha-8f18d3f", "clash_rs": "v0.8.1", "clash_premium": "2023-09-05-gdcc8d87", "clash_rs_alpha": "0.8.1-alpha+sha.4db1bc0" @@ -69,5 +69,5 @@ "linux-armv7hf": "clash-armv7-unknown-linux-gnueabihf" } }, - "updated_at": "2025-07-16T22:21:37.735Z" + "updated_at": "2025-07-17T22:21:30.606Z" } diff --git a/clash-nyanpasu/pnpm-lock.yaml b/clash-nyanpasu/pnpm-lock.yaml index 8535f35427..7f080b7a47 100644 --- a/clash-nyanpasu/pnpm-lock.yaml +++ b/clash-nyanpasu/pnpm-lock.yaml @@ -247,7 +247,7 @@ importers: version: 4.1.11 '@tanstack/router-zod-adapter': specifier: 1.81.5 - version: 1.81.5(@tanstack/react-router@1.128.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(zod@4.0.5) + version: 1.81.5(@tanstack/react-router@1.128.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(zod@4.0.5) '@tauri-apps/api': specifier: 2.6.0 version: 2.6.0 @@ -346,14 +346,14 @@ importers: specifier: 5.83.0 version: 5.83.0(react@19.1.0) '@tanstack/react-router': - specifier: 1.128.0 - version: 1.128.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: 1.128.3 + version: 1.128.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@tanstack/react-router-devtools': - specifier: 1.128.0 - version: 1.128.0(@tanstack/react-router@1.128.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@tanstack/router-core@1.128.0)(csstype@3.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(solid-js@1.9.5)(tiny-invariant@1.3.3) + specifier: 1.128.3 + version: 1.128.3(@tanstack/react-router@1.128.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@tanstack/router-core@1.128.3)(csstype@3.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(solid-js@1.9.5)(tiny-invariant@1.3.3) '@tanstack/router-plugin': - specifier: 1.128.0 - version: 1.128.0(@tanstack/react-router@1.128.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@7.0.5(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)) + specifier: 1.128.3 + version: 1.128.3(@tanstack/react-router@1.128.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@7.0.5(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)) '@tauri-apps/plugin-clipboard-manager': specifier: 2.3.0 version: 2.3.0 @@ -391,11 +391,11 @@ importers: specifier: 7.0.1 version: 7.0.1(terser@5.36.0)(vite@7.0.5(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)) '@vitejs/plugin-react': - specifier: 4.6.0 - version: 4.6.0(vite@7.0.5(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)) + specifier: 4.7.0 + version: 4.7.0(vite@7.0.5(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)) '@vitejs/plugin-react-swc': - specifier: 3.10.2 - version: 3.10.2(vite@7.0.5(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)) + specifier: 3.11.0 + version: 3.11.0(vite@7.0.5(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)) change-case: specifier: 5.4.4 version: 5.4.4 @@ -481,8 +481,8 @@ importers: specifier: 19.1.8 version: 19.1.8 '@vitejs/plugin-react': - specifier: 4.6.0 - version: 4.6.0(vite@7.0.5(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)) + specifier: 4.7.0 + version: 4.7.0(vite@7.0.5(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0)) ahooks: specifier: 3.9.0 version: 3.9.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -656,10 +656,6 @@ packages: resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.27.5': - resolution: {integrity: sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==} - engines: {node: '>=6.9.0'} - '@babel/compat-data@7.28.0': resolution: {integrity: sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==} engines: {node: '>=6.9.0'} @@ -668,14 +664,6 @@ packages: resolution: {integrity: sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==} engines: {node: '>=6.9.0'} - '@babel/core@7.27.4': - resolution: {integrity: sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.27.7': - resolution: {integrity: sha512-BU2f9tlKQ5CAthiMIgpzAh4eDTLWo1mqi9jqE2OxMG0E/OM199VJt2q8BztTxpnSW0i1ymdwLXRJnYzvDM5r2w==} - engines: {node: '>=6.9.0'} - '@babel/core@7.28.0': resolution: {integrity: sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==} engines: {node: '>=6.9.0'} @@ -688,10 +676,6 @@ packages: resolution: {integrity: sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==} engines: {node: '>=6.9.0'} - '@babel/generator@7.27.5': - resolution: {integrity: sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==} - engines: {node: '>=6.9.0'} - '@babel/generator@7.28.0': resolution: {integrity: sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==} engines: {node: '>=6.9.0'} @@ -866,16 +850,6 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - '@babel/parser@7.27.5': - resolution: {integrity: sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/parser@7.27.7': - resolution: {integrity: sha512-qnzXzDXdr/po3bOTbTIQZ7+TxNKxpkN5IifVLXS+r7qwynkZfPyjZfE7hCXbo7IoO9TNcSyibgONsf2HauUd3Q==} - engines: {node: '>=6.0.0'} - hasBin: true - '@babel/parser@7.28.0': resolution: {integrity: sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==} engines: {node: '>=6.0.0'} @@ -1327,10 +1301,6 @@ packages: resolution: {integrity: sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.27.7': - resolution: {integrity: sha512-X6ZlfR/O/s5EQ/SnUSLzr+6kGnkg8HXGMzpgsMsrJVcfDtH1vIp6ctCN4eZ1LS5c0+te5Cb6Y514fASjMRJ1nw==} - engines: {node: '>=6.9.0'} - '@babel/traverse@7.28.0': resolution: {integrity: sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==} engines: {node: '>=6.9.0'} @@ -1347,10 +1317,6 @@ packages: resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} engines: {node: '>=6.9.0'} - '@babel/types@7.27.7': - resolution: {integrity: sha512-8OLQgDScAOHXnAz2cV+RfzzNMipuLVBz2biuAJFMV9bfkNf393je3VM8CLkjQodW5+iWsSJdSgSWT6rsZoXHPw==} - engines: {node: '>=6.9.0'} - '@babel/types@7.28.1': resolution: {integrity: sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==} engines: {node: '>=6.9.0'} @@ -2533,11 +2499,8 @@ packages: '@types/react': optional: true - '@rolldown/pluginutils@1.0.0-beta.11': - resolution: {integrity: sha512-L/gAA/hyCSuzTF1ftlzUSI/IKr2POHsv1Dd78GfqkR83KMNuswWD61JxGV2L7nRwBBBSDr6R1gCkdTmoN7W4ag==} - - '@rolldown/pluginutils@1.0.0-beta.19': - resolution: {integrity: sha512-3FL3mnMbPu0muGOCaKAhhFEYmqv9eTfPSJRJmANrCwtgK8VuxpsZDGK+m0LYAGoyO8+0j5uRe4PeyPDK1yA/hA==} + '@rolldown/pluginutils@1.0.0-beta.27': + resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==} '@rollup/pluginutils@4.2.1': resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} @@ -2785,68 +2748,68 @@ packages: peerDependencies: '@svgr/core': '*' - '@swc/core-darwin-arm64@1.12.1': - resolution: {integrity: sha512-nUjWVcJ3YS2N40ZbKwYO2RJ4+o2tWYRzNOcIQp05FqW0+aoUCVMdAUUzQinPDynfgwVshDAXCKemY8X7nN5MaA==} + '@swc/core-darwin-arm64@1.13.0': + resolution: {integrity: sha512-SkmR9u7MHDu2X8hf7SjZTmsAfQTmel0mi+TJ7AGtufLwGySv6pwQfJ/CIJpcPxYENVqDJAFnDrHaKV8mgA6kxQ==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.12.1': - resolution: {integrity: sha512-OGm4a4d3OeJn+tRt8H/eiHgTFrJbS6r8mi/Ob65tAEXZGHN900T2kR7c5ALr0V2hBOQ8BfhexwPoQlGQP/B95w==} + '@swc/core-darwin-x64@1.13.0': + resolution: {integrity: sha512-15/SyDjXRtFJ09fYHBXUXrj4tpiSpCkjgsF1z3/sSpHH1POWpQUQzxmFyomPQVZ/SsDqP18WGH09Vph4Qriuiw==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.12.1': - resolution: {integrity: sha512-76YeeQKyK0EtNkQiNBZ0nbVGooPf9IucY0WqVXVpaU4wuG7ZyLEE2ZAIgXafIuzODGQoLfetue7I8boMxh1/MA==} + '@swc/core-linux-arm-gnueabihf@1.13.0': + resolution: {integrity: sha512-AHauVHZQEJI/dCZQg6VYNNQ6HROz8dSOnCSheXzzBw1DGWo77BlcxRP0fF0jaAXM9WNqtCUOY1HiJ9ohkAE61Q==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.12.1': - resolution: {integrity: sha512-BxJDIJPq1+aCh9UsaSAN6wo3tuln8UhNXruOrzTI8/ElIig/3sAueDM6Eq7GvZSGGSA7ljhNATMJ0elD7lFatQ==} + '@swc/core-linux-arm64-gnu@1.13.0': + resolution: {integrity: sha512-qyZmBZF7asF6954/x7yn6R7Bzd45KRG05rK2atIF9J3MTa8az7vubP1Q3BWmmss1j8699DELpbuoJucGuhsNXw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.12.1': - resolution: {integrity: sha512-NhLdbffSXvY0/FwUSAl4hKBlpe5GHQGXK8DxTo3HHjLsD9sCPYieo3vG0NQoUYAy4ZUY1WeGjyxeq4qZddJzEQ==} + '@swc/core-linux-arm64-musl@1.13.0': + resolution: {integrity: sha512-whskQCOUlLQT7MjnronpHmyHegBka5ig9JkQvecbqhWzRfdwN+c2xTJs3kQsWy2Vc2f1hcL3D8hGIwY5TwPxMQ==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.12.1': - resolution: {integrity: sha512-CrYnV8SZIgArQ9LKH0xEF95PKXzX9WkRSc5j55arOSBeDCeDUQk1Bg/iKdnDiuj5HC1hZpvzwMzSBJjv+Z70jA==} + '@swc/core-linux-x64-gnu@1.13.0': + resolution: {integrity: sha512-51n4P4nv6rblXyH3zCEktvmR9uSAZ7+zbfeby0sxbj8LS/IKuVd7iCwD5dwMj4CxG9Fs+HgjN73dLQF/OerHhg==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.12.1': - resolution: {integrity: sha512-BQMl3d0HaGB0/h2xcKlGtjk/cGRn2tnbsaChAKcjFdCepblKBCz1pgO/mL7w5iXq3s57wMDUn++71/a5RAkZOA==} + '@swc/core-linux-x64-musl@1.13.0': + resolution: {integrity: sha512-VMqelgvnXs27eQyhDf1S2O2MxSdchIH7c1tkxODRtu9eotcAeniNNgqqLjZ5ML0MGeRk/WpbsAY/GWi7eSpiHw==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.12.1': - resolution: {integrity: sha512-b7NeGnpqTfmIGtUqXBl0KqoSmOnH64nRZoT5l4BAGdvwY7nxitWR94CqZuwyLPty/bLywmyDA9uO12Kvgb3+gg==} + '@swc/core-win32-arm64-msvc@1.13.0': + resolution: {integrity: sha512-NLJmseWJngWeENgat+O/WB4ptNxtx2X4OfPnSG5a/A4sxcn2E4jq91OPvbeUQwDkH+ZQWKXmbXFzt7Nn661QYA==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.12.1': - resolution: {integrity: sha512-iU/29X2D7cHBp1to62cUg/5Xk8K+lyOJiKIGGW5rdzTW/c2zz3d/ehgpzVP/rqC4NVr88MXspqHU4il5gmDajw==} + '@swc/core-win32-ia32-msvc@1.13.0': + resolution: {integrity: sha512-UBfwrp0xW37KQGTA08mwrCLIm1ZKy6pXK8IVwou7BvhMgrItRNweTGyUrCnvDLUfyYFuJCmzcEaJ3NudtctD6g==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.12.1': - resolution: {integrity: sha512-+Zh+JKDwiFqV5N9yAd2DhYVGPORGh9cfenu1ptr9yge+eHAf7vZJcC3rnj6QMR1QJh0Y5VC9+YBjRFjZVA7XDw==} + '@swc/core-win32-x64-msvc@1.13.0': + resolution: {integrity: sha512-BAB1P7Z/y2EENsfsPytPnjIyBVRZN2WULY+s3ozW4QkGmYHde6XXG28n0ABTHhcIOmmR2VzM+uaW1x48laSimw==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.12.1': - resolution: {integrity: sha512-aKXdDTqxTVFl/bKQZ3EQUjEMBEoF6JBv29moMZq0kbVO43na6u/u+3Vcbhbrh+A2N0X5OL4RaveuWfAjEgOmeA==} + '@swc/core@1.13.0': + resolution: {integrity: sha512-7Fh16ZH/Rj3Di720if+sw9BictD4N5kbTpsyDC+URXhvsZ7qRt1lH7PaeIQYyJJQHwFhoKpwwGxfGU9SHgPLdw==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '>=0.5.17' @@ -2968,16 +2931,16 @@ packages: peerDependencies: react: ^18 || ^19 - '@tanstack/react-router-devtools@1.128.0': - resolution: {integrity: sha512-SJoFzCTvKdwPk8u1r5sTUFQqdEvt1lk0Y80DTzBz1Yc+PcUSTRMMfC6aGVFDSbWJt8QnQc65jDIlu6oTcnLhOQ==} + '@tanstack/react-router-devtools@1.128.3': + resolution: {integrity: sha512-sZNFYE8SWCPCfTHcdJIOmEvRn/kI3nHcAv/CwNW/mEu6WK4qUf3ccub8Elf5Dqw6lWUmfZ/OK4H/wdVvraspfg==} engines: {node: '>=12'} peerDependencies: - '@tanstack/react-router': ^1.128.0 + '@tanstack/react-router': ^1.128.3 react: '>=18.0.0 || >=19.0.0' react-dom: '>=18.0.0 || >=19.0.0' - '@tanstack/react-router@1.128.0': - resolution: {integrity: sha512-fYB/eeO7wPRS5Xh8uts2Qesp/unvSUz1deV76d8qY4SCNTLXcSrH5w0thxviGcHqRNuWnNCz7OEp8oowK4i7bw==} + '@tanstack/react-router@1.128.3': + resolution: {integrity: sha512-vOb5KVlyi4KLho4ZVN1ju8YxdJe5IKKNoqwHHN1XCUYKKyQhWVrHU4IBnQDCrrAKRH8o1K/WGaRUvN/1eeQ5dQ==} engines: {node: '>=12'} peerDependencies: react: '>=18.0.0 || >=19.0.0' @@ -3002,15 +2965,15 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@tanstack/router-core@1.128.0': - resolution: {integrity: sha512-XLDHPzDCjsjA8Q8NxiACsOiITv1ESWAL/oiXOrygdcZR+quistNixhy38z7XLJBojs0iCxRCV92qck5tAhjLoA==} + '@tanstack/router-core@1.128.3': + resolution: {integrity: sha512-/CiGzGeBrR91+JgiKdAYskY9W1ZINVey1uqEZLvmJEKjemmOaNN4KI+9mGa43/yJ3ED/Q937hFjo39UAj4EBPQ==} engines: {node: '>=12'} - '@tanstack/router-devtools-core@1.128.0': - resolution: {integrity: sha512-KaHe3X1aB8D7cAi5lvKLKRhjy6f44x/jQV2yt6rurKQiGv10yzsKXoUDPZNOOaS9LUVkwUUXv7zuDwd/kv2Wow==} + '@tanstack/router-devtools-core@1.128.3': + resolution: {integrity: sha512-U5Kyz63/hmCU20JQyROGLa7vvAO3GgOBRULoSEYVvjHqiZWRKMqGbp18Xv4EVyFyh5TIoBYCV3lL+Tb0Ks8vXg==} engines: {node: '>=12'} peerDependencies: - '@tanstack/router-core': ^1.128.0 + '@tanstack/router-core': ^1.128.3 csstype: ^3.0.10 solid-js: '>=1.9.5' tiny-invariant: ^1.3.3 @@ -3018,16 +2981,16 @@ packages: csstype: optional: true - '@tanstack/router-generator@1.128.0': - resolution: {integrity: sha512-7ibImI7bv4feWgWKZZF69CrZPFzuYbtfFtRPCmoFNY5aCKUIYya4HNNlldOkJLNXiUyWQ31kuoqvNhEdqwhGwQ==} + '@tanstack/router-generator@1.128.3': + resolution: {integrity: sha512-vV5aVzA/fC23fOVoJlD7vKr52Nc+FK7TkKRUq7OeiY8B0kAmFM3c/PzhhObxIP5B+Fp6K01vkBTpvtQYBRoadQ==} engines: {node: '>=12'} - '@tanstack/router-plugin@1.128.0': - resolution: {integrity: sha512-HebeNn2AE8Ew4yhLc2kin5gTovSO20Y5bJBnJ6BJN3bX3sO4K1A4HzDof3oaW5bb4wqlESeVlZarD9zO9ANQ3Q==} + '@tanstack/router-plugin@1.128.3': + resolution: {integrity: sha512-oFn3yDSe5SCuY2ZZ0yFYVzcLWNSB14gB35YAPFCZdWTmBWQOaB1ICPR8xGdR9sUHRx0rABG5JBR+1kjOOMf3YQ==} engines: {node: '>=12'} peerDependencies: '@rsbuild/core': '>=1.0.2' - '@tanstack/react-router': ^1.128.0 + '@tanstack/react-router': ^1.128.3 vite: '>=5.0.0 || >=6.0.0' vite-plugin-solid: ^2.11.2 webpack: '>=5.92.0' @@ -3620,16 +3583,16 @@ packages: terser: ^5.16.0 vite: ^7.0.0 - '@vitejs/plugin-react-swc@3.10.2': - resolution: {integrity: sha512-xD3Rdvrt5LgANug7WekBn1KhcvLn1H3jNBfJRL3reeOIua/WnZOEV5qi5qIBq5T8R0jUDmRtxuvk4bPhzGHDWw==} + '@vitejs/plugin-react-swc@3.11.0': + resolution: {integrity: sha512-YTJCGFdNMHCMfjODYtxRNVAYmTWQ1Lb8PulP/2/f/oEEtglw8oKxKIZmmRkyXrVrHfsKOaVkAc3NT9/dMutO5w==} peerDependencies: - vite: ^4 || ^5 || ^6 || ^7.0.0-beta.0 + vite: ^4 || ^5 || ^6 || ^7 - '@vitejs/plugin-react@4.6.0': - resolution: {integrity: sha512-5Kgff+m8e2PB+9j51eGHEpn5kUzRKH2Ry0qGoe8ItJg7pqnkPrYPkDQZGgGmTa0EGarHrkjLvOdU3b1fzI8otQ==} + '@vitejs/plugin-react@4.7.0': + resolution: {integrity: sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0 + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 '@volar/language-core@2.4.11': resolution: {integrity: sha512-lN2C1+ByfW9/JRPpqScuZt/4OrUUse57GLI6TbLgTIqBVemdl1wNcZ1qYGEo2+Gw8coYLgCy7SuKqn6IrQcQgg==} @@ -8664,8 +8627,6 @@ snapshots: '@babel/compat-data@7.26.8': {} - '@babel/compat-data@7.27.5': {} - '@babel/compat-data@7.28.0': {} '@babel/core@7.26.10': @@ -8688,46 +8649,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/core@7.27.4': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.27.5 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.4) - '@babel/helpers': 7.27.6 - '@babel/parser': 7.27.5 - '@babel/template': 7.27.2 - '@babel/traverse': 7.27.7 - '@babel/types': 7.27.7 - convert-source-map: 2.0.0 - debug: 4.4.1 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/core@7.27.7': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.27.5 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.7) - '@babel/helpers': 7.27.6 - '@babel/parser': 7.27.7 - '@babel/template': 7.27.2 - '@babel/traverse': 7.27.7 - '@babel/types': 7.27.7 - convert-source-map: 2.0.0 - debug: 4.4.1 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - '@babel/core@7.28.0': dependencies: '@ampproject/remapping': 2.3.0 @@ -8763,14 +8684,6 @@ snapshots: '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.1.0 - '@babel/generator@7.27.5': - dependencies: - '@babel/parser': 7.27.7 - '@babel/types': 7.27.7 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 3.1.0 - '@babel/generator@7.28.0': dependencies: '@babel/parser': 7.28.0 @@ -8781,11 +8694,11 @@ snapshots: '@babel/helper-annotate-as-pure@7.25.9': dependencies: - '@babel/types': 7.27.7 + '@babel/types': 7.28.1 '@babel/helper-annotate-as-pure@7.27.3': dependencies: - '@babel/types': 7.27.7 + '@babel/types': 7.28.1 '@babel/helper-compilation-targets@7.26.5': dependencies: @@ -8797,7 +8710,7 @@ snapshots: '@babel/helper-compilation-targets@7.27.2': dependencies: - '@babel/compat-data': 7.27.5 + '@babel/compat-data': 7.28.0 '@babel/helper-validator-option': 7.27.1 browserslist: 4.25.1 lru-cache: 5.1.1 @@ -8811,20 +8724,7 @@ snapshots: '@babel/helper-optimise-call-expression': 7.25.9 '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.10) '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/traverse': 7.27.7 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/helper-create-class-features-plugin@7.27.1(@babel/core@7.27.7)': - dependencies: - '@babel/core': 7.27.7 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-member-expression-to-functions': 7.27.1 - '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.7) - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.27.7 + '@babel/traverse': 7.28.0 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -8837,7 +8737,7 @@ snapshots: '@babel/helper-optimise-call-expression': 7.27.1 '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.0) '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.27.7 + '@babel/traverse': 7.28.0 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -8880,15 +8780,15 @@ snapshots: '@babel/helper-member-expression-to-functions@7.25.9': dependencies: - '@babel/traverse': 7.27.7 - '@babel/types': 7.27.7 + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.1 transitivePeerDependencies: - supports-color '@babel/helper-member-expression-to-functions@7.27.1': dependencies: '@babel/traverse': 7.28.0 - '@babel/types': 7.27.7 + '@babel/types': 7.28.1 transitivePeerDependencies: - supports-color @@ -8901,8 +8801,8 @@ snapshots: '@babel/helper-module-imports@7.27.1': dependencies: - '@babel/traverse': 7.27.7 - '@babel/types': 7.27.7 + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.1 transitivePeerDependencies: - supports-color @@ -8911,25 +8811,7 @@ snapshots: '@babel/core': 7.26.10 '@babel/helper-module-imports': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.27.7 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.27.3(@babel/core@7.27.4)': - dependencies: - '@babel/core': 7.27.4 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.27.7 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.27.3(@babel/core@7.27.7)': - dependencies: - '@babel/core': 7.27.7 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.27.7 + '@babel/traverse': 7.28.0 transitivePeerDependencies: - supports-color @@ -8938,17 +8820,17 @@ snapshots: '@babel/core': 7.28.0 '@babel/helper-module-imports': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.27.7 + '@babel/traverse': 7.28.0 transitivePeerDependencies: - supports-color '@babel/helper-optimise-call-expression@7.25.9': dependencies: - '@babel/types': 7.27.7 + '@babel/types': 7.28.1 '@babel/helper-optimise-call-expression@7.27.1': dependencies: - '@babel/types': 7.27.7 + '@babel/types': 7.28.1 '@babel/helper-plugin-utils@7.26.5': {} @@ -8959,7 +8841,7 @@ snapshots: '@babel/core': 7.28.0 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-wrap-function': 7.27.1 - '@babel/traverse': 7.27.7 + '@babel/traverse': 7.28.0 transitivePeerDependencies: - supports-color @@ -8968,15 +8850,6 @@ snapshots: '@babel/core': 7.26.10 '@babel/helper-member-expression-to-functions': 7.25.9 '@babel/helper-optimise-call-expression': 7.25.9 - '@babel/traverse': 7.27.7 - transitivePeerDependencies: - - supports-color - - '@babel/helper-replace-supers@7.27.1(@babel/core@7.27.7)': - dependencies: - '@babel/core': 7.27.7 - '@babel/helper-member-expression-to-functions': 7.27.1 - '@babel/helper-optimise-call-expression': 7.27.1 '@babel/traverse': 7.28.0 transitivePeerDependencies: - supports-color @@ -8992,15 +8865,15 @@ snapshots: '@babel/helper-skip-transparent-expression-wrappers@7.25.9': dependencies: - '@babel/traverse': 7.27.7 - '@babel/types': 7.27.7 + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.1 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.27.1': dependencies: - '@babel/traverse': 7.27.7 - '@babel/types': 7.27.7 + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.1 transitivePeerDependencies: - supports-color @@ -9024,33 +8897,25 @@ snapshots: '@babel/helper-wrap-function@7.27.1': dependencies: '@babel/template': 7.27.2 - '@babel/traverse': 7.27.7 - '@babel/types': 7.27.7 + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.1 transitivePeerDependencies: - supports-color '@babel/helpers@7.27.0': dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.27.7 + '@babel/types': 7.28.1 '@babel/helpers@7.27.6': dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.27.7 + '@babel/types': 7.28.1 '@babel/parser@7.27.0': dependencies: '@babel/types': 7.27.0 - '@babel/parser@7.27.5': - dependencies: - '@babel/types': 7.27.7 - - '@babel/parser@7.27.7': - dependencies: - '@babel/types': 7.27.7 - '@babel/parser@7.28.0': dependencies: '@babel/types': 7.28.1 @@ -9059,7 +8924,7 @@ snapshots: dependencies: '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.27.7 + '@babel/traverse': 7.28.0 transitivePeerDependencies: - supports-color @@ -9086,7 +8951,7 @@ snapshots: dependencies: '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.27.7 + '@babel/traverse': 7.28.0 transitivePeerDependencies: - supports-color @@ -9112,14 +8977,14 @@ snapshots: '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.27.7)': + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.7 + '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.27.7)': + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.7 + '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.28.0)': @@ -9256,7 +9121,7 @@ snapshots: '@babel/core': 7.28.0 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.27.7 + '@babel/traverse': 7.28.0 transitivePeerDependencies: - supports-color @@ -9288,14 +9153,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.27.7)': - dependencies: - '@babel/core': 7.27.7 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.7) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.0)': dependencies: '@babel/core': 7.28.0 @@ -9310,7 +9167,7 @@ snapshots: '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.27.7 + '@babel/traverse': 7.28.0 transitivePeerDependencies: - supports-color @@ -9402,14 +9259,14 @@ snapshots: '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.27.4)': + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.4 + '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.27.4)': + '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.4 + '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-regenerator@7.28.1(@babel/core@7.28.0)': @@ -9456,14 +9313,14 @@ snapshots: '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-typescript@7.27.1(@babel/core@7.27.7)': + '@babel/plugin-transform-typescript@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.7 + '@babel/core': 7.28.0 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.7) + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.28.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.27.7) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.0) transitivePeerDependencies: - supports-color @@ -9570,17 +9427,17 @@ snapshots: dependencies: '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/types': 7.27.7 + '@babel/types': 7.28.1 esutils: 2.0.3 - '@babel/preset-typescript@7.27.1(@babel/core@7.27.7)': + '@babel/preset-typescript@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.7 + '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.7) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.27.7) - '@babel/plugin-transform-typescript': 7.27.1(@babel/core@7.27.7) + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-typescript': 7.27.1(@babel/core@7.28.0) transitivePeerDependencies: - supports-color @@ -9596,13 +9453,13 @@ snapshots: dependencies: '@babel/code-frame': 7.26.2 '@babel/parser': 7.27.0 - '@babel/types': 7.27.7 + '@babel/types': 7.28.1 '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 - '@babel/parser': 7.27.7 - '@babel/types': 7.27.7 + '@babel/parser': 7.28.0 + '@babel/types': 7.28.1 '@babel/traverse@7.23.2': dependencies: @@ -9626,7 +9483,7 @@ snapshots: '@babel/generator': 7.27.0 '@babel/parser': 7.27.0 '@babel/template': 7.27.2 - '@babel/types': 7.27.7 + '@babel/types': 7.28.1 debug: 4.4.1 globals: 11.12.0 transitivePeerDependencies: @@ -9644,18 +9501,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/traverse@7.27.7': - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.27.5 - '@babel/parser': 7.27.7 - '@babel/template': 7.27.2 - '@babel/types': 7.27.7 - debug: 4.4.1 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - '@babel/traverse@7.28.0': dependencies: '@babel/code-frame': 7.27.1 @@ -9684,11 +9529,6 @@ snapshots: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@babel/types@7.27.7': - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/types@7.28.1': dependencies: '@babel/helper-string-parser': 7.27.1 @@ -10187,8 +10027,8 @@ snapshots: '@jridgewell/source-map@0.3.6': dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/gen-mapping': 0.3.12 + '@jridgewell/trace-mapping': 0.3.29 '@jridgewell/sourcemap-codec@1.5.0': {} @@ -10870,9 +10710,7 @@ snapshots: optionalDependencies: '@types/react': 19.1.8 - '@rolldown/pluginutils@1.0.0-beta.11': {} - - '@rolldown/pluginutils@1.0.0-beta.19': {} + '@rolldown/pluginutils@1.0.0-beta.27': {} '@rollup/pluginutils@4.2.1': dependencies: @@ -11040,54 +10878,54 @@ snapshots: - supports-color - typescript - '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.27.7)': + '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.7 + '@babel/core': 7.28.0 - '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.27.7)': + '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.7 + '@babel/core': 7.28.0 - '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.27.7)': + '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.7 + '@babel/core': 7.28.0 - '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.27.7)': + '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.7 + '@babel/core': 7.28.0 - '@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.27.7)': + '@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.7 + '@babel/core': 7.28.0 - '@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.27.7)': + '@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.7 + '@babel/core': 7.28.0 - '@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.27.7)': + '@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.7 + '@babel/core': 7.28.0 - '@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.27.7)': + '@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.7 + '@babel/core': 7.28.0 - '@svgr/babel-preset@8.1.0(@babel/core@7.27.7)': + '@svgr/babel-preset@8.1.0(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.7 - '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.27.7) - '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.27.7) - '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.27.7) - '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.27.7) - '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.27.7) - '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.27.7) - '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.27.7) - '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.27.7) + '@babel/core': 7.28.0 + '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.28.0) + '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.28.0) + '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.28.0) + '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.28.0) + '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.28.0) + '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.28.0) + '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.28.0) + '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.28.0) '@svgr/core@8.1.0(typescript@5.8.3)': dependencies: - '@babel/core': 7.27.7 - '@svgr/babel-preset': 8.1.0(@babel/core@7.27.7) + '@babel/core': 7.28.0 + '@svgr/babel-preset': 8.1.0(@babel/core@7.28.0) camelcase: 6.3.0 cosmiconfig: 8.3.6(typescript@5.8.3) snake-case: 3.0.4 @@ -11097,64 +10935,64 @@ snapshots: '@svgr/hast-util-to-babel-ast@8.0.0': dependencies: - '@babel/types': 7.27.7 + '@babel/types': 7.28.1 entities: 4.5.0 '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@5.8.3))': dependencies: - '@babel/core': 7.27.7 - '@svgr/babel-preset': 8.1.0(@babel/core@7.27.7) + '@babel/core': 7.28.0 + '@svgr/babel-preset': 8.1.0(@babel/core@7.28.0) '@svgr/core': 8.1.0(typescript@5.8.3) '@svgr/hast-util-to-babel-ast': 8.0.0 svg-parser: 2.0.4 transitivePeerDependencies: - supports-color - '@swc/core-darwin-arm64@1.12.1': + '@swc/core-darwin-arm64@1.13.0': optional: true - '@swc/core-darwin-x64@1.12.1': + '@swc/core-darwin-x64@1.13.0': optional: true - '@swc/core-linux-arm-gnueabihf@1.12.1': + '@swc/core-linux-arm-gnueabihf@1.13.0': optional: true - '@swc/core-linux-arm64-gnu@1.12.1': + '@swc/core-linux-arm64-gnu@1.13.0': optional: true - '@swc/core-linux-arm64-musl@1.12.1': + '@swc/core-linux-arm64-musl@1.13.0': optional: true - '@swc/core-linux-x64-gnu@1.12.1': + '@swc/core-linux-x64-gnu@1.13.0': optional: true - '@swc/core-linux-x64-musl@1.12.1': + '@swc/core-linux-x64-musl@1.13.0': optional: true - '@swc/core-win32-arm64-msvc@1.12.1': + '@swc/core-win32-arm64-msvc@1.13.0': optional: true - '@swc/core-win32-ia32-msvc@1.12.1': + '@swc/core-win32-ia32-msvc@1.13.0': optional: true - '@swc/core-win32-x64-msvc@1.12.1': + '@swc/core-win32-x64-msvc@1.13.0': optional: true - '@swc/core@1.12.1': + '@swc/core@1.13.0': dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.23 optionalDependencies: - '@swc/core-darwin-arm64': 1.12.1 - '@swc/core-darwin-x64': 1.12.1 - '@swc/core-linux-arm-gnueabihf': 1.12.1 - '@swc/core-linux-arm64-gnu': 1.12.1 - '@swc/core-linux-arm64-musl': 1.12.1 - '@swc/core-linux-x64-gnu': 1.12.1 - '@swc/core-linux-x64-musl': 1.12.1 - '@swc/core-win32-arm64-msvc': 1.12.1 - '@swc/core-win32-ia32-msvc': 1.12.1 - '@swc/core-win32-x64-msvc': 1.12.1 + '@swc/core-darwin-arm64': 1.13.0 + '@swc/core-darwin-x64': 1.13.0 + '@swc/core-linux-arm-gnueabihf': 1.13.0 + '@swc/core-linux-arm64-gnu': 1.13.0 + '@swc/core-linux-arm64-musl': 1.13.0 + '@swc/core-linux-x64-gnu': 1.13.0 + '@swc/core-linux-x64-musl': 1.13.0 + '@swc/core-win32-arm64-msvc': 1.13.0 + '@swc/core-win32-ia32-msvc': 1.13.0 + '@swc/core-win32-x64-msvc': 1.13.0 '@swc/counter@0.1.3': {} @@ -11251,10 +11089,10 @@ snapshots: '@tanstack/query-core': 5.83.0 react: 19.1.0 - '@tanstack/react-router-devtools@1.128.0(@tanstack/react-router@1.128.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@tanstack/router-core@1.128.0)(csstype@3.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(solid-js@1.9.5)(tiny-invariant@1.3.3)': + '@tanstack/react-router-devtools@1.128.3(@tanstack/react-router@1.128.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@tanstack/router-core@1.128.3)(csstype@3.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(solid-js@1.9.5)(tiny-invariant@1.3.3)': dependencies: - '@tanstack/react-router': 1.128.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@tanstack/router-devtools-core': 1.128.0(@tanstack/router-core@1.128.0)(csstype@3.1.3)(solid-js@1.9.5)(tiny-invariant@1.3.3) + '@tanstack/react-router': 1.128.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@tanstack/router-devtools-core': 1.128.3(@tanstack/router-core@1.128.3)(csstype@3.1.3)(solid-js@1.9.5)(tiny-invariant@1.3.3) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) transitivePeerDependencies: @@ -11263,11 +11101,11 @@ snapshots: - solid-js - tiny-invariant - '@tanstack/react-router@1.128.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@tanstack/react-router@1.128.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@tanstack/history': 1.121.34 '@tanstack/react-store': 0.7.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@tanstack/router-core': 1.128.0 + '@tanstack/router-core': 1.128.3 isbot: 5.1.28 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) @@ -11293,7 +11131,7 @@ snapshots: react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - '@tanstack/router-core@1.128.0': + '@tanstack/router-core@1.128.3': dependencies: '@tanstack/history': 1.121.34 '@tanstack/store': 0.7.0 @@ -11303,9 +11141,9 @@ snapshots: tiny-invariant: 1.3.3 tiny-warning: 1.0.3 - '@tanstack/router-devtools-core@1.128.0(@tanstack/router-core@1.128.0)(csstype@3.1.3)(solid-js@1.9.5)(tiny-invariant@1.3.3)': + '@tanstack/router-devtools-core@1.128.3(@tanstack/router-core@1.128.3)(csstype@3.1.3)(solid-js@1.9.5)(tiny-invariant@1.3.3)': dependencies: - '@tanstack/router-core': 1.128.0 + '@tanstack/router-core': 1.128.3 clsx: 2.1.1 goober: 2.1.16(csstype@3.1.3) solid-js: 1.9.5 @@ -11313,9 +11151,9 @@ snapshots: optionalDependencies: csstype: 3.1.3 - '@tanstack/router-generator@1.128.0': + '@tanstack/router-generator@1.128.3': dependencies: - '@tanstack/router-core': 1.128.0 + '@tanstack/router-core': 1.128.3 '@tanstack/router-utils': 1.121.21 '@tanstack/virtual-file-routes': 1.121.21 prettier: 3.6.2 @@ -11326,16 +11164,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.128.0(@tanstack/react-router@1.128.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@7.0.5(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0))': + '@tanstack/router-plugin@1.128.3(@tanstack/react-router@1.128.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@7.0.5(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0))': dependencies: - '@babel/core': 7.27.7 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.7) - '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.27.7) + '@babel/core': 7.28.0 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.0) '@babel/template': 7.27.2 - '@babel/traverse': 7.27.7 - '@babel/types': 7.27.7 - '@tanstack/router-core': 1.128.0 - '@tanstack/router-generator': 1.128.0 + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.1 + '@tanstack/router-core': 1.128.3 + '@tanstack/router-generator': 1.128.3 '@tanstack/router-utils': 1.121.21 '@tanstack/virtual-file-routes': 1.121.21 babel-dead-code-elimination: 1.0.10 @@ -11343,25 +11181,25 @@ snapshots: unplugin: 2.3.5 zod: 3.25.76 optionalDependencies: - '@tanstack/react-router': 1.128.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@tanstack/react-router': 1.128.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) vite: 7.0.5(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0) transitivePeerDependencies: - supports-color '@tanstack/router-utils@1.121.21': dependencies: - '@babel/core': 7.27.7 - '@babel/generator': 7.27.5 - '@babel/parser': 7.27.7 - '@babel/preset-typescript': 7.27.1(@babel/core@7.27.7) + '@babel/core': 7.28.0 + '@babel/generator': 7.28.0 + '@babel/parser': 7.28.0 + '@babel/preset-typescript': 7.27.1(@babel/core@7.28.0) ansis: 4.1.0 diff: 8.0.2 transitivePeerDependencies: - supports-color - '@tanstack/router-zod-adapter@1.81.5(@tanstack/react-router@1.128.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(zod@4.0.5)': + '@tanstack/router-zod-adapter@1.81.5(@tanstack/react-router@1.128.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(zod@4.0.5)': dependencies: - '@tanstack/react-router': 1.128.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@tanstack/react-router': 1.128.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) zod: 4.0.5 '@tanstack/store@0.7.0': {} @@ -11487,24 +11325,24 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.27.5 - '@babel/types': 7.27.7 + '@babel/parser': 7.28.0 + '@babel/types': 7.28.1 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.6 '@types/babel__generator@7.6.8': dependencies: - '@babel/types': 7.27.7 + '@babel/types': 7.28.1 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.27.7 - '@babel/types': 7.27.7 + '@babel/parser': 7.28.0 + '@babel/types': 7.28.1 '@types/babel__traverse@7.20.6': dependencies: - '@babel/types': 7.27.7 + '@babel/types': 7.28.1 '@types/cacheable-request@6.0.3': dependencies: @@ -11966,20 +11804,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitejs/plugin-react-swc@3.10.2(vite@7.0.5(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0))': + '@vitejs/plugin-react-swc@3.11.0(vite@7.0.5(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0))': dependencies: - '@rolldown/pluginutils': 1.0.0-beta.11 - '@swc/core': 1.12.1 + '@rolldown/pluginutils': 1.0.0-beta.27 + '@swc/core': 1.13.0 vite: 7.0.5(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0) transitivePeerDependencies: - '@swc/helpers' - '@vitejs/plugin-react@4.6.0(vite@7.0.5(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0))': + '@vitejs/plugin-react@4.7.0(vite@7.0.5(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0))': dependencies: - '@babel/core': 7.27.4 - '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.27.4) - '@rolldown/pluginutils': 1.0.0-beta.19 + '@babel/core': 7.28.0 + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.0) + '@rolldown/pluginutils': 1.0.0-beta.27 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 vite: 7.0.5(@types/node@22.16.4)(jiti@2.4.2)(less@4.2.0)(lightningcss@1.30.1)(sass-embedded@1.89.2)(sass@1.83.0)(stylus@0.62.0)(terser@5.36.0)(tsx@4.20.3)(yaml@2.8.0) @@ -12000,7 +11838,7 @@ snapshots: '@vue/compiler-core@3.5.13': dependencies: - '@babel/parser': 7.27.7 + '@babel/parser': 7.28.0 '@vue/shared': 3.5.13 entities: 4.5.0 estree-walker: 2.0.2 @@ -12291,10 +12129,10 @@ snapshots: babel-dead-code-elimination@1.0.10: dependencies: - '@babel/core': 7.27.7 - '@babel/parser': 7.27.7 - '@babel/traverse': 7.27.7 - '@babel/types': 7.27.7 + '@babel/core': 7.28.0 + '@babel/parser': 7.28.0 + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.1 transitivePeerDependencies: - supports-color diff --git a/lede/tools/cpio/patches/cpio-c23.patch b/lede/tools/cpio/patches/cpio-c23.patch new file mode 100644 index 0000000000..825f369d6e --- /dev/null +++ b/lede/tools/cpio/patches/cpio-c23.patch @@ -0,0 +1,23 @@ +--- a/src/extern.h ++++ b/src/extern.h +@@ -97,7 +97,8 @@ extern char input_is_special; + extern char output_is_special; + extern char input_is_seekable; + extern char output_is_seekable; +-extern int (*xstat) (); ++//void not good enough ++extern int (*xstat) (const char * restrict, struct stat * restrict); + extern void (*copy_function) (); + extern char *change_directory_option; + +--- a/src/global.c ++++ b/src/global.c +@@ -185,7 +185,7 @@ bool to_stdout_option = false; + + /* A pointer to either lstat or stat, depending on whether + dereferencing of symlinks is done for input files. */ +-int (*xstat) (); ++int (*xstat) (const char * restrict, struct stat * restrict); + + /* Which copy operation to perform. (-i, -o, -p) */ + void (*copy_function) () = 0; diff --git a/lede/tools/e2fsprogs/Makefile b/lede/tools/e2fsprogs/Makefile index 15d6bb2949..5deee08160 100644 --- a/lede/tools/e2fsprogs/Makefile +++ b/lede/tools/e2fsprogs/Makefile @@ -9,11 +9,10 @@ include $(TOPDIR)/rules.mk PKG_NAME:=e2fsprogs PKG_CPE_ID:=cpe:/a:e2fsprogs_project:e2fsprogs -PKG_VERSION:=1.46.6 -PKG_HASH:=8749efc57cda3b6cfcb16a2d2ccd8b8be676c8827e5bae338aa327219a9c2fc4 -PKG_RELEASE:=1 +PKG_VERSION:=1.47.2 +PKG_HASH:=08242e64ca0e8194d9c1caad49762b19209a06318199b63ce74ae4ef2d74e63c -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=@KERNEL/linux/kernel/people/tytso/e2fsprogs/v$(PKG_VERSION)/ HOST_BUILD_PARALLEL:=1 @@ -31,16 +30,26 @@ HOST_CONFIGURE_ARGS += \ --disable-tls \ --disable-nls \ --enable-threads=pth \ - --disable-fuse2fs + --disable-fuse2fs \ + --with-crond-dir=no + +# The following uses pkg-config the wrong way around. Just override it. +HOST_CONFIGURE_VARS += \ + ac_cv_lib_uuid_uuid_generate=yes define Host/Prepare $(call Host/Prepare/Default) rm -rf $(HOST_BUILD_DIR)/doc endef -define Host/Clean - rm -f $(STAGING_DIR_HOST)/bin/e2fsck - rm -f $(STAGING_DIR_HOST)/bin/tune2fs +define Host/Install + $(call Host/Install/Default) + $(SED) 's|^DIR=.*|DIR=$$$${STAGING_DIR_HOST}/share/et|' $(STAGING_DIR_HOST)/bin/compile_et + $(SED) 's|^DIR=.*|DIR=$$$${STAGING_DIR_HOST}/share/ss|' $(STAGING_DIR_HOST)/bin/mk_cmds +endef + +define Host/Uninstall + -$(call Host/Compile/Default,uninstall) endef $(eval $(call HostBuild)) diff --git a/lede/tools/e2fsprogs/patches/001-exit_0_on_corrected_errors.patch b/lede/tools/e2fsprogs/patches/001-exit_0_on_corrected_errors.patch deleted file mode 100644 index c94c609160..0000000000 --- a/lede/tools/e2fsprogs/patches/001-exit_0_on_corrected_errors.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/e2fsck/e2fsck.h -+++ b/e2fsck/e2fsck.h -@@ -81,7 +81,7 @@ - * Exit codes used by fsck-type programs - */ - #define FSCK_OK 0 /* No errors */ --#define FSCK_NONDESTRUCT 1 /* File system errors corrected */ -+#define FSCK_NONDESTRUCT 0 /* File system errors corrected */ - #define FSCK_REBOOT 2 /* System should be rebooted */ - #define FSCK_UNCORRECTED 4 /* File system errors left uncorrected */ - #define FSCK_ERROR 8 /* Operational error */ diff --git a/lede/tools/e2fsprogs/patches/002-dont-build-e4defrag.patch b/lede/tools/e2fsprogs/patches/002-dont-build-e4defrag.patch deleted file mode 100644 index f59cd317a1..0000000000 --- a/lede/tools/e2fsprogs/patches/002-dont-build-e4defrag.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/misc/Makefile.in -+++ b/misc/Makefile.in -@@ -12,7 +12,7 @@ MKDIR_P = @MKDIR_P@ - - @MCONFIG@ - --@DEFRAG_CMT@@LINUX_CMT@E4DEFRAG_PROG= e4defrag -+@DEFRAG_CMT@@LINUX_CMT@E4DEFRAG_PROG= - @DEFRAG_CMT@@LINUX_CMT@E4DEFRAG_MAN= e4defrag.8 - - @LINUX_CMT@E4CRYPT_PROG = e4crypt diff --git a/lede/tools/e2fsprogs/patches/003-no-crond.patch b/lede/tools/e2fsprogs/patches/003-no-crond.patch deleted file mode 100644 index 67ddd4ab0c..0000000000 --- a/lede/tools/e2fsprogs/patches/003-no-crond.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/configure -+++ b/configure -@@ -15259,7 +15259,7 @@ then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${crond_dir}" >&5 - printf "%s\n" "${crond_dir}" >&6; } -- have_crond="yes" -+ have_crond="no"; with_crond_dir="" - - else $as_nop - diff --git a/lede/tools/elfutils/Makefile b/lede/tools/elfutils/Makefile index 4e561a3380..d33315d3e7 100644 --- a/lede/tools/elfutils/Makefile +++ b/lede/tools/elfutils/Makefile @@ -19,6 +19,8 @@ PKG_INSTALL:=1 include $(INCLUDE_DIR)/host-build.mk +HOST_CFLAGS += -Wno-error -fPIC -std=gnu17 + HOST_CONFIGURE_ARGS += \ --disable-debuginfod \ --disable-libdebuginfod \ diff --git a/lede/tools/gmp/patches/001-acinclude-m4-fix-std23.patch b/lede/tools/gmp/patches/001-acinclude-m4-fix-std23.patch new file mode 100644 index 0000000000..05271764b7 --- /dev/null +++ b/lede/tools/gmp/patches/001-acinclude-m4-fix-std23.patch @@ -0,0 +1,19 @@ +# HG changeset patch +# User Marc Glisse +# Date 1738186682 -3600 +# Wed Jan 29 22:38:02 2025 +0100 +# Node ID 8e7bb4ae7a18b1405ea7f9cbcda450b7d920a901 +# Parent e84c5c785bbe8ed8c3620194e50b65adfc2f5d83 +Complete function prototype in acinclude.m4 for C23 compatibility + +--- a/acinclude.m4 ++++ b/acinclude.m4 +@@ -609,7 +609,7 @@ GMP_PROG_CC_WORKS_PART([$1], [long long + + #if defined (__GNUC__) && ! defined (__cplusplus) + typedef unsigned long long t1;typedef t1*t2; +-void g(){} ++void g(int,t1 const*,t1,t2,t1 const*,int){} + void h(){} + static __inline__ t1 e(t2 rp,t2 up,int n,t1 v0) + {t1 c,x,r;int i;if(v0){c=1;for(i=1;i +# Date 1743513946 -7200 +# Tue Apr 01 15:25:46 2025 +0200 +# Node ID d66d66d82dbbe4f561920d28c1e1cbe6818452c7 +# Parent 1a2ad0e32507e842486c8ac9d5cdc772fd0c335e +Add parameter names to function prototype + + 2025-02-01 Marc Glisse + + * longlong.h (loongarch64 umul_ppmm): __int128__ -> __int128. +--- a/acinclude.m4 ++++ b/acinclude.m4 +@@ -609,7 +609,7 @@ GMP_PROG_CC_WORKS_PART([$1], [long long + + #if defined (__GNUC__) && ! defined (__cplusplus) + typedef unsigned long long t1;typedef t1*t2; +-void g(int,t1 const*,t1,t2,t1 const*,int){} ++void g(int a,t1 const*b,t1 c,t2 d,t1 const*e,int f){} + void h(){} + static __inline__ t1 e(t2 rp,t2 up,int n,t1 v0) + {t1 c,x,r;int i;if(v0){c=1;for(i=1;i/dev/null + } + rm -f s905_autoscript* aml_autoscript* if [ ${K510} -eq 1 ]; then diff --git a/openwrt-packages/luci-app-amlogic/root/usr/sbin/openwrt-update-allwinner b/openwrt-packages/luci-app-amlogic/root/usr/sbin/openwrt-update-allwinner index 0f39ca5d59..644d7c12a3 100755 --- a/openwrt-packages/luci-app-amlogic/root/usr/sbin/openwrt-update-allwinner +++ b/openwrt-packages/luci-app-amlogic/root/usr/sbin/openwrt-update-allwinner @@ -624,6 +624,11 @@ EOF rm -f uEnv.txt } +# Replace the UUID for extlinux/extlinux.conf if it exists +[[ -f "extlinux/extlinux.conf" ]] && { + sed -i -E "s|UUID=[^ ]*|UUID=${NEW_ROOT_UUID}|" extlinux/extlinux.conf 2>/dev/null +} + sync echo "done" echo diff --git a/openwrt-packages/luci-app-amlogic/root/usr/sbin/openwrt-update-amlogic b/openwrt-packages/luci-app-amlogic/root/usr/sbin/openwrt-update-amlogic index cfe85646c3..0950d67022 100755 --- a/openwrt-packages/luci-app-amlogic/root/usr/sbin/openwrt-update-amlogic +++ b/openwrt-packages/luci-app-amlogic/root/usr/sbin/openwrt-update-amlogic @@ -824,6 +824,11 @@ EOF fi sync +# Replace the UUID for extlinux/extlinux.conf if it exists +[[ -f "extlinux/extlinux.conf" ]] && { + sed -i -E "s|UUID=[^ ]*|UUID=${NEW_ROOT_UUID}|" extlinux/extlinux.conf 2>/dev/null +} + cd $WORK_DIR umount -f ${P1} ${P2} 2>/dev/null losetup -D 2>/dev/null diff --git a/openwrt-packages/luci-app-amlogic/root/usr/sbin/openwrt-update-rockchip b/openwrt-packages/luci-app-amlogic/root/usr/sbin/openwrt-update-rockchip index ec499136ab..42074a755f 100755 --- a/openwrt-packages/luci-app-amlogic/root/usr/sbin/openwrt-update-rockchip +++ b/openwrt-packages/luci-app-amlogic/root/usr/sbin/openwrt-update-rockchip @@ -864,6 +864,11 @@ rootfstype=btrfs rootflags=compress=zstd:${ZSTD_LEVEL} EOF +# Replace the UUID for extlinux/extlinux.conf if it exists +[[ -f "extlinux/extlinux.conf" ]] && { + sed -i -E "s|UUID=[^ ]*|UUID=${NEW_ROOT_UUID}|" extlinux/extlinux.conf 2>/dev/null +} + # 如果新的dtb文件不存在,则用旧的代替 if [ ! -f "dtb/rockchip/${MYDTB_FDTFILE}" ]; then echo "The new dtb file does not exist, replace it with the old one." diff --git a/openwrt-packages/luci-app-argon-config/po/pt-br/argon-config.po b/openwrt-packages/luci-app-argon-config/po/pt-br/argon-config.po new file mode 100644 index 0000000000..07cb14e3c5 --- /dev/null +++ b/openwrt-packages/luci-app-argon-config/po/pt-br/argon-config.po @@ -0,0 +1,174 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: 2024-06-24 15:34-0300\n" +"PO-Revision-Date: 2024-06-24 15:35-0300\n" +"Last-Translator: Janderson Vieira Santos \n" +"Language-Team: \n" +"Language: pt-br\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 3.0.1\n" + +#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:97 +msgid "0 transparent - 1 opaque ; ( Suggest: Black translucent preset: 0.5 )" +msgstr "0 transparente - 1 opaco; (Sugestão: preto translúcido predefinido: 0.5)" + +#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:79 +msgid "" +"0 transparent - 1 opaque ; ( Suggest: transparent: 0 or translucent preset: " +"0.5 )" +msgstr "0 transparente - 1 opaco; (Sugestão: transparente: 0 ou translúcido predefinido: 0.5)" + +#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:92 +msgid "A HEX Color ; ( Default: #483d8b )" +msgstr "Uma cor HEX; (Padrão: #483d8b)" + +#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:72 +msgid "A HEX Color ; ( Default: #5e72e4 )" +msgstr "Uma cor HEX; (Padrão: #5e72e4)" + +#: applications/luci-app-argon-config/luasrc/controller/argon-config.lua:8 +#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:53 +msgid "Argon Config" +msgstr "Configuração Argon" + +#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:195 +msgid "Background file list" +msgstr "Lista de arquivos de fundo" + +#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:60 +msgid "Bing Wallpapers" +msgstr "Papéis de parede do Bing" + +#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:59 +msgid "Built-in" +msgstr "Integrado" + +#: applications/luci-app-argon-config/luasrc/view/argon-config/other_upload.htm:2 +msgid "Choose local file:" +msgstr "Escolher arquivo local:" + +#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:149 +msgid "Create upload file error." +msgstr "Erro ao criar arquivo de upload." + +#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:200 +msgid "File name" +msgstr "Nome do arquivo" + +#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:159 +msgid "File saved to" +msgstr "Arquivo salvo em" + +#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:65 +msgid "Follow System" +msgstr "Seguir sistema" + +#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:67 +msgid "Force Dark" +msgstr "Forçar escuro" + +#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:66 +msgid "Force Light" +msgstr "Forçar claro" + +#: applications/luci-app-argon-config/root/usr/share/rpcd/acl.d/luci-app-argon-config.json:3 +msgid "Grant UCI access for luci-app-argon-config" +msgstr "Conceder acesso UCI para luci-app-argon-config" + +#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:53 +msgid "" +"Here you can set the blur and transparency of the login page of argon theme, " +"and manage the background pictures and videos.[Chrome is recommended]" +msgstr "" +"Aqui você pode configurar o desfoque e a transparência da página de login do tema argon, " +"e gerenciar as imagens de fundo e vídeos. [Recomenda-se o Chrome]" + +#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:87 +#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:105 +msgid "" +"Larger value will more blurred ; ( Suggest: clear: 1 or blur preset: 10 )" +msgstr "" +"Maior valor será mais desfocado; (Sugestão: claro: 1 ou desfoque predefinido: 10)" + +#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:201 +msgid "Modify time" +msgstr "Modificar horário" + +#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:167 +msgid "No specify upload file." +msgstr "Nenhum arquivo de upload especificado." + +#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:203 +msgid "Remove" +msgstr "Remover" + +#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:110 +msgid "Save Changes" +msgstr "Salvar alterações" + +#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:202 +msgid "Size" +msgstr "Tamanho" + +#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:64 +msgid "Theme mode" +msgstr "Modo do tema" + +#: applications/luci-app-argon-config/luasrc/view/argon-config/other_upload.htm:4 +msgid "Upload" +msgstr "Carregar" + +#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:124 +msgid "Upload (Free:" +msgstr "Carregar (Livre:" + +#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:128 +msgid "Upload file to '/www/luci-static/argon/background/'" +msgstr "Carregar arquivo para '/www/luci-static/argon/background/'" + +#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:58 +msgid "Wallpaper Source" +msgstr "Fonte do papel de parede" + +#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:70 +msgid "You can choose Theme color mode here" +msgstr "Você pode escolher o modo de cor do tema aqui" + +#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:124 +msgid "" +"You can upload files such as jpg,png,gif,mp4,webm files, To change the login page " +"background." +msgstr "" +"Você pode carregar arquivos como jpg, png, gif, mp4, webm, para mudar o fundo da " +"página de login." + +#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:105 +msgid "[Dark mode] Frosted Glass Radius" +msgstr "[Modo escuro] Raio de vidro fosco" + +#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:92 +msgid "[Dark mode] Primary Color" +msgstr "[Modo escuro] Cor primária" + +#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:97 +msgid "[Dark mode] Transparency" +msgstr "[Modo escuro] Transparência" + +#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:87 +msgid "[Light mode] Frosted Glass Radius" +msgstr "[Modo claro] Raio de vidro fosco" + +#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:72 +msgid "[Light mode] Primary Color" +msgstr "[Modo claro] Cor primária" + +#: applications/luci-app-argon-config/luasrc/model/cbi/argon-config.lua:79 +msgid "[Light mode] Transparency" +msgstr "[Modo claro] Transparência" + +#~ msgid "Luci Argon theme config" +#~ msgstr "Configuração do tema Luci Argon" diff --git a/openwrt-passwall/luci-app-passwall/luasrc/model/cbi/passwall/client/acl.lua b/openwrt-passwall/luci-app-passwall/luasrc/model/cbi/passwall/client/acl.lua index 9d5edc7e4d..ca13ef325e 100644 --- a/openwrt-passwall/luci-app-passwall/luasrc/model/cbi/passwall/client/acl.lua +++ b/openwrt-passwall/luci-app-passwall/luasrc/model/cbi/passwall/client/acl.lua @@ -101,4 +101,6 @@ o:value("1:65535", translate("All")) o:value("53", "53") ]]-- +m:append(Template(appname .. "/acl/js")) + return m diff --git a/openwrt-passwall/luci-app-passwall/luasrc/model/cbi/passwall/client/other.lua b/openwrt-passwall/luci-app-passwall/luasrc/model/cbi/passwall/client/other.lua index d4f45b75e5..3d283a1ade 100644 --- a/openwrt-passwall/luci-app-passwall/luasrc/model/cbi/passwall/client/other.lua +++ b/openwrt-passwall/luci-app-passwall/luasrc/model/cbi/passwall/client/other.lua @@ -251,4 +251,6 @@ if has_singbox then o.description = translate("Override the connection destination address with the sniffed domain.
When enabled, traffic will match only by domain, ignoring IP rules.
If using shunt nodes, configure the domain shunt rules correctly.") end +m:append(Template(appname .. "/other/js")) + return m diff --git a/openwrt-passwall/luci-app-passwall/luasrc/view/passwall/acl/js.htm b/openwrt-passwall/luci-app-passwall/luasrc/view/passwall/acl/js.htm new file mode 100644 index 0000000000..0ff1a399c5 --- /dev/null +++ b/openwrt-passwall/luci-app-passwall/luasrc/view/passwall/acl/js.htm @@ -0,0 +1,15 @@ + diff --git a/openwrt-passwall/luci-app-passwall/luasrc/view/passwall/haproxy/js.htm b/openwrt-passwall/luci-app-passwall/luasrc/view/passwall/haproxy/js.htm index 904909678c..63011f467d 100644 --- a/openwrt-passwall/luci-app-passwall/luasrc/view/passwall/haproxy/js.htm +++ b/openwrt-passwall/luci-app-passwall/luasrc/view/passwall/haproxy/js.htm @@ -45,5 +45,17 @@ } }, 300); }); + + //修正上移、下移按钮名称 + window.onload = function() { + var ups = document.querySelectorAll("input.btn.cbi-button.cbi-button-up"); + var downs = document.querySelectorAll("input.btn.cbi-button.cbi-button-down"); + for (var i = 0; i < ups.length; i++) { + ups[i].value = "<%:Move up%>"; + } + for (var i = 0; i < downs.length; i++) { + downs[i].value = "<%:Move down%>"; + } + } //]]> diff --git a/openwrt-passwall/luci-app-passwall/luasrc/view/passwall/node_list/node_list.htm b/openwrt-passwall/luci-app-passwall/luasrc/view/passwall/node_list/node_list.htm index ef64abace0..2ffdc53706 100644 --- a/openwrt-passwall/luci-app-passwall/luasrc/view/passwall/node_list/node_list.htm +++ b/openwrt-passwall/luci-app-passwall/luasrc/view/passwall/node_list/node_list.htm @@ -421,6 +421,12 @@ table td, .table .td { obj.port = port_dom.value; } + //修正上移、下移按钮名称 + var up = td.querySelector(".cbi-button-up"); + var down = td.querySelector(".cbi-button-down"); + if (up) up.value = "<%:Move up%>"; + if (down) down.value = "<%:Move down%>"; + node_count++; var add_from = document.getElementById("cbid.passwall." + id + ".add_from").value; if (node_list[add_from]) diff --git a/openwrt-passwall/luci-app-passwall/luasrc/view/passwall/node_subscribe/js.htm b/openwrt-passwall/luci-app-passwall/luasrc/view/passwall/node_subscribe/js.htm index 1dc361c0fa..d70e4ba15b 100644 --- a/openwrt-passwall/luci-app-passwall/luasrc/view/passwall/node_subscribe/js.htm +++ b/openwrt-passwall/luci-app-passwall/luasrc/view/passwall/node_subscribe/js.htm @@ -34,5 +34,17 @@ local api = require "luci.passwall.api" }); return false; } + + //修正上移、下移按钮名称 + window.onload = function() { + var ups = document.querySelectorAll("input.btn.cbi-button.cbi-button-up"); + var downs = document.querySelectorAll("input.btn.cbi-button.cbi-button-down"); + for (var i = 0; i < ups.length; i++) { + ups[i].value = "<%:Move up%>"; + } + for (var i = 0; i < downs.length; i++) { + downs[i].value = "<%:Move down%>"; + } + } //]]> diff --git a/openwrt-passwall/luci-app-passwall/luasrc/view/passwall/other/js.htm b/openwrt-passwall/luci-app-passwall/luasrc/view/passwall/other/js.htm new file mode 100644 index 0000000000..0ff1a399c5 --- /dev/null +++ b/openwrt-passwall/luci-app-passwall/luasrc/view/passwall/other/js.htm @@ -0,0 +1,15 @@ + diff --git a/openwrt-passwall/luci-app-passwall/luasrc/view/passwall/rule/rule_version.htm b/openwrt-passwall/luci-app-passwall/luasrc/view/passwall/rule/rule_version.htm index e6fbe0216e..ac0b42f13a 100644 --- a/openwrt-passwall/luci-app-passwall/luasrc/view/passwall/rule/rule_version.htm +++ b/openwrt-passwall/luci-app-passwall/luasrc/view/passwall/rule/rule_version.htm @@ -38,6 +38,18 @@ local geosite_update = api.uci_get_type("@global_rules[0]", "geosite_update", "1 } ); } + + //修正上移、下移按钮名称 + window.onload = function() { + var ups = document.querySelectorAll("input.btn.cbi-button.cbi-button-up"); + var downs = document.querySelectorAll("input.btn.cbi-button.cbi-button-down"); + for (var i = 0; i < ups.length; i++) { + ups[i].value = "<%:Move up%>"; + } + for (var i = 0; i < downs.length; i++) { + downs[i].value = "<%:Move down%>"; + } + } //]]>
diff --git a/openwrt-passwall/luci-app-passwall/luasrc/view/passwall/server/users_list_status.htm b/openwrt-passwall/luci-app-passwall/luasrc/view/passwall/server/users_list_status.htm index 8ba385aaf4..69d37abe44 100644 --- a/openwrt-passwall/luci-app-passwall/luasrc/view/passwall/server/users_list_status.htm +++ b/openwrt-passwall/luci-app-passwall/luasrc/view/passwall/server/users_list_status.htm @@ -29,6 +29,11 @@ local api = require "luci.passwall.api" //添加"日志"按钮 new_div += '' + '?id=' + id + '\', \'_blank\')"/>  '; td.innerHTML = new_div + td.innerHTML; + //修正上移、下移按钮名称 + var up = td.querySelector(".cbi-button-up"); + var down = td.querySelector(".cbi-button-down"); + if (up) up.value = "<%:Move up%>"; + if (down) down.value = "<%:Move down%>"; } catch(err) { console.error(err); diff --git a/sing-box/.github/workflows/build.yml b/sing-box/.github/workflows/build.yml index ac233a0904..adc51382a5 100644 --- a/sing-box/.github/workflows/build.yml +++ b/sing-box/.github/workflows/build.yml @@ -46,7 +46,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v5 with: - go-version: ^1.24 + go-version: ^1.24.5 - name: Check input version if: github.event_name == 'workflow_dispatch' run: |- @@ -109,7 +109,7 @@ jobs: if: ${{ ! matrix.legacy_go }} uses: actions/setup-go@v5 with: - go-version: ^1.24 + go-version: ^1.24.5 - name: Cache Legacy Go if: matrix.require_legacy_go id: cache-legacy-go @@ -294,7 +294,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v5 with: - go-version: ^1.24 + go-version: ^1.24.5 - name: Setup Android NDK id: setup-ndk uses: nttld/setup-ndk@v1 @@ -374,7 +374,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v5 with: - go-version: ^1.24 + go-version: ^1.24.5 - name: Setup Android NDK id: setup-ndk uses: nttld/setup-ndk@v1 @@ -472,7 +472,7 @@ jobs: if: matrix.if uses: actions/setup-go@v5 with: - go-version: ^1.24 + go-version: ^1.24.5 - name: Setup Xcode stable if: matrix.if && github.ref == 'refs/heads/main-next' run: |- diff --git a/sing-box/.github/workflows/lint.yml b/sing-box/.github/workflows/lint.yml index c7e5d6e663..1b09ad2a70 100644 --- a/sing-box/.github/workflows/lint.yml +++ b/sing-box/.github/workflows/lint.yml @@ -28,7 +28,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v5 with: - go-version: ^1.24 + go-version: ^1.24.5 - name: golangci-lint uses: golangci/golangci-lint-action@v6 with: diff --git a/sing-box/.github/workflows/linux.yml b/sing-box/.github/workflows/linux.yml index 9702702fb1..00a3f71d55 100644 --- a/sing-box/.github/workflows/linux.yml +++ b/sing-box/.github/workflows/linux.yml @@ -25,7 +25,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v5 with: - go-version: ^1.24 + go-version: ^1.24.5 - name: Check input version if: github.event_name == 'workflow_dispatch' run: |- @@ -66,7 +66,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v5 with: - go-version: ^1.24 + go-version: ^1.24.5 - name: Setup Android NDK if: matrix.os == 'android' uses: nttld/setup-ndk@v1 diff --git a/sing-box/cmd/internal/tun_bench/main.go b/sing-box/cmd/internal/tun_bench/main.go new file mode 100644 index 0000000000..c1227a6b99 --- /dev/null +++ b/sing-box/cmd/internal/tun_bench/main.go @@ -0,0 +1,286 @@ +package main + +import ( + "context" + "fmt" + "io" + "net/netip" + "os" + "os/exec" + "strings" + "syscall" + "time" + + C "github.com/sagernet/sing-box/constant" + "github.com/sagernet/sing-box/include" + "github.com/sagernet/sing-box/log" + "github.com/sagernet/sing-box/option" + "github.com/sagernet/sing/common" + E "github.com/sagernet/sing/common/exceptions" + "github.com/sagernet/sing/common/json" + "github.com/sagernet/sing/common/shell" +) + +var iperf3Path string + +func main() { + err := main0() + if err != nil { + log.Fatal(err) + } +} + +func main0() error { + err := shell.Exec("sudo", "ls").Run() + if err != nil { + return err + } + results, err := runTests() + if err != nil { + return err + } + encoder := json.NewEncoder(os.Stdout) + encoder.SetIndent("", " ") + return encoder.Encode(results) +} + +func runTests() ([]TestResult, error) { + boxPaths := []string{ + //"/Users/sekai/Downloads/sing-box-1.11.15-darwin-arm64/sing-box", + //"/Users/sekai/Downloads/sing-box-1.11.15-linux-arm64/sing-box", + "./sing-box", + } + stacks := []string{ + "gvisor", + "system", + } + mtus := []int{ + // 1500, + // 4064, + // 16384, + 32768, + 49152, + 65535, + } + flagList := [][]string{ + {}, + } + var results []TestResult + for _, boxPath := range boxPaths { + for _, stack := range stacks { + for _, mtu := range mtus { + if strings.HasPrefix(boxPath, ".") { + for _, flags := range flagList { + result, err := testOnce(boxPath, stack, mtu, false, flags) + if err != nil { + return nil, err + } + results = append(results, *result) + } + } else { + result, err := testOnce(boxPath, stack, mtu, false, nil) + if err != nil { + return nil, err + } + results = append(results, *result) + } + } + } + } + return results, nil +} + +type TestResult struct { + BoxPath string `json:"box_path"` + Stack string `json:"stack"` + MTU int `json:"mtu"` + Flags []string `json:"flags"` + MultiThread bool `json:"multi_thread"` + UploadSpeed string `json:"upload_speed"` + DownloadSpeed string `json:"download_speed"` +} + +func testOnce(boxPath string, stackName string, mtu int, multiThread bool, flags []string) (result *TestResult, err error) { + testAddress := netip.MustParseAddr("1.1.1.1") + testConfig := option.Options{ + Inbounds: []option.Inbound{ + { + Type: C.TypeTun, + Options: &option.TunInboundOptions{ + Address: []netip.Prefix{netip.MustParsePrefix("172.18.0.1/30")}, + AutoRoute: true, + MTU: uint32(mtu), + Stack: stackName, + RouteAddress: []netip.Prefix{netip.PrefixFrom(testAddress, testAddress.BitLen())}, + }, + }, + }, + Route: &option.RouteOptions{ + Rules: []option.Rule{ + { + Type: C.RuleTypeDefault, + DefaultOptions: option.DefaultRule{ + RawDefaultRule: option.RawDefaultRule{ + IPCIDR: []string{testAddress.String()}, + }, + RuleAction: option.RuleAction{ + Action: C.RuleActionTypeRouteOptions, + RouteOptionsOptions: option.RouteOptionsActionOptions{ + OverrideAddress: "127.0.0.1", + }, + }, + }, + }, + }, + AutoDetectInterface: true, + }, + } + ctx := include.Context(context.Background()) + tempConfig, err := os.CreateTemp("", "tun-bench-*.json") + if err != nil { + return + } + defer os.Remove(tempConfig.Name()) + encoder := json.NewEncoderContext(ctx, tempConfig) + encoder.SetIndent("", " ") + err = encoder.Encode(testConfig) + if err != nil { + return nil, E.Cause(err, "encode test config") + } + tempConfig.Close() + var sudoArgs []string + if len(flags) > 0 { + sudoArgs = append(sudoArgs, "env") + for _, flag := range flags { + sudoArgs = append(sudoArgs, flag) + } + } + sudoArgs = append(sudoArgs, boxPath, "run", "-c", tempConfig.Name()) + boxProcess := shell.Exec("sudo", sudoArgs...) + boxProcess.Stdout = &stderrWriter{} + boxProcess.Stderr = io.Discard + err = boxProcess.Start() + if err != nil { + return + } + + if C.IsDarwin { + iperf3Path, err = exec.LookPath("iperf3-darwin") + } else { + iperf3Path, err = exec.LookPath("iperf3") + } + if err != nil { + return + } + serverProcess := shell.Exec(iperf3Path, "-s") + serverProcess.Stdout = io.Discard + serverProcess.Stderr = io.Discard + err = serverProcess.Start() + if err != nil { + return nil, E.Cause(err, "start iperf3 server") + } + + time.Sleep(time.Second) + + args := []string{"-c", testAddress.String(), "-t", "5"} + if multiThread { + args = append(args, "-P", "10") + } + + uploadProcess := shell.Exec(iperf3Path, args...) + output, err := uploadProcess.Read() + if err != nil { + boxProcess.Process.Signal(syscall.SIGKILL) + serverProcess.Process.Signal(syscall.SIGKILL) + println(output) + return + } + + uploadResult := common.SubstringBeforeLast(output, "iperf Done.") + uploadResult = common.SubstringBeforeLast(uploadResult, "sender") + uploadResult = common.SubstringBeforeLast(uploadResult, "bits/sec") + uploadResult = common.SubstringAfterLast(uploadResult, "Bytes") + uploadResult = strings.ReplaceAll(uploadResult, " ", "") + + result = &TestResult{ + BoxPath: boxPath, + Stack: stackName, + MTU: mtu, + Flags: flags, + MultiThread: multiThread, + UploadSpeed: uploadResult, + } + + downloadProcess := shell.Exec(iperf3Path, append(args, "-R")...) + output, err = downloadProcess.Read() + if err != nil { + boxProcess.Process.Signal(syscall.SIGKILL) + serverProcess.Process.Signal(syscall.SIGKILL) + println(output) + return + } + + downloadResult := common.SubstringBeforeLast(output, "iperf Done.") + downloadResult = common.SubstringBeforeLast(downloadResult, "receiver") + downloadResult = common.SubstringBeforeLast(downloadResult, "bits/sec") + downloadResult = common.SubstringAfterLast(downloadResult, "Bytes") + downloadResult = strings.ReplaceAll(downloadResult, " ", "") + + result.DownloadSpeed = downloadResult + + printArgs := []any{boxPath, stackName, mtu, "upload", uploadResult, "download", downloadResult} + if len(flags) > 0 { + printArgs = append(printArgs, "flags", strings.Join(flags, " ")) + } + if multiThread { + printArgs = append(printArgs, "(-P 10)") + } + fmt.Println(printArgs...) + err = boxProcess.Process.Signal(syscall.SIGTERM) + if err != nil { + return + } + + err = serverProcess.Process.Signal(syscall.SIGTERM) + if err != nil { + return + } + + boxDone := make(chan struct{}) + go func() { + boxProcess.Cmd.Wait() + close(boxDone) + }() + + serverDone := make(chan struct{}) + go func() { + serverProcess.Process.Wait() + close(serverDone) + }() + + select { + case <-boxDone: + case <-time.After(2 * time.Second): + boxProcess.Process.Kill() + case <-time.After(4 * time.Second): + println("box process did not close!") + os.Exit(1) + } + + select { + case <-serverDone: + case <-time.After(2 * time.Second): + serverProcess.Process.Kill() + case <-time.After(4 * time.Second): + println("server process did not close!") + os.Exit(1) + } + + return +} + +type stderrWriter struct{} + +func (w *stderrWriter) Write(p []byte) (n int, err error) { + return os.Stderr.Write(p) +} diff --git a/sing-box/go.mod b/sing-box/go.mod index 790d9cd496..88bffc4f71 100644 --- a/sing-box/go.mod +++ b/sing-box/go.mod @@ -28,13 +28,13 @@ require ( github.com/sagernet/gomobile v0.1.7 github.com/sagernet/gvisor v0.0.0-20250325023245-7a9c0f5725fb github.com/sagernet/quic-go v0.52.0-beta.1 - github.com/sagernet/sing v0.6.12-0.20250710134112-2f96887176ff + github.com/sagernet/sing v0.6.12-0.20250718132236-21daaa465e88 github.com/sagernet/sing-mux v0.3.2 github.com/sagernet/sing-quic v0.5.0-beta.3 github.com/sagernet/sing-shadowsocks v0.2.8 github.com/sagernet/sing-shadowsocks2 v0.2.1 github.com/sagernet/sing-shadowtls v0.2.1-0.20250503051639-fcd445d33c11 - github.com/sagernet/sing-tun v0.6.10-0.20250710134146-6aeee7bc7db4 + github.com/sagernet/sing-tun v0.6.10-0.20250718030019-3af7305b853e github.com/sagernet/sing-vmess v0.2.4-0.20250605032146-38cc72672c88 github.com/sagernet/smux v1.5.34-mod.2 github.com/sagernet/tailscale v1.80.3-mod.5 diff --git a/sing-box/go.sum b/sing-box/go.sum index 65a3334ecb..4ca50a469b 100644 --- a/sing-box/go.sum +++ b/sing-box/go.sum @@ -168,8 +168,8 @@ github.com/sagernet/nftables v0.3.0-beta.4/go.mod h1:OQXAjvjNGGFxaTgVCSTRIhYB5/l github.com/sagernet/quic-go v0.52.0-beta.1 h1:hWkojLg64zjV+MJOvJU/kOeWndm3tiEfBLx5foisszs= github.com/sagernet/quic-go v0.52.0-beta.1/go.mod h1:OV+V5kEBb8kJS7k29MzDu6oj9GyMc7HA07sE1tedxz4= github.com/sagernet/sing v0.6.9/go.mod h1:ARkL0gM13/Iv5VCZmci/NuoOlePoIsW0m7BWfln/Hak= -github.com/sagernet/sing v0.6.12-0.20250710134112-2f96887176ff h1:2x29M8i86PwGEGqvWI1zJWw2BiT6WRg97ELRABZo0Xc= -github.com/sagernet/sing v0.6.12-0.20250710134112-2f96887176ff/go.mod h1:ARkL0gM13/Iv5VCZmci/NuoOlePoIsW0m7BWfln/Hak= +github.com/sagernet/sing v0.6.12-0.20250718132236-21daaa465e88 h1:Wu6hu+JsZ2gsFRJMqGzaZJ4ctGnmNrLGm9ckmotBFOs= +github.com/sagernet/sing v0.6.12-0.20250718132236-21daaa465e88/go.mod h1:ARkL0gM13/Iv5VCZmci/NuoOlePoIsW0m7BWfln/Hak= github.com/sagernet/sing-mux v0.3.2 h1:meZVFiiStvHThb/trcpAkCrmtJOuItG5Dzl1RRP5/NE= github.com/sagernet/sing-mux v0.3.2/go.mod h1:pht8iFY4c9Xltj7rhVd208npkNaeCxzyXCgulDPLUDA= github.com/sagernet/sing-quic v0.5.0-beta.3 h1:X/acRNsqQNfDlmwE7SorHfaZiny5e67hqIzM/592ric= @@ -180,8 +180,8 @@ github.com/sagernet/sing-shadowsocks2 v0.2.1 h1:dWV9OXCeFPuYGHb6IRqlSptVnSzOelnq github.com/sagernet/sing-shadowsocks2 v0.2.1/go.mod h1:RnXS0lExcDAovvDeniJ4IKa2IuChrdipolPYWBv9hWQ= github.com/sagernet/sing-shadowtls v0.2.1-0.20250503051639-fcd445d33c11 h1:tK+75l64tm9WvEFrYRE1t0YxoFdWQqw/h7Uhzj0vJ+w= github.com/sagernet/sing-shadowtls v0.2.1-0.20250503051639-fcd445d33c11/go.mod h1:sWqKnGlMipCHaGsw1sTTlimyUpgzP4WP3pjhCsYt9oA= -github.com/sagernet/sing-tun v0.6.10-0.20250710134146-6aeee7bc7db4 h1:OCGg2SecHgMhs+juCLoYAujZrpwWCy0/f7wF6KEF4EU= -github.com/sagernet/sing-tun v0.6.10-0.20250710134146-6aeee7bc7db4/go.mod h1:fisFCbC4Vfb6HqQNcwPJi2CDK2bf0Xapyz3j3t4cnHE= +github.com/sagernet/sing-tun v0.6.10-0.20250718030019-3af7305b853e h1:IH6N3oTKs4bqXLoKP7uFfIAAuZHCNq6OCV4MlrGGLqs= +github.com/sagernet/sing-tun v0.6.10-0.20250718030019-3af7305b853e/go.mod h1:fisFCbC4Vfb6HqQNcwPJi2CDK2bf0Xapyz3j3t4cnHE= github.com/sagernet/sing-vmess v0.2.4-0.20250605032146-38cc72672c88 h1:0pVm8sPOel+BoiCddW3pV3cKDKEaSioVTYDdTSKjyFI= github.com/sagernet/sing-vmess v0.2.4-0.20250605032146-38cc72672c88/go.mod h1:IL8Rr+EGwuqijszZkNrEFTQDKhilEpkqFqOlvdpS6/w= github.com/sagernet/smux v1.5.34-mod.2 h1:gkmBjIjlJ2zQKpLigOkFur5kBKdV6bNRoFu2WkltRQ4= diff --git a/sing-box/option/dns.go b/sing-box/option/dns.go index 3744578256..0886dd64b7 100644 --- a/sing-box/option/dns.go +++ b/sing-box/option/dns.go @@ -180,7 +180,7 @@ func (o *DNSServerOptions) Upgrade(ctx context.Context) error { options := o.Options.(*LegacyDNSServerOptions) serverURL, _ := url.Parse(options.Address) var serverType string - if serverURL.Scheme != "" { + if serverURL != nil && serverURL.Scheme != "" { serverType = serverURL.Scheme } else { switch options.Address { @@ -217,7 +217,7 @@ func (o *DNSServerOptions) Upgrade(ctx context.Context) error { o.Type = C.DNSTypeUDP o.Options = &remoteOptions var serverAddr M.Socksaddr - if serverURL.Scheme == "" { + if serverURL == nil || serverURL.Scheme == "" { serverAddr = M.ParseSocksaddr(options.Address) } else { serverAddr = M.ParseSocksaddr(serverURL.Host) @@ -232,6 +232,9 @@ func (o *DNSServerOptions) Upgrade(ctx context.Context) error { case C.DNSTypeTCP: o.Type = C.DNSTypeTCP o.Options = &remoteOptions + if serverURL == nil { + return E.New("invalid server address") + } serverAddr := M.ParseSocksaddr(serverURL.Host) if !serverAddr.IsValid() { return E.New("invalid server address") @@ -242,6 +245,9 @@ func (o *DNSServerOptions) Upgrade(ctx context.Context) error { } case C.DNSTypeTLS, C.DNSTypeQUIC: o.Type = serverType + if serverURL == nil { + return E.New("invalid server address") + } serverAddr := M.ParseSocksaddr(serverURL.Host) if !serverAddr.IsValid() { return E.New("invalid server address") @@ -261,6 +267,9 @@ func (o *DNSServerOptions) Upgrade(ctx context.Context) error { }, } o.Options = &httpsOptions + if serverURL == nil { + return E.New("invalid server address") + } serverAddr := M.ParseSocksaddr(serverURL.Host) if !serverAddr.IsValid() { return E.New("invalid server address") @@ -274,6 +283,9 @@ func (o *DNSServerOptions) Upgrade(ctx context.Context) error { } case "rcode": var rcode int + if serverURL == nil { + return E.New("invalid server address") + } switch serverURL.Host { case "success": rcode = dns.RcodeSuccess @@ -295,6 +307,9 @@ func (o *DNSServerOptions) Upgrade(ctx context.Context) error { case C.DNSTypeDHCP: o.Type = C.DNSTypeDHCP dhcpOptions := DHCPDNSServerOptions{} + if serverURL == nil { + return E.New("invalid server address") + } if serverURL.Host != "" && serverURL.Host != "auto" { dhcpOptions.Interface = serverURL.Host } diff --git a/sing-box/protocol/tun/inbound.go b/sing-box/protocol/tun/inbound.go index b33a7807ea..e018b642e6 100644 --- a/sing-box/protocol/tun/inbound.go +++ b/sing-box/protocol/tun/inbound.go @@ -180,6 +180,7 @@ func NewInbound(ctx context.Context, router adapter.Router, logger log.ContextLo outputMark = tun.DefaultAutoRedirectOutputMark } networkManager := service.FromContext[adapter.NetworkManager](ctx) + multiPendingPackets := C.IsDarwin && ((options.Stack == "gvisor" && tunMTU < 32768) || (options.Stack != "gvisor" && options.MTU <= 9000)) inbound := &Inbound{ tag: tag, ctx: ctx, @@ -213,6 +214,7 @@ func NewInbound(ctx context.Context, router adapter.Router, logger log.ContextLo IncludePackage: options.IncludePackage, ExcludePackage: options.ExcludePackage, InterfaceMonitor: networkManager.InterfaceMonitor(), + EXP_MultiPendingPackets: multiPendingPackets, }, udpTimeout: udpTimeout, stack: options.Stack, diff --git a/small/luci-app-homeproxy/root/etc/homeproxy/resources/china_ip4.txt b/small/luci-app-homeproxy/root/etc/homeproxy/resources/china_ip4.txt index 4fb1f58e43..4f384632bc 100644 --- a/small/luci-app-homeproxy/root/etc/homeproxy/resources/china_ip4.txt +++ b/small/luci-app-homeproxy/root/etc/homeproxy/resources/china_ip4.txt @@ -439,6 +439,7 @@ 45.249.212.0/22 45.250.32.0/21 45.250.40.0/22 +45.250.152.0/24 45.250.180.0/23 45.250.184.0/22 45.250.188.0/24 @@ -892,6 +893,7 @@ 103.20.32.0/22 103.20.112.0/22 103.20.128.0/22 +103.20.160.0/22 103.20.248.0/22 103.21.116.0/22 103.21.140.0/22 @@ -1080,7 +1082,6 @@ 103.78.228.0/22 103.79.24.0/22 103.79.200.0/22 -103.79.228.0/24 103.81.4.0/22 103.81.48.0/22 103.81.72.0/22 @@ -1156,7 +1157,9 @@ 103.105.60.0/22 103.105.180.0/22 103.105.184.0/22 -103.105.200.0/22 +103.105.200.0/23 +103.105.202.0/24 +103.105.220.0/22 103.106.36.0/22 103.106.252.0/22 103.107.0.0/22 @@ -1282,6 +1285,7 @@ 103.177.44.0/24 103.179.78.0/23 103.180.108.0/23 +103.181.164.0/23 103.181.234.0/24 103.183.66.0/23 103.183.122.0/23 @@ -1888,7 +1892,8 @@ 115.120.0.0/17 115.120.128.0/20 115.120.144.0/23 -115.120.156.0/22 +115.120.148.0/22 +115.120.152.0/21 115.120.184.0/21 115.120.192.0/18 115.124.16.0/20 @@ -2649,8 +2654,8 @@ 124.196.17.0/24 124.196.18.0/23 124.196.20.0/24 -124.196.22.0/24 -124.196.24.0/22 +124.196.25.0/24 +124.196.26.0/23 124.196.28.0/24 124.196.30.0/23 124.196.32.0/23 @@ -2660,7 +2665,6 @@ 124.196.55.0/24 124.196.56.0/23 124.196.58.0/24 -124.196.61.0/24 124.196.66.0/24 124.196.72.0/24 124.196.76.0/23 @@ -2771,6 +2775,7 @@ 140.205.0.0/16 140.206.0.0/15 140.210.4.0/22 +140.210.8.0/21 140.210.16.0/20 140.210.32.0/22 140.210.64.0/18 @@ -2835,6 +2840,7 @@ 150.242.184.0/22 150.242.232.0/22 150.242.238.0/23 +150.242.244.0/22 150.242.248.0/22 150.255.0.0/16 151.242.65.0/24 @@ -2884,6 +2890,8 @@ 155.102.40.0/21 155.102.48.0/20 155.102.111.0/24 +155.102.112.0/21 +155.102.120.0/23 155.102.128.0/22 155.102.132.0/23 155.102.135.0/24 @@ -2893,6 +2901,7 @@ 155.102.165.0/24 155.102.166.0/24 155.102.168.0/23 +155.102.176.0/23 155.102.193.0/24 155.102.194.0/23 155.102.196.0/23 @@ -3007,7 +3016,7 @@ 163.181.97.0/24 163.181.99.0/24 163.181.100.0/24 -163.181.103.0/24 +163.181.102.0/23 163.181.105.0/24 163.181.106.0/23 163.181.110.0/23 @@ -3711,7 +3720,9 @@ 203.215.232.0/23 203.215.236.0/24 203.223.21.0/24 +204.13.175.0/24 205.198.19.0/24 +206.52.0.0/23 206.54.1.128/25 206.54.9.0/24 206.54.10.0/23 diff --git a/small/luci-app-homeproxy/root/etc/homeproxy/resources/china_ip4.ver b/small/luci-app-homeproxy/root/etc/homeproxy/resources/china_ip4.ver index a4971e56c7..5f893bc20a 100644 --- a/small/luci-app-homeproxy/root/etc/homeproxy/resources/china_ip4.ver +++ b/small/luci-app-homeproxy/root/etc/homeproxy/resources/china_ip4.ver @@ -1 +1 @@ -20250713035522 +20250718035513 diff --git a/small/luci-app-homeproxy/root/etc/homeproxy/resources/china_ip6.txt b/small/luci-app-homeproxy/root/etc/homeproxy/resources/china_ip6.txt index 0f186f07e1..95e3740342 100644 --- a/small/luci-app-homeproxy/root/etc/homeproxy/resources/china_ip6.txt +++ b/small/luci-app-homeproxy/root/etc/homeproxy/resources/china_ip6.txt @@ -239,8 +239,8 @@ 2403:4c80::/48 2403:5c80::/48 2403:6380:14::/47 -2403:6380:40::/48 -2403:6380:42::/47 +2403:6380:40::/46 +2403:6380:60::/44 2403:6a00::/32 2403:7580::/32 2403:8080:101::/48 @@ -295,7 +295,7 @@ 2404:2280:150::/48 2404:2280:152::/48 2404:2280:154::/46 -2404:2280:158::/47 +2404:2280:159::/48 2404:2280:15b::/48 2404:2280:15c::/46 2404:2280:160::/48 @@ -314,6 +314,7 @@ 2404:2280:198::/45 2404:2280:1a4::/46 2404:2280:1a8::/47 +2404:2280:1ae::/48 2404:2280:1b0::/48 2404:2280:1b2::/48 2404:2280:1b4::/46 @@ -332,12 +333,10 @@ 2404:2280:1d4::/48 2404:2280:1d6::/47 2404:2280:1d8::/45 -2404:2280:1e0::/45 -2404:2280:1e8::/46 -2404:2280:1ec::/47 -2404:2280:1ee::/48 +2404:2280:1e0::/44 2404:2280:1f0::/45 2404:2280:1f8::/46 +2404:2280:1fd::/48 2404:2280:1fe::/48 2404:2280:202::/47 2404:2280:204::/46 @@ -349,7 +348,9 @@ 2404:2280:217::/48 2404:2280:218::/48 2404:2280:21a::/48 +2404:2280:221::/48 2404:2280:271::/48 +2404:2280:27c::/48 2404:3700::/48 2404:4dc0::/32 2404:6380::/48 @@ -443,6 +444,7 @@ 2406:840:e500::/47 2406:840:e621::/48 2406:840:e666::/47 +2406:840:e720::/44 2406:840:e80f::/48 2406:840:eb00::/46 2406:840:eb04::/47 @@ -1187,6 +1189,7 @@ 2a04:f580:9280::/48 2a04:f580:9290::/48 2a06:1180:1000::/48 +2a06:3605::/32 2a06:3606::/31 2a06:9f81:4600::/44 2a06:9f81:4640::/44 @@ -1200,6 +1203,7 @@ 2a06:a005:a13::/48 2a06:a005:e9a::/48 2a06:a005:1c40::/44 +2a09:b280:ff81::/48 2a09:b280:ff83::/48 2a09:b280:ff84::/47 2a0a:2840::/30 @@ -1212,6 +1216,7 @@ 2a0b:2542::/48 2a0b:4340:a6::/48 2a0b:4e07:b8::/47 +2a0c:9a40:84e0::/48 2a0c:9a40:9e00::/43 2a0c:b641:571::/48 2a0e:97c0:550::/44 @@ -1254,7 +1259,7 @@ 2a0e:b107:16b0::/44 2a0e:b107:178d::/48 2a0e:b107:178e::/48 -2a0f:5707:ac01::/48 +2a0f:5707:ac00::/47 2a0f:7803:f5d0::/44 2a0f:7803:f5e0::/43 2a0f:7803:f680::/43 @@ -1272,7 +1277,6 @@ 2a0f:85c1:816::/48 2a0f:85c1:b3a::/48 2a0f:85c1:ba5::/48 -2a0f:85c1:bba::/48 2a0f:9400:6110::/48 2a0f:9400:7700::/48 2a0f:ac00::/29 @@ -1294,7 +1298,6 @@ 2a13:a5c7:2102::/48 2a13:a5c7:2110::/48 2a13:a5c7:2121::/48 -2a13:a5c7:2801::/48 2a13:a5c7:2803::/48 2a13:a5c7:3100::/43 2a13:aac4:f000::/44 @@ -1316,8 +1319,8 @@ 2a14:67c1:a061::/48 2a14:67c1:a064::/48 2a14:67c1:a090::/48 -2a14:67c1:a093::/48 -2a14:67c1:a094::/47 +2a14:67c1:a092::/47 +2a14:67c1:a095::/48 2a14:67c1:a099::/48 2a14:67c1:a100::/43 2a14:67c1:b000::/48 @@ -1329,8 +1332,10 @@ 2a14:67c1:b107::/48 2a14:67c1:b130::/47 2a14:67c1:b132::/48 +2a14:67c1:b4d0::/44 2a14:67c1:b4e0::/43 2a14:67c1:b500::/48 +2a14:67c1:b561::/48 2a14:67c1:b563::/48 2a14:67c1:b566::/48 2a14:67c1:b582::/48 diff --git a/small/luci-app-homeproxy/root/etc/homeproxy/resources/china_ip6.ver b/small/luci-app-homeproxy/root/etc/homeproxy/resources/china_ip6.ver index a4971e56c7..5f893bc20a 100644 --- a/small/luci-app-homeproxy/root/etc/homeproxy/resources/china_ip6.ver +++ b/small/luci-app-homeproxy/root/etc/homeproxy/resources/china_ip6.ver @@ -1 +1 @@ -20250713035522 +20250718035513 diff --git a/small/luci-app-homeproxy/root/etc/homeproxy/resources/china_list.txt b/small/luci-app-homeproxy/root/etc/homeproxy/resources/china_list.txt index fe8259d97c..5f6453d643 100644 --- a/small/luci-app-homeproxy/root/etc/homeproxy/resources/china_list.txt +++ b/small/luci-app-homeproxy/root/etc/homeproxy/resources/china_list.txt @@ -416,7 +416,6 @@ 0430.com 0431cn.com 0434.cc -0434w.com 0437.com 0452e.com 0453.com @@ -437,7 +436,6 @@ 051058.com 0510gcw.com 0510gtgc.com -0510rcw.com 0510syedu.com 0510zyw.com 0512s.com @@ -870,7 +868,6 @@ 08zf.com 0904.cool 090expo.com -090rc.com 0912158.com 0912app.com 0912fdj.com @@ -1157,7 +1154,6 @@ 1065m.com 10666114.net 1066888.com -10678.net 1073.com 107788.com 1088hg41.com @@ -1182,7 +1178,6 @@ 10idc.com 10isp.com 10juhua.com -10m1.com 10min.club 10moons.com 10p07v10o5.com @@ -3047,7 +3042,6 @@ 238090.com 239300.net 23946.net -239622.com 23bei.com 23book.com 23class.com @@ -3055,7 +3049,6 @@ 23dns.com 23do.com 23du.com -23ee.net 23img.com 23job.net 23kmm.com @@ -3570,7 +3563,6 @@ 321go.com 321key.com 321mh.com -321qiang.com 321sq.com 321tips.com 321zou.com @@ -3593,7 +3585,6 @@ 3286.cc 32861.pics 328f.com -328h.com 328vip.com 3290.com 32bm.cc @@ -4193,7 +4184,6 @@ 37cos.com 37cs.com 37cu.com -37cy.com 37dh.com 37game2.com 37gjw.com @@ -4877,7 +4867,6 @@ 4cx5.icu 4dai.com 4db.com -4dtime.com 4dwan.com 4ee.ee 4eglwkq.com @@ -6192,7 +6181,6 @@ 5433.com 54391.com 5442.com -545600.com 545c.com 546709.cc 5499.com @@ -6257,7 +6245,6 @@ 555dyds.com 555edu.net 555gk.com -555ppp777ppp.com 555tg6s98w9d8sw.com 555yst.com 5566.net @@ -6580,7 +6567,6 @@ 592zn.com 59370.com 5945i.com -5947.net 5951835ccc.com 59519.com 595818.com @@ -6829,7 +6815,6 @@ 5uu8.com 5uyk.com 5v13.com -5v55.com 5w.com 5w123.com 5w5.com @@ -7125,8 +7110,6 @@ 666kuaishou.net 666pic.com 666post.com -666ppp222ppp.com -666ppp888ppp.com 666scly.com 666shuwu.com 666wan.com @@ -7218,7 +7201,6 @@ 6786666.com 6787.com 67876.com -678869.com 67888.com 6788888.net 6789.net @@ -7337,7 +7319,6 @@ 6api.net 6apt.com 6b3b.com -6bag.ru 6bbk.com 6bdns.com 6c6c.com @@ -7375,7 +7356,6 @@ 6ie6.com 6ifang.com 6ivrkvu.xyz -6j7hf.com 6juzi.com 6k11.com 6k6g.com @@ -7630,7 +7610,6 @@ 75.team 75111.com 75111.net -751116.com 75184.com 752562.com 75271.com @@ -7778,7 +7757,6 @@ 78.link 781203.com 78302.com -78360.net 78654321.com 7881.com 788111.com @@ -8147,7 +8125,6 @@ 81tech.com 81tt.net 81xy.com -81xz.com 81zhongwenx.com 81zw.com 81zw.in @@ -8594,7 +8571,6 @@ 8lun.com 8m8t.com 8mcn.com -8mcp6.com 8mhh.com 8mi.tech 8minzk.com @@ -8743,6 +8719,7 @@ 9191net.com 9191steel.com 9191zx.com +9193.com 91985.com 9199.com 919watch.com @@ -9067,7 +9044,6 @@ 93yo.com 93you.com 93zp.com -93zw.com 94001.com 94001.vip 940177.com @@ -9620,7 +9596,6 @@ 9gg.cc 9ghao.com 9gt.net -9gty.net 9he.com 9hgame.com 9hier.com @@ -9777,7 +9752,6 @@ a21yishion.com a2dongman.com a2wx.icu a3p4.net -a48425084.com a4enwyh.xyz a4s6.com a4size.net @@ -9819,7 +9793,6 @@ aa360.net aa43z7.com aa65535.com aa6666.com -aa778899aa.com aa77kk.com aa8828.com aaalawfirm.com @@ -9843,6 +9816,7 @@ aafxw.com aakss.com aakvtsad.shop aaltosemi.com +aamets.com aamev.com aamgame.com aamgame.mobi @@ -9872,7 +9846,6 @@ ab173.com ab1989.com ab365.com abaa.cc -abab.com abacaipu.com abackup.com abaizx.com @@ -9931,7 +9904,6 @@ abeacon.com abedu.net abeij.com abesmoke.com -abfedgecanme.com abhouses.com abiaogw.com abiechina.com @@ -10426,7 +10398,6 @@ afdiancdn.com afdsc.com afdvr.com afengblog.com -afengim.com afengseo.com afengsoft.com afenxi.com @@ -10531,7 +10502,6 @@ ahbanker.com ahbb.cc ahbbsun.com ahbbtv.com -ahbhyb.com ahbrt.com ahbsxh.com ahbxgwy.com @@ -11124,7 +11094,6 @@ aipz.com aiqfd.com aiqgy.com aiqi-pharma.com -aiqianduan.com aiqiangua.com aiqianxq.com aiqibaba.com @@ -12035,7 +12004,6 @@ amobbs.com amoe.cc amonxu.com amoydxmed.com -amoywine.com amp-intl.com ampcn.com amperobots.com @@ -12892,7 +12860,6 @@ aqhospital.com aqidb.org aqioo.com aqisite.com -aqiyi.com aqjx.com aqjz.net aqlengqueta.com @@ -13132,6 +13099,7 @@ asd.red asd868.com asdbfjoiug.com asdeshan.com +asdf-bj.net asdf010.com asdlkjf.com asdx.io @@ -14043,7 +14011,6 @@ bafangwy.com baful.net bag198.com bagb2b.com -bagesoft.net bagevent.com bageyalu.com bags163.com @@ -14075,7 +14042,6 @@ baicai.com baicaijie09.com baicaio.com baicaiyouxuan.com -baicaolu.com baicaolu.net baicaosoft.com baiccapital.com @@ -14547,7 +14513,6 @@ bangzhuta.com banji001.com banjia1680.com banjiajia.com -banjiamao.com banjiekuaiji.com banjing.com banjixiaoguanjia.com @@ -14845,7 +14810,6 @@ bartymedical.com basechem.org basecity.com based-edu.com -basemu.com baseopendev.com basequan.com basestonedata.com @@ -14925,7 +14889,6 @@ bb-hy.com bb-pco.com bb06.com bb2024.com -bb778899bb.com bbanp.com bbaod.com bbaqw.com @@ -15272,7 +15235,6 @@ beats-digital.com beatsbydre.com beaucare.org beautifulbank.com -beautifulism.com beautifullinux.com beautifulzzzz.com beautyplus.com @@ -16402,7 +16364,6 @@ biqudu.tv biqufu.com biqugao.cc biquge.info -biquge.io biquge.la biquge.vip biquge365.com @@ -16664,7 +16625,6 @@ bjbb.com bjbeichen.com bjbeifangjx.com bjbfdt.com -bjbfsj.com bjbkwy.com bjblackhole.com bjbna.com @@ -16741,7 +16701,6 @@ bjdyhsy.com bjdyyc.com bjeasycom.com bjebc.com -bjecutuning.com bjeesa.org bjef.com bjei.com @@ -18390,7 +18349,6 @@ bushi123.com busilinq.com businessconnectchina.com businesssaga.com -businesssmallbusiness.net businessweekchina.com busionline.com busituzi.com @@ -18409,7 +18367,6 @@ butonly.com butterapis.com butterdogchange.com button-nt.com -buttonsintime.com buxia.net buxian8.com buxiuedu.club @@ -18519,7 +18476,6 @@ bxkejian.com bxktv.com bxkxw.com bxlac.com -bxlaocubu.com bxldz.com bxltw.com bxmd51.com @@ -19225,7 +19181,6 @@ campuschina.org campushoy.com campusphere.net campusplus.com -campusroom.com camrymetal.com camscanner.com camsnetec.com @@ -19632,7 +19587,6 @@ cc11bh.com cc128.com cc1588.com cc55k.com -cc667788cc.com cc707.com cc7m.com cc8.cc @@ -19732,7 +19686,6 @@ ccesda.com ccets.com ccfddl.com ccfeb.com -ccfei.com ccflow.org ccfourth.com ccfta.com @@ -20035,6 +19988,7 @@ cczq.net cczxyjhyy.com cd-auto.net cd-cxh.com +cd-estt.com cd-hk.net cd-hss.com cd-kc.com @@ -20454,7 +20408,6 @@ cdu.cc cduncname.com cdvcloud.com cdvisor.com -cdweikebaba.com cdwulian.com cdwx1.com cdxdyy.com @@ -21162,6 +21115,7 @@ chaodamould.com chaodavalves.com chaodu123.com chaofan.com +chaofanlin.com chaofanshuma.com chaofantian.com chaogaofang2099.com @@ -21243,6 +21197,7 @@ chashebao.com chashudi.com chatairc.com chatanywhere.tech +chatartpro.com chateaustarriver.com chatgptboke.com chatgpter.com @@ -21720,7 +21675,6 @@ childrentheatre.org chileaf.com chili3d.com chillyroom.com -chilunyc.com chiluyingxiao.com chilwee.com chimbusco.com @@ -22776,7 +22730,6 @@ chinatibetnews.com chinaticket.com chinatikfans.com chinatimber.org -chinatime.vip chinatimes.cc chinatiner.com chinatiredealer.com @@ -24234,7 +24187,6 @@ clz.me clzbl.com clzd.com clzd.fun -clzqcw.com clzqm.com clzqxp.com clzt.com @@ -24315,7 +24267,6 @@ cmedia360.com cmedns.com cmeii.com cmejob.com -cmelr.com cmenergyshipping.com cmer-ningbo.com cmer.com @@ -24361,7 +24312,6 @@ cmoc.com cmodel.com cmodes.com cmol.com -cmp288.com cmpassport.com cmpay.com cmpe360.com @@ -24626,7 +24576,6 @@ cncecsci.com cncecyc.com cncells.net cncfans.com -cncflux.com cncgdns.net cncgw.org cnchainnet.com @@ -25271,7 +25220,6 @@ cnssr.org cnssssl.com cnste.org cnstock.com -cnstudio.com cnsudong.com cnsug.com cnsun.net @@ -25787,6 +25735,7 @@ conlerpharm.com connorsaviation.com conodmedical.com conoha.vip +conpak.com conpak.com.hk conshow.com conslive.com @@ -26010,7 +25959,6 @@ cp0556.com cp121.com cp365.org cpa51.com -cpaatheatres.com cpaddress.com cpaed.org cpajia.com @@ -26207,7 +26155,6 @@ cqcrossmobil.com cqcsic.com cqcssk120.com cqcsskyy.com -cqcxgs.com cqcy.com cqcyhuagong.com cqcyxyxh.com @@ -27069,7 +27016,6 @@ cscec81.com cscec8bud.com cscecbjadi.com cscecparking.com -cscecst.com csci.hk cscjedu.com csclc.com @@ -27633,7 +27579,6 @@ cux.cc cuz.cx cuzz.site cvammby.com -cvb1.com cvc898cvc.com cvchina.info cvchome.com @@ -27761,7 +27706,6 @@ cxtld.com cxtuku.com cxumol.com cxvlog.com -cxvyk.com cxw.com cxwl.com cxwyf.net @@ -27821,7 +27765,6 @@ cyb800.com cybaojian.com cyberspace.com cybertogether.net -cyberv.shop cyberway-china.net cybstar.com cybtc.com @@ -28929,7 +28872,6 @@ daxuelu.com daxuepc.com daxueshi.com daxuesoutijiang.com -daxuesushe.com daxuetian.com daxuewang.com day66.com @@ -29159,7 +29101,6 @@ dd.ma dd001.net dd01.com dd0415.net -dd112233dd.com dd128.com dd2007.com dd208.com @@ -29167,8 +29108,6 @@ dd369.com dd373.com dd4.com dd666mir.com -dd667788dd.com -dd778899dd.com dd8828.com ddadaal.me ddahr.net @@ -29575,7 +29514,6 @@ deskwc.com desmonsur.com desnerboats.com desoonproduct.com -destarauto.com destoon.com desunpv.com desuntech.com @@ -30475,7 +30413,6 @@ dislux.com dislytegame.com dismall.com displink.com -dissona.vip distantmeaning.com distinctclinic.com ditai.fun @@ -30721,7 +30658,6 @@ dljianbing.com dljierui.com dljishou.com dljlxx.com -dljnlkr.com dljrw.com dljs.net dljsjt.com @@ -30775,7 +30711,6 @@ dlxmicro.com dlxww.com dly56.com dlyiliang.com -dlyll.com dlyy365.com dlzb.com dlzbxx.com @@ -31722,7 +31657,6 @@ dreamo100.com dreampiggy.com dreams-travel.com dreamshell.cc -dreamshowsky.com dreamspark.download.prss.microsoft.com dreamsparkuat.download.prss.microsoft.com drearry.com @@ -31923,7 +31857,6 @@ dttt.net dtuosh.com dtuyun.com dtwave.com -dtxbl.com dtxmw.com dtxn.net dtxww.com @@ -32276,7 +32209,6 @@ duzhe.com duzhoumo.com dv0i.icu dv37.com -dv38.com dv4ku.icu dv58.com dvagent.com @@ -32606,6 +32538,7 @@ dzjob.net dzjrc.com dzjzg.com dzkbw.com +dzkx.org dzlaa.com dzlems.net dzljy.com @@ -33262,7 +33195,6 @@ eddycjy.com ede35.com ededian.com edefang.net -edenblis.com edesson.com edfni.xyz edge-byted.com @@ -34161,7 +34093,6 @@ eqie.com eqifa.com eqigou.com eqingdan.com -eqiuy.com eqixiu.com eqiyingxiao.com eqlky.com @@ -34203,7 +34134,6 @@ erdong.site erdosedu.com erdosrcb.com erdossysw.com -erdosxymt.com erelcn.com erentalcarpro.com ereter.com @@ -35194,7 +35124,6 @@ fangtangtv.com fangte.com fangtian.net fangtong.com -fangtoo.com fangtoon.com fangtx.com fangwei315.com @@ -35359,7 +35288,6 @@ fanyiqi.net fanyishang.com fanyitec.com fanyouvip.com -fanypcb.com fanyu.com fanyu.work fanyuip.com @@ -35509,7 +35437,6 @@ fbook.net fbpaas.com fbsjedu.com fbuy365.com -fbwlxwo.com fbxslw.com fbyvalve.com fc-adobe.xyz @@ -36371,6 +36298,8 @@ fiu07021kl.com fiu07040kl.com fiu07050kl.com fiu07060kl.com +fiu07070kl.com +fiu07090kl.com fiui.org fivecakes.com fivedo.net @@ -36623,7 +36552,6 @@ flamecdn.com flamesky.org flamingcold.com flan1688.com -flappingjet.com flaredup.com flash8.net flash8f.com @@ -36738,7 +36666,6 @@ flyml.net flymobi.biz flymodem.net flymopaper.com -flypy.com flysand.com flysheeep.com flytcloud.com @@ -36801,6 +36728,7 @@ fnhealth.com fnji.com fnji.net fnjiasu.com +fnjs.cc fnjsq.com fnkq.com fnkslift.com @@ -37084,7 +37012,6 @@ fpyy120.com fq-top-v-fast.com fq688.com fqapps.com -fqcqf.com fqfilm.com fqghj.net fqgyljt.com @@ -37775,7 +37702,6 @@ fwqtg.net fwqur86.com fws-china.com fwsfwef2.fun -fwsir.com fwt0.com fwtoys.com fwvv.net @@ -37939,7 +37865,6 @@ fyun.org fyvart.com fywip.com fywx.cc -fyxfcw.com fyxhlink.com fyxtzc.com fyxxcl.com @@ -38362,7 +38287,6 @@ gaoce.cc gaocegege.com gaochun.info gaoda8.com -gaodabio.com gaodage.com gaodangbiao.com gaode.com @@ -38708,6 +38632,7 @@ gdbzkz.org gdcaa.com gdcaia.com gdcamis.com +gdcaward.com gdcayyebh.com gdccaa.com gdcci.com @@ -39115,7 +39040,6 @@ gdxinxiang.com gdxise.com gdxjzx.org gdxmsx.com -gdxrtc.com gdxscode.com gdxsn.com gdxueyin.com @@ -40265,7 +40189,6 @@ glsyjd.com glsyjgs.com glsytzjt.com glt365.com -gltailianhotel.com gltif.com gltop.com gltsg.com @@ -40733,7 +40656,6 @@ good1230.com good321.net good519.com goodacc.net -goodaiai.com goodally.hk goodao.net goodapk.com @@ -41721,7 +41643,6 @@ gucun.info gucunpark.net gudeapp.com gudemanage.com -gudi.cc gudianwenxue.com gudong.site guduodata.com @@ -42036,7 +41957,6 @@ guoxuemi.com guoxuwang.com guoyang.cc guoyangtech.com -guoyaozhenxuan.com guoyc.online guoyi360.com guoyice.com @@ -42145,7 +42065,6 @@ gvzen.com gw-dv.vip gw-ec.com gw.craft.moe -gw2sc.com gw4.cc gw66.vip gwacoe.com @@ -43468,7 +43387,6 @@ gxqddfxf.com gxqdkj.com gxqfjzzs.com gxqgjx.com -gxqgjzgc.com gxqgps.com gxqhcm.com gxqhjc.com @@ -43499,7 +43417,6 @@ gxqs.org gxqszl.com gxqtgroup.com gxqtszxc.com -gxqygc.com gxqyjy.com gxqykj.com gxqymc.com @@ -43819,7 +43736,6 @@ gxwjxsbcj.com gxwjyllh.com gxwkhb.com gxwkxcl.com -gxwmbbs.com gxwmj168.com gxwmpco.com gxwofi.com @@ -43842,7 +43758,6 @@ gxwxbjsy.com gxwxjy.com gxwxjz.com gxwxtyn.com -gxwys.com gxwzgroup.com gxwzhh.co gxwzj.com @@ -44103,7 +44018,6 @@ gxyzxf119.com gxyzyy.com gxzanwen.com gxzbfm.com -gxzbhw.com gxzbkj.com gxzbzh.com gxzc888.com @@ -45019,6 +44933,7 @@ h3yun.com h4088.com h4532.com h4k5.com +h4sud3rr4pmu.com h5-share.com h5-x.com h5-yes.com @@ -45446,7 +45361,6 @@ hakchina.com hakczz.com hakfqyy.com hakonespring.com -hakutou-shop.com halade.com halcyonz.com halead.com @@ -47850,7 +47764,6 @@ hh-post.com hh-wi.com hh.global hh010.com -hh112233hh.com hh6666.com hh88hh.com hhaqpx.com @@ -48250,7 +48163,6 @@ hitsame.com hitui.com hitutu.com hitv.com -hiuo08jnsoo00bytu32shcs555aa1564dvfguiio0o0885432.com hiusers.com hiv888.com hiveshared.com @@ -48293,7 +48205,6 @@ hj-bits.com hj-ienergy.com hj-mail.com hj-pack.com -hj.vc hj01.com hj110.com hj1951.com @@ -48453,7 +48364,6 @@ hkstv.tv hkt4.com hktheone.com hktidg.com -hktv10.com hku-szh.org hkvisen.com hkwb.net @@ -48711,7 +48621,6 @@ hnanqi.com hnapay.com hnasatc.com hnaues.com -hnayg.com hnbaili.net hnbemc.com hnbidding.com @@ -49284,7 +49193,6 @@ hongbizi.org hongbo-group.com hongbo-sh.com hongbo100.com -hongbowang.net hongcesys.com hongchangpawn.com hongchisw.com @@ -49383,7 +49291,6 @@ hongruike.com hongruikt.com hongsanban.com hongsat.com -hongsebanji.com hongsegs.com hongsehuoxian.com hongsejiqing.com @@ -49415,7 +49322,6 @@ hongtelecom.com hongtong588.com hongtongtube.com hongttel.com -hongtu-xinghan.com hongtu.net hongtu56.com hongtucad.com @@ -49775,7 +49681,6 @@ hpwxc.com hpyiqi.com hpyk.com hpzhatu.com -hpzyl.com hq-mart.com hq-minerals.com hq0564.com @@ -50169,7 +50074,6 @@ htfoxit.com htfpartner.com htfutures.com htg520.com -htgbn.com htgjjl.com htgkdz.com htguosheng.com @@ -50241,7 +50145,6 @@ htv123.com htvaas.com htwcq.com htwed.com -htwjo.com htwx.net htx.cc htxgcw.com @@ -50298,7 +50201,6 @@ huacai.com huacaijia.com huacaobk.com huacaole.com -huacaoshumu.net huacemedia.com huachang-alu.com huachengenjoy.com @@ -50467,7 +50369,6 @@ huamanlou.cc huamanlou.com huamao.com huamaobook.com -huamaointer.com huamaorice.com huamaoshuo.com huamedicine.com @@ -51164,7 +51065,6 @@ huitaoche.com huitaoyouhui.com huitengpipe.com huitongqingsuan.com -huitou51.com huitoubj.com huitouche.com huitoukao.com @@ -51360,6 +51260,10 @@ huntkeydiy.com huntsbot.com hunuo.com hunyinyiyuan.com +huo07100hy.com +huo07110hy.com +huo07120hy.com +huo07140hy.com huoas.com huoban.com huobanbot.com @@ -53348,7 +53252,6 @@ ietdata.com ietheivaicai.com ietheme.com ietrcd.com -ieurop.net ievision.com iewb.net iewie.org @@ -53662,7 +53565,6 @@ iidns.com iidx.fun iieii.com iiesz.com -iiewl.com iieye.cc iigs9.com iigushi.com @@ -54748,7 +54650,6 @@ iqilu.com iqilun.com iqimengkj.com iqinbao.com -iqing.com iqingguo.com iqingren.com iqingua.com @@ -55030,7 +54931,6 @@ isvjcloud.com isvjd.com isvup.com iswbm.com -iswearwedding.vip isweek.com iswifting.com iswweb.com @@ -55062,6 +54962,7 @@ it666.com it689.com it707.com it7t.com +it8.com it8g.com it918.com it985.com @@ -55239,7 +55140,6 @@ itower-soft.com itoyfx.com itpon.com itpow.com -itppi.org itpub.net itpux.com itpwd.com @@ -55493,7 +55393,6 @@ ixmu.net ixpsge.com ixpub.net ixs.la -ixsch.com ixsz.com ixuanquge.com ixuanshu.net @@ -55794,7 +55693,6 @@ jbbzcorp.com jbcz.tv jbddoors.com jbdhome.com -jbdkj.com jbdown.com jbedu.net jbelf.com @@ -56121,7 +56019,6 @@ jdrpr.com jdrq.net jds-china.com jdsafe.com -jdsbnza.com jdsha.com jdsjy.com jdsmartkf.com @@ -56144,7 +56041,6 @@ jdwgame.com jdwl.com jdwmfj.com jdworldwide.com -jdwxs.com jdwxwz.com jdwxzp.com jdx.com @@ -56338,7 +56234,6 @@ jgg.hk jgg09.com jggame.net jggjj.com -jghcy.com jghstar.com jgjapp.com jgjsoft.com @@ -56399,7 +56294,6 @@ jhgroup525.com jhgtgb.com jhgujia.com jhgykt.com -jhhkgj.com jhhospital.com jhhygl.com jhi.cc @@ -56569,7 +56463,6 @@ jialvzc.com jiamei123.com jiameidental.com jiameigj.com -jiameixin.com jiameng.com jiamengbang.net jiamengdp.com @@ -57148,7 +57041,6 @@ jiguanglan.com jiguo.com jihai8.com jihaoba.com -jihe119.com jihegui.com jihehuaban.com jihex.com @@ -57924,7 +57816,6 @@ jiuhuang.com jiuhuashan.cc jiuhuishou.com jiuishizanjin.com -jiujiacha.com jiujiange.com jiujiangjx.com jiujipos.com @@ -58186,7 +58077,6 @@ jjmmw.com jjnshop.com jjnz.com jjonline.org -jjppt.com jjqj.net jjr.vip jjrc.net @@ -58470,7 +58360,6 @@ jmgsgs.com jmhaofa.com jmhapp.com jmhd8.com -jmhjt.com jmhs.net jmi365.com jmj-pharma.com @@ -58575,7 +58464,6 @@ jnjj.com jnjpkj.com jnjszl.com jnjtsc.com -jnjywyi.com jnkason.com jnkbmy.com jnky.com @@ -58899,7 +58787,6 @@ jpfans.com jpfmor.com jpg.cm jpghd.com -jpgjingpinx.com jpgjzzs.com jpgreat7.com jpgushi.com @@ -58951,7 +58838,6 @@ jqbar.com jqcool.net jqdzw.com jqgc.com -jqgcw.com jqhtml.com jqkgjt.com jqlv.com @@ -60322,7 +60208,6 @@ jxgs.cc jxgtzxc.com jxgwy.org jxgxlc.com -jxgxzk.com jxgztv.com jxh2000.net jxheming.com @@ -60681,7 +60566,6 @@ jzj2009.com jzj9999.com jzjgift.com jzjt.com -jzkapp.com jzkelida.com jzking.com jzkjjt.com @@ -61633,7 +61517,6 @@ kexincpa.com kexing100.com kexingchem.com kexinggy.com -kexinguoji.com kexinhaoma.org kexinshe.com kexinyun.org @@ -61785,6 +61668,7 @@ killdb.com kiloai.com kimberley-technology.com kimderlite.com +kimi.com kimi.pub kimiss.com kimiss.net @@ -61861,7 +61745,6 @@ kingnettech.com kingoit.com kingosoft.com kingpower-cn.com -kingque.com kingray-tech.com kingreader.com kingrein.com @@ -61913,7 +61796,6 @@ kinzhan.com kinzoncap.com kiomodesign.com kira.cool -kireidoll.com kirgen.com kiriko-china.com kirin-tech.com @@ -61992,7 +61874,6 @@ kjmti.com kjpmconsulting.com kjr365.com kjrs365.com -kjsdh6.com kjson.com kjsv.com kjt.com @@ -62021,8 +61902,6 @@ kk18.com kk30.com kk30.net kk3g.net -kk556677kk.com -kk667788kk.com kk888888kk.com kkabc.com kkapp.com @@ -62190,7 +62069,6 @@ kmqianneng66.com kmqsaq.com kmread.com kmrfidtag.com -kmrihxo.com kmrijie.com kmron.com kms.pub @@ -62590,7 +62468,6 @@ kstengcai.com kstnjscl.com kstore.space kstv.com -kstyzj88.com ksudi.com ksupdate.com ksust.com @@ -62751,7 +62628,6 @@ kuaikanmanhua.com kuaikao.com kuaikaoti.com kuaikuaicloud.com -kuaikuaiyu.com kuaila.com kuailails.com kuailaiwz.com @@ -63116,7 +62992,6 @@ kviso.com kvogues.com kvov.com kvps85.com -kvucxko.com kw007.com kwai-group.com kwai666.com @@ -63396,7 +63271,6 @@ laigaokao.com laigong.com laihema.com laihua.com -laijiarong.com laijiawen.com laijishaofang.com laijuba.com @@ -63994,7 +63868,6 @@ lbaihua.com lbbb.cc lbbee.com lbbniu.com -lbbxssj.com lbctjt.com lbctrl.com lbd-group.com @@ -64018,7 +63891,6 @@ lbjtjt.com lbkaiguan.com lbkrs.com lbmobi.com -lbojwsy.com lbrencai.com lbsdermyy.com lbsdmy.com @@ -64113,7 +63985,6 @@ lcqjsjxxx.com lcqwdz.com lcrcbank.com lcrq.net -lcseo1688.com lcsepu.com lcsgxjt.com lcslhgg.com @@ -64832,7 +64703,6 @@ lhcy168.com lhdbgs.com lhdeer.com lhdown.com -lhdwx.com lhdxz.com lhenet.net lhey.com @@ -65257,7 +65127,6 @@ lijiabaijc.com lijiabrasstube.com lijiajia.com lijiajia.net -lijianan.com lijiangbooks.com lijiangcun.com lijiangriver.com @@ -65361,7 +65230,6 @@ ling-shi.com lingangholding.com lingangic.com lingaoren.com -lingb.net lingbao-e.com lingbaoshi.com lingboxauto.com @@ -65644,7 +65512,6 @@ linuxso.com linuxtone.org linuxyunwei.com linuxyw.com -linwenfa.com linwushuang.fun linx-info.com linyafeng.com @@ -66144,7 +66011,6 @@ lkyou.com ll-hao123.com ll1024.com ll11.com -ll158.com llang.net llaoyou.com llcat.tech @@ -66336,7 +66202,6 @@ lnxysf.com lnxzj.com lnyahui.com lnydjt.com -lnygsp.com lnyxcj.com lnyyzyxy.com lnzcj.com @@ -66651,7 +66516,6 @@ loooooong.com looquan.com loorin.com loovee.com -loowoo.com looyu.com looyuoms.com looyush.com @@ -67988,7 +67852,6 @@ lzsfdq.com lzsfy.com lzsgmf.com lzsjhjx.com -lzsjr.com lzskqyy.com lzskx.com lzslgcj.com @@ -68107,7 +67970,6 @@ m5bn.com m5m6x0vh.com m5stack.com m6.run -m68mm.com m7686d7aw5.com m7hwocyo67.com m8.com @@ -68185,7 +68047,6 @@ macshuo.com macsky.net macsz.com macv.com -macvideony.com macw.com macxf.com macxin.com @@ -68343,7 +68204,6 @@ mainshe.com mainstreethhi.com maintao.com mainwww.com -mainyeah.com maipu.com maiqun.vip maiqunwang.com @@ -68834,7 +68694,6 @@ matsubayashi-op.com matsuri.icu matsuri.site matt33.com -matthewdays.com mattressmachinery.net mauu.me mawei.live @@ -68999,7 +68858,6 @@ mcbao.com mcbbs.co mcbbs.jp mcbbs.net -mcbe-dev.net mcbeam.pro mcc0.com mcc460.pub.3gppnetwork.org @@ -69373,7 +69231,6 @@ meilibaobao.com meilichengren.com meilidongnanya.com meiligaosu.com -meiligx.com meilijia.com meilijian.com meiling.com @@ -69413,7 +69270,6 @@ meipvip.net meiqia.com meiqiausercontent.com meiqinedu.com -meiqiu.me meiquankongjian.com meirenchong.com meirijinrong.com @@ -69486,7 +69342,6 @@ meitukiss.com meitumail.com meitumob.com meitumobile.com -meitumv.com meitun.com meituncdn.com meitupaipai.com @@ -69582,6 +69437,7 @@ memseminar.com memsensing.com memsflex.com memsic.com +memuplay.com memuu.com memyy.com men.ci @@ -70003,7 +69859,6 @@ miaozhunjing.net miaozuo.com miaxis.com miaxis.net -miazhiyou.com mibao.com mibaoxian.com mibei.com @@ -70692,7 +70547,6 @@ mldgoing.com mlexpo.com mlfjnp.com mlfkc.net -mlgbl.com mlgj.com mlgxw.org mlhimalayanxt.com @@ -70724,7 +70578,6 @@ mlnsoft.net mlocso.com mlog.club mlogcn.com -mlpingchang.com mlquban.com mlrcn.com mlrlzy.com @@ -70758,7 +70611,6 @@ mm138.com mm1qj.icu mm2hservices.com mm3yy.com -mm52.net mm8mm8.com mm9177.com mmall.com @@ -70795,7 +70647,6 @@ mmjbh.com mmjynet.com mmjzxh.com mmkkiivv.com -mmlala.com mmlessin.com mmllllasjd.com mmloo.com @@ -71542,7 +71393,6 @@ mst-jc.com mst2018.com mstatik.com mstchina.com -mstmsbz.com mstxx.com msudz.com msunland.com @@ -71889,7 +71739,6 @@ mxklchina.com mxlvniao.com mxmem.com mxnavi.com -mxnfq.com mxnxs.com mxnzp.com mxomo.com @@ -72196,7 +72045,6 @@ myreadcloud.com myreadme.com myrice.com myrightone.com -myriptide.com myroome.com myrqjt.com myrrcar.cc @@ -72397,7 +72245,6 @@ n802.com n8soft.com n9z.net na.ci -na1r.com na2sib.com na7.cc naadou.com @@ -72888,6 +72735,7 @@ ncarzone.com ncawzs.com ncboo.com ncbuct.com +ncc-cma.net nccqj.com ncderuida.com ncdxbbs.com @@ -72945,7 +72793,6 @@ nczsks.com nczxst.com nczxwl.com nczy.com -nd-ydsdfq-sdfqw.com nd15.com nd56.com nd597.com @@ -73030,6 +72877,7 @@ neitui.com neituixiaowangzi.com neixiong8.net neko.pub +nekoarch.cc nelkshuhe.com nellit.info nellit.net @@ -73440,7 +73288,6 @@ ngo.com ngotcmszh.com ngread.com ngrok.cc -ngrvvcr.com ngs1685.com ngswgs.com ngtravelercn.com @@ -73558,7 +73405,6 @@ niegobrand.com niegoweb.com nielsenccdata.tv nies.org -nietou.com niexiaotao.com nieyou.com nifdc.com @@ -74059,7 +73905,6 @@ njndgl.com njnemin.com njnewgreen.com njnfwl.com -njng365.com njnhsx.net njnhyx.net njnii.com @@ -74460,7 +74305,6 @@ nnfcch.com nnfcetyy.com nnfcxx.com nnfdys.com -nnfiy.com nnflkyz.com nnflzyyy.com nnfrp.com @@ -74494,7 +74338,6 @@ nnhdzc.com nnhengfu.com nnhh8.com nnhhhbgs.com -nnhhkj.com nnhkdz.com nnhlgx.com nnhltz.com @@ -74982,9 +74825,7 @@ noxxxx.com noyes88.com np176.com npbbs.net -npbdp.com npbeta.com -npc.ink npc233.com npcka.com npedi.com @@ -75136,7 +74977,6 @@ ntfhgj.com ntflk.com ntfsformac.cc ntfssh.com -nthaiheng.com nthcl.com nthfw.com nthongda.com @@ -75281,7 +75121,6 @@ nv2118.com nvans.com nvcam.net nvcong.com -nvdisngg-sdfsdy.com nvepu.com nvgate16.nvidia.com nvhaiz.com @@ -75390,7 +75229,6 @@ nyedu.net nyefy.com nyfzx.com nygczx.com -nyhdv.com nyhnx.com nyhpyq.com nyjvbs.xyz @@ -75730,7 +75568,6 @@ ojhdt.com ojidacp.com ojkjt.com ojpal.com -ojues.com ojz457.com ok-meeting.com ok0415.com @@ -76110,7 +75947,6 @@ open-verify.cc open1024.com open147.com open189.net -open3s.cloud openadx.com openailab.com openanolis.org @@ -76344,7 +76180,6 @@ oschina.com oschina.io oschina.net oscs1024.com -osdxx.com osechina.com osedu.net osee-dig.com @@ -76453,7 +76288,6 @@ oulvnet.com oumakspt.com oume.cc oumengke.com -oumengpay.com ouming.com oumoo.com ounh.org @@ -76561,7 +76395,6 @@ outerinfo.com outes.com outfit7.com outfit7.net -outletcn.com outlets365.com outletscn.com outsoo.com @@ -76754,7 +76587,6 @@ paichen.net paichi.com paidai.com paidai.org -paidsurveyhq.com paidui.com paiduidai.com paigepian.com @@ -77005,7 +76837,6 @@ paperclipglobal.com papercool.com paperdb.com papereasy.com -paperfreehome.com paperge.com papergod.com paperinsight.net @@ -77997,7 +77828,6 @@ pixe44lrifted.com pixelauth.com pixelgame.net pixepf.sbs -pixhey.com pixiaojiang.com pixivic.com pixpark.net @@ -78392,7 +78222,6 @@ poration-vac-tech.com porlockz.com porquesifiestas.com port-m.com -portablesoft.org portcontainer.com porthebei.com portjs.com @@ -78506,7 +78335,6 @@ pp918.com pp9kk.com pp9l.com ppad.com -ppadssi.com ppaie.com ppaiss.com ppbizon.com @@ -78600,7 +78428,6 @@ pptjia.com pptkj.net pptmall.net pptmao.com -pptmind.com pptniu.com pptok.com pptschool.com @@ -78646,7 +78473,6 @@ pqdtcn.com pqpo.me pqt-bearing.com pqtygsfkv.com -pqwww.com pqyhigh.com pqylow.com pqymiddle.com @@ -79040,11 +78866,9 @@ pvxmqp.xyz pvz.moe pw-partners.com pw1999.com -pw2ct1.asia pw65.cc pw88.com pwand.com -pwjhg.com pwjt.com pwkss.com pwmat.com @@ -79202,6 +79026,7 @@ q2cdn.com q2d.com q2usj.icu q2zy.com +q36f.icu q5.com q6haqi.com q6u.com @@ -79419,7 +79244,6 @@ qdgw.com qdgxjt.com qdgxqrc.com qdhantang.com -qdhengya.com qdhengyong.com qdhetian.net qdhkhospital.com @@ -79477,7 +79301,6 @@ qdsbx.com qdsdeyljt.com qdsdyjt.com qdshebao.com -qdshirunpackage.com qdshoufei.com qdshuiche.com qdslcs.com @@ -80188,7 +80011,6 @@ qingchu.com qingchunbank.com qingchunlu.com qingcigame.com -qingclass.cc qingclass.com qingclasscdn.com qingcloud.com @@ -80407,7 +80229,6 @@ qinshihu.com qinsilk.com qinsmoon.com qinsuanbazi.com -qinwanghui.com qinxiand.com qinxing.xyz qinxue.com @@ -80548,7 +80369,6 @@ qiwenya.com qiwiotch.com qiwo.cc qixia.ltd -qixiangsepu.com qixiangwang.com qixigame.com qixin.com @@ -80791,7 +80611,6 @@ qmyc.ltd qmyq.com qmyyl.com qmz5.com -qmz931.com qmzhibo.com qmzs.com qnali.com @@ -81672,6 +81491,7 @@ qunyouxuan.com qunzh.com qunzhuquan.com qunzou.com +quoffice.com qupeiyin.com qupingce.com quqi.com @@ -81927,7 +81747,6 @@ qz96811.com qz97.com qz97.net qzair.com -qzanbb.com qzaolu.com qzbbs.com qzbgzz.com @@ -82085,7 +81904,6 @@ r220.cc r2coding.com r2yx.com r302.cc -r369.co r3lhl.com r435.com r51.net @@ -83216,7 +83034,6 @@ rongyanshe.com rongyao666.com rongyaozhiguang.com rongyi.com -rongyihzp.com rongyilian.net rongyimao.com rongyitechnology.com @@ -83300,6 +83117,7 @@ rouzhitang.com rovelskys.com rowa.com rowcan.com +rowlib.com roxinq.com roxmotor.com royalsh.net @@ -83322,7 +83140,6 @@ rq.run rqb99.com rqjtp.com rqkr.com -rqmw.com rqrcw.com rqrlxx.com rqroytj33.fun @@ -83570,7 +83387,6 @@ ruigezx.com ruigushop.com ruihaimeifeng.com ruihaozhanlan.com -ruihenghs.com ruihengyiliao.com ruiheyuanny.com ruihongip.com @@ -83687,7 +83503,6 @@ runkodo.com runkunoptics.com runlaijituan.com runmang.com -runminshop.com runnar.com runner-corp.com runnerbar.com @@ -83853,7 +83668,6 @@ ryxkf.com ryylkj.com ryyqh.com rz-cm.com -rz-xxy.com rz.com rz.sb rz0375.com @@ -83977,7 +83791,6 @@ sagigame.net sagw.com sahcqmu.com saheo.com -sahqoo.com saibeiip.com saibeinews.com saibo.com @@ -84120,7 +83933,6 @@ sanchuangke.com sancov.com sandaha.com sandai.net -sandaile.com sandbean.com sandcomp.com sandeepin.com @@ -84225,7 +84037,6 @@ sanpuzhiyao.com sanqianzhihui.com sanqin.com sanqindaily.com -sanqingchuanmei.com sanqinyou.com sanqiu.org sanquan.com @@ -84736,7 +84547,6 @@ scjrm.com scjtfh.xyz scjty.com scjuchuang.com -scjy168.com scjycz.com scjygd.com scjyx.com @@ -84748,7 +84558,6 @@ scjzjyjc.com scjzy.net sckrskj.com sckxjd.com -sckyf.com scl-cn.com sclanyingkj.com sclf.org @@ -85283,7 +85092,6 @@ sdricom.com sdrixingchem.com sdrmyy.com sdrongya.com -sdrsks.org sdrszp.com sdrtgk.com sdruile.com @@ -85552,6 +85360,7 @@ secutimes.com secwk.com secwx.com secxun.com +seducix.com see-far.com see-source.com see100n.com @@ -85847,7 +85656,6 @@ sf888.net sfacg.com sfadx.com sfair.com -sfandroid.org sfata.com sfb-100.com sfbest.com @@ -86327,7 +86135,6 @@ shanghaivast.com shanghaivet.com shanghaiwater.com shanghaiweicon.com -shanghaixs.com shanghaixuejia.com shanghaiyinyang.com shanghaiyk.com @@ -86814,7 +86621,6 @@ shenghui56.com shenghuigd.com shenghuo365.com shenghuojia.com -shenghuomei.com shenghuorili.com shenghuowo.com shengjie-logistics.com @@ -86850,7 +86656,6 @@ shengtiangroup.com shengtongedu.com shengtuanyouxuan.com shenguang.com -shengweicnc.com shengwu.store shengwu01.com shengxiao.net @@ -86890,6 +86695,7 @@ shenkai.com shenkelong.com shenkexin.com shenkong.net +shenlan01.com shenlan02.com shenlanbao.com shenlaohr.com @@ -86917,8 +86723,6 @@ shenpojie.com shenpowang.com shenpucw.com shenqhy.com -shenqiandz.com -shenqibuy.com shenqisou.com shenqiwunet.com shenquol.com @@ -86982,7 +86786,6 @@ shenzheninvestment.com shenzhenjgw.com shenzhenlianhua.com shenzhenmakerfaire.com -shenzhenshimandishiyeyouxiangongsi.com shenzhenshouxin.com shenzhenshuixie.com shenzhentong.com @@ -87514,7 +87317,6 @@ shmaas.net shmama.net shmarathon.com shmaur.com -shmbcbj.com shmbjy.org shmds.com shmds.vip @@ -87671,7 +87473,6 @@ shoushenlvcheng.com shoutai.com shoutao.biz shouxi.com -shouxi.net shouxieti.com shouxihu.net shouxiphotos.com @@ -88292,7 +88093,6 @@ shxinping.net shxjkjt.com shxjycqxx.com shxkyy.com -shxlkj.com shxlpe.com shxmbzcl.com shxmhjs.com @@ -88932,7 +88732,6 @@ siranbio.com sireda.com sirenyouxiang.com sirfang.com -siryal.com siryin.com siscantech.com siscmag.com @@ -89621,7 +89420,6 @@ smzdwan.com smzhongran.com smzjy.cc smzrmyy.com -smzwgk.com smzy.com sn-epe.com sn12333.com @@ -89709,7 +89507,6 @@ snowdream.tech snowflake.pink snowkey.com snowlotusgroup.com -snowneko.com snowyimall.com snps.tech snptc.com @@ -89742,7 +89539,6 @@ snyun.com snzfj.net snzhao.com snzhny.com -snzhz.com snzsxh.com so.car so.com @@ -90374,7 +90170,6 @@ spicgz.com spicjs.com spiiker.com spin-view.com -spirit-doll.net spirithy.com spischolar.com spiveytechnologies.com @@ -90699,7 +90494,6 @@ ssycw.com ssydt.com ssyer.com ssyssf.com -ssytnet.com ssywh.com ssyxdeli.com ssyxlx.com @@ -90946,7 +90740,6 @@ store12.com storeapi.net storecorefulfillment.download.prss.microsoft.com storeedgefd.dsx.mp.microsoft.com -stork-games.com storkapp.me stormorai.com story520.com @@ -91789,7 +91582,6 @@ swsm.net swsmu.com swstsg.com swt0.com -swtkc.com swtpu.com swufe-online.com swupdl.adobe.com @@ -92165,7 +91957,6 @@ sylincom.com sylixos.com sylm.xyz sylm2022.com -sylmny.com sylnyx.com syltgl.com symama.com @@ -92214,7 +92005,6 @@ syreads.com syrecovery.com syrhkj.com syrinxchina.com -syrkkxc.com syrqgas.com syrszs.com sys-ele.com @@ -92251,6 +92041,7 @@ syswgw.com sysx.tech sysxhz.com sysydianji.com +sysydz.net sysyhfj.com sysysjnk.com syt1000.com @@ -92929,7 +92720,6 @@ szrfdq.com szrfstar.com szrgsh.com szrhg.com -szrhjx.com szrj.net szrlaw.net szrrjc.com @@ -92954,7 +92744,6 @@ szschj.com szschl.com szsci.net szscree.com -szsczb.com szsczx.com szsdhjt.com szsdjrmyy.com @@ -94248,7 +94037,6 @@ tekkenthree.com tekshanghai.com tekuaijie.com tel01.com -tel139.com telaideyouxue.com teld.net telecok.com @@ -95846,7 +95634,6 @@ tomonline-inc.com tompda.com tomson-group.com tomson-riviera.com -tomujiang.com tomwx.net tonbao.com tone-sun.com @@ -96407,7 +96194,6 @@ traditionallyobjectlessblinked.com tradow.com tradplus.com tradplusad.com -trafficmasterz.net trafstore.com traineexp.com trainingipv6.com @@ -96798,7 +96584,6 @@ ttjisu.com ttkaiche.com ttkdex.com ttkefu.com -ttklg.net ttkuan.com ttll.cc ttlock.com @@ -96907,7 +96692,6 @@ tuanimg.com tuanitgx.com tuanjiebao.com tuanjuwang.com -tuankezhan.com tuanlin.net tuanmeme.com tuanok.com @@ -97235,6 +97019,7 @@ tuzi8.com tuziip.com tv0001.com tv002.com +tv121.com tv189.com tv373.com tvandnet.com @@ -97501,7 +97286,6 @@ tytzyyy.com tytzzy.com tyuanlv.com tyue.net -tyuetxt.com tyust.net tyututy.com tyuyan.com @@ -97634,7 +97418,6 @@ u17t.com u1d1.com u21a.com u22e.com -u248.com u2j2ha.com u2sz.com u3dc.com @@ -97682,7 +97465,6 @@ uavtjxh.com uavvv.com uaxk.com ub-os.com -ub.cc ub8020.com ubaiyi.com ubalh.com @@ -97910,7 +97692,6 @@ ugslb.info ugslb.net ugslb2.net ugsnx.com -ugsvscw.com ugubl.net ugxsd.com uhabo.com @@ -97933,7 +97714,6 @@ uhuibao.com uhuitong.com uhuocn.com uhut.com -uhuwang.com uhzcdn.com ui-lab.com ui100day.com @@ -98004,7 +97784,6 @@ ukiea.com ukin-tech.com ukingtech.com ukluhu.com -ukol.net ukongm.com ukonline2000.com ukoo.net @@ -98247,7 +98026,6 @@ uniview.com univista-isg.com univsport.com uniwaf.com -uniworldgroup.asia unixhot.com unixidc.com unjmz.com @@ -98394,7 +98172,6 @@ uqche.com uqd1.net uqee.com uqeegame.com -uqetyzxa.com uqiba.com uqidata.com uqidong.com @@ -98738,7 +98515,6 @@ v-beautysalon.com v-danci.com v-lz.com v-mate.mobi -v-mo2012.com v-pack.net v-simtone.com v-vay.com @@ -98899,7 +98675,6 @@ vbaof.com vbaoxian-cib.com vbbobo.com vbidc.com -vbieu.com vbio-pharma.com vbiquge.com vbmnmy.com @@ -98929,7 +98704,6 @@ vcloudstc.net vcloudvod.com vclusters.com vcnews.com -vcode.cc vcomic.com vcomputes.com vconew.com @@ -98967,7 +98741,6 @@ vdolady.com vdongchina.com vdsdsf2.fun vdson888.com -vdx9.com vdyoo.com ve-imcloud.com ve-trafficroute.com @@ -99540,7 +99313,6 @@ vnlin.com vnnox.com vnpy.com vns1.net -vns3889.com vnuuh.icu vnzmi.com voa365.com @@ -99912,7 +99684,6 @@ vvvtt.com vvzero.com vw888.com vwaycn.com -vweit.com vwhulian.com vwo50.club vwvvwv.com @@ -100231,6 +100002,7 @@ wangaiche.com wangamela.com wangan.com wangbaobei.com +wangbaoqiang-cloudcdn.com wangbixi.com wangcai.cm wangcaio2o.com @@ -100702,7 +100474,6 @@ wb321.com wb521.net wb699.com wb86.com -wbaie.com wbangdan.com wbanz.com wbb-electric.com @@ -100816,7 +100587,6 @@ wdsz.net wdszb.com wdtec.cc wdtuishu.com -wduis.com wduw.com wdw88.com wdwd.com @@ -101201,7 +100971,6 @@ weilinovel.net weilitoutiao.net weiliwq.com weilongshipin.com -weilt.net weimaelectric.com weimagroup.com weimai.com @@ -102263,6 +102032,7 @@ whwanshun.com whwat.com whwater.com whwd.com +whwdky.com whweb.net whwebsite.com whweiying.com @@ -102284,7 +102054,6 @@ whxcy.com whxh.com whxhdn.com whxinhuo.com -whxji.com whxlv.com whxrjt.com whxsdn.com @@ -102390,7 +102159,6 @@ wifiwx.com wifizj.com wifussion.com wigenbio.com -wiguo.com wiicha.com wiihey.com wiihg.com @@ -102878,6 +102646,7 @@ wmathor.com wmb2b.com wmbluegame.com wmc-bj.net +wmc-gba.net wmc95588.com wmcloud.com wmcn.com @@ -103027,7 +102796,6 @@ wocaoseo.net wochacha.com wochaw.com woda.com -wodanw.com wodasi.com wodavip.com wode.bid @@ -103927,7 +103695,6 @@ wuyangmotor.com wuyangplatform.com wuyantonglun.org wuyazi.com -wuye3d.com wuyecao.net wuyechaorenrcw.com wuyenews.com @@ -104479,7 +104246,6 @@ wztlink1013.com wztsy.com wzty.ltd wzu.com -wzwansen.com wzweisen.com wzwqs.com wzwtrlyy.com @@ -104514,7 +104280,6 @@ wzzsfd.com wzzww.com wzzyhp.com wzzysm.com -wzzysn.com x-abt.com x-bull.com x-cloud.cc @@ -105058,7 +104823,6 @@ xevd.co xevddy.com xewl.xyz xeylon.com -xeys.net xf-fund.com xf-gtm.com xf-world.org @@ -106082,7 +105846,6 @@ xiaozujian.com xiaozuowen.net xiapac.com xiapilu.com -xiaping11.com xiappt.com xiapu.co xiaqu.org @@ -106110,6 +105873,7 @@ xiazai22.com xiazaiba.com xiazaicc.com xiazaijidi.com +xiazaitool.com xiazaiwx.com xiazaiziti.com xiazhougroup.com @@ -106161,7 +105925,6 @@ xiedajia.com xiedao.com xiediantong.com xiedu.biz -xiedu0594.com xiefenxiang.com xiegangsir.com xiege.net @@ -106244,7 +106007,6 @@ xiimoon.com xiinnn.com xiji-express.com xiji.com -xijiangtv.com xijie.com xijie888.com xijinfa.com @@ -106435,7 +106197,6 @@ xingfulizhaofang.com xingfuu.com xinggan.com xinggan.net -xinggan77.vip xingganggas.com xingguanggongkao.com xinghai365.com @@ -106764,7 +106525,6 @@ xinshengsemi.com xinshi525.com xinshiba.com xinshiji1992.com -xinshijue.com xinshipu.com xinshishen.com xinshoucun.com @@ -107232,7 +106992,6 @@ xjjt.com xjkangjia.com xjks.net xjlxw.com -xjlxzc.com xjlytz.com xjlz365.com xjmachine.com @@ -107854,10 +107613,8 @@ xn--xhq60k09cr85at2f494d.com xn--xhq60kzbz07dem6azlu.com xn--xhq8sm16c5ls.com xn--xhq9mt12cf5v.ink -xn--xhq9mt12cf5v.ren xn--xhqq2hhv0dkpk.com xn--xhqq4f5vc69qlmk6mva633mwoeiuad9562e.com -xn--xhqs8jeim18aoz9bl6fbr0a.com xn--xhqs8jmxkive1yest6g.com xn--xhqs8jp0kpz2d.net xn--xhqx10kr8o.com @@ -108069,10 +107826,8 @@ xs9999.com xsa239.com xsappxz.com xsb120.com -xsbiquge.com xsbja.com xsbus.com -xsbxw.com xscbs.com xschu.com xschuban.com @@ -108172,7 +107927,6 @@ xsttop.com xstv.net xstx.info xstzgs.com -xsu.cc xsui.com xsuweb.com xswang.com @@ -108405,7 +108159,6 @@ xueid.com xueit.com xuejia123.com xuejian.site -xuejian.xyz xuejiaoso.com xuejinqu.com xuejiqiao.com @@ -108794,7 +108547,6 @@ xx007.com xx186.com xx4a.com xx5515.com -xx667788xx.com xx7z.co xx8g.com xxad.cc @@ -109039,7 +108791,6 @@ xynsh.com xyookj.com xyous.com xypifu.com -xypj8888.com xyppzx.com xypse.com xyqb.com @@ -109984,7 +109735,6 @@ ycpsy.com ycq.cab ycqin.com ycqq.com -ycqsks.com ycrcrs.com ycrcw.net ycrenliu.com @@ -110502,7 +110252,6 @@ yhees.com yhgfb-cn-static.com yhggroup.com yhgmjf.com -yhgo8.com yhgzjt.com yhhh8888.com yhhjcc.com @@ -110582,6 +110331,7 @@ yi-i.com yi-jy.com yi-oa.com yi-programmer.com +yi-sky.com yi-you.org yi-zhifu.com yi-zhou.com @@ -110883,7 +110633,6 @@ yilantop.com yilanvaas.com yile.site yile8.com -yilelive.com yilewan.com yileweb.com yileyiqi.com @@ -110975,7 +110724,6 @@ yinchengli.com yinchengpai.com yinchuanwater.com yinchuanzxd.com -yindanyi.com yindon.com yindu.com yinduchina.com @@ -111864,7 +111612,6 @@ ymbank.com ymbq301.com ymcart.com ymcart.net -ymck.pro ymcsepu.com ymdoctor.com ymdxl.com @@ -112066,7 +111813,6 @@ ynzp.com ynzqyc.com ynzrf.com ynzs.com -ynztctv.com ynztrq.com ynztzh.com ynztzxw.com @@ -112165,7 +111911,6 @@ yonganyiyuan.com yongaomy.com yongchaohuagong.com yongche.com -yongche.name yongche.org yongchengren.com yongdachina.com @@ -112223,7 +111968,6 @@ yongxinshuo.com yongxintex.com yongxinxuexiao.com yongxiuren.com -yongyao.net yongyi-valve.com yongyoujia.com yongyuenj.com @@ -113965,7 +113709,6 @@ yunxindns.com yunxinfa.com yunxinfw.com yunxing123.com -yunxing168.com yunxingslb.com yunxinhi.com yunxinhy.com @@ -114098,7 +113841,6 @@ yuwangcn.com yuwanjianshe.com yuweikuijianzhan.com yuweitek.com -yuweixian.com yuweiyanwo.com yuwell.com yuwellgroup.com @@ -114940,7 +114682,6 @@ zb-kc.com zb.live zb1.org zb18.net -zb580.tv zb8.com zb800.com zbao.com @@ -114954,7 +114695,6 @@ zbc.wiki zbca.com zbcars.com zbchem.com -zbcool.com zbcyrq.com zbdedu.com zbdzy.com @@ -115375,7 +115115,6 @@ zfdmkj.com zfemc.com zfengit.com zffan.com -zfgweb.com zfgy88.com zfhz.org zfile.vip @@ -115433,7 +115172,6 @@ zgboke.com zgbszf.com zgby114.com zgbywl.com -zgbzad.com zgc-bigdata.org zgc-dsa.org zgc261.com @@ -116357,7 +116095,6 @@ zhi-ming.com zhi-niao.com zhi.hu zhi3.net -zhiad.com zhiaimusic.com zhiangroup.com zhiannet.com @@ -116956,7 +116693,6 @@ zhongso.com zhongsou.com zhongsou.net zhongtaihangzhou.com -zhongtaipcb.com zhongtaitrust.com zhongtefamen.com zhongtiancloud.com @@ -116971,7 +116707,6 @@ zhongtuocn.com zhongtusy.com zhongwang.com zhongwangsc.com -zhongwangtj.com zhongwei-info.com zhongweiag.com zhongweicable.com @@ -118336,7 +118071,6 @@ zjxf119.com zjxhbj.com zjxhgd.com zjxhxny.com -zjxiangyou.com zjxindongyang.com zjxindu.com zjxinghe.com @@ -118429,7 +118163,6 @@ zkauto.com zkb77.com zkbhj.com zkbs.net -zkccltd.com zkck.com zkcmg.com zkcrm.com @@ -118473,7 +118206,6 @@ zkshare.com zksn.com zksoftwaresz.com zksps.com -zksssw.com zksyzy.com zktecn.com zkteco.com @@ -118884,7 +118616,6 @@ zp0737.com zp114.net zp365.com zp515.com -zp910.com zpan.space zparking-tech.com zpascal.net @@ -118901,7 +118632,6 @@ zpgd.net zphit.com zphlkj.com zphospital.com -zpidc.com zpjiashuo.com zpjkcy.com zplay.com @@ -119293,7 +119023,6 @@ zuadr.com zuan-cheng.com zuan88.com zuanao.com -zuanchuang.org zuanke8.com zuanlo.com zuanqianyi.com @@ -119583,7 +119312,6 @@ zxcvqqw.com zxczw.com zxd.com zxd666.com -zxdc.net zxdkj.com zxdoo.com zxdu.net @@ -119624,7 +119352,6 @@ zxknow.com zxkq022.com zxky007.com zxl.com -zxlbypd.com zxlib.com zxliu.com zxlo.com diff --git a/small/luci-app-homeproxy/root/etc/homeproxy/resources/china_list.ver b/small/luci-app-homeproxy/root/etc/homeproxy/resources/china_list.ver index e0f28bd821..21cacf1228 100644 --- a/small/luci-app-homeproxy/root/etc/homeproxy/resources/china_list.ver +++ b/small/luci-app-homeproxy/root/etc/homeproxy/resources/china_list.ver @@ -1 +1 @@ -202507122213 +202507172215 diff --git a/small/luci-app-homeproxy/root/etc/homeproxy/resources/gfw_list.txt b/small/luci-app-homeproxy/root/etc/homeproxy/resources/gfw_list.txt index f656faf2bb..0d2ca444a7 100644 --- a/small/luci-app-homeproxy/root/etc/homeproxy/resources/gfw_list.txt +++ b/small/luci-app-homeproxy/root/etc/homeproxy/resources/gfw_list.txt @@ -5602,6 +5602,7 @@ www.taiwanonline.cc www.thechinastory.org www.wan-press.org www.websnapr.com +www.xicons.org www.zensur.freerk.com www1.american.edu www1.biz diff --git a/small/luci-app-homeproxy/root/etc/homeproxy/resources/gfw_list.ver b/small/luci-app-homeproxy/root/etc/homeproxy/resources/gfw_list.ver index e0f28bd821..21cacf1228 100644 --- a/small/luci-app-homeproxy/root/etc/homeproxy/resources/gfw_list.ver +++ b/small/luci-app-homeproxy/root/etc/homeproxy/resources/gfw_list.ver @@ -1 +1 @@ -202507122213 +202507172215 diff --git a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/acl.lua b/small/luci-app-passwall/luasrc/model/cbi/passwall/client/acl.lua index 9d5edc7e4d..ca13ef325e 100644 --- a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/acl.lua +++ b/small/luci-app-passwall/luasrc/model/cbi/passwall/client/acl.lua @@ -101,4 +101,6 @@ o:value("1:65535", translate("All")) o:value("53", "53") ]]-- +m:append(Template(appname .. "/acl/js")) + return m diff --git a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/other.lua b/small/luci-app-passwall/luasrc/model/cbi/passwall/client/other.lua index d4f45b75e5..3d283a1ade 100644 --- a/small/luci-app-passwall/luasrc/model/cbi/passwall/client/other.lua +++ b/small/luci-app-passwall/luasrc/model/cbi/passwall/client/other.lua @@ -251,4 +251,6 @@ if has_singbox then o.description = translate("Override the connection destination address with the sniffed domain.
When enabled, traffic will match only by domain, ignoring IP rules.
If using shunt nodes, configure the domain shunt rules correctly.") end +m:append(Template(appname .. "/other/js")) + return m diff --git a/small/luci-app-passwall/luasrc/view/passwall/acl/js.htm b/small/luci-app-passwall/luasrc/view/passwall/acl/js.htm new file mode 100644 index 0000000000..0ff1a399c5 --- /dev/null +++ b/small/luci-app-passwall/luasrc/view/passwall/acl/js.htm @@ -0,0 +1,15 @@ + diff --git a/small/luci-app-passwall/luasrc/view/passwall/haproxy/js.htm b/small/luci-app-passwall/luasrc/view/passwall/haproxy/js.htm index 904909678c..63011f467d 100644 --- a/small/luci-app-passwall/luasrc/view/passwall/haproxy/js.htm +++ b/small/luci-app-passwall/luasrc/view/passwall/haproxy/js.htm @@ -45,5 +45,17 @@ } }, 300); }); + + //修正上移、下移按钮名称 + window.onload = function() { + var ups = document.querySelectorAll("input.btn.cbi-button.cbi-button-up"); + var downs = document.querySelectorAll("input.btn.cbi-button.cbi-button-down"); + for (var i = 0; i < ups.length; i++) { + ups[i].value = "<%:Move up%>"; + } + for (var i = 0; i < downs.length; i++) { + downs[i].value = "<%:Move down%>"; + } + } //]]> diff --git a/small/luci-app-passwall/luasrc/view/passwall/node_list/node_list.htm b/small/luci-app-passwall/luasrc/view/passwall/node_list/node_list.htm index ef64abace0..2ffdc53706 100644 --- a/small/luci-app-passwall/luasrc/view/passwall/node_list/node_list.htm +++ b/small/luci-app-passwall/luasrc/view/passwall/node_list/node_list.htm @@ -421,6 +421,12 @@ table td, .table .td { obj.port = port_dom.value; } + //修正上移、下移按钮名称 + var up = td.querySelector(".cbi-button-up"); + var down = td.querySelector(".cbi-button-down"); + if (up) up.value = "<%:Move up%>"; + if (down) down.value = "<%:Move down%>"; + node_count++; var add_from = document.getElementById("cbid.passwall." + id + ".add_from").value; if (node_list[add_from]) diff --git a/small/luci-app-passwall/luasrc/view/passwall/node_subscribe/js.htm b/small/luci-app-passwall/luasrc/view/passwall/node_subscribe/js.htm index 1dc361c0fa..d70e4ba15b 100644 --- a/small/luci-app-passwall/luasrc/view/passwall/node_subscribe/js.htm +++ b/small/luci-app-passwall/luasrc/view/passwall/node_subscribe/js.htm @@ -34,5 +34,17 @@ local api = require "luci.passwall.api" }); return false; } + + //修正上移、下移按钮名称 + window.onload = function() { + var ups = document.querySelectorAll("input.btn.cbi-button.cbi-button-up"); + var downs = document.querySelectorAll("input.btn.cbi-button.cbi-button-down"); + for (var i = 0; i < ups.length; i++) { + ups[i].value = "<%:Move up%>"; + } + for (var i = 0; i < downs.length; i++) { + downs[i].value = "<%:Move down%>"; + } + } //]]> diff --git a/small/luci-app-passwall/luasrc/view/passwall/other/js.htm b/small/luci-app-passwall/luasrc/view/passwall/other/js.htm new file mode 100644 index 0000000000..0ff1a399c5 --- /dev/null +++ b/small/luci-app-passwall/luasrc/view/passwall/other/js.htm @@ -0,0 +1,15 @@ + diff --git a/small/luci-app-passwall/luasrc/view/passwall/rule/rule_version.htm b/small/luci-app-passwall/luasrc/view/passwall/rule/rule_version.htm index e6fbe0216e..ac0b42f13a 100644 --- a/small/luci-app-passwall/luasrc/view/passwall/rule/rule_version.htm +++ b/small/luci-app-passwall/luasrc/view/passwall/rule/rule_version.htm @@ -38,6 +38,18 @@ local geosite_update = api.uci_get_type("@global_rules[0]", "geosite_update", "1 } ); } + + //修正上移、下移按钮名称 + window.onload = function() { + var ups = document.querySelectorAll("input.btn.cbi-button.cbi-button-up"); + var downs = document.querySelectorAll("input.btn.cbi-button.cbi-button-down"); + for (var i = 0; i < ups.length; i++) { + ups[i].value = "<%:Move up%>"; + } + for (var i = 0; i < downs.length; i++) { + downs[i].value = "<%:Move down%>"; + } + } //]]>
diff --git a/small/luci-app-passwall/luasrc/view/passwall/server/users_list_status.htm b/small/luci-app-passwall/luasrc/view/passwall/server/users_list_status.htm index 8ba385aaf4..69d37abe44 100644 --- a/small/luci-app-passwall/luasrc/view/passwall/server/users_list_status.htm +++ b/small/luci-app-passwall/luasrc/view/passwall/server/users_list_status.htm @@ -29,6 +29,11 @@ local api = require "luci.passwall.api" //添加"日志"按钮 new_div += '' + '?id=' + id + '\', \'_blank\')"/>  '; td.innerHTML = new_div + td.innerHTML; + //修正上移、下移按钮名称 + var up = td.querySelector(".cbi-button-up"); + var down = td.querySelector(".cbi-button-down"); + if (up) up.value = "<%:Move up%>"; + if (down) down.value = "<%:Move down%>"; } catch(err) { console.error(err); diff --git a/v2rayn/v2rayN/Directory.Build.props b/v2rayn/v2rayN/Directory.Build.props index 43a84d2d80..9433105d9b 100644 --- a/v2rayn/v2rayN/Directory.Build.props +++ b/v2rayn/v2rayN/Directory.Build.props @@ -1,7 +1,7 @@ - 7.13.1 + 7.13.2 diff --git a/v2rayn/v2rayN/ServiceLib/Services/UpdateService.cs b/v2rayn/v2rayN/ServiceLib/Services/UpdateService.cs index c4acbe8048..831ef2c373 100644 --- a/v2rayn/v2rayN/ServiceLib/Services/UpdateService.cs +++ b/v2rayn/v2rayN/ServiceLib/Services/UpdateService.cs @@ -536,6 +536,11 @@ public class UpdateService } } + //append dns items TODO + geoSiteFiles.Add("cn"); + geoSiteFiles.Add("geolocation-cn"); + geoSiteFiles.Add("category-ads-all"); + var path = Utils.GetBinPath("srss"); if (!Directory.Exists(path)) {