diff --git a/daed/Makefile b/daed/Makefile
index 08e387e6..3db9ce12 100644
--- a/daed/Makefile
+++ b/daed/Makefile
@@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=daed
PKG_VERSION:=2026.06.14
-PKG_RELEASE:=17
+PKG_RELEASE:=18
PKG_SOURCE:=daed-src-2026.06.14-4e215048068a.tar.gz
PKG_SOURCE_URL:=https://github.com/kenzok8/openwrt-daede/releases/download/daed-src
@@ -40,7 +40,7 @@ GO_PKG_LDFLAGS:= \
GO_PKG_LDFLAGS_X:= \
$(GO_PKG)/db.AppName=$(PKG_NAME) \
$(GO_PKG)/db.AppVersion=$(PKG_VERSION)
-GO_PKG_TAGS:=embedallowed,trace
+GO_PKG_TAGS:=embedallowed,trace,timetzdata
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/bpf.mk
diff --git a/daed/files/daed.init b/daed/files/daed.init
index 3a1fa332..ec741fa7 100644
--- a/daed/files/daed.init
+++ b/daed/files/daed.init
@@ -24,6 +24,7 @@ start_service() {
procd_open_instance "$CONF"
procd_set_param env DAE_LOCATION_ASSET="/usr/share/v2ray"
+ procd_set_param env TZ="$(uci -q get system.@system[0].zonename)"
procd_set_param command "$PROG" run
procd_append_param command --config "/etc/daed/"
procd_append_param command --listen "$listen_addr"
diff --git a/luci-app-daede/Makefile b/luci-app-daede/Makefile
index 401f36a5..3742eaa4 100644
--- a/luci-app-daede/Makefile
+++ b/luci-app-daede/Makefile
@@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-daede
PKG_VERSION:=1.14.7
-PKG_RELEASE:=27
+PKG_RELEASE:=28
PKG_MAINTAINER:=kenzok8
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
diff --git a/luci-app-daede/htdocs/luci-static/resources/view/daede/converter.js b/luci-app-daede/htdocs/luci-static/resources/view/daede/converter.js
index 1275b3ac..349dac51 100644
--- a/luci-app-daede/htdocs/luci-static/resources/view/daede/converter.js
+++ b/luci-app-daede/htdocs/luci-static/resources/view/daede/converter.js
@@ -662,6 +662,7 @@ return view.extend({
let before;
let newSubId = '';
let createdGroupId = '';
+ const createdNodeIds = [];
let groupReady = false;
const oldSubId = existingAirport ? existingAirport.subscription_id : '';
const oldNodeIds = existingAirport ? existingAirport.node_ids : [];
@@ -671,7 +672,113 @@ return view.extend({
return requestDaedToken(endpoint, forceLogin).then(function(auth) {
token = auth.token;
usedCachedToken = auth.cached;
- return graphQL(endpoint, 'query State{groups{id name nodes{id}}}', {}, token);
+ return graphQL(endpoint, 'query State{nodes(first:10000){edges{id link tag}} groups{id name nodes{id}}}', {}, token);
+ });
+ };
+ const importDirectNodes = function() {
+ const existing = {};
+ (((before || {}).nodes || {}).edges || []).forEach(function(node) {
+ existing[clashConverter.normalizeLink(node.link)] = node;
+ });
+ const fresh = items.filter(function(item) {
+ const duplicate = existing[clashConverter.normalizeLink(item.link)];
+ if (duplicate)
+ item.duplicate = true;
+ return !duplicate;
+ });
+ const imported = fresh.length
+ ? graphQL(endpoint,
+ 'mutation ImportNodes($args:[ImportArgument!]!){importNodes(rollbackError:false,args:$args){link error node{id}}}',
+ { args: fresh.map(function(item, index) { return { link: item.link, tag: airportSync.backendId(airportId) + Date.now().toString(36) + (index + 1) }; }) }, token)
+ : Promise.resolve({ importNodes: [] });
+
+ return imported.then(function(result) {
+ const rows = result.importNodes || [];
+ const nodeIds = [];
+ const ownedIds = [];
+ const rowByLink = {};
+ rows.forEach(function(row) {
+ rowByLink[clashConverter.normalizeLink(row.link)] = row;
+ });
+ let failed = rows.filter(function(row) { return !!row.error && row.error !== 'node already exists'; }).length;
+ items.forEach(function(item) {
+ const key = clashConverter.normalizeLink(item.link);
+ const row = rowByLink[key];
+ const old = existing[key];
+ const id = row && row.node && row.node.id || old && old.id;
+ if (id)
+ nodeIds.push(id);
+ if (row && !row.error && row.node) {
+ ownedIds.push(row.node.id);
+ createdNodeIds.push(row.node.id);
+ }
+ else if (existingAirport && oldNodeIds.indexOf(id) >= 0)
+ ownedIds.push(id);
+ });
+ if (!nodeIds.length) {
+ const details = rows.filter(function(row) { return !!row.error; }).map(function(row) {
+ return row.error;
+ }).filter(function(error, index, errors) {
+ return errors.indexOf(error) === index;
+ }).join('; ');
+ throw new Error(details || _('No usable nodes were imported'));
+ }
+
+ const oldManagedGroup = airportSync.findManagedGroup(before.groups, existingAirport);
+ const ensureGroup = oldManagedGroup
+ ? Promise.resolve(oldManagedGroup.id)
+ : graphQL(endpoint,
+ 'mutation CreateGroup($name:String!,$policy:Policy!){createGroup(name:$name,policy:$policy){id}}',
+ { name: groupName, policy: 'min_moving_avg' }, token).then(function(value) {
+ createdGroupId = value.createGroup.id;
+ return createdGroupId;
+ });
+ return ensureGroup.then(function(groupId) {
+ const rename = oldManagedGroup && oldManagedGroup.name !== groupName
+ ? graphQL(endpoint, 'mutation RenameGroup($id:ID!,$name:String!){renameGroup(id:$id,name:$name)}', { id: groupId, name: groupName }, token)
+ : Promise.resolve();
+ return rename.then(function() {
+ return graphQL(endpoint, 'mutation SetPolicy($id:ID!,$policy:Policy!){groupSetPolicy(id:$id,policy:$policy)}', { id: groupId, policy: 'min_moving_avg' }, token);
+ }).then(function() {
+ return graphQL(endpoint, 'mutation AddNodes($id:ID!,$nodeIDs:[ID!]!){groupAddNodes(id:$id,nodeIDs:$nodeIDs)}', { id: groupId, nodeIDs: nodeIds }, token);
+ }).then(function() {
+ groupReady = true;
+ const oldMembers = oldManagedGroup ? oldManagedGroup.nodes.map(function(node) { return node.id; }) : [];
+ const removedMembers = oldMembers.filter(function(id) { return nodeIds.indexOf(id) < 0; });
+ return (removedMembers.length
+ ? graphQL(endpoint, 'mutation DelNodes($id:ID!,$nodeIDs:[ID!]!){groupDelNodes(id:$id,nodeIDs:$nodeIDs)}', { id: groupId, nodeIDs: removedMembers }, token)
+ : Promise.resolve()).catch(function() {
+ failed++;
+ }).then(function() {
+ const otherAirportNodes = airportRecords().filter(function(record) {
+ return record.backend === 'daed' && (!existingAirport || record.id !== existingAirport.id);
+ }).map(function(record) { return record.node_ids; });
+ const otherGroupNodes = before.groups.filter(function(other) {
+ return other.id !== groupId;
+ }).map(function(other) { return other.nodes.map(function(node) { return node.id; }); });
+ const stale = airportSync.safeOldNodeIds(oldNodeIds, ownedIds, otherAirportNodes, otherGroupNodes);
+ return (stale.length
+ ? graphQL(endpoint, 'mutation RemoveNodes($ids:[ID!]!){removeNodes(ids:$ids)}', { ids: stale }, token)
+ : Promise.resolve()).catch(function() {
+ failed++;
+ }).then(function() {
+ writeAirportRecord(existingAirport, {
+ id: airportId,
+ backend: 'daed',
+ name: name,
+ sourceHash: state.sourceHash,
+ groupId: groupId,
+ subscriptionId: '',
+ nodeIds: ownedIds
+ });
+ return applyUciChanges().then(function() {
+ items.forEach(function(item) { item.duplicate = true; item.selected = false; });
+ return { added: ownedIds.length, duplicates: items.length - ownedIds.length, failed: failed };
+ });
+ });
+ });
+ });
+ });
});
};
@@ -693,14 +800,35 @@ return view.extend({
// import the whole converted batch as one subscription
return graphQL(endpoint,
'mutation Import($a:ImportArgument!){importSubscription(rollbackError:false,arg:$a){sub{id} nodeImportResult{error}}}',
- { a: { link: subUrl, tag: groupName } }, token);
+ { a: { link: subUrl, tag: groupName } }, token).then(function(result) {
+ const sub = result.importSubscription && result.importSubscription.sub;
+ const rows = (result.importSubscription && result.importSubscription.nodeImportResult) || [];
+ const usable = rows.length
+ ? rows.some(function(r) { return !r.error || r.error === 'node already exists'; })
+ : !!(sub && sub.id);
+ if (!sub || !sub.id || !usable) {
+ const details = rows.map(function(r) { return r.error; }).filter(Boolean).join('; ');
+ if (sub && sub.id)
+ newSubId = sub.id;
+ throw new Error(details || _('No usable nodes were imported'));
+ }
+ return result;
+ }).catch(function(error) {
+ if (daedSession.isAccessDenied(error))
+ throw error;
+ const cleanupSub = newSubId
+ ? graphQL(endpoint, 'mutation Rm($ids:[ID!]!){removeSubscriptions(ids:$ids)}', { ids: [ newSubId ] }, token).catch(function() {})
+ : Promise.resolve();
+ newSubId = '';
+ return cleanupSub.then(importDirectNodes).then(function(result) {
+ return { directResult: result };
+ });
+ });
}).then(function(result) {
+ if (result.directResult)
+ return result.directResult;
+
const sub = result.importSubscription && result.importSubscription.sub;
- if (!sub || !sub.id) {
- const rows = (result.importSubscription && result.importSubscription.nodeImportResult) || [];
- const details = rows.map(function(r) { return r.error; }).filter(Boolean).join('; ');
- throw new Error(details || _('No usable nodes were imported'));
- }
newSubId = sub.id;
const rows = result.importSubscription.nodeImportResult || [];
const failed = rows.filter(function(r) { return !!r.error && r.error !== 'node already exists'; }).length;
@@ -745,11 +873,13 @@ return view.extend({
}).catch(function(error) {
if (daedSession.isAccessDenied(error))
daedSession.clear(window.localStorage);
- if (groupReady || !token || (!newSubId && !createdGroupId))
+ if (groupReady || !token || (!newSubId && !createdGroupId && !createdNodeIds.length))
throw error;
const cleanup = [];
if (newSubId)
cleanup.push(graphQL(endpoint, 'mutation Rm($ids:[ID!]!){removeSubscriptions(ids:$ids)}', { ids: [ newSubId ] }, token));
+ if (createdNodeIds.length)
+ cleanup.push(graphQL(endpoint, 'mutation Rm($ids:[ID!]!){removeNodes(ids:$ids)}', { ids: createdNodeIds }, token));
if (createdGroupId)
cleanup.push(graphQL(endpoint, 'mutation RmG($id:ID!){removeGroup(id:$id)}', { id: createdGroupId }, token));
return Promise.all(cleanup).catch(function() {}).then(function() { throw error; });
diff --git a/luci-app-daede/htdocs/luci-static/resources/view/daede/dae.js b/luci-app-daede/htdocs/luci-static/resources/view/daede/dae.js
index e772b93f..8c7ab969 100644
--- a/luci-app-daede/htdocs/luci-static/resources/view/daede/dae.js
+++ b/luci-app-daede/htdocs/luci-static/resources/view/daede/dae.js
@@ -17,6 +17,7 @@ const DEFAULT_TEMPLATE =
'global {\n' +
' tproxy_port: 12345\n' +
' tproxy_port_protect: true\n' +
+ ' so_mark_from_dae: 0\n' +
' log_level: info\n' +
' lan_interface: br-lan\n' +
' wan_interface: auto\n' +
diff --git a/luci-app-daede/root/usr/share/luci-app-daede/gen-dae-config.sh b/luci-app-daede/root/usr/share/luci-app-daede/gen-dae-config.sh
index a4a9f4fb..e3a46baa 100755
--- a/luci-app-daede/root/usr/share/luci-app-daede/gen-dae-config.sh
+++ b/luci-app-daede/root/usr/share/luci-app-daede/gen-dae-config.sh
@@ -234,6 +234,7 @@ generate() {
echo "global {"
echo " tproxy_port: 12345"
echo " tproxy_port_protect: true"
+ echo " so_mark_from_dae: 0"
echo " log_level: ${log_level}"
[ -n "$lan_interface" ] && echo " lan_interface: ${lan_interface}"
echo " wan_interface: ${wan_interface}"
diff --git a/luci-app-fchomo/htdocs/luci-static/resources/fchomo.js b/luci-app-fchomo/htdocs/luci-static/resources/fchomo.js
index 68da2e02..dce26a80 100644
--- a/luci-app-fchomo/htdocs/luci-static/resources/fchomo.js
+++ b/luci-app-fchomo/htdocs/luci-static/resources/fchomo.js
@@ -242,7 +242,6 @@ const proxy_group_type = [
['fallback', _('Fallback')],
['url-test', _('URL test')],
['load-balance', _('Load balance')],
- //['relay', _('Relay')], // Deprecated
];
const routing_port_type = [
@@ -1763,7 +1762,7 @@ function textvalue2Value(section_id) {
let cval = this.cfgvalue(section_id);
let i = this.keylist.indexOf(cval);
- return this.vallist[i];
+ return this.vallist[i] ?? cval;
}
function validateAuth(section_id, value) {
diff --git a/luci-app-fchomo/htdocs/luci-static/resources/fchomo/listeners.js b/luci-app-fchomo/htdocs/luci-static/resources/fchomo/listeners.js
index b32d7701..bfa3e57c 100644
--- a/luci-app-fchomo/htdocs/luci-static/resources/fchomo/listeners.js
+++ b/luci-app-fchomo/htdocs/luci-static/resources/fchomo/listeners.js
@@ -461,9 +461,6 @@ function renderListeners(s, uciconfig, isClient) {
o.modalonly = true;
o = s.taboption('field_general', form.ListValue, 'snell_version', _('Version'));
- o.value('1', _('v1'));
- o.value('2', _('v2'));
- o.value('3', _('v3'));
o.value('4', _('v4'));
o.value('5', _('v5'));
o.default = '4';
@@ -562,21 +559,32 @@ function renderListeners(s, uciconfig, isClient) {
o.value('obfs', _('obfs-simple'));
o.value('shadow-tls', _('shadow-tls'));
//o.value('kcp-tun', _('kcp-tun'));
- o.depends('type', 'shadowsocks');
+ o.validate = function(section_id, value) {
+ const type = this.section.getOption('type').formvalue(section_id);
+
+ if (value) {
+ if (type === 'snell' && !['obfs', 'shadow-tls'].includes(value)) {
+ return _('Expecting: only support %s.').format(_('obfs-simple') +
+ ' / ' + _('shadow-tls'));
+ }
+ }
+
+ return true;
+ }
+ o.depends({type: /^(shadowsocks|snell)$/});
o.modalonly = true;
o = s.taboption('field_general', form.ListValue, 'plugin_opts_obfsmode', _('Plugin: ') + _('Obfs Mode'));
o.value('http', _('HTTP'));
o.value('tls', _('TLS'));
o.depends('plugin', 'obfs');
- o.depends('type', 'snell');
o.modalonly = true;
o = s.taboption('field_general', form.Value, 'plugin_opts_host', _('Plugin: ') + _('Host that supports TLS 1.3'));
o.datatype = 'hostname';
o.placeholder = 'cloud.tencent.com';
o.rmempty = false;
- o.depends('type', 'snell');
+ o.depends({plugin: 'obfs', type: 'snell'});
o.modalonly = true;
o = s.taboption('field_general', form.Value, 'plugin_opts_handshake_dest', _('Plugin: ') + _('Handshake target that supports TLS 1.3'));
diff --git a/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/client.js b/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/client.js
index f4e13961..7d0d8e34 100644
--- a/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/client.js
+++ b/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/client.js
@@ -13,7 +13,7 @@ const parseProxyGroupYaml = hm.parseYaml.extend({
if (!cfg.type)
return null;
- // key mapping // 2026/06/10
+ // key mapping // 2026/07/05
let config = hm.removeBlankAttrs({
id: this.id,
label: this.label,
@@ -23,7 +23,9 @@ const parseProxyGroupYaml = hm.parseYaml.extend({
include_all: this.bool2str(cfg["include-all"]), // bool
include_all_proxies: this.bool2str(cfg["include-all-proxies"]), // bool
include_all_providers: this.bool2str(cfg["include-all-providers"]), // bool
- empty_fallback: cfg["empty-fallback"] ? hm.preset_outbound.proxy.map(([key, label]) => key).includes(cfg["empty-fallback"]) ? cfg["empty-fallback"] : this.calcID(hm.glossary["proxy_group"].field, cfg["empty-fallback"]) : null, // string
+ empty_fallback: cfg["empty-fallback"], // string
+ // Select fields
+ default_selected: cfg["default-selected"], // string
// Url-test fields
tolerance: cfg.tolerance,
// Load-balance fields
@@ -683,10 +685,10 @@ function renderPayload(s, total, uciconfig) {
initDynamicPayload(o, n, 'factor', uciconfig);
o.load = L.bind(function(n, key, uciconfig, section_id) {
let fusedval = [
- ['NETWORK', '-- NETWORK --'],
+ ['NETWORK', _('-- NETWORK --')],
['udp', _('UDP')],
['tcp', _('TCP')],
- ['RULESET', '-- RULE-SET --']
+ ['RULESET', _('-- RULE-SET --')]
];
hm.loadLabel.call(this, [
@@ -1011,6 +1013,7 @@ return view.extend({
'- name: AllProvider\n' +
' type: select\n' +
' include-all-providers: true\n' +
+ ' default-selected: proxy1\n' +
' filter: "(?i)港|hk|hongkong|hong kong"\n' +
' exclude-filter: "美|日"\n' +
' exclude-type: "Shadowsocks|Http"\n' +
@@ -1133,6 +1136,7 @@ return view.extend({
so.load = function(section_id) {
return hm.loadLabel.call(this, [
...hm.preset_outbound.proxy,
+ ['NODE', _('-- PROXY-NODE --')],
...hm.loadLabelValues(this.config, 'node')
], section_id);
}
@@ -1189,6 +1193,23 @@ return view.extend({
so.depends({type: 'select', '!reverse': true});
so.modalonly = true;
+ /* Select fields */
+ so = ss.taboption('field_general', form.Value, 'default_selected', _('Default selected'));
+ hm.preset_outbound.proxy.forEach((res) => {
+ so.value.apply(so, res);
+ })
+ so.load = function(section_id) {
+ return hm.loadLabel.call(this, [
+ ...hm.preset_outbound.proxy,
+ ['GROUP', _('-- PROXY-GROUP --')],
+ ...hm.loadLabelValues(this.config, 'proxy_group'),
+ ['NODE', _('-- PROXY-NODE --')],
+ ...hm.loadLabelValues(this.config, 'node')
+ ], section_id);
+ }
+ so.depends('type', 'select');
+ so.textvalue = hm.textvalue2Value;
+
/* Url-test fields */
so = ss.taboption('field_general', form.Value, 'tolerance', _('Node switch tolerance'),
_('In millisecond. %s will be used if empty.').format('150'));
@@ -1888,6 +1909,23 @@ return view.extend({
so = ss.option(form.DynamicList, 'fallback_filter_domain', _('Domain'),
_('Match domain. Support wildcards.') +
_('The matching %s will be deemed as poisoned.').format(_('Domain')));
+
+ so = ss.option(form.Flag, 'fallback_lazy_query', _('Lazy query'),
+ _('Lazy query.'));
+ so.default = so.disabled;
+ so.validate = function(section_id, value) {
+ let desc = this.getUIElement(section_id).node.nextSibling;
+ value = this.formvalue(section_id);
+
+ if (value == 1)
+ desc.innerHTML = _('Check the response from the %s, only initiate query if the %s is satisfied.')
+ .format(_('Default DNS server'), _('Fallback filter'));
+ else
+ desc.innerHTML = _('Send queries to both the %s and the %s.')
+ .format(_('Default DNS server'), _('Fallback DNS server'));
+
+ return true;
+ }
/* Fallback filter END */
return m.render();
diff --git a/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/node.js b/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/node.js
index eddff1ba..c4093abb 100644
--- a/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/node.js
+++ b/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/node.js
@@ -886,14 +886,25 @@ return view.extend({
so.value('shadow-tls', _('shadow-tls'));
so.value('restls', _('restls'));
//so.value('kcptun', _('kcptun'));
- so.depends('type', 'ss');
+ so.validate = function(section_id, value) {
+ const type = this.section.getOption('type').formvalue(section_id);
+
+ if (value) {
+ if (type === 'snell' && !['obfs', 'shadow-tls'].includes(value)) {
+ return _('Expecting: only support %s.').format(_('obfs-simple') +
+ ' / ' + _('shadow-tls'));
+ }
+ }
+
+ return true;
+ }
+ so.depends({type: /^(ss|snell)$/});
so.modalonly = true;
so = ss.taboption('field_general', form.ListValue, 'plugin_opts_obfsmode', _('Plugin: ') + _('Obfs Mode'));
so.value('http', _('HTTP'));
so.value('tls', _('TLS'));
so.depends('plugin', 'obfs');
- so.depends('type', 'snell');
so.modalonly = true;
so = ss.taboption('field_general', form.Value, 'plugin_opts_host', _('Plugin: ') + _('Host that supports TLS 1.3'));
@@ -901,7 +912,6 @@ return view.extend({
so.placeholder = 'cloud.tencent.com';
so.rmempty = false;
so.depends({plugin: /^(obfs|v2ray-plugin|shadow-tls|restls)$/});
- so.depends('type', 'snell');
so.modalonly = true;
so = ss.taboption('field_general', form.Value, 'plugin_opts_thetlspassword', _('Plugin: ') + _('Password'));
@@ -949,6 +959,14 @@ return view.extend({
so.depends({type: 'hysteria2'});
so.modalonly = true;
+ so = ss.taboption('field_general', form.Value, 'handshake_timeout', _('Handshake timeout'),
+ _('In seconds. After configuration, the handshake is not affected by the outer connection timeout.') + '' +
+ _('The default value is %s, indicating that only the outer connection timeout is used.').format('0'));
+ so.datatype = 'uinteger';
+ so.placeholder = '30';
+ so.depends({type: /^(masque|openvpn)$/});
+ so.modalonly = true;
+
so = ss.taboption('field_general', form.Flag, 'udp', _('UDP'));
so.default = so.disabled;
so.depends({type: /^(rematch|direct|socks5|ss|mieru|vmess|vless|trojan|anytls|trusttunnel|masque|wireguard)$/});
@@ -1114,6 +1132,7 @@ return view.extend({
switch (type) {
case 'ss':
+ case 'snell':
def_alpn = ['h2', 'http/1.1']; // when plugin === 'shadow-tls'
break;
case 'hysteria':
@@ -1142,7 +1161,7 @@ return view.extend({
return true;
}
so.depends({tls: '1', type: /^(vmess|vless|trojan|anytls|hysteria|hysteria2|tuic|trusttunnel)$/});
- so.depends({type: 'ss', plugin: 'shadow-tls'});
+ so.depends({type: /^(ss|snell)$/, plugin: 'shadow-tls'});
so.modalonly = true;
so = ss.taboption('field_tls', form.Value, 'tls_fingerprint', _('Cert fingerprint'),
@@ -1197,7 +1216,7 @@ return view.extend({
so = ss.taboption('field_tls', form.Flag, 'tls_ech', _('Enable ECH'));
so.default = so.disabled;
so.depends({tls: '1', type: /^(vmess|vless|trojan|anytls|hysteria|hysteria2|tuic)$/});
- so.depends({type: 'ss', plugin: /^(shadow-tls|restls)$/});
+ so.depends({type: 'ss', plugin: /^(v2ray-plugin|gost-plugin)$/});
so.modalonly = true;
so = ss.taboption('field_tls', form.Value, 'tls_ech_config', _('ECH config'),
@@ -1218,7 +1237,7 @@ return view.extend({
so.value.apply(so, res);
})
so.depends({tls: '1', type: /^(vmess|vless|trojan|anytls|trusttunnel)$/});
- so.depends({type: 'ss', plugin: /^(shadow-tls|restls)$/});
+ so.depends({type: /^(ss|snell)$/, plugin: /^(shadow-tls|restls)$/});
so.modalonly = true;
so = ss.taboption('field_tls', form.Flag, 'tls_reality', _('REALITY'));
diff --git a/luci-app-fchomo/po/templates/fchomo.pot b/luci-app-fchomo/po/templates/fchomo.pot
index 078d0d0c..95072cf3 100644
--- a/luci-app-fchomo/po/templates/fchomo.pot
+++ b/luci-app-fchomo/po/templates/fchomo.pot
@@ -14,40 +14,62 @@ msgstr ""
msgid "%s ports"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:617
-#: htdocs/luci-static/resources/fchomo.js:620
-#: htdocs/luci-static/resources/view/fchomo/client.js:316
+#: htdocs/luci-static/resources/fchomo.js:642
+#: htdocs/luci-static/resources/fchomo.js:645
+#: htdocs/luci-static/resources/view/fchomo/client.js:318
msgid "(Imported)"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1002
-#: htdocs/luci-static/resources/fchomo/listeners.js:1010
-#: htdocs/luci-static/resources/fchomo/listeners.js:1019
+#: htdocs/luci-static/resources/fchomo/listeners.js:1020
+#: htdocs/luci-static/resources/fchomo/listeners.js:1028
+#: htdocs/luci-static/resources/fchomo/listeners.js:1037
#: htdocs/luci-static/resources/view/fchomo/global.js:564
#: htdocs/luci-static/resources/view/fchomo/global.js:570
-#: htdocs/luci-static/resources/view/fchomo/node.js:1159
-#: htdocs/luci-static/resources/view/fchomo/node.js:1165
-#: htdocs/luci-static/resources/view/fchomo/node.js:1173
-#: htdocs/luci-static/resources/view/fchomo/node.js:1179
+#: htdocs/luci-static/resources/view/fchomo/node.js:1188
+#: htdocs/luci-static/resources/view/fchomo/node.js:1194
+#: htdocs/luci-static/resources/view/fchomo/node.js:1202
+#: htdocs/luci-static/resources/view/fchomo/node.js:1208
msgid "(mTLS)"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:869
-#: htdocs/luci-static/resources/view/fchomo/client.js:870
-#: htdocs/luci-static/resources/view/fchomo/client.js:1052
-#: htdocs/luci-static/resources/view/fchomo/client.js:1053
-#: htdocs/luci-static/resources/view/fchomo/client.js:1066
-#: htdocs/luci-static/resources/view/fchomo/client.js:1067
-#: htdocs/luci-static/resources/view/fchomo/client.js:1296
-#: htdocs/luci-static/resources/view/fchomo/node.js:268
-#: htdocs/luci-static/resources/view/fchomo/node.js:274
-#: htdocs/luci-static/resources/view/fchomo/node.js:2035
-#: htdocs/luci-static/resources/view/fchomo/node.js:2041
-#: htdocs/luci-static/resources/view/fchomo/node.js:2055
-#: htdocs/luci-static/resources/view/fchomo/node.js:2061
+#: htdocs/luci-static/resources/view/fchomo/client.js:688
+msgid "-- NETWORK --"
+msgstr ""
+
+#: htdocs/luci-static/resources/view/fchomo/client.js:1204
+msgid "-- PROXY-GROUP --"
+msgstr ""
+
+#: htdocs/luci-static/resources/view/fchomo/client.js:1139
+#: htdocs/luci-static/resources/view/fchomo/client.js:1206
+msgid "-- PROXY-NODE --"
+msgstr ""
+
+#: htdocs/luci-static/resources/fchomo.js:832
+#: htdocs/luci-static/resources/view/fchomo/client.js:877
+#: htdocs/luci-static/resources/view/fchomo/client.js:880
+#: htdocs/luci-static/resources/view/fchomo/client.js:1077
+#: htdocs/luci-static/resources/view/fchomo/client.js:1081
+#: htdocs/luci-static/resources/view/fchomo/client.js:1097
+#: htdocs/luci-static/resources/view/fchomo/client.js:1101
+#: htdocs/luci-static/resources/view/fchomo/client.js:1357
+#: htdocs/luci-static/resources/view/fchomo/node.js:270
+#: htdocs/luci-static/resources/view/fchomo/node.js:281
+#: htdocs/luci-static/resources/view/fchomo/node.js:2071
+#: htdocs/luci-static/resources/view/fchomo/node.js:2082
+#: htdocs/luci-static/resources/view/fchomo/node.js:2101
+#: htdocs/luci-static/resources/view/fchomo/node.js:2112
msgid "-- Please choose --"
msgstr ""
+#: htdocs/luci-static/resources/view/fchomo/client.js:691
+msgid "-- RULE-SET --"
+msgstr ""
+
+#: htdocs/luci-static/resources/fchomo.js:833
+msgid "-- custom --"
+msgstr ""
+
#: htdocs/luci-static/resources/fchomo.js:404
msgid "0-RTT reuse."
msgstr ""
@@ -57,7 +79,7 @@ msgstr ""
msgid "1-RTT only."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:43
+#: htdocs/luci-static/resources/fchomo.js:44
msgid "163Music"
msgstr ""
@@ -73,20 +95,20 @@ msgstr ""
msgid "2022-blake3-chacha20-poly1305"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:698
+#: htdocs/luci-static/resources/view/fchomo/client.js:703
msgid "0 or 1 only."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:980
-#: htdocs/luci-static/resources/fchomo/listeners.js:995
-#: htdocs/luci-static/resources/fchomo/listeners.js:1020
-#: htdocs/luci-static/resources/view/fchomo/node.js:1166
-#: htdocs/luci-static/resources/view/fchomo/node.js:1180
+#: htdocs/luci-static/resources/fchomo/listeners.js:998
+#: htdocs/luci-static/resources/fchomo/listeners.js:1013
+#: htdocs/luci-static/resources/fchomo/listeners.js:1038
+#: htdocs/luci-static/resources/view/fchomo/node.js:1195
+#: htdocs/luci-static/resources/view/fchomo/node.js:1209
msgid "Save your configuration before uploading files!"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:286
-#: htdocs/luci-static/resources/view/fchomo/node.js:414
+#: htdocs/luci-static/resources/view/fchomo/node.js:424
msgid ""
"A base64 string is used to fine-tune network behavior.
Please refer to "
"the document"
@@ -144,9 +166,9 @@ msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:371
#: htdocs/luci-static/resources/fchomo/listeners.js:373
#: htdocs/luci-static/resources/fchomo/listeners.js:374
-#: htdocs/luci-static/resources/view/fchomo/node.js:443
-#: htdocs/luci-static/resources/view/fchomo/node.js:445
-#: htdocs/luci-static/resources/view/fchomo/node.js:446
+#: htdocs/luci-static/resources/view/fchomo/node.js:453
+#: htdocs/luci-static/resources/view/fchomo/node.js:455
+#: htdocs/luci-static/resources/view/fchomo/node.js:456
msgid "ASCII data stream"
msgstr ""
@@ -159,15 +181,15 @@ msgstr ""
msgid "Access Control"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1710
+#: htdocs/luci-static/resources/view/fchomo/client.js:1776
msgid "Add a Bootstrap DNS policy (Node)"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1762
+#: htdocs/luci-static/resources/view/fchomo/client.js:1828
msgid "Add a DNS policy"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1458
+#: htdocs/luci-static/resources/view/fchomo/client.js:1521
msgid "Add a DNS server"
msgstr ""
@@ -179,19 +201,19 @@ msgstr ""
msgid "Add a inbound"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1555
+#: htdocs/luci-static/resources/view/fchomo/node.js:1584
msgid "Add a provider"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:2011
+#: htdocs/luci-static/resources/view/fchomo/node.js:2045
msgid "Add a proxy chain"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:950
+#: htdocs/luci-static/resources/view/fchomo/client.js:968
msgid "Add a proxy group"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1211
+#: htdocs/luci-static/resources/view/fchomo/client.js:1271
msgid "Add a routing rule"
msgstr ""
@@ -203,20 +225,20 @@ msgstr ""
msgid "Add a server"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1330
+#: htdocs/luci-static/resources/view/fchomo/client.js:1393
msgid "Add a sub rule"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1833
+#: htdocs/luci-static/resources/view/fchomo/node.js:1867
msgid "Add prefix"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1837
+#: htdocs/luci-static/resources/view/fchomo/node.js:1871
msgid "Add suffix"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1518
-#: htdocs/luci-static/resources/view/fchomo/client.js:1523
+#: htdocs/luci-static/resources/view/fchomo/client.js:1581
+#: htdocs/luci-static/resources/view/fchomo/client.js:1586
msgid "Address"
msgstr ""
@@ -226,7 +248,7 @@ msgid ""
"100% probability."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:62
+#: htdocs/luci-static/resources/fchomo.js:63
msgid "Aggressive"
msgstr ""
@@ -250,11 +272,11 @@ msgid ""
"network from a public website, it must be enabled."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:961
+#: htdocs/luci-static/resources/fchomo/listeners.js:979
msgid "Allow insecure connections"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:835
+#: htdocs/luci-static/resources/view/fchomo/node.js:845
msgid "Allowed IPs"
msgstr ""
@@ -266,13 +288,13 @@ msgstr ""
msgid "Already in updating."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:543
-#: htdocs/luci-static/resources/view/fchomo/node.js:685
+#: htdocs/luci-static/resources/fchomo/listeners.js:540
+#: htdocs/luci-static/resources/view/fchomo/node.js:695
msgid "Alter ID"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:163
-#: htdocs/luci-static/resources/fchomo.js:199
+#: htdocs/luci-static/resources/fchomo.js:164
+#: htdocs/luci-static/resources/fchomo.js:200
msgid "AnyTLS"
msgstr ""
@@ -289,20 +311,20 @@ msgstr ""
msgid "As the TOP upstream of dnsmasq."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:493
+#: htdocs/luci-static/resources/fchomo/listeners.js:490
msgid "Auth timeout"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:707
+#: htdocs/luci-static/resources/view/fchomo/node.js:717
msgid "Authenticated length"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:440
-#: htdocs/luci-static/resources/fchomo/listeners.js:1174
+#: htdocs/luci-static/resources/fchomo/listeners.js:1192
#: htdocs/luci-static/resources/view/fchomo/global.js:423
-#: htdocs/luci-static/resources/view/fchomo/node.js:494
-#: htdocs/luci-static/resources/view/fchomo/node.js:518
-#: htdocs/luci-static/resources/view/fchomo/node.js:1361
+#: htdocs/luci-static/resources/view/fchomo/node.js:504
+#: htdocs/luci-static/resources/view/fchomo/node.js:528
+#: htdocs/luci-static/resources/view/fchomo/node.js:1390
msgid "Auto"
msgstr ""
@@ -318,20 +340,20 @@ msgstr ""
msgid "Auto update resources."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:633
-#: htdocs/luci-static/resources/view/fchomo/node.js:933
+#: htdocs/luci-static/resources/fchomo/listeners.js:651
+#: htdocs/luci-static/resources/view/fchomo/node.js:953
msgid "BBR profile"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:42
+#: htdocs/luci-static/resources/fchomo.js:43
msgid "Baidu"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:722
+#: htdocs/luci-static/resources/view/fchomo/node.js:732
msgid "Base64 encoded ECDSA private key on the NIST P-256 curve."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:730
+#: htdocs/luci-static/resources/view/fchomo/node.js:740
msgid "Base64 encoded ECDSA public key on the NIST P-256 curve."
msgstr ""
@@ -353,13 +375,13 @@ msgid "Binary mrs"
msgstr ""
#: htdocs/luci-static/resources/view/fchomo/global.js:758
-#: htdocs/luci-static/resources/view/fchomo/node.js:1522
-#: htdocs/luci-static/resources/view/fchomo/node.js:1909
+#: htdocs/luci-static/resources/view/fchomo/node.js:1551
+#: htdocs/luci-static/resources/view/fchomo/node.js:1943
msgid "Bind interface"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1523
-#: htdocs/luci-static/resources/view/fchomo/node.js:1910
+#: htdocs/luci-static/resources/view/fchomo/node.js:1552
+#: htdocs/luci-static/resources/view/fchomo/node.js:1944
msgid "Bind outbound interface."
msgstr ""
@@ -372,20 +394,20 @@ msgstr ""
msgid "Black list"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:58
+#: htdocs/luci-static/resources/view/fchomo/client.js:60
msgid "Block DNS queries"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1701
-#: htdocs/luci-static/resources/view/fchomo/client.js:1710
+#: htdocs/luci-static/resources/view/fchomo/client.js:1767
+#: htdocs/luci-static/resources/view/fchomo/client.js:1776
msgid "Bootstrap DNS policy (Node)"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1403
+#: htdocs/luci-static/resources/view/fchomo/client.js:1466
msgid "Bootstrap DNS server"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1410
+#: htdocs/luci-static/resources/view/fchomo/client.js:1473
msgid "Bootstrap DNS server (Node)"
msgstr ""
@@ -405,10 +427,10 @@ msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:439
#: htdocs/luci-static/resources/fchomo/listeners.js:440
#: htdocs/luci-static/resources/fchomo/listeners.js:441
-#: htdocs/luci-static/resources/view/fchomo/node.js:492
-#: htdocs/luci-static/resources/view/fchomo/node.js:493
-#: htdocs/luci-static/resources/view/fchomo/node.js:494
-#: htdocs/luci-static/resources/view/fchomo/node.js:495
+#: htdocs/luci-static/resources/view/fchomo/node.js:502
+#: htdocs/luci-static/resources/view/fchomo/node.js:503
+#: htdocs/luci-static/resources/view/fchomo/node.js:504
+#: htdocs/luci-static/resources/view/fchomo/node.js:505
msgid "CDN support"
msgstr ""
@@ -424,21 +446,21 @@ msgstr ""
msgid "CORS allowed origins, * will be used if empty."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:733
+#: htdocs/luci-static/resources/fchomo.js:758
msgid "Cancel"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1138
+#: htdocs/luci-static/resources/view/fchomo/node.js:1167
msgid "Cert fingerprint"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1139
+#: htdocs/luci-static/resources/view/fchomo/node.js:1168
msgid ""
"Certificate fingerprint. Used to implement SSL Pinning and prevent MitM."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:972
-#: htdocs/luci-static/resources/view/fchomo/node.js:1159
+#: htdocs/luci-static/resources/fchomo/listeners.js:990
+#: htdocs/luci-static/resources/view/fchomo/node.js:1188
msgid "Certificate path"
msgstr ""
@@ -451,6 +473,12 @@ msgstr ""
msgid "Check routerself NAT Behavior"
msgstr ""
+#: htdocs/luci-static/resources/view/fchomo/client.js:1921
+msgid ""
+"Check the response from the %s, only initiate query if the "
+"%s is satisfied."
+msgstr ""
+
#: htdocs/luci-static/resources/view/fchomo/global.js:86
msgid "Check update"
msgstr ""
@@ -469,14 +497,14 @@ msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:255
#: htdocs/luci-static/resources/fchomo/listeners.js:354
-#: htdocs/luci-static/resources/view/fchomo/node.js:367
-#: htdocs/luci-static/resources/view/fchomo/node.js:426
-#: htdocs/luci-static/resources/view/fchomo/node.js:691
+#: htdocs/luci-static/resources/view/fchomo/node.js:377
+#: htdocs/luci-static/resources/view/fchomo/node.js:436
+#: htdocs/luci-static/resources/view/fchomo/node.js:701
msgid "Chipher"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:363
-#: htdocs/luci-static/resources/view/fchomo/node.js:435
+#: htdocs/luci-static/resources/view/fchomo/node.js:445
msgid "Chipher must be enabled if obfuscate downlink is disabled."
msgstr ""
@@ -490,25 +518,25 @@ msgid ""
"to download the latest initial package."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:731
-#: htdocs/luci-static/resources/fchomo/listeners.js:1011
+#: htdocs/luci-static/resources/fchomo/listeners.js:749
+#: htdocs/luci-static/resources/fchomo/listeners.js:1029
#: htdocs/luci-static/resources/view/fchomo/global.js:571
-#: htdocs/luci-static/resources/view/fchomo/node.js:997
-#: htdocs/luci-static/resources/view/fchomo/node.js:1160
-#: htdocs/luci-static/resources/view/fchomo/node.js:1174
+#: htdocs/luci-static/resources/view/fchomo/node.js:1025
+#: htdocs/luci-static/resources/view/fchomo/node.js:1189
+#: htdocs/luci-static/resources/view/fchomo/node.js:1203
#: root/usr/share/luci/menu.d/luci-app-fchomo.json:22
msgid "Client"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1010
+#: htdocs/luci-static/resources/fchomo/listeners.js:1028
msgid "Client Auth Certificate path"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1002
+#: htdocs/luci-static/resources/fchomo/listeners.js:1020
msgid "Client Auth type"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1205
+#: htdocs/luci-static/resources/view/fchomo/node.js:1234
msgid "Client fingerprint"
msgstr ""
@@ -529,16 +557,16 @@ msgstr ""
msgid "Common ports (bypass P2P traffic)"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1405
+#: htdocs/luci-static/resources/fchomo.js:1755
msgid "Complete"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1853
+#: htdocs/luci-static/resources/view/fchomo/node.js:1887
msgid "Configuration Items"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:625
-#: htdocs/luci-static/resources/view/fchomo/node.js:924
+#: htdocs/luci-static/resources/fchomo/listeners.js:643
+#: htdocs/luci-static/resources/view/fchomo/node.js:944
msgid "Congestion controller"
msgstr ""
@@ -546,27 +574,27 @@ msgstr ""
msgid "Connection check"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:551
+#: htdocs/luci-static/resources/view/fchomo/node.js:561
msgid "Connection reuse"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:61
+#: htdocs/luci-static/resources/fchomo.js:62
msgid "Conservative"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:602
+#: htdocs/luci-static/resources/fchomo.js:627
msgid "Content copied to clipboard!"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:679
-#: htdocs/luci-static/resources/view/fchomo/node.js:1698
-#: htdocs/luci-static/resources/view/fchomo/node.js:1724
+#: htdocs/luci-static/resources/view/fchomo/client.js:681
+#: htdocs/luci-static/resources/view/fchomo/node.js:1727
+#: htdocs/luci-static/resources/view/fchomo/node.js:1753
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:348
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:374
msgid "Content will not be verified, Please make sure you enter it correctly."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1697
+#: htdocs/luci-static/resources/view/fchomo/node.js:1726
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:347
msgid "Contents"
msgstr ""
@@ -575,7 +603,7 @@ msgstr ""
msgid "Contents have been saved."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:604
+#: htdocs/luci-static/resources/fchomo.js:629
msgid "Copy"
msgstr ""
@@ -591,8 +619,8 @@ msgstr ""
msgid "Custom Direct List"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1824
-#: htdocs/luci-static/resources/view/fchomo/ruleset.js:415
+#: htdocs/luci-static/resources/view/fchomo/node.js:1858
+#: htdocs/luci-static/resources/view/fchomo/ruleset.js:420
msgid "Custom HTTP header."
msgstr ""
@@ -601,7 +629,7 @@ msgid "Custom Proxy List"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:378
-#: htdocs/luci-static/resources/view/fchomo/node.js:450
+#: htdocs/luci-static/resources/view/fchomo/node.js:460
msgid "Custom byte layout"
msgstr ""
@@ -610,12 +638,12 @@ msgid ""
"Custom internal hosts. Support yaml or json format."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:188
+#: htdocs/luci-static/resources/fchomo.js:189
msgid "DIRECT"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1753
-#: htdocs/luci-static/resources/view/fchomo/client.js:1762
+#: htdocs/luci-static/resources/view/fchomo/client.js:1819
+#: htdocs/luci-static/resources/view/fchomo/client.js:1828
msgid "DNS policy"
msgstr ""
@@ -623,15 +651,15 @@ msgstr ""
msgid "DNS port"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:882
-#: htdocs/luci-static/resources/view/fchomo/client.js:1449
-#: htdocs/luci-static/resources/view/fchomo/client.js:1458
-#: htdocs/luci-static/resources/view/fchomo/node.js:782
-#: htdocs/luci-static/resources/view/fchomo/node.js:865
+#: htdocs/luci-static/resources/view/fchomo/client.js:895
+#: htdocs/luci-static/resources/view/fchomo/client.js:1512
+#: htdocs/luci-static/resources/view/fchomo/client.js:1521
+#: htdocs/luci-static/resources/view/fchomo/node.js:792
+#: htdocs/luci-static/resources/view/fchomo/node.js:875
msgid "DNS server"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1386
+#: htdocs/luci-static/resources/view/fchomo/client.js:1449
msgid "DNS settings"
msgstr ""
@@ -643,31 +671,37 @@ msgstr ""
msgid "Dashboard version"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:93
+#: htdocs/luci-static/resources/fchomo.js:94
msgid "Debug"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:56
+#: htdocs/luci-static/resources/view/fchomo/client.js:58
msgid "Default DNS (issued by WAN)"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1424
+#: htdocs/luci-static/resources/view/fchomo/client.js:1487
+#: htdocs/luci-static/resources/view/fchomo/client.js:1922
+#: htdocs/luci-static/resources/view/fchomo/client.js:1925
msgid "Default DNS server"
msgstr ""
+#: htdocs/luci-static/resources/view/fchomo/client.js:1197
+msgid "Default selected"
+msgstr ""
+
#: htdocs/luci-static/resources/view/fchomo/node.js:22
msgid "Derive from priv-key"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:836
+#: htdocs/luci-static/resources/view/fchomo/node.js:846
msgid "Destination addresses allowed to be forwarded via Wireguard."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:2034
+#: htdocs/luci-static/resources/view/fchomo/node.js:2068
msgid "Destination provider"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:2040
+#: htdocs/luci-static/resources/view/fchomo/node.js:2079
msgid "Destination proxy node"
msgstr ""
@@ -675,8 +709,8 @@ msgstr ""
msgid "Dial fields"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:2047
-#: htdocs/luci-static/resources/view/fchomo/node.js:2067
+#: htdocs/luci-static/resources/view/fchomo/node.js:2091
+#: htdocs/luci-static/resources/view/fchomo/node.js:2121
msgid "Different chain head/tail"
msgstr ""
@@ -698,7 +732,7 @@ msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:194
#: htdocs/luci-static/resources/view/fchomo/global.js:424
-#: htdocs/luci-static/resources/view/fchomo/node.js:322
+#: htdocs/luci-static/resources/view/fchomo/node.js:332
msgid "Disable"
msgstr ""
@@ -714,11 +748,11 @@ msgstr ""
msgid "Disable ICMP Forwarding"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1082
+#: htdocs/luci-static/resources/view/fchomo/node.js:1110
msgid "Disable SNI"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1103
+#: htdocs/luci-static/resources/view/fchomo/client.js:1146
msgid "Disable UDP"
msgstr ""
@@ -726,68 +760,68 @@ msgstr ""
msgid "Disable safe path check"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:829
+#: htdocs/luci-static/resources/view/fchomo/client.js:837
msgid ""
"Do not resolve the domain connection to IP for this match.Only works "
"for pure domain inbound connections without DNS resolution. e.g., socks5h"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:852
-#: htdocs/luci-static/resources/view/fchomo/client.js:857
-#: htdocs/luci-static/resources/view/fchomo/client.js:1836
-#: htdocs/luci-static/resources/view/fchomo/client.js:1843
-#: htdocs/luci-static/resources/view/fchomo/client.js:1845
+#: htdocs/luci-static/resources/view/fchomo/client.js:860
+#: htdocs/luci-static/resources/view/fchomo/client.js:865
+#: htdocs/luci-static/resources/view/fchomo/client.js:1902
+#: htdocs/luci-static/resources/view/fchomo/client.js:1909
+#: htdocs/luci-static/resources/view/fchomo/client.js:1911
msgid "Domain"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1083
+#: htdocs/luci-static/resources/view/fchomo/node.js:1111
msgid "Donot send server name in ClientHello."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1598
-#: htdocs/luci-static/resources/view/fchomo/node.js:1152
-#: htdocs/luci-static/resources/view/fchomo/node.js:1893
+#: htdocs/luci-static/resources/view/fchomo/client.js:1664
+#: htdocs/luci-static/resources/view/fchomo/node.js:1181
+#: htdocs/luci-static/resources/view/fchomo/node.js:1927
msgid "Donot verifying server certificate."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1499
+#: htdocs/luci-static/resources/view/fchomo/node.js:1528
msgid "Download bandwidth"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1500
+#: htdocs/luci-static/resources/view/fchomo/node.js:1529
msgid "Download bandwidth in Mbps."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1284
+#: htdocs/luci-static/resources/fchomo.js:1634
msgid "Download failed: %s"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1282
+#: htdocs/luci-static/resources/fchomo.js:1632
msgid "Download successful."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:173
+#: htdocs/luci-static/resources/fchomo.js:174
msgid "Dual stack"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1199
+#: htdocs/luci-static/resources/view/fchomo/node.js:1228
msgid "ECH HTTPS record query servername"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1068
-#: htdocs/luci-static/resources/view/fchomo/node.js:1193
+#: htdocs/luci-static/resources/fchomo/listeners.js:1086
+#: htdocs/luci-static/resources/view/fchomo/node.js:1222
msgid "ECH config"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1027
+#: htdocs/luci-static/resources/fchomo/listeners.js:1045
msgid "ECH key"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1632
+#: htdocs/luci-static/resources/view/fchomo/client.js:1698
msgid "ECS override"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1616
+#: htdocs/luci-static/resources/view/fchomo/client.js:1682
msgid "EDNS Client Subnet"
msgstr ""
@@ -795,11 +829,11 @@ msgstr ""
msgid "ETag support"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1339
+#: htdocs/luci-static/resources/view/fchomo/node.js:1368
msgid "Early Data first packet length limit."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1345
+#: htdocs/luci-static/resources/view/fchomo/node.js:1374
msgid "Early Data header name"
msgstr ""
@@ -815,7 +849,7 @@ msgstr ""
msgid "Edit ruleset"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1695
+#: htdocs/luci-static/resources/view/fchomo/node.js:1724
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:345
msgid "Editer"
msgstr ""
@@ -824,37 +858,37 @@ msgstr ""
msgid "Eliminate encryption header characteristics"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1094
+#: htdocs/luci-static/resources/view/fchomo/client.js:1131
msgid "Empty fallback"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:133
-#: htdocs/luci-static/resources/view/fchomo/client.js:940
-#: htdocs/luci-static/resources/view/fchomo/client.js:1034
-#: htdocs/luci-static/resources/view/fchomo/client.js:1280
-#: htdocs/luci-static/resources/view/fchomo/client.js:1372
-#: htdocs/luci-static/resources/view/fchomo/client.js:1514
-#: htdocs/luci-static/resources/view/fchomo/client.js:1745
-#: htdocs/luci-static/resources/view/fchomo/client.js:1801
+#: htdocs/luci-static/resources/view/fchomo/client.js:958
+#: htdocs/luci-static/resources/view/fchomo/client.js:1053
+#: htdocs/luci-static/resources/view/fchomo/client.js:1340
+#: htdocs/luci-static/resources/view/fchomo/client.js:1435
+#: htdocs/luci-static/resources/view/fchomo/client.js:1577
+#: htdocs/luci-static/resources/view/fchomo/client.js:1811
+#: htdocs/luci-static/resources/view/fchomo/client.js:1867
#: htdocs/luci-static/resources/view/fchomo/global.js:422
#: htdocs/luci-static/resources/view/fchomo/global.js:704
#: htdocs/luci-static/resources/view/fchomo/node.js:246
-#: htdocs/luci-static/resources/view/fchomo/node.js:1668
-#: htdocs/luci-static/resources/view/fchomo/node.js:1932
-#: htdocs/luci-static/resources/view/fchomo/node.js:2021
+#: htdocs/luci-static/resources/view/fchomo/node.js:1697
+#: htdocs/luci-static/resources/view/fchomo/node.js:1966
+#: htdocs/luci-static/resources/view/fchomo/node.js:2055
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:272
#: htdocs/luci-static/resources/view/fchomo/server.js:49
msgid "Enable"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:600
+#: htdocs/luci-static/resources/view/fchomo/node.js:610
msgid ""
"Enable 0-RTT QUIC connection handshake on the client side. This is not "
"impacting much on the performance, as the protocol is fully multiplexed.
Disabling this is highly recommended, as it is vulnerable to replay attacks."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:599
+#: htdocs/luci-static/resources/view/fchomo/node.js:609
msgid "Enable 0-RTT handshake"
msgstr ""
@@ -864,57 +898,57 @@ msgid ""
"conversion for outbound connections"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1187
+#: htdocs/luci-static/resources/view/fchomo/node.js:1216
msgid "Enable ECH"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1487
+#: htdocs/luci-static/resources/view/fchomo/node.js:1516
msgid "Enable TCP Brutal"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1488
+#: htdocs/luci-static/resources/view/fchomo/node.js:1517
msgid "Enable TCP Brutal congestion control algorithm"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:594
+#: htdocs/luci-static/resources/view/fchomo/node.js:604
msgid "Enable fast open"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1476
+#: htdocs/luci-static/resources/view/fchomo/node.js:1505
msgid "Enable multiplexing only for TCP."
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:424
-#: htdocs/luci-static/resources/view/fchomo/node.js:478
+#: htdocs/luci-static/resources/view/fchomo/node.js:488
msgid "Enable obfuscate for downlink"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1470
+#: htdocs/luci-static/resources/view/fchomo/node.js:1499
msgid "Enable padding"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1481
+#: htdocs/luci-static/resources/view/fchomo/node.js:1510
msgid "Enable statistic"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:949
-#: htdocs/luci-static/resources/view/fchomo/node.js:1875
+#: htdocs/luci-static/resources/view/fchomo/node.js:977
+#: htdocs/luci-static/resources/view/fchomo/node.js:1909
msgid ""
"Enable the SUoT protocol, requires server support. Conflict with Multiplex."
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:201
-#: htdocs/luci-static/resources/view/fchomo/node.js:329
+#: htdocs/luci-static/resources/view/fchomo/node.js:339
msgid ""
"Enabling obfuscation will make the server incompatible with standard QUIC "
"connections, losing the ability to masquerade with HTTP/3."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:694
+#: htdocs/luci-static/resources/fchomo/listeners.js:712
msgid "Encryption method"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:729
+#: htdocs/luci-static/resources/view/fchomo/node.js:739
msgid "Endpoint pubkic key"
msgstr ""
@@ -922,33 +956,33 @@ msgstr ""
msgid "Endpoint-Independent NAT"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:731
-#: htdocs/luci-static/resources/view/fchomo/client.js:874
+#: htdocs/luci-static/resources/view/fchomo/client.js:736
+#: htdocs/luci-static/resources/view/fchomo/client.js:887
msgid "Entry"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:90
+#: htdocs/luci-static/resources/fchomo.js:91
msgid "Error"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1147
+#: htdocs/luci-static/resources/view/fchomo/client.js:1190
msgid ""
"Exceeding this triggers a forced health check. 5 will be used "
"if empty."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1990
+#: htdocs/luci-static/resources/view/fchomo/node.js:2024
msgid "Exclude matched node types."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1184
+#: htdocs/luci-static/resources/view/fchomo/client.js:1244
msgid ""
"Exclude matched node types. Available types see here."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1179
-#: htdocs/luci-static/resources/view/fchomo/node.js:1983
+#: htdocs/luci-static/resources/view/fchomo/client.js:1239
+#: htdocs/luci-static/resources/view/fchomo/node.js:2017
msgid "Exclude nodes that meet keywords or regexps."
msgstr ""
@@ -956,67 +990,69 @@ msgstr ""
msgid "Expand/Collapse result"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1139
-#: htdocs/luci-static/resources/view/fchomo/node.js:1968
+#: htdocs/luci-static/resources/view/fchomo/client.js:1182
+#: htdocs/luci-static/resources/view/fchomo/node.js:2002
msgid "Expected HTTP code. 204 will be used if empty."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1141
-#: htdocs/luci-static/resources/view/fchomo/node.js:1970
+#: htdocs/luci-static/resources/view/fchomo/client.js:1184
+#: htdocs/luci-static/resources/view/fchomo/node.js:2004
msgid "Expected status"
msgstr ""
#: htdocs/luci-static/resources/fchomo.js:452
#: htdocs/luci-static/resources/fchomo.js:455
#: htdocs/luci-static/resources/fchomo.js:458
-#: htdocs/luci-static/resources/fchomo.js:1422
-#: htdocs/luci-static/resources/fchomo.js:1430
-#: htdocs/luci-static/resources/fchomo.js:1438
-#: htdocs/luci-static/resources/fchomo.js:1461
-#: htdocs/luci-static/resources/fchomo.js:1464
-#: htdocs/luci-static/resources/fchomo.js:1471
-#: htdocs/luci-static/resources/fchomo.js:1487
-#: htdocs/luci-static/resources/fchomo.js:1496
-#: htdocs/luci-static/resources/fchomo.js:1508
-#: htdocs/luci-static/resources/fchomo.js:1511
-#: htdocs/luci-static/resources/fchomo.js:1521
-#: htdocs/luci-static/resources/fchomo.js:1533
-#: htdocs/luci-static/resources/fchomo.js:1536
-#: htdocs/luci-static/resources/fchomo.js:1546
-#: htdocs/luci-static/resources/fchomo.js:1556
-#: htdocs/luci-static/resources/fchomo.js:1591
-#: htdocs/luci-static/resources/fchomo.js:1593
-#: htdocs/luci-static/resources/fchomo.js:1606
-#: htdocs/luci-static/resources/fchomo.js:1612
-#: htdocs/luci-static/resources/fchomo.js:1619
-#: htdocs/luci-static/resources/fchomo.js:1628
+#: htdocs/luci-static/resources/fchomo.js:1772
+#: htdocs/luci-static/resources/fchomo.js:1780
+#: htdocs/luci-static/resources/fchomo.js:1788
+#: htdocs/luci-static/resources/fchomo.js:1811
+#: htdocs/luci-static/resources/fchomo.js:1814
+#: htdocs/luci-static/resources/fchomo.js:1821
+#: htdocs/luci-static/resources/fchomo.js:1837
+#: htdocs/luci-static/resources/fchomo.js:1846
+#: htdocs/luci-static/resources/fchomo.js:1858
+#: htdocs/luci-static/resources/fchomo.js:1861
+#: htdocs/luci-static/resources/fchomo.js:1871
+#: htdocs/luci-static/resources/fchomo.js:1883
+#: htdocs/luci-static/resources/fchomo.js:1886
+#: htdocs/luci-static/resources/fchomo.js:1896
+#: htdocs/luci-static/resources/fchomo.js:1906
+#: htdocs/luci-static/resources/fchomo.js:1941
+#: htdocs/luci-static/resources/fchomo.js:1943
+#: htdocs/luci-static/resources/fchomo.js:1956
+#: htdocs/luci-static/resources/fchomo.js:1962
+#: htdocs/luci-static/resources/fchomo.js:1969
+#: htdocs/luci-static/resources/fchomo.js:1978
#: htdocs/luci-static/resources/fchomo/listeners.js:363
#: htdocs/luci-static/resources/fchomo/listeners.js:410
-#: htdocs/luci-static/resources/fchomo/listeners.js:723
-#: htdocs/luci-static/resources/fchomo/listeners.js:754
-#: htdocs/luci-static/resources/fchomo/listeners.js:855
-#: htdocs/luci-static/resources/view/fchomo/client.js:69
-#: htdocs/luci-static/resources/view/fchomo/client.js:1028
-#: htdocs/luci-static/resources/view/fchomo/client.js:1529
+#: htdocs/luci-static/resources/fchomo/listeners.js:741
+#: htdocs/luci-static/resources/fchomo/listeners.js:772
+#: htdocs/luci-static/resources/fchomo/listeners.js:873
+#: htdocs/luci-static/resources/view/fchomo/client.js:71
+#: htdocs/luci-static/resources/view/fchomo/client.js:1047
+#: htdocs/luci-static/resources/view/fchomo/client.js:1592
#: htdocs/luci-static/resources/view/fchomo/global.js:904
-#: htdocs/luci-static/resources/view/fchomo/node.js:435
-#: htdocs/luci-static/resources/view/fchomo/node.js:471
-#: htdocs/luci-static/resources/view/fchomo/node.js:524
-#: htdocs/luci-static/resources/view/fchomo/node.js:526
-#: htdocs/luci-static/resources/view/fchomo/node.js:1020
-#: htdocs/luci-static/resources/view/fchomo/node.js:1144
-#: htdocs/luci-static/resources/view/fchomo/node.js:2047
-#: htdocs/luci-static/resources/view/fchomo/node.js:2067
+#: htdocs/luci-static/resources/view/fchomo/node.js:445
+#: htdocs/luci-static/resources/view/fchomo/node.js:481
+#: htdocs/luci-static/resources/view/fchomo/node.js:534
+#: htdocs/luci-static/resources/view/fchomo/node.js:536
+#: htdocs/luci-static/resources/view/fchomo/node.js:1048
+#: htdocs/luci-static/resources/view/fchomo/node.js:1173
+#: htdocs/luci-static/resources/view/fchomo/node.js:2091
+#: htdocs/luci-static/resources/view/fchomo/node.js:2121
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:300
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:314
msgid "Expecting: %s"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1135
-#: htdocs/luci-static/resources/fchomo/listeners.js:1142
-#: htdocs/luci-static/resources/view/fchomo/node.js:1254
-#: htdocs/luci-static/resources/view/fchomo/node.js:1261
-#: htdocs/luci-static/resources/view/fchomo/node.js:1269
+#: htdocs/luci-static/resources/fchomo/listeners.js:567
+#: htdocs/luci-static/resources/fchomo/listeners.js:1153
+#: htdocs/luci-static/resources/fchomo/listeners.js:1160
+#: htdocs/luci-static/resources/view/fchomo/node.js:894
+#: htdocs/luci-static/resources/view/fchomo/node.js:1283
+#: htdocs/luci-static/resources/view/fchomo/node.js:1290
+#: htdocs/luci-static/resources/view/fchomo/node.js:1298
msgid "Expecting: only support %s."
msgstr ""
@@ -1024,71 +1060,73 @@ msgstr ""
msgid "Experimental"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:551
-#: htdocs/luci-static/resources/view/fchomo/client.js:564
-#: htdocs/luci-static/resources/view/fchomo/client.js:572
-#: htdocs/luci-static/resources/view/fchomo/client.js:579
-#: htdocs/luci-static/resources/view/fchomo/client.js:589
-#: htdocs/luci-static/resources/view/fchomo/client.js:596
-#: htdocs/luci-static/resources/view/fchomo/client.js:604
-#: htdocs/luci-static/resources/view/fchomo/client.js:611
-#: htdocs/luci-static/resources/view/fchomo/client.js:678
+#: htdocs/luci-static/resources/view/fchomo/client.js:553
+#: htdocs/luci-static/resources/view/fchomo/client.js:566
+#: htdocs/luci-static/resources/view/fchomo/client.js:574
+#: htdocs/luci-static/resources/view/fchomo/client.js:581
+#: htdocs/luci-static/resources/view/fchomo/client.js:591
+#: htdocs/luci-static/resources/view/fchomo/client.js:598
+#: htdocs/luci-static/resources/view/fchomo/client.js:606
+#: htdocs/luci-static/resources/view/fchomo/client.js:613
+#: htdocs/luci-static/resources/view/fchomo/client.js:680
msgid "Factor"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1363
+#: htdocs/luci-static/resources/fchomo.js:1713
msgid "Failed to execute \"/etc/init.d/fchomo %s %s\" reason: %s"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1316
+#: htdocs/luci-static/resources/fchomo.js:1666
msgid "Failed to generate %s, error: %s."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1728
+#: htdocs/luci-static/resources/fchomo.js:2078
msgid "Failed to upload %s, error: %s."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1747
+#: htdocs/luci-static/resources/fchomo.js:2097
msgid "Failed to upload, error: %s."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:241
+#: htdocs/luci-static/resources/fchomo.js:242
#: htdocs/luci-static/resources/fchomo/listeners.js:449
msgid "Fallback"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1418
-#: htdocs/luci-static/resources/view/fchomo/client.js:1431
+#: htdocs/luci-static/resources/view/fchomo/client.js:1481
+#: htdocs/luci-static/resources/view/fchomo/client.js:1494
+#: htdocs/luci-static/resources/view/fchomo/client.js:1925
msgid "Fallback DNS server"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1815
+#: htdocs/luci-static/resources/view/fchomo/client.js:1881
+#: htdocs/luci-static/resources/view/fchomo/client.js:1922
msgid "Fallback filter"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1174
-#: htdocs/luci-static/resources/view/fchomo/node.js:1977
+#: htdocs/luci-static/resources/view/fchomo/client.js:1234
+#: htdocs/luci-static/resources/view/fchomo/node.js:2011
msgid "Filter nodes that meet keywords or regexps."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1682
+#: htdocs/luci-static/resources/view/fchomo/client.js:1748
msgid "Filter record type:"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1650
-#: htdocs/luci-static/resources/view/fchomo/client.js:1666
+#: htdocs/luci-static/resources/view/fchomo/client.js:1716
+#: htdocs/luci-static/resources/view/fchomo/client.js:1732
msgid "Filter record: %s"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1417
+#: htdocs/luci-static/resources/view/fchomo/client.js:1480
msgid "Final DNS server"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1419
+#: htdocs/luci-static/resources/view/fchomo/client.js:1482
msgid "Final DNS server (For non-poisoned domains)"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1421
+#: htdocs/luci-static/resources/view/fchomo/client.js:1484
msgid "Final DNS server (For poisoned domains)"
msgstr ""
@@ -1096,27 +1134,27 @@ msgstr ""
msgid "Firewall"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:535
-#: htdocs/luci-static/resources/view/fchomo/node.js:677
+#: htdocs/luci-static/resources/fchomo/listeners.js:532
+#: htdocs/luci-static/resources/view/fchomo/node.js:687
msgid "Flow"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1163
+#: htdocs/luci-static/resources/view/fchomo/client.js:1223
msgid ""
"For details, see %s."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1140
-#: htdocs/luci-static/resources/view/fchomo/node.js:1843
-#: htdocs/luci-static/resources/view/fchomo/node.js:1969
+#: htdocs/luci-static/resources/view/fchomo/client.js:1183
+#: htdocs/luci-static/resources/view/fchomo/node.js:1877
+#: htdocs/luci-static/resources/view/fchomo/node.js:2003
msgid ""
"For format see %s."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:777
-#: htdocs/luci-static/resources/view/fchomo/node.js:860
+#: htdocs/luci-static/resources/view/fchomo/node.js:787
+#: htdocs/luci-static/resources/view/fchomo/node.js:870
msgid "Force DNS remote resolution."
msgstr ""
@@ -1135,7 +1173,7 @@ msgstr ""
msgid "FullCombo Shark!"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1294
+#: htdocs/luci-static/resources/view/fchomo/node.js:1323
msgid "GET"
msgstr ""
@@ -1144,7 +1182,7 @@ msgid "GFW list version"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:196
-#: htdocs/luci-static/resources/view/fchomo/node.js:324
+#: htdocs/luci-static/resources/view/fchomo/node.js:334
msgid "Gecko"
msgstr ""
@@ -1153,9 +1191,9 @@ msgid "General"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:119
-#: htdocs/luci-static/resources/view/fchomo/client.js:1019
+#: htdocs/luci-static/resources/view/fchomo/client.js:1038
#: htdocs/luci-static/resources/view/fchomo/node.js:233
-#: htdocs/luci-static/resources/view/fchomo/node.js:1658
+#: htdocs/luci-static/resources/view/fchomo/node.js:1687
msgid "General fields"
msgstr ""
@@ -1163,17 +1201,17 @@ msgstr ""
msgid "General settings"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:553
-#: htdocs/luci-static/resources/fchomo.js:555
-#: htdocs/luci-static/resources/fchomo.js:569
-#: htdocs/luci-static/resources/fchomo.js:571
+#: htdocs/luci-static/resources/fchomo.js:578
+#: htdocs/luci-static/resources/fchomo.js:580
+#: htdocs/luci-static/resources/fchomo.js:594
+#: htdocs/luci-static/resources/fchomo.js:596
#: htdocs/luci-static/resources/fchomo/listeners.js:341
#: htdocs/luci-static/resources/fchomo/listeners.js:385
#: htdocs/luci-static/resources/fchomo/listeners.js:387
-#: htdocs/luci-static/resources/fchomo/listeners.js:827
-#: htdocs/luci-static/resources/fchomo/listeners.js:1060
+#: htdocs/luci-static/resources/fchomo/listeners.js:845
+#: htdocs/luci-static/resources/fchomo/listeners.js:1078
#: htdocs/luci-static/resources/view/fchomo/global.js:608
-#: htdocs/luci-static/resources/view/fchomo/node.js:1811
+#: htdocs/luci-static/resources/view/fchomo/node.js:1845
msgid "Generate"
msgstr ""
@@ -1189,21 +1227,21 @@ msgstr ""
msgid "GeoSite version"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1825
+#: htdocs/luci-static/resources/view/fchomo/client.js:1891
msgid "Geoip code"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1822
+#: htdocs/luci-static/resources/view/fchomo/client.js:1888
msgid "Geoip enable"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:853
-#: htdocs/luci-static/resources/view/fchomo/client.js:862
-#: htdocs/luci-static/resources/view/fchomo/client.js:1834
+#: htdocs/luci-static/resources/view/fchomo/client.js:861
+#: htdocs/luci-static/resources/view/fchomo/client.js:870
+#: htdocs/luci-static/resources/view/fchomo/client.js:1900
msgid "Geosite"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:45
+#: htdocs/luci-static/resources/fchomo.js:46
msgid "GitHub"
msgstr ""
@@ -1220,11 +1258,11 @@ msgstr ""
msgid "Global Authentication"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:701
+#: htdocs/luci-static/resources/view/fchomo/node.js:711
msgid "Global padding"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:44
+#: htdocs/luci-static/resources/fchomo.js:45
msgid "Google"
msgstr ""
@@ -1236,58 +1274,58 @@ msgstr ""
msgid "Grant access to fchomo configuration"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1044
+#: htdocs/luci-static/resources/view/fchomo/client.js:1063
msgid "Group"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:153
-#: htdocs/luci-static/resources/fchomo.js:189
-#: htdocs/luci-static/resources/fchomo/listeners.js:569
-#: htdocs/luci-static/resources/view/fchomo/node.js:883
-#: htdocs/luci-static/resources/view/fchomo/node.js:1243
-#: htdocs/luci-static/resources/view/fchomo/node.js:1254
-#: htdocs/luci-static/resources/view/fchomo/node.js:1261
+#: htdocs/luci-static/resources/fchomo.js:154
+#: htdocs/luci-static/resources/fchomo.js:190
+#: htdocs/luci-static/resources/fchomo/listeners.js:578
+#: htdocs/luci-static/resources/view/fchomo/node.js:905
+#: htdocs/luci-static/resources/view/fchomo/node.js:1272
+#: htdocs/luci-static/resources/view/fchomo/node.js:1283
+#: htdocs/luci-static/resources/view/fchomo/node.js:1290
msgid "HTTP"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:291
-#: htdocs/luci-static/resources/view/fchomo/node.js:1316
-#: htdocs/luci-static/resources/view/fchomo/node.js:1823
-#: htdocs/luci-static/resources/view/fchomo/ruleset.js:414
+#: htdocs/luci-static/resources/view/fchomo/node.js:301
+#: htdocs/luci-static/resources/view/fchomo/node.js:1345
+#: htdocs/luci-static/resources/view/fchomo/node.js:1857
+#: htdocs/luci-static/resources/view/fchomo/ruleset.js:419
msgid "HTTP header"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:430
-#: htdocs/luci-static/resources/view/fchomo/node.js:484
+#: htdocs/luci-static/resources/view/fchomo/node.js:494
msgid "HTTP mask"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:435
-#: htdocs/luci-static/resources/view/fchomo/node.js:489
-#: htdocs/luci-static/resources/view/fchomo/node.js:524
-#: htdocs/luci-static/resources/view/fchomo/node.js:526
+#: htdocs/luci-static/resources/view/fchomo/node.js:499
+#: htdocs/luci-static/resources/view/fchomo/node.js:534
+#: htdocs/luci-static/resources/view/fchomo/node.js:536
msgid "HTTP mask mode"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:514
+#: htdocs/luci-static/resources/view/fchomo/node.js:524
msgid "HTTP mask multiplex"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:499
-#: htdocs/luci-static/resources/view/fchomo/node.js:504
+#: htdocs/luci-static/resources/view/fchomo/node.js:509
+#: htdocs/luci-static/resources/view/fchomo/node.js:514
msgid "HTTP mask: %s"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1293
+#: htdocs/luci-static/resources/view/fchomo/node.js:1322
msgid "HTTP request method"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:445
-#: htdocs/luci-static/resources/view/fchomo/node.js:510
+#: htdocs/luci-static/resources/view/fchomo/node.js:520
msgid "HTTP root path"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1581
+#: htdocs/luci-static/resources/view/fchomo/client.js:1647
msgid "HTTP/3"
msgstr ""
@@ -1297,9 +1335,9 @@ msgid ""
"returned if empty."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1244
-#: htdocs/luci-static/resources/view/fchomo/node.js:1255
-#: htdocs/luci-static/resources/view/fchomo/node.js:1262
+#: htdocs/luci-static/resources/view/fchomo/node.js:1273
+#: htdocs/luci-static/resources/view/fchomo/node.js:1284
+#: htdocs/luci-static/resources/view/fchomo/node.js:1291
msgid "HTTPUpgrade"
msgstr ""
@@ -1307,15 +1345,16 @@ msgstr ""
msgid "Handle domain"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:406
+#: htdocs/luci-static/resources/view/fchomo/node.js:416
msgid "Handshake mode"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:582
+#: htdocs/luci-static/resources/fchomo/listeners.js:590
msgid "Handshake target that supports TLS 1.3"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:417
+#: htdocs/luci-static/resources/view/fchomo/node.js:962
msgid "Handshake timeout"
msgstr ""
@@ -1323,57 +1362,57 @@ msgstr ""
msgid "Header to read real client IP from (e.g. X-Forwarded-For)"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:788
+#: htdocs/luci-static/resources/view/fchomo/node.js:798
msgid "Health check"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1109
-#: htdocs/luci-static/resources/view/fchomo/node.js:1937
+#: htdocs/luci-static/resources/view/fchomo/client.js:1152
+#: htdocs/luci-static/resources/view/fchomo/node.js:1971
msgid "Health check URL"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1138
-#: htdocs/luci-static/resources/view/fchomo/node.js:1967
+#: htdocs/luci-static/resources/view/fchomo/client.js:1181
+#: htdocs/luci-static/resources/view/fchomo/node.js:2001
msgid "Health check expected status"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1118
-#: htdocs/luci-static/resources/view/fchomo/node.js:1947
+#: htdocs/luci-static/resources/view/fchomo/client.js:1161
+#: htdocs/luci-static/resources/view/fchomo/node.js:1981
msgid "Health check interval"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1125
-#: htdocs/luci-static/resources/view/fchomo/node.js:1954
+#: htdocs/luci-static/resources/view/fchomo/client.js:1168
+#: htdocs/luci-static/resources/view/fchomo/node.js:1988
msgid "Health check timeout"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1021
-#: htdocs/luci-static/resources/view/fchomo/node.js:1660
+#: htdocs/luci-static/resources/view/fchomo/client.js:1040
+#: htdocs/luci-static/resources/view/fchomo/node.js:1689
msgid "Health fields"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:606
+#: htdocs/luci-static/resources/view/fchomo/node.js:616
msgid "Heartbeat interval"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1189
+#: htdocs/luci-static/resources/view/fchomo/client.js:1249
msgid "Hidden"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:575
-#: htdocs/luci-static/resources/view/fchomo/node.js:889
+#: htdocs/luci-static/resources/fchomo/listeners.js:583
+#: htdocs/luci-static/resources/view/fchomo/node.js:910
msgid "Host that supports TLS 1.3"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:361
+#: htdocs/luci-static/resources/view/fchomo/node.js:371
msgid "Host-key"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:356
+#: htdocs/luci-static/resources/view/fchomo/node.js:366
msgid "Host-key algorithms"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:504
+#: htdocs/luci-static/resources/view/fchomo/node.js:514
msgid "Host/SNI override"
msgstr ""
@@ -1382,12 +1421,12 @@ msgstr ""
msgid "Hosts"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:165
-#: htdocs/luci-static/resources/fchomo.js:201
+#: htdocs/luci-static/resources/fchomo.js:166
+#: htdocs/luci-static/resources/fchomo.js:202
msgid "Hysteria2"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:166
+#: htdocs/luci-static/resources/fchomo.js:167
msgid "Hysteria2 Realm"
msgstr ""
@@ -1396,58 +1435,58 @@ msgstr ""
msgid "Hysteria2 Realm fields"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1827
-#: htdocs/luci-static/resources/view/fchomo/client.js:1840
+#: htdocs/luci-static/resources/view/fchomo/client.js:1893
+#: htdocs/luci-static/resources/view/fchomo/client.js:1906
msgid "IP"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1838
+#: htdocs/luci-static/resources/view/fchomo/client.js:1904
msgid "IP CIDR"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:563
+#: htdocs/luci-static/resources/view/fchomo/node.js:573
msgid "IP override"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1536
-#: htdocs/luci-static/resources/view/fchomo/node.js:1923
+#: htdocs/luci-static/resources/view/fchomo/node.js:1565
+#: htdocs/luci-static/resources/view/fchomo/node.js:1957
msgid "IP version"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:174
+#: htdocs/luci-static/resources/fchomo.js:175
msgid "IPv4 only"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:175
+#: htdocs/luci-static/resources/fchomo.js:176
msgid "IPv6 only"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1400
+#: htdocs/luci-static/resources/view/fchomo/client.js:1463
#: htdocs/luci-static/resources/view/fchomo/global.js:436
msgid "IPv6 support"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1195
+#: htdocs/luci-static/resources/view/fchomo/client.js:1255
msgid "Icon"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:650
+#: htdocs/luci-static/resources/view/fchomo/node.js:660
msgid "Idle session check interval"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:657
+#: htdocs/luci-static/resources/view/fchomo/node.js:667
msgid "Idle session timeout"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:486
+#: htdocs/luci-static/resources/fchomo/listeners.js:483
msgid "Idle timeout"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1464
+#: htdocs/luci-static/resources/fchomo.js:1814
msgid "If All ports is selected, uncheck others"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:69
+#: htdocs/luci-static/resources/view/fchomo/client.js:71
msgid "If Block is selected, uncheck others"
msgstr ""
@@ -1455,24 +1494,24 @@ msgstr ""
msgid "Ignore client bandwidth"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:738
+#: htdocs/luci-static/resources/fchomo.js:763
msgid "Import"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:957
-#: htdocs/luci-static/resources/view/fchomo/client.js:1013
-#: htdocs/luci-static/resources/view/fchomo/client.js:1218
-#: htdocs/luci-static/resources/view/fchomo/client.js:1269
-#: htdocs/luci-static/resources/view/fchomo/client.js:1337
-#: htdocs/luci-static/resources/view/fchomo/client.js:1361
-#: htdocs/luci-static/resources/view/fchomo/client.js:1465
-#: htdocs/luci-static/resources/view/fchomo/client.js:1503
-#: htdocs/luci-static/resources/view/fchomo/client.js:1717
-#: htdocs/luci-static/resources/view/fchomo/client.js:1734
-#: htdocs/luci-static/resources/view/fchomo/client.js:1769
-#: htdocs/luci-static/resources/view/fchomo/client.js:1790
-#: htdocs/luci-static/resources/view/fchomo/node.js:1562
-#: htdocs/luci-static/resources/view/fchomo/node.js:1646
+#: htdocs/luci-static/resources/view/fchomo/client.js:975
+#: htdocs/luci-static/resources/view/fchomo/client.js:1032
+#: htdocs/luci-static/resources/view/fchomo/client.js:1278
+#: htdocs/luci-static/resources/view/fchomo/client.js:1329
+#: htdocs/luci-static/resources/view/fchomo/client.js:1400
+#: htdocs/luci-static/resources/view/fchomo/client.js:1424
+#: htdocs/luci-static/resources/view/fchomo/client.js:1528
+#: htdocs/luci-static/resources/view/fchomo/client.js:1566
+#: htdocs/luci-static/resources/view/fchomo/client.js:1783
+#: htdocs/luci-static/resources/view/fchomo/client.js:1800
+#: htdocs/luci-static/resources/view/fchomo/client.js:1835
+#: htdocs/luci-static/resources/view/fchomo/client.js:1856
+#: htdocs/luci-static/resources/view/fchomo/node.js:1591
+#: htdocs/luci-static/resources/view/fchomo/node.js:1675
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:154
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:249
msgid "Import mihomo config"
@@ -1486,55 +1525,61 @@ msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:176
#: htdocs/luci-static/resources/fchomo/listeners.js:182
-#: htdocs/luci-static/resources/view/fchomo/node.js:310
-#: htdocs/luci-static/resources/view/fchomo/node.js:316
-#: htdocs/luci-static/resources/view/fchomo/node.js:1881
-#: htdocs/luci-static/resources/view/fchomo/node.js:1887
+#: htdocs/luci-static/resources/view/fchomo/node.js:320
+#: htdocs/luci-static/resources/view/fchomo/node.js:326
+#: htdocs/luci-static/resources/view/fchomo/node.js:1915
+#: htdocs/luci-static/resources/view/fchomo/node.js:1921
msgid "In Mbps."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1736
+#: htdocs/luci-static/resources/view/fchomo/node.js:1765
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:392
msgid "In bytes. %s will be used if empty."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:607
-#: htdocs/luci-static/resources/view/fchomo/node.js:614
+#: htdocs/luci-static/resources/view/fchomo/node.js:617
+#: htdocs/luci-static/resources/view/fchomo/node.js:624
msgid "In millisecond."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1126
-#: htdocs/luci-static/resources/view/fchomo/client.js:1155
-#: htdocs/luci-static/resources/view/fchomo/node.js:1955
+#: htdocs/luci-static/resources/view/fchomo/client.js:1169
+#: htdocs/luci-static/resources/view/fchomo/client.js:1215
+#: htdocs/luci-static/resources/view/fchomo/node.js:1989
msgid "In millisecond. %s will be used if empty."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1385
+#: htdocs/luci-static/resources/view/fchomo/node.js:1414
msgid "In milliseconds."
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:418
-#: htdocs/luci-static/resources/fchomo/listeners.js:487
-#: htdocs/luci-static/resources/fchomo/listeners.js:494
-#: htdocs/luci-static/resources/view/fchomo/node.js:651
-#: htdocs/luci-static/resources/view/fchomo/node.js:658
-#: htdocs/luci-static/resources/view/fchomo/node.js:1332
+#: htdocs/luci-static/resources/fchomo/listeners.js:484
+#: htdocs/luci-static/resources/fchomo/listeners.js:491
+#: htdocs/luci-static/resources/view/fchomo/node.js:661
+#: htdocs/luci-static/resources/view/fchomo/node.js:668
+#: htdocs/luci-static/resources/view/fchomo/node.js:1361
msgid "In seconds."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1119
+#: htdocs/luci-static/resources/view/fchomo/client.js:1162
#: htdocs/luci-static/resources/view/fchomo/global.js:446
#: htdocs/luci-static/resources/view/fchomo/global.js:451
#: htdocs/luci-static/resources/view/fchomo/global.js:536
-#: htdocs/luci-static/resources/view/fchomo/node.js:304
-#: htdocs/luci-static/resources/view/fchomo/node.js:1742
-#: htdocs/luci-static/resources/view/fchomo/node.js:1948
+#: htdocs/luci-static/resources/view/fchomo/node.js:314
+#: htdocs/luci-static/resources/view/fchomo/node.js:1771
+#: htdocs/luci-static/resources/view/fchomo/node.js:1982
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:398
msgid "In seconds. %s will be used if empty."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:743
-#: htdocs/luci-static/resources/view/fchomo/node.js:1009
+#: htdocs/luci-static/resources/view/fchomo/node.js:963
+msgid ""
+"In seconds. After configuration, the handshake is not affected by the outer "
+"connection timeout."
+msgstr ""
+
+#: htdocs/luci-static/resources/fchomo/listeners.js:761
+#: htdocs/luci-static/resources/view/fchomo/node.js:1037
msgid ""
"In the order of one Padding-Length and one Padding-"
"Interval, infinite concatenation."
@@ -1546,35 +1591,35 @@ msgstr ""
msgid "Inbound"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1079
+#: htdocs/luci-static/resources/view/fchomo/client.js:1116
msgid "Include all"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1084
+#: htdocs/luci-static/resources/view/fchomo/client.js:1121
msgid "Include all node"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1089
+#: htdocs/luci-static/resources/view/fchomo/client.js:1126
msgid "Include all provider"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1090
+#: htdocs/luci-static/resources/view/fchomo/client.js:1127
msgid "Includes all Provider."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1080
+#: htdocs/luci-static/resources/view/fchomo/client.js:1117
msgid "Includes all Proxy Node and Provider."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1085
+#: htdocs/luci-static/resources/view/fchomo/client.js:1122
msgid "Includes all Proxy Node."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:92
+#: htdocs/luci-static/resources/fchomo.js:93
msgid "Info"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1675
+#: htdocs/luci-static/resources/view/fchomo/node.js:1704
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:288
msgid "Inline"
msgstr ""
@@ -1583,57 +1628,65 @@ msgstr ""
msgid "Interface Control"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:52
-#: htdocs/luci-static/resources/fchomo.js:59
-#: htdocs/luci-static/resources/fchomo.js:172
+#: htdocs/luci-static/resources/fchomo.js:53
+#: htdocs/luci-static/resources/fchomo.js:60
+#: htdocs/luci-static/resources/fchomo.js:173
#: htdocs/luci-static/resources/fchomo.js:377
-#: htdocs/luci-static/resources/view/fchomo/node.js:1897
+#: htdocs/luci-static/resources/view/fchomo/node.js:1931
msgid "Keep default"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1421
+#: htdocs/luci-static/resources/view/fchomo/node.js:1450
msgid "Keep-alive period"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:296
-#: htdocs/luci-static/resources/view/fchomo/node.js:420
+#: htdocs/luci-static/resources/view/fchomo/node.js:430
msgid "Key"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:987
-#: htdocs/luci-static/resources/view/fchomo/node.js:1173
+#: htdocs/luci-static/resources/fchomo/listeners.js:1005
+#: htdocs/luci-static/resources/view/fchomo/node.js:1202
msgid "Key path"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:762
+#: htdocs/luci-static/resources/fchomo/listeners.js:780
msgid "Keypairs"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:128
-#: htdocs/luci-static/resources/view/fchomo/client.js:1024
-#: htdocs/luci-static/resources/view/fchomo/client.js:1275
-#: htdocs/luci-static/resources/view/fchomo/client.js:1367
-#: htdocs/luci-static/resources/view/fchomo/client.js:1509
-#: htdocs/luci-static/resources/view/fchomo/client.js:1740
-#: htdocs/luci-static/resources/view/fchomo/client.js:1796
+#: htdocs/luci-static/resources/view/fchomo/client.js:1043
+#: htdocs/luci-static/resources/view/fchomo/client.js:1335
+#: htdocs/luci-static/resources/view/fchomo/client.js:1430
+#: htdocs/luci-static/resources/view/fchomo/client.js:1572
+#: htdocs/luci-static/resources/view/fchomo/client.js:1806
+#: htdocs/luci-static/resources/view/fchomo/client.js:1862
#: htdocs/luci-static/resources/view/fchomo/node.js:241
-#: htdocs/luci-static/resources/view/fchomo/node.js:1663
-#: htdocs/luci-static/resources/view/fchomo/node.js:2016
+#: htdocs/luci-static/resources/view/fchomo/node.js:1692
+#: htdocs/luci-static/resources/view/fchomo/node.js:2050
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:267
msgid "Label"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1132
-#: htdocs/luci-static/resources/view/fchomo/node.js:1961
+#: htdocs/luci-static/resources/view/fchomo/client.js:1175
+#: htdocs/luci-static/resources/view/fchomo/node.js:1995
msgid "Lazy"
msgstr ""
+#: htdocs/luci-static/resources/view/fchomo/client.js:1913
+msgid "Lazy query"
+msgstr ""
+
+#: htdocs/luci-static/resources/view/fchomo/client.js:1914
+msgid "Lazy query."
+msgstr ""
+
#: htdocs/luci-static/resources/fchomo/listeners.js:437
-#: htdocs/luci-static/resources/view/fchomo/node.js:491
+#: htdocs/luci-static/resources/view/fchomo/node.js:501
msgid "Legacy"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:544
+#: htdocs/luci-static/resources/fchomo/listeners.js:541
msgid ""
"Legacy protocol support (VMess MD5 Authentication) is provided for "
"compatibility purposes only, use of alterId > 1 is not recommended."
@@ -1643,8 +1696,8 @@ msgstr ""
msgid "Less compatibility and sometimes better performance."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:968
-#: htdocs/luci-static/resources/view/fchomo/node.js:1095
+#: htdocs/luci-static/resources/fchomo/listeners.js:986
+#: htdocs/luci-static/resources/view/fchomo/node.js:1123
msgid "List of supported application level protocols, in order of preference."
msgstr ""
@@ -1661,7 +1714,7 @@ msgid "Listen interfaces"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:153
-#: htdocs/luci-static/resources/view/fchomo/client.js:1392
+#: htdocs/luci-static/resources/view/fchomo/client.js:1455
msgid "Listen port"
msgstr ""
@@ -1669,26 +1722,26 @@ msgstr ""
msgid "Listen ports"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1397
+#: htdocs/luci-static/resources/view/fchomo/client.js:1460
msgid "Listen routing mark (Fwmark)"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:243
+#: htdocs/luci-static/resources/fchomo.js:244
msgid "Load balance"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1673
+#: htdocs/luci-static/resources/view/fchomo/node.js:1702
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:286
msgid "Local"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:744
-#: htdocs/luci-static/resources/view/fchomo/node.js:807
+#: htdocs/luci-static/resources/view/fchomo/node.js:754
+#: htdocs/luci-static/resources/view/fchomo/node.js:817
msgid "Local IPv6 address"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:736
-#: htdocs/luci-static/resources/view/fchomo/node.js:799
+#: htdocs/luci-static/resources/view/fchomo/node.js:746
+#: htdocs/luci-static/resources/view/fchomo/node.js:809
msgid "Local address"
msgstr ""
@@ -1712,10 +1765,10 @@ msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:373
#: htdocs/luci-static/resources/fchomo/listeners.js:374
#: htdocs/luci-static/resources/fchomo/listeners.js:379
-#: htdocs/luci-static/resources/view/fchomo/node.js:444
-#: htdocs/luci-static/resources/view/fchomo/node.js:445
-#: htdocs/luci-static/resources/view/fchomo/node.js:446
-#: htdocs/luci-static/resources/view/fchomo/node.js:451
+#: htdocs/luci-static/resources/view/fchomo/node.js:454
+#: htdocs/luci-static/resources/view/fchomo/node.js:455
+#: htdocs/luci-static/resources/view/fchomo/node.js:456
+#: htdocs/luci-static/resources/view/fchomo/node.js:461
msgid "Low-entropy data stream"
msgstr ""
@@ -1724,12 +1777,12 @@ msgid "Lowercase only"
msgstr ""
#: htdocs/luci-static/resources/view/fchomo/global.js:523
-#: htdocs/luci-static/resources/view/fchomo/node.js:750
-#: htdocs/luci-static/resources/view/fchomo/node.js:853
+#: htdocs/luci-static/resources/view/fchomo/node.js:760
+#: htdocs/luci-static/resources/view/fchomo/node.js:863
msgid "MTU"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:203
+#: htdocs/luci-static/resources/fchomo.js:204
msgid "Masque"
msgstr ""
@@ -1737,70 +1790,70 @@ msgstr ""
msgid "Masquerade"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:858
+#: htdocs/luci-static/resources/view/fchomo/client.js:866
msgid "Match domain. Support wildcards."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1844
+#: htdocs/luci-static/resources/view/fchomo/client.js:1910
msgid "Match domain. Support wildcards."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:863
+#: htdocs/luci-static/resources/view/fchomo/client.js:871
msgid "Match geosite."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1835
+#: htdocs/luci-static/resources/view/fchomo/client.js:1901
msgid "Match geosite."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1826
+#: htdocs/luci-static/resources/view/fchomo/client.js:1892
msgid "Match response with geoip."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1839
+#: htdocs/luci-static/resources/view/fchomo/client.js:1905
msgid "Match response with ipcidr."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:868
+#: htdocs/luci-static/resources/view/fchomo/client.js:876
msgid "Match rule set."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1338
+#: htdocs/luci-static/resources/view/fchomo/node.js:1367
msgid "Max Early Data"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:480
-#: htdocs/luci-static/resources/view/fchomo/node.js:588
+#: htdocs/luci-static/resources/fchomo/listeners.js:477
+#: htdocs/luci-static/resources/view/fchomo/node.js:598
msgid "Max UDP relay packet size"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1186
+#: htdocs/luci-static/resources/fchomo/listeners.js:1204
msgid "Max buffered posts"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1396
+#: htdocs/luci-static/resources/view/fchomo/node.js:1425
msgid "Max concurrency"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1401
+#: htdocs/luci-static/resources/view/fchomo/node.js:1430
msgid "Max connections"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1146
+#: htdocs/luci-static/resources/view/fchomo/client.js:1189
msgid "Max count of failures"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:181
-#: htdocs/luci-static/resources/view/fchomo/node.js:315
+#: htdocs/luci-static/resources/view/fchomo/node.js:325
msgid "Max download speed"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1197
-#: htdocs/luci-static/resources/view/fchomo/node.js:1378
+#: htdocs/luci-static/resources/fchomo/listeners.js:1215
+#: htdocs/luci-static/resources/view/fchomo/node.js:1407
msgid "Max each POST bytes"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:620
+#: htdocs/luci-static/resources/view/fchomo/node.js:630
msgid "Max open streams"
msgstr ""
@@ -1812,56 +1865,56 @@ msgstr ""
msgid "Max realms per client IP"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1411
+#: htdocs/luci-static/resources/view/fchomo/node.js:1440
msgid "Max request times"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1416
+#: htdocs/luci-static/resources/view/fchomo/node.js:1445
msgid "Max reusable seconds"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1406
+#: htdocs/luci-static/resources/view/fchomo/node.js:1435
msgid "Max reuse times"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:175
-#: htdocs/luci-static/resources/view/fchomo/node.js:309
+#: htdocs/luci-static/resources/view/fchomo/node.js:319
msgid "Max upload speed"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1442
-#: htdocs/luci-static/resources/view/fchomo/node.js:1462
+#: htdocs/luci-static/resources/view/fchomo/node.js:1471
+#: htdocs/luci-static/resources/view/fchomo/node.js:1491
msgid "Maximum connections"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1460
+#: htdocs/luci-static/resources/view/fchomo/node.js:1489
msgid ""
"Maximum multiplexed streams in a connection before opening a new connection."
"
Conflict with %s and %s."
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:402
-#: htdocs/luci-static/resources/view/fchomo/node.js:463
+#: htdocs/luci-static/resources/view/fchomo/node.js:473
msgid "Maximum padding rate"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:410
-#: htdocs/luci-static/resources/view/fchomo/node.js:471
+#: htdocs/luci-static/resources/view/fchomo/node.js:481
msgid ""
"Maximum padding rate must be greater than or equal to the minimum padding "
"rate."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1459
+#: htdocs/luci-static/resources/view/fchomo/node.js:1488
msgid "Maximum streams"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:157
-#: htdocs/luci-static/resources/fchomo.js:193
+#: htdocs/luci-static/resources/fchomo.js:158
+#: htdocs/luci-static/resources/fchomo.js:194
msgid "Mieru"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:912
+#: htdocs/luci-static/resources/view/fchomo/client.js:930
#: htdocs/luci-static/resources/view/fchomo/log.js:149
#: htdocs/luci-static/resources/view/fchomo/log.js:154
msgid "Mihomo client"
@@ -1873,30 +1926,30 @@ msgstr ""
msgid "Mihomo server"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:664
+#: htdocs/luci-static/resources/view/fchomo/node.js:674
msgid "Min of idle sessions to keep"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1384
+#: htdocs/luci-static/resources/view/fchomo/node.js:1413
msgid "Min posts interval"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1451
+#: htdocs/luci-static/resources/view/fchomo/node.js:1480
msgid ""
"Minimum multiplexed streams in a connection before opening a new connection."
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:395
-#: htdocs/luci-static/resources/view/fchomo/node.js:456
+#: htdocs/luci-static/resources/view/fchomo/node.js:466
msgid "Minimum padding rate"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1450
-#: htdocs/luci-static/resources/view/fchomo/node.js:1462
+#: htdocs/luci-static/resources/view/fchomo/node.js:1479
+#: htdocs/luci-static/resources/view/fchomo/node.js:1491
msgid "Minimum streams"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:155
+#: htdocs/luci-static/resources/fchomo.js:156
#: htdocs/luci-static/resources/view/fchomo/global.js:518
msgid "Mixed"
msgstr ""
@@ -1909,7 +1962,7 @@ msgstr ""
msgid "Mixed port"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1428
+#: htdocs/luci-static/resources/view/fchomo/node.js:1457
msgid "Multiplex"
msgstr ""
@@ -1918,20 +1971,20 @@ msgstr ""
msgid "Multiplex fields"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:397
+#: htdocs/luci-static/resources/view/fchomo/node.js:407
msgid "Multiplexing"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:622
-#: htdocs/luci-static/resources/view/fchomo/client.js:697
+#: htdocs/luci-static/resources/view/fchomo/client.js:624
+#: htdocs/luci-static/resources/view/fchomo/client.js:702
msgid "NOT"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:616
+#: htdocs/luci-static/resources/fchomo/listeners.js:629
msgid "Name of the Proxy group as outbound."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1748
+#: htdocs/luci-static/resources/view/fchomo/node.js:1777
msgid "Name of the Proxy group to download provider."
msgstr ""
@@ -1939,11 +1992,11 @@ msgstr ""
msgid "Name of the Proxy group to download rule set."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:610
+#: htdocs/luci-static/resources/fchomo/listeners.js:618
msgid "Name of the Sub rule used for inbound matching."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:572
+#: htdocs/luci-static/resources/view/fchomo/node.js:582
msgid "Native UDP"
msgstr ""
@@ -1951,15 +2004,15 @@ msgstr ""
msgid "Native appearance"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:756
+#: htdocs/luci-static/resources/view/fchomo/node.js:766
msgid "Network"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:642
+#: htdocs/luci-static/resources/fchomo/listeners.js:660
msgid "Network type"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1899
+#: htdocs/luci-static/resources/view/fchomo/node.js:1933
msgid "No"
msgstr ""
@@ -1967,24 +2020,24 @@ msgstr ""
msgid "No Authentication IP ranges"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1181
+#: htdocs/luci-static/resources/fchomo/listeners.js:1199
msgid "No SSE header"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1529
+#: htdocs/luci-static/resources/view/fchomo/client.js:1592
msgid "No add'l params"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1368
+#: htdocs/luci-static/resources/view/fchomo/node.js:1397
msgid "No gRPC header"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1133
-#: htdocs/luci-static/resources/view/fchomo/node.js:1962
+#: htdocs/luci-static/resources/view/fchomo/client.js:1176
+#: htdocs/luci-static/resources/view/fchomo/node.js:1996
msgid "No testing is performed when this provider node is not in use."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:699
+#: htdocs/luci-static/resources/fchomo.js:724
msgid "No valid %s found."
msgstr ""
@@ -1992,27 +2045,27 @@ msgstr ""
msgid "No valid rule-set link found."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1051
+#: htdocs/luci-static/resources/view/fchomo/client.js:1076
#: htdocs/luci-static/resources/view/fchomo/node.js:228
msgid "Node"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1178
-#: htdocs/luci-static/resources/view/fchomo/node.js:1982
+#: htdocs/luci-static/resources/view/fchomo/client.js:1238
+#: htdocs/luci-static/resources/view/fchomo/node.js:2016
msgid "Node exclude filter"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1183
-#: htdocs/luci-static/resources/view/fchomo/node.js:1989
+#: htdocs/luci-static/resources/view/fchomo/client.js:1243
+#: htdocs/luci-static/resources/view/fchomo/node.js:2023
msgid "Node exclude type"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1173
-#: htdocs/luci-static/resources/view/fchomo/node.js:1976
+#: htdocs/luci-static/resources/view/fchomo/client.js:1233
+#: htdocs/luci-static/resources/view/fchomo/node.js:2010
msgid "Node filter"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1154
+#: htdocs/luci-static/resources/view/fchomo/client.js:1214
msgid "Node switch tolerance"
msgstr ""
@@ -2024,49 +2077,49 @@ msgstr ""
msgid "Not Installed"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1242
+#: htdocs/luci-static/resources/fchomo.js:1592
msgid "Not Running"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:517
+#: htdocs/luci-static/resources/view/fchomo/node.js:527
msgid "OFF"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:519
+#: htdocs/luci-static/resources/view/fchomo/node.js:529
msgid "ON"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:568
-#: htdocs/luci-static/resources/view/fchomo/node.js:882
+#: htdocs/luci-static/resources/fchomo/listeners.js:577
+#: htdocs/luci-static/resources/view/fchomo/node.js:904
msgid "Obfs Mode"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:213
-#: htdocs/luci-static/resources/view/fchomo/node.js:341
+#: htdocs/luci-static/resources/view/fchomo/node.js:351
msgid "Obfuscate maximum packet size"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:208
-#: htdocs/luci-static/resources/view/fchomo/node.js:336
+#: htdocs/luci-static/resources/view/fchomo/node.js:346
msgid "Obfuscate minimum packet size"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:200
-#: htdocs/luci-static/resources/view/fchomo/node.js:328
+#: htdocs/luci-static/resources/view/fchomo/node.js:338
msgid "Obfuscate password"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:193
#: htdocs/luci-static/resources/fchomo/listeners.js:370
-#: htdocs/luci-static/resources/view/fchomo/node.js:321
-#: htdocs/luci-static/resources/view/fchomo/node.js:442
+#: htdocs/luci-static/resources/view/fchomo/node.js:331
+#: htdocs/luci-static/resources/view/fchomo/node.js:452
msgid "Obfuscate type"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:371
#: htdocs/luci-static/resources/fchomo/listeners.js:372
-#: htdocs/luci-static/resources/view/fchomo/node.js:443
-#: htdocs/luci-static/resources/view/fchomo/node.js:444
+#: htdocs/luci-static/resources/view/fchomo/node.js:453
+#: htdocs/luci-static/resources/view/fchomo/node.js:454
msgid "Obfuscated as %s"
msgstr ""
@@ -2074,12 +2127,12 @@ msgstr ""
msgid "One or more numbers in the range 0-63 separated by commas"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:962
+#: htdocs/luci-static/resources/fchomo/listeners.js:980
msgid "Only applicable when %s are used as a frontend."
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:379
-#: htdocs/luci-static/resources/view/fchomo/node.js:451
+#: htdocs/luci-static/resources/view/fchomo/node.js:461
msgid "Only applies to the %s."
msgstr ""
@@ -2087,7 +2140,7 @@ msgstr ""
msgid "Only process traffic from specific interfaces. Leave empty for all."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1236
+#: htdocs/luci-static/resources/fchomo.js:1586
msgid "Open Dashboard"
msgstr ""
@@ -2104,16 +2157,16 @@ msgstr ""
msgid "Override destination"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1020
-#: htdocs/luci-static/resources/view/fchomo/node.js:1659
+#: htdocs/luci-static/resources/view/fchomo/client.js:1039
+#: htdocs/luci-static/resources/view/fchomo/node.js:1688
msgid "Override fields"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:564
+#: htdocs/luci-static/resources/view/fchomo/node.js:574
msgid "Override the IP address of the server that DNS response."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:891
+#: htdocs/luci-static/resources/view/fchomo/client.js:904
msgid "Override the Proxy group of DNS server."
msgstr ""
@@ -2121,11 +2174,11 @@ msgstr ""
msgid "Override the connection destination address with the sniffed domain."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1633
+#: htdocs/luci-static/resources/view/fchomo/client.js:1699
msgid "Override the existing ECS in original request."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1200
+#: htdocs/luci-static/resources/view/fchomo/node.js:1229
msgid "Overrides the domain name used for HTTPS record queries."
msgstr ""
@@ -2133,37 +2186,37 @@ msgstr ""
msgid "Overview"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1295
+#: htdocs/luci-static/resources/view/fchomo/node.js:1324
msgid "POST"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1296
+#: htdocs/luci-static/resources/view/fchomo/node.js:1325
msgid "PUT"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:713
+#: htdocs/luci-static/resources/view/fchomo/node.js:723
msgid "Packet encoding"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1373
+#: htdocs/luci-static/resources/view/fchomo/node.js:1402
msgid "Padding bytes"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:524
+#: htdocs/luci-static/resources/fchomo/listeners.js:521
msgid "Padding scheme"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:741
-#: htdocs/luci-static/resources/view/fchomo/node.js:1007
+#: htdocs/luci-static/resources/fchomo/listeners.js:759
+#: htdocs/luci-static/resources/view/fchomo/node.js:1035
msgid "Paddings"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:166
#: htdocs/luci-static/resources/fchomo/listeners.js:263
-#: htdocs/luci-static/resources/fchomo/listeners.js:589
-#: htdocs/luci-static/resources/view/fchomo/node.js:285
-#: htdocs/luci-static/resources/view/fchomo/node.js:375
-#: htdocs/luci-static/resources/view/fchomo/node.js:897
+#: htdocs/luci-static/resources/fchomo/listeners.js:597
+#: htdocs/luci-static/resources/view/fchomo/node.js:295
+#: htdocs/luci-static/resources/view/fchomo/node.js:385
+#: htdocs/luci-static/resources/view/fchomo/node.js:917
msgid "Password"
msgstr ""
@@ -2175,13 +2228,13 @@ msgstr ""
msgid "Path in bundle: %s"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:681
-#: htdocs/luci-static/resources/view/fchomo/node.js:1723
+#: htdocs/luci-static/resources/fchomo/listeners.js:699
+#: htdocs/luci-static/resources/view/fchomo/node.js:1752
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:373
msgid "Payload"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:821
+#: htdocs/luci-static/resources/view/fchomo/node.js:831
msgid "Peer pubkic key"
msgstr ""
@@ -2191,11 +2244,11 @@ msgid ""
"it is not needed."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:848
+#: htdocs/luci-static/resources/view/fchomo/node.js:858
msgid "Periodically sends data packets to maintain connection persistence."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:847
+#: htdocs/luci-static/resources/view/fchomo/node.js:857
msgid "Persistent keepalive"
msgstr ""
@@ -2216,8 +2269,8 @@ msgid ""
"standards."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1696
-#: htdocs/luci-static/resources/view/fchomo/node.js:1722
+#: htdocs/luci-static/resources/view/fchomo/node.js:1725
+#: htdocs/luci-static/resources/view/fchomo/node.js:1751
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:346
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:372
msgid ""
@@ -2225,33 +2278,33 @@ msgid ""
"a>."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:958
-#: htdocs/luci-static/resources/view/fchomo/client.js:1219
-#: htdocs/luci-static/resources/view/fchomo/client.js:1338
-#: htdocs/luci-static/resources/view/fchomo/client.js:1466
-#: htdocs/luci-static/resources/view/fchomo/client.js:1718
-#: htdocs/luci-static/resources/view/fchomo/client.js:1770
-#: htdocs/luci-static/resources/view/fchomo/node.js:1563
+#: htdocs/luci-static/resources/view/fchomo/client.js:976
+#: htdocs/luci-static/resources/view/fchomo/client.js:1279
+#: htdocs/luci-static/resources/view/fchomo/client.js:1401
+#: htdocs/luci-static/resources/view/fchomo/client.js:1529
+#: htdocs/luci-static/resources/view/fchomo/client.js:1784
+#: htdocs/luci-static/resources/view/fchomo/client.js:1836
+#: htdocs/luci-static/resources/view/fchomo/node.js:1592
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:155
msgid "Please type %s fields of mihomo config."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:560
-#: htdocs/luci-static/resources/view/fchomo/node.js:871
+#: htdocs/luci-static/resources/fchomo/listeners.js:557
+#: htdocs/luci-static/resources/view/fchomo/node.js:881
msgid "Plugin"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:568
-#: htdocs/luci-static/resources/fchomo/listeners.js:575
-#: htdocs/luci-static/resources/fchomo/listeners.js:582
-#: htdocs/luci-static/resources/fchomo/listeners.js:589
-#: htdocs/luci-static/resources/fchomo/listeners.js:595
-#: htdocs/luci-static/resources/view/fchomo/node.js:882
-#: htdocs/luci-static/resources/view/fchomo/node.js:889
-#: htdocs/luci-static/resources/view/fchomo/node.js:897
-#: htdocs/luci-static/resources/view/fchomo/node.js:903
-#: htdocs/luci-static/resources/view/fchomo/node.js:911
+#: htdocs/luci-static/resources/fchomo/listeners.js:577
+#: htdocs/luci-static/resources/fchomo/listeners.js:583
+#: htdocs/luci-static/resources/fchomo/listeners.js:590
+#: htdocs/luci-static/resources/fchomo/listeners.js:597
+#: htdocs/luci-static/resources/fchomo/listeners.js:603
+#: htdocs/luci-static/resources/view/fchomo/node.js:904
+#: htdocs/luci-static/resources/view/fchomo/node.js:910
#: htdocs/luci-static/resources/view/fchomo/node.js:917
+#: htdocs/luci-static/resources/view/fchomo/node.js:923
+#: htdocs/luci-static/resources/view/fchomo/node.js:931
+#: htdocs/luci-static/resources/view/fchomo/node.js:937
msgid "Plugin:"
msgstr ""
@@ -2259,15 +2312,15 @@ msgstr ""
msgid "Port"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1473
+#: htdocs/luci-static/resources/fchomo.js:1823
msgid "Port %s alrealy exists!"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:303
+#: htdocs/luci-static/resources/view/fchomo/node.js:313
msgid "Port hop interval"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:385
+#: htdocs/luci-static/resources/view/fchomo/node.js:395
msgid "Port range"
msgstr ""
@@ -2276,27 +2329,27 @@ msgid "Ports"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:153
-#: htdocs/luci-static/resources/view/fchomo/node.js:298
+#: htdocs/luci-static/resources/view/fchomo/node.js:308
msgid "Ports pool"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:225
#: htdocs/luci-static/resources/fchomo/listeners.js:456
-#: htdocs/luci-static/resources/view/fchomo/node.js:534
-#: htdocs/luci-static/resources/view/fchomo/node.js:828
+#: htdocs/luci-static/resources/view/fchomo/node.js:544
+#: htdocs/luci-static/resources/view/fchomo/node.js:838
msgid "Pre-shared key"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:879
-#: htdocs/luci-static/resources/view/fchomo/node.js:1042
+#: htdocs/luci-static/resources/fchomo/listeners.js:897
+#: htdocs/luci-static/resources/view/fchomo/node.js:1070
msgid "Pre-shared key of rendezvous server"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:176
+#: htdocs/luci-static/resources/fchomo.js:177
msgid "Prefer IPv4"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:177
+#: htdocs/luci-static/resources/fchomo.js:178
msgid "Prefer IPv6"
msgstr ""
@@ -2307,23 +2360,23 @@ msgstr ""
#: htdocs/luci-static/resources/view/fchomo/global.js:760
#: htdocs/luci-static/resources/view/fchomo/global.js:777
-#: htdocs/luci-static/resources/view/fchomo/node.js:1524
-#: htdocs/luci-static/resources/view/fchomo/node.js:1531
-#: htdocs/luci-static/resources/view/fchomo/node.js:1911
-#: htdocs/luci-static/resources/view/fchomo/node.js:1918
+#: htdocs/luci-static/resources/view/fchomo/node.js:1553
+#: htdocs/luci-static/resources/view/fchomo/node.js:1560
+#: htdocs/luci-static/resources/view/fchomo/node.js:1945
+#: htdocs/luci-static/resources/view/fchomo/node.js:1952
msgid "Priority: Proxy Node > Global."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:347
+#: htdocs/luci-static/resources/view/fchomo/node.js:357
msgid "Priv-key"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:351
+#: htdocs/luci-static/resources/view/fchomo/node.js:361
msgid "Priv-key passphrase"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:721
-#: htdocs/luci-static/resources/view/fchomo/node.js:813
+#: htdocs/luci-static/resources/view/fchomo/node.js:731
+#: htdocs/luci-static/resources/view/fchomo/node.js:823
msgid "Private key"
msgstr ""
@@ -2332,34 +2385,34 @@ msgid "Process matching mode"
msgstr ""
#: htdocs/luci-static/resources/view/fchomo/global.js:708
-#: htdocs/luci-static/resources/view/fchomo/node.js:1434
+#: htdocs/luci-static/resources/view/fchomo/node.js:1463
msgid "Protocol"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:708
+#: htdocs/luci-static/resources/view/fchomo/node.js:718
msgid "Protocol parameter. Enable length block encryption."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:702
+#: htdocs/luci-static/resources/view/fchomo/node.js:712
msgid ""
"Protocol parameter. Will waste traffic randomly if enabled (enabled by "
"default in v2ray and cannot be disabled)."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1065
-#: htdocs/luci-static/resources/view/fchomo/node.js:1546
-#: htdocs/luci-static/resources/view/fchomo/node.js:1555
-#: htdocs/luci-static/resources/view/fchomo/node.js:2027
+#: htdocs/luci-static/resources/view/fchomo/client.js:1096
+#: htdocs/luci-static/resources/view/fchomo/node.js:1575
+#: htdocs/luci-static/resources/view/fchomo/node.js:1584
+#: htdocs/luci-static/resources/view/fchomo/node.js:2061
msgid "Provider"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1729
+#: htdocs/luci-static/resources/view/fchomo/node.js:1758
msgid "Provider URL"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:932
#: htdocs/luci-static/resources/view/fchomo/client.js:950
-#: htdocs/luci-static/resources/view/fchomo/client.js:1422
+#: htdocs/luci-static/resources/view/fchomo/client.js:968
+#: htdocs/luci-static/resources/view/fchomo/client.js:1485
msgid "Proxy Group"
msgstr ""
@@ -2376,24 +2429,24 @@ msgid "Proxy MAC-s"
msgstr ""
#: htdocs/luci-static/resources/view/fchomo/node.js:219
-#: htdocs/luci-static/resources/view/fchomo/node.js:2026
+#: htdocs/luci-static/resources/view/fchomo/node.js:2060
msgid "Proxy Node"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:2002
-#: htdocs/luci-static/resources/view/fchomo/node.js:2011
+#: htdocs/luci-static/resources/view/fchomo/node.js:2036
+#: htdocs/luci-static/resources/view/fchomo/node.js:2045
msgid "Proxy chain"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:615
-#: htdocs/luci-static/resources/view/fchomo/client.js:792
-#: htdocs/luci-static/resources/view/fchomo/client.js:1564
-#: htdocs/luci-static/resources/view/fchomo/node.js:1747
+#: htdocs/luci-static/resources/fchomo/listeners.js:628
+#: htdocs/luci-static/resources/view/fchomo/client.js:797
+#: htdocs/luci-static/resources/view/fchomo/client.js:1627
+#: htdocs/luci-static/resources/view/fchomo/node.js:1776
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:403
msgid "Proxy group"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:890
+#: htdocs/luci-static/resources/view/fchomo/client.js:903
msgid "Proxy group override"
msgstr ""
@@ -2405,44 +2458,44 @@ msgstr ""
msgid "Proxy routerself"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:573
-#: htdocs/luci-static/resources/view/fchomo/node.js:793
+#: htdocs/luci-static/resources/view/fchomo/node.js:583
+#: htdocs/luci-static/resources/view/fchomo/node.js:803
msgid "QUIC"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:935
+#: htdocs/luci-static/resources/view/fchomo/client.js:953
#: htdocs/luci-static/resources/view/fchomo/server.js:44
msgid "Quick Reload"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1075
-#: htdocs/luci-static/resources/view/fchomo/node.js:1214
+#: htdocs/luci-static/resources/fchomo/listeners.js:1093
+#: htdocs/luci-static/resources/view/fchomo/node.js:1243
msgid "REALITY"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1229
+#: htdocs/luci-static/resources/view/fchomo/node.js:1258
msgid "REALITY X25519MLKEM768 PQC support"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1112
+#: htdocs/luci-static/resources/fchomo/listeners.js:1130
msgid "REALITY certificate issued to"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1080
+#: htdocs/luci-static/resources/fchomo/listeners.js:1098
msgid "REALITY handshake server"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1087
+#: htdocs/luci-static/resources/fchomo/listeners.js:1105
msgid "REALITY private key"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1102
-#: htdocs/luci-static/resources/view/fchomo/node.js:1219
+#: htdocs/luci-static/resources/fchomo/listeners.js:1120
+#: htdocs/luci-static/resources/view/fchomo/node.js:1248
msgid "REALITY public key"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1106
-#: htdocs/luci-static/resources/view/fchomo/node.js:1224
+#: htdocs/luci-static/resources/fchomo/listeners.js:1124
+#: htdocs/luci-static/resources/view/fchomo/node.js:1253
msgid "REALITY short ID"
msgstr ""
@@ -2450,9 +2503,9 @@ msgstr ""
msgid "REMATCH-NAME marking"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:712
-#: htdocs/luci-static/resources/fchomo/listeners.js:731
-#: htdocs/luci-static/resources/view/fchomo/node.js:997
+#: htdocs/luci-static/resources/fchomo/listeners.js:730
+#: htdocs/luci-static/resources/fchomo/listeners.js:749
+#: htdocs/luci-static/resources/view/fchomo/node.js:1025
msgid "RTT"
msgstr ""
@@ -2468,13 +2521,13 @@ msgstr ""
msgid "Randomized traffic characteristics"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:868
-#: htdocs/luci-static/resources/view/fchomo/node.js:1031
+#: htdocs/luci-static/resources/fchomo/listeners.js:886
+#: htdocs/luci-static/resources/view/fchomo/node.js:1059
msgid "Realm"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:884
-#: htdocs/luci-static/resources/view/fchomo/node.js:1047
+#: htdocs/luci-static/resources/fchomo/listeners.js:902
+#: htdocs/luci-static/resources/view/fchomo/node.js:1075
msgid "Realm ID"
msgstr ""
@@ -2502,8 +2555,8 @@ msgstr ""
msgid "Refresh every %s seconds."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1229
-#: htdocs/luci-static/resources/view/fchomo/client.js:936
+#: htdocs/luci-static/resources/fchomo.js:1579
+#: htdocs/luci-static/resources/view/fchomo/client.js:954
#: htdocs/luci-static/resources/view/fchomo/global.js:193
#: htdocs/luci-static/resources/view/fchomo/server.js:45
msgid "Reload"
@@ -2513,46 +2566,46 @@ msgstr ""
msgid "Reload All"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:187
+#: htdocs/luci-static/resources/fchomo.js:188
msgid "Rematch"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:187
+#: htdocs/luci-static/resources/fchomo.js:188
msgid "Rematching routing rules"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1674
+#: htdocs/luci-static/resources/view/fchomo/node.js:1703
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:287
msgid "Remote"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:776
-#: htdocs/luci-static/resources/view/fchomo/node.js:859
+#: htdocs/luci-static/resources/view/fchomo/node.js:786
+#: htdocs/luci-static/resources/view/fchomo/node.js:869
msgid "Remote DNS resolve"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1394
+#: htdocs/luci-static/resources/fchomo.js:1744
msgid "Remove"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1399
-#: htdocs/luci-static/resources/view/fchomo/node.js:1650
-#: htdocs/luci-static/resources/view/fchomo/node.js:1652
+#: htdocs/luci-static/resources/fchomo.js:1749
+#: htdocs/luci-static/resources/view/fchomo/node.js:1679
+#: htdocs/luci-static/resources/view/fchomo/node.js:1681
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:259
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:261
msgid "Remove idles"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:873
-#: htdocs/luci-static/resources/view/fchomo/node.js:1036
+#: htdocs/luci-static/resources/fchomo/listeners.js:891
+#: htdocs/luci-static/resources/view/fchomo/node.js:1064
msgid "Rendezvous server"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1841
+#: htdocs/luci-static/resources/view/fchomo/node.js:1875
msgid "Replace name"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1842
+#: htdocs/luci-static/resources/view/fchomo/node.js:1876
msgid "Replace node name."
msgstr ""
@@ -2560,13 +2613,13 @@ msgstr ""
msgid "Request"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1160
-#: htdocs/luci-static/resources/view/fchomo/node.js:1302
-#: htdocs/luci-static/resources/view/fchomo/node.js:1309
+#: htdocs/luci-static/resources/fchomo/listeners.js:1178
+#: htdocs/luci-static/resources/view/fchomo/node.js:1331
+#: htdocs/luci-static/resources/view/fchomo/node.js:1338
msgid "Request path"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:613
+#: htdocs/luci-static/resources/view/fchomo/node.js:623
msgid "Request timeout"
msgstr ""
@@ -2579,11 +2632,11 @@ msgid "Require any"
msgstr ""
#: htdocs/luci-static/resources/fchomo.js:404
-#: htdocs/luci-static/resources/view/fchomo/node.js:1230
+#: htdocs/luci-static/resources/view/fchomo/node.js:1259
msgid "Requires server support."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:842
+#: htdocs/luci-static/resources/view/fchomo/node.js:852
msgid "Reserved field bytes"
msgstr ""
@@ -2591,26 +2644,26 @@ msgstr ""
msgid "Resources management"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:917
+#: htdocs/luci-static/resources/view/fchomo/node.js:937
msgid "Restls script"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1190
+#: htdocs/luci-static/resources/view/fchomo/client.js:1250
msgid ""
"Returns hidden status in the API to hide the display of this proxy group."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1196
+#: htdocs/luci-static/resources/view/fchomo/client.js:1256
msgid ""
"Returns the string input for icon in the API to display in this proxy group."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:518
+#: htdocs/luci-static/resources/view/fchomo/node.js:528
msgid "Reuse HTTP connections to reduce RTT for each connection establishment."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:515
-#: htdocs/luci-static/resources/view/fchomo/node.js:519
+#: htdocs/luci-static/resources/view/fchomo/node.js:525
+#: htdocs/luci-static/resources/view/fchomo/node.js:529
msgid "Reusing a single tunnel to carry multiple target connections within it."
msgstr ""
@@ -2627,10 +2680,10 @@ msgstr ""
msgid "Routing GFW"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:605
+#: htdocs/luci-static/resources/fchomo/listeners.js:613
#: htdocs/luci-static/resources/view/fchomo/global.js:776
-#: htdocs/luci-static/resources/view/fchomo/node.js:1530
-#: htdocs/luci-static/resources/view/fchomo/node.js:1917
+#: htdocs/luci-static/resources/view/fchomo/node.js:1559
+#: htdocs/luci-static/resources/view/fchomo/node.js:1951
msgid "Routing mark (Fwmark)"
msgstr ""
@@ -2651,8 +2704,8 @@ msgstr ""
msgid "Routing ports"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1202
-#: htdocs/luci-static/resources/view/fchomo/client.js:1211
+#: htdocs/luci-static/resources/view/fchomo/client.js:1262
+#: htdocs/luci-static/resources/view/fchomo/client.js:1271
msgid "Routing rule"
msgstr ""
@@ -2668,8 +2721,8 @@ msgstr ""
msgid "Rule"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:854
-#: htdocs/luci-static/resources/view/fchomo/client.js:867
+#: htdocs/luci-static/resources/view/fchomo/client.js:862
+#: htdocs/luci-static/resources/view/fchomo/client.js:875
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:147
msgid "Rule set"
msgstr ""
@@ -2686,7 +2739,7 @@ msgstr ""
msgid "Ruleset-URI-Scheme"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1242
+#: htdocs/luci-static/resources/fchomo.js:1592
msgid "Running"
msgstr ""
@@ -2694,15 +2747,15 @@ msgstr ""
msgid "SMTP"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:154
+#: htdocs/luci-static/resources/fchomo.js:155
msgid "SOCKS"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:190
+#: htdocs/luci-static/resources/fchomo.js:191
msgid "SOCKS5"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:206
+#: htdocs/luci-static/resources/fchomo.js:207
msgid "SSH"
msgstr ""
@@ -2710,29 +2763,29 @@ msgstr ""
msgid "STUN"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:890
-#: htdocs/luci-static/resources/view/fchomo/node.js:1053
+#: htdocs/luci-static/resources/fchomo/listeners.js:908
+#: htdocs/luci-static/resources/view/fchomo/node.js:1081
msgid "STUN servers"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1294
+#: htdocs/luci-static/resources/view/fchomo/client.js:1354
msgid "SUB-RULE"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:954
+#: htdocs/luci-static/resources/view/fchomo/node.js:982
msgid "SUoT version"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:195
-#: htdocs/luci-static/resources/view/fchomo/node.js:323
+#: htdocs/luci-static/resources/view/fchomo/node.js:333
msgid "Salamander"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:182
+#: htdocs/luci-static/resources/fchomo.js:183
msgid "Same dstaddr requests. Same node"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:183
+#: htdocs/luci-static/resources/fchomo.js:184
msgid "Same srcaddr and dstaddr requests. Same node"
msgstr ""
@@ -2745,7 +2798,7 @@ msgstr ""
msgid "Segment maximum size"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:240
+#: htdocs/luci-static/resources/fchomo.js:241
msgid "Select"
msgstr ""
@@ -2757,14 +2810,18 @@ msgstr ""
msgid "Send padding randomly 0-3333 bytes with 50% probability."
msgstr ""
+#: htdocs/luci-static/resources/view/fchomo/client.js:1924
+msgid "Send queries to both the %s and the %s."
+msgstr ""
+
#: htdocs/luci-static/resources/fchomo.js:399
#: htdocs/luci-static/resources/fchomo.js:400
msgid "Send random ticket of 300s-600s duration for client 0-RTT reuse."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:712
-#: htdocs/luci-static/resources/fchomo/listeners.js:973
-#: htdocs/luci-static/resources/fchomo/listeners.js:988
+#: htdocs/luci-static/resources/fchomo/listeners.js:730
+#: htdocs/luci-static/resources/fchomo/listeners.js:991
+#: htdocs/luci-static/resources/fchomo/listeners.js:1006
#: htdocs/luci-static/resources/view/fchomo/server.js:58
#: root/usr/share/luci/menu.d/luci-app-fchomo.json:62
msgid "Server"
@@ -2774,9 +2831,9 @@ msgstr ""
msgid "Server address"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1154
-#: htdocs/luci-static/resources/view/fchomo/node.js:1281
-#: htdocs/luci-static/resources/view/fchomo/node.js:1287
+#: htdocs/luci-static/resources/fchomo/listeners.js:1172
+#: htdocs/luci-static/resources/view/fchomo/node.js:1310
+#: htdocs/luci-static/resources/view/fchomo/node.js:1316
msgid "Server hostname"
msgstr ""
@@ -2788,46 +2845,46 @@ msgstr ""
msgid "Service status"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:156
-#: htdocs/luci-static/resources/fchomo.js:191
+#: htdocs/luci-static/resources/fchomo.js:157
+#: htdocs/luci-static/resources/fchomo.js:192
msgid "Shadowsocks"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:506
-#: htdocs/luci-static/resources/view/fchomo/node.js:632
+#: htdocs/luci-static/resources/fchomo/listeners.js:503
+#: htdocs/luci-static/resources/view/fchomo/node.js:642
msgid "Shadowsocks chipher"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:501
-#: htdocs/luci-static/resources/view/fchomo/node.js:627
+#: htdocs/luci-static/resources/fchomo/listeners.js:498
+#: htdocs/luci-static/resources/view/fchomo/node.js:637
msgid "Shadowsocks encrypt"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:514
-#: htdocs/luci-static/resources/view/fchomo/node.js:640
+#: htdocs/luci-static/resources/fchomo/listeners.js:511
+#: htdocs/luci-static/resources/view/fchomo/node.js:650
msgid "Shadowsocks password"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1482
+#: htdocs/luci-static/resources/view/fchomo/node.js:1511
msgid "Show connections in the dashboard for breaking connections easier."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:89
+#: htdocs/luci-static/resources/fchomo.js:90
msgid "Silent"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:181
+#: htdocs/luci-static/resources/fchomo.js:182
msgid "Simple round-robin all nodes"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1735
+#: htdocs/luci-static/resources/view/fchomo/node.js:1764
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:391
msgid "Size limit"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1597
-#: htdocs/luci-static/resources/view/fchomo/node.js:1151
-#: htdocs/luci-static/resources/view/fchomo/node.js:1892
+#: htdocs/luci-static/resources/view/fchomo/client.js:1663
+#: htdocs/luci-static/resources/view/fchomo/node.js:1180
+#: htdocs/luci-static/resources/view/fchomo/node.js:1926
msgid "Skip cert verify"
msgstr ""
@@ -2843,8 +2900,8 @@ msgstr ""
msgid "Skiped sniffing src address"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:159
-#: htdocs/luci-static/resources/fchomo.js:195
+#: htdocs/luci-static/resources/fchomo.js:160
+#: htdocs/luci-static/resources/fchomo.js:196
msgid "Snell"
msgstr ""
@@ -2875,7 +2932,7 @@ msgstr ""
msgid "Stack"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:60
+#: htdocs/luci-static/resources/fchomo.js:61
msgid "Standard"
msgstr ""
@@ -2887,22 +2944,22 @@ msgstr ""
msgid "Steam P2P"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1162
-#: htdocs/luci-static/resources/view/fchomo/client.js:1164
+#: htdocs/luci-static/resources/view/fchomo/client.js:1222
+#: htdocs/luci-static/resources/view/fchomo/client.js:1224
msgid "Strategy"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:609
-#: htdocs/luci-static/resources/view/fchomo/client.js:1321
-#: htdocs/luci-static/resources/view/fchomo/client.js:1330
+#: htdocs/luci-static/resources/fchomo/listeners.js:617
+#: htdocs/luci-static/resources/view/fchomo/client.js:1384
+#: htdocs/luci-static/resources/view/fchomo/client.js:1393
msgid "Sub rule"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1376
+#: htdocs/luci-static/resources/view/fchomo/client.js:1439
msgid "Sub rule group"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:702
+#: htdocs/luci-static/resources/fchomo.js:727
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:231
msgid "Successfully imported %s %s of total %s."
msgstr ""
@@ -2911,12 +2968,12 @@ msgstr ""
msgid "Successfully updated."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1744
+#: htdocs/luci-static/resources/fchomo.js:2094
msgid "Successfully uploaded."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:158
-#: htdocs/luci-static/resources/fchomo.js:194
+#: htdocs/luci-static/resources/fchomo.js:159
+#: htdocs/luci-static/resources/fchomo.js:195
msgid "Sudoku"
msgstr ""
@@ -2930,28 +2987,28 @@ msgstr ""
msgid "System"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:57
+#: htdocs/luci-static/resources/view/fchomo/client.js:59
msgid "System DNS"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:153
-#: htdocs/luci-static/resources/fchomo.js:158
+#: htdocs/luci-static/resources/fchomo.js:154
#: htdocs/luci-static/resources/fchomo.js:159
#: htdocs/luci-static/resources/fchomo.js:160
#: htdocs/luci-static/resources/fchomo.js:161
#: htdocs/luci-static/resources/fchomo.js:162
#: htdocs/luci-static/resources/fchomo.js:163
-#: htdocs/luci-static/resources/fchomo.js:189
-#: htdocs/luci-static/resources/fchomo.js:194
+#: htdocs/luci-static/resources/fchomo.js:164
+#: htdocs/luci-static/resources/fchomo.js:190
#: htdocs/luci-static/resources/fchomo.js:195
#: htdocs/luci-static/resources/fchomo.js:196
#: htdocs/luci-static/resources/fchomo.js:197
#: htdocs/luci-static/resources/fchomo.js:198
#: htdocs/luci-static/resources/fchomo.js:199
-#: htdocs/luci-static/resources/fchomo.js:206
-#: htdocs/luci-static/resources/fchomo/listeners.js:643
-#: htdocs/luci-static/resources/view/fchomo/client.js:598
-#: htdocs/luci-static/resources/view/fchomo/client.js:688
+#: htdocs/luci-static/resources/fchomo.js:200
+#: htdocs/luci-static/resources/fchomo.js:207
+#: htdocs/luci-static/resources/fchomo/listeners.js:661
+#: htdocs/luci-static/resources/view/fchomo/client.js:600
+#: htdocs/luci-static/resources/view/fchomo/client.js:690
msgid "TCP"
msgstr ""
@@ -2959,7 +3016,7 @@ msgstr ""
msgid "TCP concurrency"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1475
+#: htdocs/luci-static/resources/view/fchomo/node.js:1504
msgid "TCP only"
msgstr ""
@@ -2971,41 +3028,41 @@ msgstr ""
msgid "TCP-Keep-Alive interval"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:154
#: htdocs/luci-static/resources/fchomo.js:155
#: htdocs/luci-static/resources/fchomo.js:156
#: htdocs/luci-static/resources/fchomo.js:157
-#: htdocs/luci-static/resources/fchomo.js:166
+#: htdocs/luci-static/resources/fchomo.js:158
#: htdocs/luci-static/resources/fchomo.js:167
#: htdocs/luci-static/resources/fchomo.js:168
-#: htdocs/luci-static/resources/fchomo.js:188
-#: htdocs/luci-static/resources/fchomo.js:190
+#: htdocs/luci-static/resources/fchomo.js:169
+#: htdocs/luci-static/resources/fchomo.js:189
#: htdocs/luci-static/resources/fchomo.js:191
-#: htdocs/luci-static/resources/fchomo.js:193
-#: htdocs/luci-static/resources/fchomo.js:204
+#: htdocs/luci-static/resources/fchomo.js:192
+#: htdocs/luci-static/resources/fchomo.js:194
+#: htdocs/luci-static/resources/fchomo.js:205
msgid "TCP/UDP"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1506
-#: htdocs/luci-static/resources/view/fchomo/node.js:1859
+#: htdocs/luci-static/resources/view/fchomo/node.js:1535
+#: htdocs/luci-static/resources/view/fchomo/node.js:1893
msgid "TFO"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:570
-#: htdocs/luci-static/resources/fchomo/listeners.js:900
+#: htdocs/luci-static/resources/fchomo/listeners.js:579
+#: htdocs/luci-static/resources/fchomo/listeners.js:918
#: htdocs/luci-static/resources/view/fchomo/global.js:550
-#: htdocs/luci-static/resources/view/fchomo/node.js:499
-#: htdocs/luci-static/resources/view/fchomo/node.js:884
-#: htdocs/luci-static/resources/view/fchomo/node.js:1063
+#: htdocs/luci-static/resources/view/fchomo/node.js:509
+#: htdocs/luci-static/resources/view/fchomo/node.js:906
+#: htdocs/luci-static/resources/view/fchomo/node.js:1091
msgid "TLS"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:967
-#: htdocs/luci-static/resources/view/fchomo/node.js:1094
+#: htdocs/luci-static/resources/fchomo/listeners.js:985
+#: htdocs/luci-static/resources/view/fchomo/node.js:1122
msgid "TLS ALPN"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1088
+#: htdocs/luci-static/resources/view/fchomo/node.js:1116
msgid "TLS SNI"
msgstr ""
@@ -3014,8 +3071,8 @@ msgstr ""
msgid "TLS fields"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:164
-#: htdocs/luci-static/resources/fchomo.js:202
+#: htdocs/luci-static/resources/fchomo.js:165
+#: htdocs/luci-static/resources/fchomo.js:203
msgid "TUIC"
msgstr ""
@@ -3023,7 +3080,7 @@ msgstr ""
msgid "TURN"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:553
+#: htdocs/luci-static/resources/fchomo/listeners.js:550
msgid "Target address"
msgstr ""
@@ -3032,35 +3089,35 @@ msgid ""
"Tell the client to use the BBR flow control algorithm instead of Hysteria CC."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:737
-#: htdocs/luci-static/resources/view/fchomo/node.js:745
+#: htdocs/luci-static/resources/view/fchomo/node.js:747
+#: htdocs/luci-static/resources/view/fchomo/node.js:755
msgid "The %s address used by local machine in the Cloudflare WARP network."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:800
-#: htdocs/luci-static/resources/view/fchomo/node.js:808
+#: htdocs/luci-static/resources/view/fchomo/node.js:810
+#: htdocs/luci-static/resources/view/fchomo/node.js:818
msgid "The %s address used by local machine in the Wireguard network."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:988
-#: htdocs/luci-static/resources/view/fchomo/node.js:1174
+#: htdocs/luci-static/resources/fchomo/listeners.js:1006
+#: htdocs/luci-static/resources/view/fchomo/node.js:1203
msgid "The %s private key, in PEM format."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:973
-#: htdocs/luci-static/resources/fchomo/listeners.js:1011
+#: htdocs/luci-static/resources/fchomo/listeners.js:991
+#: htdocs/luci-static/resources/fchomo/listeners.js:1029
#: htdocs/luci-static/resources/view/fchomo/global.js:571
-#: htdocs/luci-static/resources/view/fchomo/node.js:1160
+#: htdocs/luci-static/resources/view/fchomo/node.js:1189
msgid "The %s public key, in PEM format."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1194
+#: htdocs/luci-static/resources/view/fchomo/node.js:1223
msgid ""
"The ECH parameter of the HTTPS record for the domain. Leave empty to resolve "
"via DNS."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:421
+#: htdocs/luci-static/resources/view/fchomo/node.js:431
msgid "The ED25519 available private key or UUID provided by Sudoku server."
msgstr ""
@@ -3072,41 +3129,47 @@ msgstr ""
msgid "The default value is 2:00 every day."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:744
-#: htdocs/luci-static/resources/view/fchomo/node.js:1010
+#: htdocs/luci-static/resources/view/fchomo/node.js:964
+msgid ""
+"The default value is %s, indicating that only the outer "
+"connection timeout is used."
+msgstr ""
+
+#: htdocs/luci-static/resources/fchomo/listeners.js:762
+#: htdocs/luci-static/resources/view/fchomo/node.js:1038
msgid ""
"The first padding must have a probability of 100% and at least 35 bytes."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1827
+#: htdocs/luci-static/resources/view/fchomo/client.js:1893
msgid "The matching %s will be deemed as not-poisoned."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1836
-#: htdocs/luci-static/resources/view/fchomo/client.js:1840
-#: htdocs/luci-static/resources/view/fchomo/client.js:1845
+#: htdocs/luci-static/resources/view/fchomo/client.js:1902
+#: htdocs/luci-static/resources/view/fchomo/client.js:1906
+#: htdocs/luci-static/resources/view/fchomo/client.js:1911
msgid "The matching %s will be deemed as poisoned."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:742
-#: htdocs/luci-static/resources/view/fchomo/node.js:1008
+#: htdocs/luci-static/resources/fchomo/listeners.js:760
+#: htdocs/luci-static/resources/view/fchomo/node.js:1036
msgid "The server and client can set different padding parameters."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1069
+#: htdocs/luci-static/resources/fchomo/listeners.js:1087
#: htdocs/luci-static/resources/view/fchomo/global.js:615
msgid "This ECH parameter needs to be added to the HTTPS record of the domain."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1600
-#: htdocs/luci-static/resources/view/fchomo/node.js:1154
-#: htdocs/luci-static/resources/view/fchomo/node.js:1895
+#: htdocs/luci-static/resources/view/fchomo/client.js:1666
+#: htdocs/luci-static/resources/view/fchomo/node.js:1183
+#: htdocs/luci-static/resources/view/fchomo/node.js:1929
msgid ""
"This is DANGEROUS, your traffic is almost like "
"PLAIN TEXT! Use at your own risk!"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:578
+#: htdocs/luci-static/resources/view/fchomo/node.js:588
msgid ""
"This is the TUIC port of the SUoT protocol, designed to provide a QUIC "
"stream based UDP relay mode that TUIC does not provide."
@@ -3136,22 +3199,22 @@ msgid "Tproxy port"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:285
-#: htdocs/luci-static/resources/view/fchomo/node.js:413
+#: htdocs/luci-static/resources/view/fchomo/node.js:423
msgid "Traffic pattern"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:2054
+#: htdocs/luci-static/resources/view/fchomo/node.js:2098
msgid "Transit proxy group"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:2060
+#: htdocs/luci-static/resources/view/fchomo/node.js:2109
msgid "Transit proxy node"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:273
-#: htdocs/luci-static/resources/fchomo/listeners.js:1120
-#: htdocs/luci-static/resources/view/fchomo/node.js:390
-#: htdocs/luci-static/resources/view/fchomo/node.js:1236
+#: htdocs/luci-static/resources/fchomo/listeners.js:1138
+#: htdocs/luci-static/resources/view/fchomo/node.js:400
+#: htdocs/luci-static/resources/view/fchomo/node.js:1265
msgid "Transport"
msgstr ""
@@ -3160,22 +3223,22 @@ msgstr ""
msgid "Transport fields"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1125
-#: htdocs/luci-static/resources/view/fchomo/node.js:1241
+#: htdocs/luci-static/resources/fchomo/listeners.js:1143
+#: htdocs/luci-static/resources/view/fchomo/node.js:1270
msgid "Transport type"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:811
+#: htdocs/luci-static/resources/view/fchomo/client.js:819
msgid "Treat the destination IP as the source IP."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:162
-#: htdocs/luci-static/resources/fchomo.js:198
+#: htdocs/luci-static/resources/fchomo.js:163
+#: htdocs/luci-static/resources/fchomo.js:199
msgid "Trojan"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:167
-#: htdocs/luci-static/resources/fchomo.js:204
+#: htdocs/luci-static/resources/fchomo.js:168
+#: htdocs/luci-static/resources/fchomo.js:205
msgid "TrustTunnel"
msgstr ""
@@ -3199,35 +3262,35 @@ msgstr ""
msgid "Tun stack."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:168
+#: htdocs/luci-static/resources/fchomo.js:169
msgid "Tunnel"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:142
-#: htdocs/luci-static/resources/view/fchomo/client.js:531
-#: htdocs/luci-static/resources/view/fchomo/client.js:652
-#: htdocs/luci-static/resources/view/fchomo/client.js:746
-#: htdocs/luci-static/resources/view/fchomo/client.js:851
-#: htdocs/luci-static/resources/view/fchomo/client.js:1038
+#: htdocs/luci-static/resources/view/fchomo/client.js:533
+#: htdocs/luci-static/resources/view/fchomo/client.js:654
+#: htdocs/luci-static/resources/view/fchomo/client.js:751
+#: htdocs/luci-static/resources/view/fchomo/client.js:859
+#: htdocs/luci-static/resources/view/fchomo/client.js:1057
#: htdocs/luci-static/resources/view/fchomo/node.js:250
-#: htdocs/luci-static/resources/view/fchomo/node.js:1672
-#: htdocs/luci-static/resources/view/fchomo/node.js:2025
+#: htdocs/luci-static/resources/view/fchomo/node.js:1701
+#: htdocs/luci-static/resources/view/fchomo/node.js:2059
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:285
msgid "Type"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:164
#: htdocs/luci-static/resources/fchomo.js:165
-#: htdocs/luci-static/resources/fchomo.js:201
+#: htdocs/luci-static/resources/fchomo.js:166
#: htdocs/luci-static/resources/fchomo.js:202
#: htdocs/luci-static/resources/fchomo.js:203
-#: htdocs/luci-static/resources/fchomo.js:205
-#: htdocs/luci-static/resources/fchomo/listeners.js:644
-#: htdocs/luci-static/resources/fchomo/listeners.js:649
-#: htdocs/luci-static/resources/view/fchomo/client.js:597
-#: htdocs/luci-static/resources/view/fchomo/client.js:687
-#: htdocs/luci-static/resources/view/fchomo/node.js:942
-#: htdocs/luci-static/resources/view/fchomo/node.js:1869
+#: htdocs/luci-static/resources/fchomo.js:204
+#: htdocs/luci-static/resources/fchomo.js:206
+#: htdocs/luci-static/resources/fchomo/listeners.js:662
+#: htdocs/luci-static/resources/fchomo/listeners.js:667
+#: htdocs/luci-static/resources/view/fchomo/client.js:599
+#: htdocs/luci-static/resources/view/fchomo/client.js:689
+#: htdocs/luci-static/resources/view/fchomo/node.js:970
+#: htdocs/luci-static/resources/view/fchomo/node.js:1903
msgid "UDP"
msgstr ""
@@ -3235,42 +3298,42 @@ msgstr ""
msgid "UDP NAT expiration time"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:577
+#: htdocs/luci-static/resources/view/fchomo/node.js:587
msgid "UDP over stream"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:583
+#: htdocs/luci-static/resources/view/fchomo/node.js:593
msgid "UDP over stream version"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:570
+#: htdocs/luci-static/resources/view/fchomo/node.js:580
msgid "UDP packet relay mode."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:569
+#: htdocs/luci-static/resources/view/fchomo/node.js:579
msgid "UDP relay mode"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:373
#: htdocs/luci-static/resources/fchomo/listeners.js:374
-#: htdocs/luci-static/resources/view/fchomo/node.js:445
-#: htdocs/luci-static/resources/view/fchomo/node.js:446
+#: htdocs/luci-static/resources/view/fchomo/node.js:455
+#: htdocs/luci-static/resources/view/fchomo/node.js:456
msgid "UP: %s; DOWN: %s"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:242
+#: htdocs/luci-static/resources/fchomo.js:243
msgid "URL test"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:294
-#: htdocs/luci-static/resources/fchomo/listeners.js:474
-#: htdocs/luci-static/resources/fchomo/listeners.js:529
-#: htdocs/luci-static/resources/view/fchomo/node.js:557
-#: htdocs/luci-static/resources/view/fchomo/node.js:671
+#: htdocs/luci-static/resources/fchomo/listeners.js:471
+#: htdocs/luci-static/resources/fchomo/listeners.js:526
+#: htdocs/luci-static/resources/view/fchomo/node.js:567
+#: htdocs/luci-static/resources/view/fchomo/node.js:681
msgid "UUID"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1287
+#: htdocs/luci-static/resources/fchomo.js:1637
msgid "Unable to download unsupported type: %s"
msgstr ""
@@ -3295,8 +3358,8 @@ msgstr ""
msgid "Unknown error: %s"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:948
-#: htdocs/luci-static/resources/view/fchomo/node.js:1874
+#: htdocs/luci-static/resources/view/fchomo/node.js:976
+#: htdocs/luci-static/resources/view/fchomo/node.js:1908
msgid "UoT"
msgstr ""
@@ -3304,22 +3367,22 @@ msgstr ""
msgid "Update failed."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1741
+#: htdocs/luci-static/resources/view/fchomo/node.js:1770
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:397
msgid "Update interval"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1493
+#: htdocs/luci-static/resources/view/fchomo/node.js:1522
msgid "Upload bandwidth"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1494
+#: htdocs/luci-static/resources/view/fchomo/node.js:1523
msgid "Upload bandwidth in Mbps."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:979
-#: htdocs/luci-static/resources/fchomo/listeners.js:1019
-#: htdocs/luci-static/resources/view/fchomo/node.js:1165
+#: htdocs/luci-static/resources/fchomo/listeners.js:997
+#: htdocs/luci-static/resources/fchomo/listeners.js:1037
+#: htdocs/luci-static/resources/view/fchomo/node.js:1194
msgid "Upload certificate"
msgstr ""
@@ -3327,45 +3390,45 @@ msgstr ""
msgid "Upload initial package"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:994
-#: htdocs/luci-static/resources/view/fchomo/node.js:1179
+#: htdocs/luci-static/resources/fchomo/listeners.js:1012
+#: htdocs/luci-static/resources/view/fchomo/node.js:1208
msgid "Upload key"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:982
-#: htdocs/luci-static/resources/fchomo/listeners.js:997
-#: htdocs/luci-static/resources/fchomo/listeners.js:1022
+#: htdocs/luci-static/resources/fchomo/listeners.js:1000
+#: htdocs/luci-static/resources/fchomo/listeners.js:1015
+#: htdocs/luci-static/resources/fchomo/listeners.js:1040
#: htdocs/luci-static/resources/view/fchomo/global.js:306
-#: htdocs/luci-static/resources/view/fchomo/node.js:1168
-#: htdocs/luci-static/resources/view/fchomo/node.js:1182
+#: htdocs/luci-static/resources/view/fchomo/node.js:1197
+#: htdocs/luci-static/resources/view/fchomo/node.js:1211
msgid "Upload..."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:273
+#: htdocs/luci-static/resources/view/fchomo/node.js:278
msgid "Use sub rule"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1420
+#: htdocs/luci-static/resources/view/fchomo/client.js:1483
msgid ""
"Used to resolve domains that can be directly connected. Can use domestic DNS "
"servers or ECS."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1422
+#: htdocs/luci-static/resources/view/fchomo/client.js:1485
msgid ""
"Used to resolve domains you want to proxy. Recommended to configure %s for "
"DNS servers."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1404
+#: htdocs/luci-static/resources/view/fchomo/client.js:1467
msgid "Used to resolve the domain of the DNS server. Must be IP."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1411
+#: htdocs/luci-static/resources/view/fchomo/client.js:1474
msgid "Used to resolve the domain of the Proxy node."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1089
+#: htdocs/luci-static/resources/view/fchomo/node.js:1117
msgid "Used to verify the hostname on the returned certificates."
msgstr ""
@@ -3378,7 +3441,7 @@ msgid "User-hint is mandatory"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:161
-#: htdocs/luci-static/resources/view/fchomo/node.js:280
+#: htdocs/luci-static/resources/view/fchomo/node.js:290
msgid "Username"
msgstr ""
@@ -3386,26 +3449,26 @@ msgstr ""
msgid "Users filter mode"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1350
+#: htdocs/luci-static/resources/view/fchomo/node.js:1379
msgid "V2ray HTTPUpgrade"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1355
+#: htdocs/luci-static/resources/view/fchomo/node.js:1384
msgid "V2ray HTTPUpgrade fast open"
msgstr ""
+#: htdocs/luci-static/resources/fchomo.js:162
+#: htdocs/luci-static/resources/fchomo.js:198
+msgid "VLESS"
+msgstr ""
+
#: htdocs/luci-static/resources/fchomo.js:161
#: htdocs/luci-static/resources/fchomo.js:197
-msgid "VLESS"
-msgstr ""
-
-#: htdocs/luci-static/resources/fchomo.js:160
-#: htdocs/luci-static/resources/fchomo.js:196
msgid "VMess"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1678
-#: htdocs/luci-static/resources/view/fchomo/node.js:2031
+#: htdocs/luci-static/resources/view/fchomo/node.js:1707
+#: htdocs/luci-static/resources/view/fchomo/node.js:2065
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:328
msgid "Value"
msgstr ""
@@ -3415,13 +3478,13 @@ msgid "Verify if given"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:463
-#: htdocs/luci-static/resources/fchomo/listeners.js:595
-#: htdocs/luci-static/resources/view/fchomo/node.js:541
-#: htdocs/luci-static/resources/view/fchomo/node.js:903
+#: htdocs/luci-static/resources/fchomo/listeners.js:603
+#: htdocs/luci-static/resources/view/fchomo/node.js:551
+#: htdocs/luci-static/resources/view/fchomo/node.js:923
msgid "Version"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:911
+#: htdocs/luci-static/resources/view/fchomo/node.js:931
msgid "Version hint"
msgstr ""
@@ -3434,20 +3497,20 @@ msgstr ""
msgid "Wait a random 0-111 milliseconds with 75% probability."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:91
+#: htdocs/luci-static/resources/fchomo.js:92
msgid "Warning"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:441
-#: htdocs/luci-static/resources/fchomo/listeners.js:1127
-#: htdocs/luci-static/resources/fchomo/listeners.js:1136
-#: htdocs/luci-static/resources/fchomo/listeners.js:1143
-#: htdocs/luci-static/resources/view/fchomo/node.js:495
-#: htdocs/luci-static/resources/view/fchomo/node.js:524
-#: htdocs/luci-static/resources/view/fchomo/node.js:1246
-#: htdocs/luci-static/resources/view/fchomo/node.js:1257
-#: htdocs/luci-static/resources/view/fchomo/node.js:1264
-#: htdocs/luci-static/resources/view/fchomo/node.js:1270
+#: htdocs/luci-static/resources/fchomo/listeners.js:1145
+#: htdocs/luci-static/resources/fchomo/listeners.js:1154
+#: htdocs/luci-static/resources/fchomo/listeners.js:1161
+#: htdocs/luci-static/resources/view/fchomo/node.js:505
+#: htdocs/luci-static/resources/view/fchomo/node.js:534
+#: htdocs/luci-static/resources/view/fchomo/node.js:1275
+#: htdocs/luci-static/resources/view/fchomo/node.js:1286
+#: htdocs/luci-static/resources/view/fchomo/node.js:1293
+#: htdocs/luci-static/resources/view/fchomo/node.js:1299
msgid "WebSocket"
msgstr ""
@@ -3459,52 +3522,52 @@ msgstr ""
msgid "White list"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:205
+#: htdocs/luci-static/resources/fchomo.js:206
msgid "WireGuard"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:822
+#: htdocs/luci-static/resources/view/fchomo/node.js:832
msgid "WireGuard peer public key."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:829
+#: htdocs/luci-static/resources/view/fchomo/node.js:839
msgid "WireGuard pre-shared key."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:814
+#: htdocs/luci-static/resources/view/fchomo/node.js:824
msgid "WireGuard requires base64-encoded private keys."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1128
-#: htdocs/luci-static/resources/fchomo/listeners.js:1137
-#: htdocs/luci-static/resources/view/fchomo/node.js:1247
-#: htdocs/luci-static/resources/view/fchomo/node.js:1265
+#: htdocs/luci-static/resources/fchomo/listeners.js:1146
+#: htdocs/luci-static/resources/fchomo/listeners.js:1155
+#: htdocs/luci-static/resources/view/fchomo/node.js:1276
+#: htdocs/luci-static/resources/view/fchomo/node.js:1294
msgid "XHTTP"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1173
-#: htdocs/luci-static/resources/view/fchomo/node.js:1360
+#: htdocs/luci-static/resources/fchomo/listeners.js:1191
+#: htdocs/luci-static/resources/view/fchomo/node.js:1389
msgid "XHTTP mode"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1391
+#: htdocs/luci-static/resources/view/fchomo/node.js:1420
msgid "XMUX"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1396
-#: htdocs/luci-static/resources/view/fchomo/node.js:1401
-#: htdocs/luci-static/resources/view/fchomo/node.js:1406
-#: htdocs/luci-static/resources/view/fchomo/node.js:1411
-#: htdocs/luci-static/resources/view/fchomo/node.js:1416
-#: htdocs/luci-static/resources/view/fchomo/node.js:1421
+#: htdocs/luci-static/resources/view/fchomo/node.js:1425
+#: htdocs/luci-static/resources/view/fchomo/node.js:1430
+#: htdocs/luci-static/resources/view/fchomo/node.js:1435
+#: htdocs/luci-static/resources/view/fchomo/node.js:1440
+#: htdocs/luci-static/resources/view/fchomo/node.js:1445
+#: htdocs/luci-static/resources/view/fchomo/node.js:1450
msgid "XMUX:"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:703
+#: htdocs/luci-static/resources/fchomo/listeners.js:721
msgid "XOR mode"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:716
+#: htdocs/luci-static/resources/view/fchomo/node.js:726
msgid "Xudp (Xray-core)"
msgstr ""
@@ -3512,22 +3575,22 @@ msgstr ""
msgid "Yaml text"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1898
+#: htdocs/luci-static/resources/view/fchomo/node.js:1932
msgid "Yes"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:46
+#: htdocs/luci-static/resources/fchomo.js:47
msgid "YouTube"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1726
+#: htdocs/luci-static/resources/fchomo.js:2076
msgid "Your %s was successfully uploaded. Size: %sB."
msgstr ""
#: htdocs/luci-static/resources/fchomo.js:345
#: htdocs/luci-static/resources/fchomo.js:358
#: htdocs/luci-static/resources/fchomo.js:363
-#: htdocs/luci-static/resources/view/fchomo/node.js:696
+#: htdocs/luci-static/resources/view/fchomo/node.js:706
msgid "aes-128-gcm"
msgstr ""
@@ -3540,11 +3603,11 @@ msgstr ""
msgid "aes-256-gcm"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1758
+#: htdocs/luci-static/resources/view/fchomo/node.js:1792
msgid "age private key"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1819
+#: htdocs/luci-static/resources/view/fchomo/node.js:1853
msgid "age public key"
msgstr ""
@@ -3556,17 +3619,17 @@ msgstr ""
msgid "age-x25519"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:693
+#: htdocs/luci-static/resources/view/fchomo/node.js:703
msgid "auto"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:55
+#: htdocs/luci-static/resources/fchomo.js:56
msgid "bbr"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:984
-#: htdocs/luci-static/resources/fchomo/listeners.js:1024
-#: htdocs/luci-static/resources/view/fchomo/node.js:1170
+#: htdocs/luci-static/resources/fchomo/listeners.js:1002
+#: htdocs/luci-static/resources/fchomo/listeners.js:1042
+#: htdocs/luci-static/resources/view/fchomo/node.js:1199
msgid "certificate"
msgstr ""
@@ -3576,16 +3639,16 @@ msgstr ""
msgid "chacha20-ietf-poly1305"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:697
+#: htdocs/luci-static/resources/view/fchomo/node.js:707
msgid "chacha20-poly1305"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:53
+#: htdocs/luci-static/resources/fchomo.js:54
msgid "cubic"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:655
-#: htdocs/luci-static/resources/fchomo/listeners.js:686
+#: htdocs/luci-static/resources/fchomo/listeners.js:673
+#: htdocs/luci-static/resources/fchomo/listeners.js:704
msgid "decryption"
msgstr ""
@@ -3593,41 +3656,41 @@ msgstr ""
msgid "dnsmasq selects upstream on its own. (may affect CDN accuracy)"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1886
+#: htdocs/luci-static/resources/view/fchomo/node.js:1920
msgid "down"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:690
-#: htdocs/luci-static/resources/view/fchomo/node.js:962
-#: htdocs/luci-static/resources/view/fchomo/node.js:985
+#: htdocs/luci-static/resources/fchomo/listeners.js:708
+#: htdocs/luci-static/resources/view/fchomo/node.js:990
+#: htdocs/luci-static/resources/view/fchomo/node.js:1013
msgid "encryption"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:425
-#: htdocs/luci-static/resources/view/fchomo/node.js:479
+#: htdocs/luci-static/resources/view/fchomo/node.js:489
msgid "false = bandwidth optimized downlink; true = pure Sudoku downlink."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1126
-#: htdocs/luci-static/resources/fchomo/listeners.js:1135
-#: htdocs/luci-static/resources/fchomo/listeners.js:1142
-#: htdocs/luci-static/resources/view/fchomo/node.js:1245
-#: htdocs/luci-static/resources/view/fchomo/node.js:1256
-#: htdocs/luci-static/resources/view/fchomo/node.js:1263
-#: htdocs/luci-static/resources/view/fchomo/node.js:1269
+#: htdocs/luci-static/resources/fchomo/listeners.js:1144
+#: htdocs/luci-static/resources/fchomo/listeners.js:1153
+#: htdocs/luci-static/resources/fchomo/listeners.js:1160
+#: htdocs/luci-static/resources/view/fchomo/node.js:1274
+#: htdocs/luci-static/resources/view/fchomo/node.js:1285
+#: htdocs/luci-static/resources/view/fchomo/node.js:1292
+#: htdocs/luci-static/resources/view/fchomo/node.js:1298
msgid "gRPC"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1326
+#: htdocs/luci-static/resources/view/fchomo/node.js:1355
msgid "gRPC User-Agent"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1331
+#: htdocs/luci-static/resources/view/fchomo/node.js:1360
msgid "gRPC ping interval"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1167
-#: htdocs/luci-static/resources/view/fchomo/node.js:1322
+#: htdocs/luci-static/resources/fchomo/listeners.js:1185
+#: htdocs/luci-static/resources/view/fchomo/node.js:1351
msgid "gRPC service name"
msgstr ""
@@ -3635,37 +3698,37 @@ msgstr ""
msgid "gVisor"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:760
+#: htdocs/luci-static/resources/view/fchomo/node.js:770
msgid "h2"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1438
+#: htdocs/luci-static/resources/view/fchomo/node.js:1467
msgid "h2mux"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:758
+#: htdocs/luci-static/resources/view/fchomo/node.js:768
msgid "h3"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:759
+#: htdocs/luci-static/resources/view/fchomo/node.js:769
msgid "h3-l4proxy"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:855
+#: htdocs/luci-static/resources/fchomo/listeners.js:873
msgid "least one keypair required"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:76
+#: htdocs/luci-static/resources/fchomo.js:77
msgid "metacubexd"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1011
-#: htdocs/luci-static/resources/view/fchomo/client.js:1267
-#: htdocs/luci-static/resources/view/fchomo/client.js:1359
-#: htdocs/luci-static/resources/view/fchomo/client.js:1501
-#: htdocs/luci-static/resources/view/fchomo/client.js:1732
-#: htdocs/luci-static/resources/view/fchomo/client.js:1788
-#: htdocs/luci-static/resources/view/fchomo/node.js:1644
+#: htdocs/luci-static/resources/view/fchomo/client.js:1030
+#: htdocs/luci-static/resources/view/fchomo/client.js:1327
+#: htdocs/luci-static/resources/view/fchomo/client.js:1422
+#: htdocs/luci-static/resources/view/fchomo/client.js:1564
+#: htdocs/luci-static/resources/view/fchomo/client.js:1798
+#: htdocs/luci-static/resources/view/fchomo/client.js:1854
+#: htdocs/luci-static/resources/view/fchomo/node.js:1673
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:247
msgid "mihomo config"
msgstr ""
@@ -3674,33 +3737,33 @@ msgstr ""
msgid "mlkem768x25519plus"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1511
-#: htdocs/luci-static/resources/view/fchomo/node.js:1864
+#: htdocs/luci-static/resources/view/fchomo/node.js:1540
+#: htdocs/luci-static/resources/view/fchomo/node.js:1898
msgid "mpTCP"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:54
+#: htdocs/luci-static/resources/fchomo.js:55
msgid "new_reno"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:828
+#: htdocs/luci-static/resources/view/fchomo/client.js:836
msgid "no-resolve"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1461
-#: htdocs/luci-static/resources/fchomo.js:1556
-#: htdocs/luci-static/resources/fchomo.js:1591
-#: htdocs/luci-static/resources/fchomo.js:1619
+#: htdocs/luci-static/resources/fchomo.js:1811
+#: htdocs/luci-static/resources/fchomo.js:1906
+#: htdocs/luci-static/resources/fchomo.js:1941
+#: htdocs/luci-static/resources/fchomo.js:1969
msgid "non-empty value"
msgstr ""
#: htdocs/luci-static/resources/fchomo.js:343
#: htdocs/luci-static/resources/fchomo.js:357
#: htdocs/luci-static/resources/fchomo.js:369
-#: htdocs/luci-static/resources/fchomo/listeners.js:561
-#: htdocs/luci-static/resources/view/fchomo/node.js:694
-#: htdocs/luci-static/resources/view/fchomo/node.js:714
-#: htdocs/luci-static/resources/view/fchomo/node.js:872
+#: htdocs/luci-static/resources/fchomo/listeners.js:558
+#: htdocs/luci-static/resources/view/fchomo/node.js:704
+#: htdocs/luci-static/resources/view/fchomo/node.js:724
+#: htdocs/luci-static/resources/view/fchomo/node.js:882
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:324
msgid "none"
msgstr ""
@@ -3709,62 +3772,64 @@ msgstr ""
msgid "not found"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1028
+#: htdocs/luci-static/resources/view/fchomo/client.js:1047
msgid "not included \",\""
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:228
-#: htdocs/luci-static/resources/fchomo/listeners.js:611
-#: htdocs/luci-static/resources/fchomo/listeners.js:612
+#: htdocs/luci-static/resources/fchomo.js:229
+#: htdocs/luci-static/resources/fchomo/listeners.js:619
+#: htdocs/luci-static/resources/fchomo/listeners.js:622
msgid "null"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:562
-#: htdocs/luci-static/resources/view/fchomo/node.js:873
+#: htdocs/luci-static/resources/fchomo/listeners.js:559
+#: htdocs/luci-static/resources/fchomo/listeners.js:567
+#: htdocs/luci-static/resources/view/fchomo/node.js:883
+#: htdocs/luci-static/resources/view/fchomo/node.js:894
msgid "obfs-simple"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:526
+#: htdocs/luci-static/resources/view/fchomo/node.js:536
msgid "only applies when %s is %s."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:524
+#: htdocs/luci-static/resources/view/fchomo/node.js:534
msgid "only applies when %s is not %s."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1844
+#: htdocs/luci-static/resources/view/fchomo/node.js:1878
msgid "override.proxy-name"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:715
+#: htdocs/luci-static/resources/view/fchomo/node.js:725
msgid "packet addr (v2ray-core v5+)"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1177
-#: htdocs/luci-static/resources/view/fchomo/node.js:1364
+#: htdocs/luci-static/resources/fchomo/listeners.js:1195
+#: htdocs/luci-static/resources/view/fchomo/node.js:1393
msgid "packet-up"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:439
-#: htdocs/luci-static/resources/view/fchomo/node.js:493
+#: htdocs/luci-static/resources/view/fchomo/node.js:503
msgid "poll"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:999
-#: htdocs/luci-static/resources/view/fchomo/node.js:1184
+#: htdocs/luci-static/resources/fchomo/listeners.js:1017
+#: htdocs/luci-static/resources/view/fchomo/node.js:1213
msgid "private key"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:78
+#: htdocs/luci-static/resources/fchomo.js:79
msgid "razord-meta"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1191
-#: htdocs/luci-static/resources/view/fchomo/client.js:1197
+#: htdocs/luci-static/resources/view/fchomo/client.js:1251
+#: htdocs/luci-static/resources/view/fchomo/client.js:1257
msgid "requires front-end adaptation using the API."
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:877
+#: htdocs/luci-static/resources/view/fchomo/node.js:887
msgid "restls"
msgstr ""
@@ -3772,39 +3837,41 @@ msgstr ""
msgid "rule-set"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:563
-#: htdocs/luci-static/resources/view/fchomo/node.js:876
+#: htdocs/luci-static/resources/fchomo/listeners.js:560
+#: htdocs/luci-static/resources/fchomo/listeners.js:568
+#: htdocs/luci-static/resources/view/fchomo/node.js:886
+#: htdocs/luci-static/resources/view/fchomo/node.js:895
msgid "shadow-tls"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1436
+#: htdocs/luci-static/resources/view/fchomo/node.js:1465
msgid "smux"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:438
-#: htdocs/luci-static/resources/view/fchomo/node.js:492
+#: htdocs/luci-static/resources/view/fchomo/node.js:502
msgid "split-stream"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:810
+#: htdocs/luci-static/resources/view/fchomo/client.js:818
msgid "src"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1175
-#: htdocs/luci-static/resources/view/fchomo/node.js:1362
+#: htdocs/luci-static/resources/fchomo/listeners.js:1193
+#: htdocs/luci-static/resources/view/fchomo/node.js:1391
msgid "stream-one"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1176
-#: htdocs/luci-static/resources/view/fchomo/node.js:1363
+#: htdocs/luci-static/resources/fchomo/listeners.js:1194
+#: htdocs/luci-static/resources/view/fchomo/node.js:1392
msgid "stream-up"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1192
+#: htdocs/luci-static/resources/fchomo/listeners.js:1210
msgid "stream-up server seconds"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:526
+#: htdocs/luci-static/resources/view/fchomo/node.js:536
msgid "stream/poll/auto"
msgstr ""
@@ -3824,80 +3891,77 @@ msgstr ""
msgid "unique identifier"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1628
+#: htdocs/luci-static/resources/fchomo.js:1978
msgid "unique value"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1880
+#: htdocs/luci-static/resources/view/fchomo/node.js:1914
msgid "up"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:464
-#: htdocs/luci-static/resources/fchomo/listeners.js:596
-#: htdocs/luci-static/resources/view/fchomo/node.js:542
-#: htdocs/luci-static/resources/view/fchomo/node.js:584
-#: htdocs/luci-static/resources/view/fchomo/node.js:904
-#: htdocs/luci-static/resources/view/fchomo/node.js:955
+#: htdocs/luci-static/resources/fchomo/listeners.js:604
+#: htdocs/luci-static/resources/view/fchomo/node.js:552
+#: htdocs/luci-static/resources/view/fchomo/node.js:594
+#: htdocs/luci-static/resources/view/fchomo/node.js:924
+#: htdocs/luci-static/resources/view/fchomo/node.js:983
msgid "v1"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:465
-#: htdocs/luci-static/resources/fchomo/listeners.js:597
-#: htdocs/luci-static/resources/view/fchomo/node.js:543
-#: htdocs/luci-static/resources/view/fchomo/node.js:905
-#: htdocs/luci-static/resources/view/fchomo/node.js:956
+#: htdocs/luci-static/resources/fchomo/listeners.js:605
+#: htdocs/luci-static/resources/view/fchomo/node.js:553
+#: htdocs/luci-static/resources/view/fchomo/node.js:925
+#: htdocs/luci-static/resources/view/fchomo/node.js:984
msgid "v2"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:466
-#: htdocs/luci-static/resources/fchomo/listeners.js:598
-#: htdocs/luci-static/resources/view/fchomo/node.js:544
-#: htdocs/luci-static/resources/view/fchomo/node.js:906
+#: htdocs/luci-static/resources/fchomo/listeners.js:606
+#: htdocs/luci-static/resources/view/fchomo/node.js:554
+#: htdocs/luci-static/resources/view/fchomo/node.js:926
msgid "v3"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:467
-#: htdocs/luci-static/resources/view/fchomo/node.js:545
+#: htdocs/luci-static/resources/fchomo/listeners.js:464
+#: htdocs/luci-static/resources/view/fchomo/node.js:555
msgid "v4"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:468
-#: htdocs/luci-static/resources/view/fchomo/node.js:546
+#: htdocs/luci-static/resources/fchomo/listeners.js:465
+#: htdocs/luci-static/resources/view/fchomo/node.js:556
msgid "v5"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1508
-#: htdocs/luci-static/resources/fchomo.js:1511
+#: htdocs/luci-static/resources/fchomo.js:1858
+#: htdocs/luci-static/resources/fchomo.js:1861
msgid "valid JSON format"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1144
+#: htdocs/luci-static/resources/view/fchomo/node.js:1173
msgid "valid SHA256 string with %d characters"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1533
-#: htdocs/luci-static/resources/fchomo.js:1536
+#: htdocs/luci-static/resources/fchomo.js:1883
+#: htdocs/luci-static/resources/fchomo.js:1886
msgid "valid URL"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1546
+#: htdocs/luci-static/resources/fchomo.js:1896
msgid "valid base64 key with %d characters"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1606
-#: htdocs/luci-static/resources/fchomo.js:1612
+#: htdocs/luci-static/resources/fchomo.js:1956
+#: htdocs/luci-static/resources/fchomo.js:1962
msgid "valid format: 2x, 2p, 4v"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1593
+#: htdocs/luci-static/resources/fchomo.js:1943
msgid "valid key length with %d characters"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1471
+#: htdocs/luci-static/resources/fchomo.js:1821
msgid "valid port value"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1521
+#: htdocs/luci-static/resources/fchomo.js:1871
msgid "valid uuid"
msgstr ""
@@ -3913,22 +3977,22 @@ msgstr ""
msgid "xchacha20-ietf-poly1305"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:77
+#: htdocs/luci-static/resources/fchomo.js:78
msgid "yacd-meta"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1437
+#: htdocs/luci-static/resources/view/fchomo/node.js:1466
msgid "yamux"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:75
+#: htdocs/luci-static/resources/fchomo.js:76
msgid "zashboard"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:695
+#: htdocs/luci-static/resources/view/fchomo/node.js:705
msgid "zero"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1289
+#: htdocs/luci-static/resources/fchomo.js:1639
msgid "🡇"
msgstr ""
diff --git a/luci-app-fchomo/po/zh_Hans/fchomo.po b/luci-app-fchomo/po/zh_Hans/fchomo.po
index 3d10be2c..004b066a 100644
--- a/luci-app-fchomo/po/zh_Hans/fchomo.po
+++ b/luci-app-fchomo/po/zh_Hans/fchomo.po
@@ -21,40 +21,62 @@ msgstr "%s 日志"
msgid "%s ports"
msgstr "%s 端口"
-#: htdocs/luci-static/resources/fchomo.js:617
-#: htdocs/luci-static/resources/fchomo.js:620
-#: htdocs/luci-static/resources/view/fchomo/client.js:316
+#: htdocs/luci-static/resources/fchomo.js:642
+#: htdocs/luci-static/resources/fchomo.js:645
+#: htdocs/luci-static/resources/view/fchomo/client.js:318
msgid "(Imported)"
msgstr "(已导入)"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1002
-#: htdocs/luci-static/resources/fchomo/listeners.js:1010
-#: htdocs/luci-static/resources/fchomo/listeners.js:1019
+#: htdocs/luci-static/resources/fchomo/listeners.js:1020
+#: htdocs/luci-static/resources/fchomo/listeners.js:1028
+#: htdocs/luci-static/resources/fchomo/listeners.js:1037
#: htdocs/luci-static/resources/view/fchomo/global.js:564
#: htdocs/luci-static/resources/view/fchomo/global.js:570
-#: htdocs/luci-static/resources/view/fchomo/node.js:1159
-#: htdocs/luci-static/resources/view/fchomo/node.js:1165
-#: htdocs/luci-static/resources/view/fchomo/node.js:1173
-#: htdocs/luci-static/resources/view/fchomo/node.js:1179
+#: htdocs/luci-static/resources/view/fchomo/node.js:1188
+#: htdocs/luci-static/resources/view/fchomo/node.js:1194
+#: htdocs/luci-static/resources/view/fchomo/node.js:1202
+#: htdocs/luci-static/resources/view/fchomo/node.js:1208
msgid "(mTLS)"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:869
-#: htdocs/luci-static/resources/view/fchomo/client.js:870
-#: htdocs/luci-static/resources/view/fchomo/client.js:1052
-#: htdocs/luci-static/resources/view/fchomo/client.js:1053
-#: htdocs/luci-static/resources/view/fchomo/client.js:1066
-#: htdocs/luci-static/resources/view/fchomo/client.js:1067
-#: htdocs/luci-static/resources/view/fchomo/client.js:1296
-#: htdocs/luci-static/resources/view/fchomo/node.js:268
-#: htdocs/luci-static/resources/view/fchomo/node.js:274
-#: htdocs/luci-static/resources/view/fchomo/node.js:2035
-#: htdocs/luci-static/resources/view/fchomo/node.js:2041
-#: htdocs/luci-static/resources/view/fchomo/node.js:2055
-#: htdocs/luci-static/resources/view/fchomo/node.js:2061
+#: htdocs/luci-static/resources/view/fchomo/client.js:688
+msgid "-- NETWORK --"
+msgstr ""
+
+#: htdocs/luci-static/resources/view/fchomo/client.js:1204
+msgid "-- PROXY-GROUP --"
+msgstr ""
+
+#: htdocs/luci-static/resources/view/fchomo/client.js:1139
+#: htdocs/luci-static/resources/view/fchomo/client.js:1206
+msgid "-- PROXY-NODE --"
+msgstr ""
+
+#: htdocs/luci-static/resources/fchomo.js:832
+#: htdocs/luci-static/resources/view/fchomo/client.js:877
+#: htdocs/luci-static/resources/view/fchomo/client.js:880
+#: htdocs/luci-static/resources/view/fchomo/client.js:1077
+#: htdocs/luci-static/resources/view/fchomo/client.js:1081
+#: htdocs/luci-static/resources/view/fchomo/client.js:1097
+#: htdocs/luci-static/resources/view/fchomo/client.js:1101
+#: htdocs/luci-static/resources/view/fchomo/client.js:1357
+#: htdocs/luci-static/resources/view/fchomo/node.js:270
+#: htdocs/luci-static/resources/view/fchomo/node.js:281
+#: htdocs/luci-static/resources/view/fchomo/node.js:2071
+#: htdocs/luci-static/resources/view/fchomo/node.js:2082
+#: htdocs/luci-static/resources/view/fchomo/node.js:2101
+#: htdocs/luci-static/resources/view/fchomo/node.js:2112
msgid "-- Please choose --"
msgstr "-- 请选择 --"
+#: htdocs/luci-static/resources/view/fchomo/client.js:691
+msgid "-- RULE-SET --"
+msgstr ""
+
+#: htdocs/luci-static/resources/fchomo.js:833
+msgid "-- custom --"
+msgstr ""
+
#: htdocs/luci-static/resources/fchomo.js:404
msgid "0-RTT reuse."
msgstr "0-RTT 重用。"
@@ -64,7 +86,7 @@ msgstr "0-RTT 重用。"
msgid "1-RTT only."
msgstr "仅限 1-RTT。"
-#: htdocs/luci-static/resources/fchomo.js:43
+#: htdocs/luci-static/resources/fchomo.js:44
msgid "163Music"
msgstr "网抑云"
@@ -80,20 +102,20 @@ msgstr ""
msgid "2022-blake3-chacha20-poly1305"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:698
+#: htdocs/luci-static/resources/view/fchomo/client.js:703
msgid "0 or 1 only."
msgstr "仅限 0 或 1。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:980
-#: htdocs/luci-static/resources/fchomo/listeners.js:995
-#: htdocs/luci-static/resources/fchomo/listeners.js:1020
-#: htdocs/luci-static/resources/view/fchomo/node.js:1166
-#: htdocs/luci-static/resources/view/fchomo/node.js:1180
+#: htdocs/luci-static/resources/fchomo/listeners.js:998
+#: htdocs/luci-static/resources/fchomo/listeners.js:1013
+#: htdocs/luci-static/resources/fchomo/listeners.js:1038
+#: htdocs/luci-static/resources/view/fchomo/node.js:1195
+#: htdocs/luci-static/resources/view/fchomo/node.js:1209
msgid "Save your configuration before uploading files!"
msgstr "上传文件前请先保存配置!"
#: htdocs/luci-static/resources/fchomo/listeners.js:286
-#: htdocs/luci-static/resources/view/fchomo/node.js:414
+#: htdocs/luci-static/resources/view/fchomo/node.js:424
msgid ""
"A base64 string is used to fine-tune network behavior.
Please refer to "
"the document"
@@ -153,9 +175,9 @@ msgstr "API 令牌"
#: htdocs/luci-static/resources/fchomo/listeners.js:371
#: htdocs/luci-static/resources/fchomo/listeners.js:373
#: htdocs/luci-static/resources/fchomo/listeners.js:374
-#: htdocs/luci-static/resources/view/fchomo/node.js:443
-#: htdocs/luci-static/resources/view/fchomo/node.js:445
-#: htdocs/luci-static/resources/view/fchomo/node.js:446
+#: htdocs/luci-static/resources/view/fchomo/node.js:453
+#: htdocs/luci-static/resources/view/fchomo/node.js:455
+#: htdocs/luci-static/resources/view/fchomo/node.js:456
msgid "ASCII data stream"
msgstr "ASCII 数据流"
@@ -168,15 +190,15 @@ msgstr "ASN 版本"
msgid "Access Control"
msgstr "访问控制"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1710
+#: htdocs/luci-static/resources/view/fchomo/client.js:1776
msgid "Add a Bootstrap DNS policy (Node)"
msgstr "新增 引导 DNS 策略 (节点)"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1762
+#: htdocs/luci-static/resources/view/fchomo/client.js:1828
msgid "Add a DNS policy"
msgstr "新增 DNS 策略"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1458
+#: htdocs/luci-static/resources/view/fchomo/client.js:1521
msgid "Add a DNS server"
msgstr "新增 DNS 服务器"
@@ -188,19 +210,19 @@ msgstr "新增 节点"
msgid "Add a inbound"
msgstr "新增 入站"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1555
+#: htdocs/luci-static/resources/view/fchomo/node.js:1584
msgid "Add a provider"
msgstr "新增 供应商"
-#: htdocs/luci-static/resources/view/fchomo/node.js:2011
+#: htdocs/luci-static/resources/view/fchomo/node.js:2045
msgid "Add a proxy chain"
msgstr "新增 代理链"
-#: htdocs/luci-static/resources/view/fchomo/client.js:950
+#: htdocs/luci-static/resources/view/fchomo/client.js:968
msgid "Add a proxy group"
msgstr "新增 代理组"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1211
+#: htdocs/luci-static/resources/view/fchomo/client.js:1271
msgid "Add a routing rule"
msgstr "新增 路由规则"
@@ -212,20 +234,20 @@ msgstr "新增 规则集"
msgid "Add a server"
msgstr "新增 服务器"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1330
+#: htdocs/luci-static/resources/view/fchomo/client.js:1393
msgid "Add a sub rule"
msgstr "新增 子规则"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1833
+#: htdocs/luci-static/resources/view/fchomo/node.js:1867
msgid "Add prefix"
msgstr "添加前缀"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1837
+#: htdocs/luci-static/resources/view/fchomo/node.js:1871
msgid "Add suffix"
msgstr "添加后缀"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1518
-#: htdocs/luci-static/resources/view/fchomo/client.js:1523
+#: htdocs/luci-static/resources/view/fchomo/client.js:1581
+#: htdocs/luci-static/resources/view/fchomo/client.js:1586
msgid "Address"
msgstr "地址"
@@ -236,7 +258,7 @@ msgid ""
msgstr ""
"在 1-RTT client/server hello 之后,以 100% 的概率随机填充 111-1111 字节。"
-#: htdocs/luci-static/resources/fchomo.js:62
+#: htdocs/luci-static/resources/fchomo.js:63
msgid "Aggressive"
msgstr "侵略性"
@@ -261,11 +283,11 @@ msgid ""
msgstr ""
"允许从私有网络访问。要从公共网站访问私有网络上的 API,则必须启用。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:961
+#: htdocs/luci-static/resources/fchomo/listeners.js:979
msgid "Allow insecure connections"
msgstr "允许不安全的连接"
-#: htdocs/luci-static/resources/view/fchomo/node.js:835
+#: htdocs/luci-static/resources/view/fchomo/node.js:845
msgid "Allowed IPs"
msgstr "允许的 IP"
@@ -277,13 +299,13 @@ msgstr "已是最新版本。"
msgid "Already in updating."
msgstr "已在更新中。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:543
-#: htdocs/luci-static/resources/view/fchomo/node.js:685
+#: htdocs/luci-static/resources/fchomo/listeners.js:540
+#: htdocs/luci-static/resources/view/fchomo/node.js:695
msgid "Alter ID"
msgstr "额外 ID"
-#: htdocs/luci-static/resources/fchomo.js:163
-#: htdocs/luci-static/resources/fchomo.js:199
+#: htdocs/luci-static/resources/fchomo.js:164
+#: htdocs/luci-static/resources/fchomo.js:200
msgid "AnyTLS"
msgstr ""
@@ -300,20 +322,20 @@ msgstr "作为 dnsmasq 的最优先上游"
msgid "As the TOP upstream of dnsmasq."
msgstr "作为 dnsmasq 的最优先上游。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:493
+#: htdocs/luci-static/resources/fchomo/listeners.js:490
msgid "Auth timeout"
msgstr "认证超时"
-#: htdocs/luci-static/resources/view/fchomo/node.js:707
+#: htdocs/luci-static/resources/view/fchomo/node.js:717
msgid "Authenticated length"
msgstr "认证长度"
#: htdocs/luci-static/resources/fchomo/listeners.js:440
-#: htdocs/luci-static/resources/fchomo/listeners.js:1174
+#: htdocs/luci-static/resources/fchomo/listeners.js:1192
#: htdocs/luci-static/resources/view/fchomo/global.js:423
-#: htdocs/luci-static/resources/view/fchomo/node.js:494
-#: htdocs/luci-static/resources/view/fchomo/node.js:518
-#: htdocs/luci-static/resources/view/fchomo/node.js:1361
+#: htdocs/luci-static/resources/view/fchomo/node.js:504
+#: htdocs/luci-static/resources/view/fchomo/node.js:528
+#: htdocs/luci-static/resources/view/fchomo/node.js:1390
msgid "Auto"
msgstr "自动"
@@ -329,20 +351,20 @@ msgstr "自动更新"
msgid "Auto update resources."
msgstr "自动更新资源文件。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:633
-#: htdocs/luci-static/resources/view/fchomo/node.js:933
+#: htdocs/luci-static/resources/fchomo/listeners.js:651
+#: htdocs/luci-static/resources/view/fchomo/node.js:953
msgid "BBR profile"
msgstr "BBR 配置文件"
-#: htdocs/luci-static/resources/fchomo.js:42
+#: htdocs/luci-static/resources/fchomo.js:43
msgid "Baidu"
msgstr "百度"
-#: htdocs/luci-static/resources/view/fchomo/node.js:722
+#: htdocs/luci-static/resources/view/fchomo/node.js:732
msgid "Base64 encoded ECDSA private key on the NIST P-256 curve."
msgstr "基于 NIST P-256 曲线的 Base64 编码 ECDSA 私钥。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:730
+#: htdocs/luci-static/resources/view/fchomo/node.js:740
msgid "Base64 encoded ECDSA public key on the NIST P-256 curve."
msgstr "基于 NIST P-256 曲线的 Base64 编码 ECDSA 公钥。"
@@ -364,13 +386,13 @@ msgid "Binary mrs"
msgstr "二进制 mrs"
#: htdocs/luci-static/resources/view/fchomo/global.js:758
-#: htdocs/luci-static/resources/view/fchomo/node.js:1522
-#: htdocs/luci-static/resources/view/fchomo/node.js:1909
+#: htdocs/luci-static/resources/view/fchomo/node.js:1551
+#: htdocs/luci-static/resources/view/fchomo/node.js:1943
msgid "Bind interface"
msgstr "绑定接口"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1523
-#: htdocs/luci-static/resources/view/fchomo/node.js:1910
+#: htdocs/luci-static/resources/view/fchomo/node.js:1552
+#: htdocs/luci-static/resources/view/fchomo/node.js:1944
msgid "Bind outbound interface."
msgstr "绑定出站接口。"
@@ -383,20 +405,20 @@ msgstr "绑定出站流量至指定接口。留空自动检测。"
msgid "Black list"
msgstr "黑名单"
-#: htdocs/luci-static/resources/view/fchomo/client.js:58
+#: htdocs/luci-static/resources/view/fchomo/client.js:60
msgid "Block DNS queries"
msgstr "封锁 DNS 请求"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1701
-#: htdocs/luci-static/resources/view/fchomo/client.js:1710
+#: htdocs/luci-static/resources/view/fchomo/client.js:1767
+#: htdocs/luci-static/resources/view/fchomo/client.js:1776
msgid "Bootstrap DNS policy (Node)"
msgstr "引导 DNS 策略 (节点)"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1403
+#: htdocs/luci-static/resources/view/fchomo/client.js:1466
msgid "Bootstrap DNS server"
msgstr "引导 DNS 服务器"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1410
+#: htdocs/luci-static/resources/view/fchomo/client.js:1473
msgid "Bootstrap DNS server (Node)"
msgstr "引导 DNS 服务器 (节点)"
@@ -416,10 +438,10 @@ msgstr "绕过 DSCP"
#: htdocs/luci-static/resources/fchomo/listeners.js:439
#: htdocs/luci-static/resources/fchomo/listeners.js:440
#: htdocs/luci-static/resources/fchomo/listeners.js:441
-#: htdocs/luci-static/resources/view/fchomo/node.js:492
-#: htdocs/luci-static/resources/view/fchomo/node.js:493
-#: htdocs/luci-static/resources/view/fchomo/node.js:494
-#: htdocs/luci-static/resources/view/fchomo/node.js:495
+#: htdocs/luci-static/resources/view/fchomo/node.js:502
+#: htdocs/luci-static/resources/view/fchomo/node.js:503
+#: htdocs/luci-static/resources/view/fchomo/node.js:504
+#: htdocs/luci-static/resources/view/fchomo/node.js:505
msgid "CDN support"
msgstr "CDN 支持"
@@ -435,21 +457,21 @@ msgstr "CORS 允许私有网络"
msgid "CORS allowed origins, * will be used if empty."
msgstr "CORS 允许的来源,留空则使用 *。"
-#: htdocs/luci-static/resources/fchomo.js:733
+#: htdocs/luci-static/resources/fchomo.js:758
msgid "Cancel"
msgstr "取消"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1138
+#: htdocs/luci-static/resources/view/fchomo/node.js:1167
msgid "Cert fingerprint"
msgstr "证书指纹"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1139
+#: htdocs/luci-static/resources/view/fchomo/node.js:1168
msgid ""
"Certificate fingerprint. Used to implement SSL Pinning and prevent MitM."
msgstr "证书指纹。用于实现 SSL证书固定 并防止 MitM。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:972
-#: htdocs/luci-static/resources/view/fchomo/node.js:1159
+#: htdocs/luci-static/resources/fchomo/listeners.js:990
+#: htdocs/luci-static/resources/view/fchomo/node.js:1188
msgid "Certificate path"
msgstr "证书路径"
@@ -462,6 +484,13 @@ msgstr "检查"
msgid "Check routerself NAT Behavior"
msgstr "检测路由器自身 NAT 行为"
+#: htdocs/luci-static/resources/view/fchomo/client.js:1921
+msgid ""
+"Check the response from the %s, only initiate query if the "
+"%s is satisfied."
+msgstr ""
+"检查来自%s的响应,仅当满足%s条件时才发起查询。"
+
#: htdocs/luci-static/resources/view/fchomo/global.js:86
msgid "Check update"
msgstr "检查更新"
@@ -480,14 +509,14 @@ msgstr "大陆域名列表版本"
#: htdocs/luci-static/resources/fchomo/listeners.js:255
#: htdocs/luci-static/resources/fchomo/listeners.js:354
-#: htdocs/luci-static/resources/view/fchomo/node.js:367
-#: htdocs/luci-static/resources/view/fchomo/node.js:426
-#: htdocs/luci-static/resources/view/fchomo/node.js:691
+#: htdocs/luci-static/resources/view/fchomo/node.js:377
+#: htdocs/luci-static/resources/view/fchomo/node.js:436
+#: htdocs/luci-static/resources/view/fchomo/node.js:701
msgid "Chipher"
msgstr "加密方法"
#: htdocs/luci-static/resources/fchomo/listeners.js:363
-#: htdocs/luci-static/resources/view/fchomo/node.js:435
+#: htdocs/luci-static/resources/view/fchomo/node.js:445
msgid "Chipher must be enabled if obfuscate downlink is disabled."
msgstr "如果下行链路混淆功能被禁用,则必须启用加密。"
@@ -503,25 +532,25 @@ msgstr ""
"点击此处下载"
"最新的初始包。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:731
-#: htdocs/luci-static/resources/fchomo/listeners.js:1011
+#: htdocs/luci-static/resources/fchomo/listeners.js:749
+#: htdocs/luci-static/resources/fchomo/listeners.js:1029
#: htdocs/luci-static/resources/view/fchomo/global.js:571
-#: htdocs/luci-static/resources/view/fchomo/node.js:997
-#: htdocs/luci-static/resources/view/fchomo/node.js:1160
-#: htdocs/luci-static/resources/view/fchomo/node.js:1174
+#: htdocs/luci-static/resources/view/fchomo/node.js:1025
+#: htdocs/luci-static/resources/view/fchomo/node.js:1189
+#: htdocs/luci-static/resources/view/fchomo/node.js:1203
#: root/usr/share/luci/menu.d/luci-app-fchomo.json:22
msgid "Client"
msgstr "客户端"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1010
+#: htdocs/luci-static/resources/fchomo/listeners.js:1028
msgid "Client Auth Certificate path"
msgstr "客户端认证证书路径"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1002
+#: htdocs/luci-static/resources/fchomo/listeners.js:1020
msgid "Client Auth type"
msgstr "客户端认证类型"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1205
+#: htdocs/luci-static/resources/view/fchomo/node.js:1234
msgid "Client fingerprint"
msgstr "客户端指纹"
@@ -542,16 +571,16 @@ msgstr "收集数据中..."
msgid "Common ports (bypass P2P traffic)"
msgstr "常用端口(绕过 P2P 流量)"
-#: htdocs/luci-static/resources/fchomo.js:1405
+#: htdocs/luci-static/resources/fchomo.js:1755
msgid "Complete"
msgstr "完成"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1853
+#: htdocs/luci-static/resources/view/fchomo/node.js:1887
msgid "Configuration Items"
msgstr "配置项"
-#: htdocs/luci-static/resources/fchomo/listeners.js:625
-#: htdocs/luci-static/resources/view/fchomo/node.js:924
+#: htdocs/luci-static/resources/fchomo/listeners.js:643
+#: htdocs/luci-static/resources/view/fchomo/node.js:944
msgid "Congestion controller"
msgstr "拥塞控制器"
@@ -559,27 +588,27 @@ msgstr "拥塞控制器"
msgid "Connection check"
msgstr "连接检查"
-#: htdocs/luci-static/resources/view/fchomo/node.js:551
+#: htdocs/luci-static/resources/view/fchomo/node.js:561
msgid "Connection reuse"
msgstr "连接复用"
-#: htdocs/luci-static/resources/fchomo.js:61
+#: htdocs/luci-static/resources/fchomo.js:62
msgid "Conservative"
msgstr "保守"
-#: htdocs/luci-static/resources/fchomo.js:602
+#: htdocs/luci-static/resources/fchomo.js:627
msgid "Content copied to clipboard!"
msgstr "内容已复制到剪贴板!"
-#: htdocs/luci-static/resources/view/fchomo/client.js:679
-#: htdocs/luci-static/resources/view/fchomo/node.js:1698
-#: htdocs/luci-static/resources/view/fchomo/node.js:1724
+#: htdocs/luci-static/resources/view/fchomo/client.js:681
+#: htdocs/luci-static/resources/view/fchomo/node.js:1727
+#: htdocs/luci-static/resources/view/fchomo/node.js:1753
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:348
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:374
msgid "Content will not be verified, Please make sure you enter it correctly."
msgstr "内容将不会被验证,请确保输入正确。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1697
+#: htdocs/luci-static/resources/view/fchomo/node.js:1726
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:347
msgid "Contents"
msgstr "内容"
@@ -588,7 +617,7 @@ msgstr "内容"
msgid "Contents have been saved."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:604
+#: htdocs/luci-static/resources/fchomo.js:629
msgid "Copy"
msgstr "复制"
@@ -604,8 +633,8 @@ msgstr "Cron 表达式"
msgid "Custom Direct List"
msgstr "自定义直连列表"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1824
-#: htdocs/luci-static/resources/view/fchomo/ruleset.js:415
+#: htdocs/luci-static/resources/view/fchomo/node.js:1858
+#: htdocs/luci-static/resources/view/fchomo/ruleset.js:420
msgid "Custom HTTP header."
msgstr "自定义 HTTP header。"
@@ -614,7 +643,7 @@ msgid "Custom Proxy List"
msgstr "自定义代理列表"
#: htdocs/luci-static/resources/fchomo/listeners.js:378
-#: htdocs/luci-static/resources/view/fchomo/node.js:450
+#: htdocs/luci-static/resources/view/fchomo/node.js:460
msgid "Custom byte layout"
msgstr "自定义字节布局"
@@ -623,12 +652,12 @@ msgid ""
"Custom internal hosts. Support yaml or json format."
msgstr "自定义内部 hosts。支持 yaml 或 json 格式。"
-#: htdocs/luci-static/resources/fchomo.js:188
+#: htdocs/luci-static/resources/fchomo.js:189
msgid "DIRECT"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1753
-#: htdocs/luci-static/resources/view/fchomo/client.js:1762
+#: htdocs/luci-static/resources/view/fchomo/client.js:1819
+#: htdocs/luci-static/resources/view/fchomo/client.js:1828
msgid "DNS policy"
msgstr "DNS 策略"
@@ -636,15 +665,15 @@ msgstr "DNS 策略"
msgid "DNS port"
msgstr " DNS 端口"
-#: htdocs/luci-static/resources/view/fchomo/client.js:882
-#: htdocs/luci-static/resources/view/fchomo/client.js:1449
-#: htdocs/luci-static/resources/view/fchomo/client.js:1458
-#: htdocs/luci-static/resources/view/fchomo/node.js:782
-#: htdocs/luci-static/resources/view/fchomo/node.js:865
+#: htdocs/luci-static/resources/view/fchomo/client.js:895
+#: htdocs/luci-static/resources/view/fchomo/client.js:1512
+#: htdocs/luci-static/resources/view/fchomo/client.js:1521
+#: htdocs/luci-static/resources/view/fchomo/node.js:792
+#: htdocs/luci-static/resources/view/fchomo/node.js:875
msgid "DNS server"
msgstr "DNS 服务器"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1386
+#: htdocs/luci-static/resources/view/fchomo/client.js:1449
msgid "DNS settings"
msgstr "DNS 设置"
@@ -656,31 +685,37 @@ msgstr "DSCP 列表"
msgid "Dashboard version"
msgstr "面板版本"
-#: htdocs/luci-static/resources/fchomo.js:93
+#: htdocs/luci-static/resources/fchomo.js:94
msgid "Debug"
msgstr "调试"
-#: htdocs/luci-static/resources/view/fchomo/client.js:56
+#: htdocs/luci-static/resources/view/fchomo/client.js:58
msgid "Default DNS (issued by WAN)"
msgstr "默认 DNS(由 WAN 下发)"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1424
+#: htdocs/luci-static/resources/view/fchomo/client.js:1487
+#: htdocs/luci-static/resources/view/fchomo/client.js:1922
+#: htdocs/luci-static/resources/view/fchomo/client.js:1925
msgid "Default DNS server"
msgstr "默认 DNS 服务器"
+#: htdocs/luci-static/resources/view/fchomo/client.js:1197
+msgid "Default selected"
+msgstr "默认选中"
+
#: htdocs/luci-static/resources/view/fchomo/node.js:22
msgid "Derive from priv-key"
msgstr "从私钥派生"
-#: htdocs/luci-static/resources/view/fchomo/node.js:836
+#: htdocs/luci-static/resources/view/fchomo/node.js:846
msgid "Destination addresses allowed to be forwarded via Wireguard."
msgstr "允许通过 WireGuard 转发的目的地址"
-#: htdocs/luci-static/resources/view/fchomo/node.js:2034
+#: htdocs/luci-static/resources/view/fchomo/node.js:2068
msgid "Destination provider"
msgstr "落地供应商"
-#: htdocs/luci-static/resources/view/fchomo/node.js:2040
+#: htdocs/luci-static/resources/view/fchomo/node.js:2079
msgid "Destination proxy node"
msgstr "落地代理节点"
@@ -688,8 +723,8 @@ msgstr "落地代理节点"
msgid "Dial fields"
msgstr "拨号字段"
-#: htdocs/luci-static/resources/view/fchomo/node.js:2047
-#: htdocs/luci-static/resources/view/fchomo/node.js:2067
+#: htdocs/luci-static/resources/view/fchomo/node.js:2091
+#: htdocs/luci-static/resources/view/fchomo/node.js:2121
msgid "Different chain head/tail"
msgstr "不同的链头/链尾"
@@ -711,7 +746,7 @@ msgstr "直连 MAC 地址"
#: htdocs/luci-static/resources/fchomo/listeners.js:194
#: htdocs/luci-static/resources/view/fchomo/global.js:424
-#: htdocs/luci-static/resources/view/fchomo/node.js:322
+#: htdocs/luci-static/resources/view/fchomo/node.js:332
msgid "Disable"
msgstr "禁用"
@@ -727,11 +762,11 @@ msgstr "禁用 quic-go 的 通用分段卸载(GSO)"
msgid "Disable ICMP Forwarding"
msgstr "禁用 ICMP 转发"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1082
+#: htdocs/luci-static/resources/view/fchomo/node.js:1110
msgid "Disable SNI"
msgstr "禁用 SNI"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1103
+#: htdocs/luci-static/resources/view/fchomo/client.js:1146
msgid "Disable UDP"
msgstr "禁用 UDP"
@@ -739,7 +774,7 @@ msgstr "禁用 UDP"
msgid "Disable safe path check"
msgstr "禁用安全路径检查"
-#: htdocs/luci-static/resources/view/fchomo/client.js:829
+#: htdocs/luci-static/resources/view/fchomo/client.js:837
msgid ""
"Do not resolve the domain connection to IP for this match.Only works "
"for pure domain inbound connections without DNS resolution. e.g., socks5h"
@@ -747,62 +782,62 @@ msgstr ""
"不要将域名连接解析为 IP 以进行此次匹配。仅对未经 DNS 解析的纯域名入站连"
"接有效。例如,socks5h"
-#: htdocs/luci-static/resources/view/fchomo/client.js:852
-#: htdocs/luci-static/resources/view/fchomo/client.js:857
-#: htdocs/luci-static/resources/view/fchomo/client.js:1836
-#: htdocs/luci-static/resources/view/fchomo/client.js:1843
-#: htdocs/luci-static/resources/view/fchomo/client.js:1845
+#: htdocs/luci-static/resources/view/fchomo/client.js:860
+#: htdocs/luci-static/resources/view/fchomo/client.js:865
+#: htdocs/luci-static/resources/view/fchomo/client.js:1902
+#: htdocs/luci-static/resources/view/fchomo/client.js:1909
+#: htdocs/luci-static/resources/view/fchomo/client.js:1911
msgid "Domain"
msgstr "域名"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1083
+#: htdocs/luci-static/resources/view/fchomo/node.js:1111
msgid "Donot send server name in ClientHello."
msgstr "不要在 ClientHello 中发送服务器名称。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1598
-#: htdocs/luci-static/resources/view/fchomo/node.js:1152
-#: htdocs/luci-static/resources/view/fchomo/node.js:1893
+#: htdocs/luci-static/resources/view/fchomo/client.js:1664
+#: htdocs/luci-static/resources/view/fchomo/node.js:1181
+#: htdocs/luci-static/resources/view/fchomo/node.js:1927
msgid "Donot verifying server certificate."
msgstr "不验证服务器证书。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1499
+#: htdocs/luci-static/resources/view/fchomo/node.js:1528
msgid "Download bandwidth"
msgstr "下载带宽"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1500
+#: htdocs/luci-static/resources/view/fchomo/node.js:1529
msgid "Download bandwidth in Mbps."
msgstr "下载带宽(单位:Mbps)。"
-#: htdocs/luci-static/resources/fchomo.js:1284
+#: htdocs/luci-static/resources/fchomo.js:1634
msgid "Download failed: %s"
msgstr "下载失败: %s"
-#: htdocs/luci-static/resources/fchomo.js:1282
+#: htdocs/luci-static/resources/fchomo.js:1632
msgid "Download successful."
msgstr "下载成功。"
-#: htdocs/luci-static/resources/fchomo.js:173
+#: htdocs/luci-static/resources/fchomo.js:174
msgid "Dual stack"
msgstr "双栈"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1199
+#: htdocs/luci-static/resources/view/fchomo/node.js:1228
msgid "ECH HTTPS record query servername"
msgstr "ECH HTTPS 记录查询域名"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1068
-#: htdocs/luci-static/resources/view/fchomo/node.js:1193
+#: htdocs/luci-static/resources/fchomo/listeners.js:1086
+#: htdocs/luci-static/resources/view/fchomo/node.js:1222
msgid "ECH config"
msgstr "ECH 配置"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1027
+#: htdocs/luci-static/resources/fchomo/listeners.js:1045
msgid "ECH key"
msgstr "ECH 密钥"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1632
+#: htdocs/luci-static/resources/view/fchomo/client.js:1698
msgid "ECS override"
msgstr "强制覆盖 ECS"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1616
+#: htdocs/luci-static/resources/view/fchomo/client.js:1682
msgid "EDNS Client Subnet"
msgstr "EDNS 客户端子网"
@@ -810,11 +845,11 @@ msgstr "EDNS 客户端子网"
msgid "ETag support"
msgstr "ETag 支持"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1339
+#: htdocs/luci-static/resources/view/fchomo/node.js:1368
msgid "Early Data first packet length limit."
msgstr "前置数据长度阈值"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1345
+#: htdocs/luci-static/resources/view/fchomo/node.js:1374
msgid "Early Data header name"
msgstr "前置数据标头"
@@ -830,7 +865,7 @@ msgstr "编辑出站"
msgid "Edit ruleset"
msgstr "编辑规则集"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1695
+#: htdocs/luci-static/resources/view/fchomo/node.js:1724
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:345
msgid "Editer"
msgstr "编辑器"
@@ -839,30 +874,30 @@ msgstr "编辑器"
msgid "Eliminate encryption header characteristics"
msgstr "消除加密头特征"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1094
+#: htdocs/luci-static/resources/view/fchomo/client.js:1131
msgid "Empty fallback"
msgstr "为空时回退"
#: htdocs/luci-static/resources/fchomo/listeners.js:133
-#: htdocs/luci-static/resources/view/fchomo/client.js:940
-#: htdocs/luci-static/resources/view/fchomo/client.js:1034
-#: htdocs/luci-static/resources/view/fchomo/client.js:1280
-#: htdocs/luci-static/resources/view/fchomo/client.js:1372
-#: htdocs/luci-static/resources/view/fchomo/client.js:1514
-#: htdocs/luci-static/resources/view/fchomo/client.js:1745
-#: htdocs/luci-static/resources/view/fchomo/client.js:1801
+#: htdocs/luci-static/resources/view/fchomo/client.js:958
+#: htdocs/luci-static/resources/view/fchomo/client.js:1053
+#: htdocs/luci-static/resources/view/fchomo/client.js:1340
+#: htdocs/luci-static/resources/view/fchomo/client.js:1435
+#: htdocs/luci-static/resources/view/fchomo/client.js:1577
+#: htdocs/luci-static/resources/view/fchomo/client.js:1811
+#: htdocs/luci-static/resources/view/fchomo/client.js:1867
#: htdocs/luci-static/resources/view/fchomo/global.js:422
#: htdocs/luci-static/resources/view/fchomo/global.js:704
#: htdocs/luci-static/resources/view/fchomo/node.js:246
-#: htdocs/luci-static/resources/view/fchomo/node.js:1668
-#: htdocs/luci-static/resources/view/fchomo/node.js:1932
-#: htdocs/luci-static/resources/view/fchomo/node.js:2021
+#: htdocs/luci-static/resources/view/fchomo/node.js:1697
+#: htdocs/luci-static/resources/view/fchomo/node.js:1966
+#: htdocs/luci-static/resources/view/fchomo/node.js:2055
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:272
#: htdocs/luci-static/resources/view/fchomo/server.js:49
msgid "Enable"
msgstr "启用"
-#: htdocs/luci-static/resources/view/fchomo/node.js:600
+#: htdocs/luci-static/resources/view/fchomo/node.js:610
msgid ""
"Enable 0-RTT QUIC connection handshake on the client side. This is not "
"impacting much on the performance, as the protocol is fully multiplexed.
强烈建议禁用此功能,因为它容易受到重放攻击。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:599
+#: htdocs/luci-static/resources/view/fchomo/node.js:609
msgid "Enable 0-RTT handshake"
msgstr "启用 0-RTT 握手"
@@ -883,57 +918,57 @@ msgstr ""
"为出站连接启用 IP4P 转换"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1187
+#: htdocs/luci-static/resources/view/fchomo/node.js:1216
msgid "Enable ECH"
msgstr "启用 ECH"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1487
+#: htdocs/luci-static/resources/view/fchomo/node.js:1516
msgid "Enable TCP Brutal"
msgstr "启用 TCP Brutal"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1488
+#: htdocs/luci-static/resources/view/fchomo/node.js:1517
msgid "Enable TCP Brutal congestion control algorithm"
msgstr "启用 TCP Brutal 拥塞控制算法。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:594
+#: htdocs/luci-static/resources/view/fchomo/node.js:604
msgid "Enable fast open"
msgstr "启用 Fast open"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1476
+#: htdocs/luci-static/resources/view/fchomo/node.js:1505
msgid "Enable multiplexing only for TCP."
msgstr "仅为 TCP 启用多路复用。"
#: htdocs/luci-static/resources/fchomo/listeners.js:424
-#: htdocs/luci-static/resources/view/fchomo/node.js:478
+#: htdocs/luci-static/resources/view/fchomo/node.js:488
msgid "Enable obfuscate for downlink"
msgstr "启用下行链路混淆"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1470
+#: htdocs/luci-static/resources/view/fchomo/node.js:1499
msgid "Enable padding"
msgstr "启用填充"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1481
+#: htdocs/luci-static/resources/view/fchomo/node.js:1510
msgid "Enable statistic"
msgstr "启用统计"
-#: htdocs/luci-static/resources/view/fchomo/node.js:949
-#: htdocs/luci-static/resources/view/fchomo/node.js:1875
+#: htdocs/luci-static/resources/view/fchomo/node.js:977
+#: htdocs/luci-static/resources/view/fchomo/node.js:1909
msgid ""
"Enable the SUoT protocol, requires server support. Conflict with Multiplex."
msgstr "启用 SUoT 协议,需要服务端支持。与多路复用冲突。"
#: htdocs/luci-static/resources/fchomo/listeners.js:201
-#: htdocs/luci-static/resources/view/fchomo/node.js:329
+#: htdocs/luci-static/resources/view/fchomo/node.js:339
msgid ""
"Enabling obfuscation will make the server incompatible with standard QUIC "
"connections, losing the ability to masquerade with HTTP/3."
msgstr "启用混淆将使服务器与标准的 QUIC 连接不兼容,失去 HTTP/3 伪装的能力。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:694
+#: htdocs/luci-static/resources/fchomo/listeners.js:712
msgid "Encryption method"
msgstr "加密方法"
-#: htdocs/luci-static/resources/view/fchomo/node.js:729
+#: htdocs/luci-static/resources/view/fchomo/node.js:739
msgid "Endpoint pubkic key"
msgstr "端点公钥"
@@ -941,26 +976,26 @@ msgstr "端点公钥"
msgid "Endpoint-Independent NAT"
msgstr "端点独立 NAT"
-#: htdocs/luci-static/resources/view/fchomo/client.js:731
-#: htdocs/luci-static/resources/view/fchomo/client.js:874
+#: htdocs/luci-static/resources/view/fchomo/client.js:736
+#: htdocs/luci-static/resources/view/fchomo/client.js:887
msgid "Entry"
msgstr "条目"
-#: htdocs/luci-static/resources/fchomo.js:90
+#: htdocs/luci-static/resources/fchomo.js:91
msgid "Error"
msgstr "错误"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1147
+#: htdocs/luci-static/resources/view/fchomo/client.js:1190
msgid ""
"Exceeding this triggers a forced health check. 5 will be used "
"if empty."
msgstr "超过此限制将会触发强制健康检查。留空则使用 5。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1990
+#: htdocs/luci-static/resources/view/fchomo/node.js:2024
msgid "Exclude matched node types."
msgstr "排除匹配的节点类型。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1184
+#: htdocs/luci-static/resources/view/fchomo/client.js:1244
msgid ""
"Exclude matched node types. Available types see here."
@@ -968,8 +1003,8 @@ msgstr ""
"排除匹配的节点类型。可用类型请参见此处。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1179
-#: htdocs/luci-static/resources/view/fchomo/node.js:1983
+#: htdocs/luci-static/resources/view/fchomo/client.js:1239
+#: htdocs/luci-static/resources/view/fchomo/node.js:2017
msgid "Exclude nodes that meet keywords or regexps."
msgstr "排除匹配关键词或表达式的节点。"
@@ -977,139 +1012,143 @@ msgstr "排除匹配关键词或表达式的节点。"
msgid "Expand/Collapse result"
msgstr "展开/收起 结果"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1139
-#: htdocs/luci-static/resources/view/fchomo/node.js:1968
+#: htdocs/luci-static/resources/view/fchomo/client.js:1182
+#: htdocs/luci-static/resources/view/fchomo/node.js:2002
msgid "Expected HTTP code. 204 will be used if empty."
msgstr "预期的 HTTP code。留空则使用 204。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1141
-#: htdocs/luci-static/resources/view/fchomo/node.js:1970
+#: htdocs/luci-static/resources/view/fchomo/client.js:1184
+#: htdocs/luci-static/resources/view/fchomo/node.js:2004
msgid "Expected status"
msgstr "预期状态"
#: htdocs/luci-static/resources/fchomo.js:452
#: htdocs/luci-static/resources/fchomo.js:455
#: htdocs/luci-static/resources/fchomo.js:458
-#: htdocs/luci-static/resources/fchomo.js:1422
-#: htdocs/luci-static/resources/fchomo.js:1430
-#: htdocs/luci-static/resources/fchomo.js:1438
-#: htdocs/luci-static/resources/fchomo.js:1461
-#: htdocs/luci-static/resources/fchomo.js:1464
-#: htdocs/luci-static/resources/fchomo.js:1471
-#: htdocs/luci-static/resources/fchomo.js:1487
-#: htdocs/luci-static/resources/fchomo.js:1496
-#: htdocs/luci-static/resources/fchomo.js:1508
-#: htdocs/luci-static/resources/fchomo.js:1511
-#: htdocs/luci-static/resources/fchomo.js:1521
-#: htdocs/luci-static/resources/fchomo.js:1533
-#: htdocs/luci-static/resources/fchomo.js:1536
-#: htdocs/luci-static/resources/fchomo.js:1546
-#: htdocs/luci-static/resources/fchomo.js:1556
-#: htdocs/luci-static/resources/fchomo.js:1591
-#: htdocs/luci-static/resources/fchomo.js:1593
-#: htdocs/luci-static/resources/fchomo.js:1606
-#: htdocs/luci-static/resources/fchomo.js:1612
-#: htdocs/luci-static/resources/fchomo.js:1619
-#: htdocs/luci-static/resources/fchomo.js:1628
+#: htdocs/luci-static/resources/fchomo.js:1772
+#: htdocs/luci-static/resources/fchomo.js:1780
+#: htdocs/luci-static/resources/fchomo.js:1788
+#: htdocs/luci-static/resources/fchomo.js:1811
+#: htdocs/luci-static/resources/fchomo.js:1814
+#: htdocs/luci-static/resources/fchomo.js:1821
+#: htdocs/luci-static/resources/fchomo.js:1837
+#: htdocs/luci-static/resources/fchomo.js:1846
+#: htdocs/luci-static/resources/fchomo.js:1858
+#: htdocs/luci-static/resources/fchomo.js:1861
+#: htdocs/luci-static/resources/fchomo.js:1871
+#: htdocs/luci-static/resources/fchomo.js:1883
+#: htdocs/luci-static/resources/fchomo.js:1886
+#: htdocs/luci-static/resources/fchomo.js:1896
+#: htdocs/luci-static/resources/fchomo.js:1906
+#: htdocs/luci-static/resources/fchomo.js:1941
+#: htdocs/luci-static/resources/fchomo.js:1943
+#: htdocs/luci-static/resources/fchomo.js:1956
+#: htdocs/luci-static/resources/fchomo.js:1962
+#: htdocs/luci-static/resources/fchomo.js:1969
+#: htdocs/luci-static/resources/fchomo.js:1978
#: htdocs/luci-static/resources/fchomo/listeners.js:363
#: htdocs/luci-static/resources/fchomo/listeners.js:410
-#: htdocs/luci-static/resources/fchomo/listeners.js:723
-#: htdocs/luci-static/resources/fchomo/listeners.js:754
-#: htdocs/luci-static/resources/fchomo/listeners.js:855
-#: htdocs/luci-static/resources/view/fchomo/client.js:69
-#: htdocs/luci-static/resources/view/fchomo/client.js:1028
-#: htdocs/luci-static/resources/view/fchomo/client.js:1529
+#: htdocs/luci-static/resources/fchomo/listeners.js:741
+#: htdocs/luci-static/resources/fchomo/listeners.js:772
+#: htdocs/luci-static/resources/fchomo/listeners.js:873
+#: htdocs/luci-static/resources/view/fchomo/client.js:71
+#: htdocs/luci-static/resources/view/fchomo/client.js:1047
+#: htdocs/luci-static/resources/view/fchomo/client.js:1592
#: htdocs/luci-static/resources/view/fchomo/global.js:904
-#: htdocs/luci-static/resources/view/fchomo/node.js:435
-#: htdocs/luci-static/resources/view/fchomo/node.js:471
-#: htdocs/luci-static/resources/view/fchomo/node.js:524
-#: htdocs/luci-static/resources/view/fchomo/node.js:526
-#: htdocs/luci-static/resources/view/fchomo/node.js:1020
-#: htdocs/luci-static/resources/view/fchomo/node.js:1144
-#: htdocs/luci-static/resources/view/fchomo/node.js:2047
-#: htdocs/luci-static/resources/view/fchomo/node.js:2067
+#: htdocs/luci-static/resources/view/fchomo/node.js:445
+#: htdocs/luci-static/resources/view/fchomo/node.js:481
+#: htdocs/luci-static/resources/view/fchomo/node.js:534
+#: htdocs/luci-static/resources/view/fchomo/node.js:536
+#: htdocs/luci-static/resources/view/fchomo/node.js:1048
+#: htdocs/luci-static/resources/view/fchomo/node.js:1173
+#: htdocs/luci-static/resources/view/fchomo/node.js:2091
+#: htdocs/luci-static/resources/view/fchomo/node.js:2121
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:300
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:314
msgid "Expecting: %s"
msgstr "请输入:%s"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1135
-#: htdocs/luci-static/resources/fchomo/listeners.js:1142
-#: htdocs/luci-static/resources/view/fchomo/node.js:1254
-#: htdocs/luci-static/resources/view/fchomo/node.js:1261
-#: htdocs/luci-static/resources/view/fchomo/node.js:1269
+#: htdocs/luci-static/resources/fchomo/listeners.js:567
+#: htdocs/luci-static/resources/fchomo/listeners.js:1153
+#: htdocs/luci-static/resources/fchomo/listeners.js:1160
+#: htdocs/luci-static/resources/view/fchomo/node.js:894
+#: htdocs/luci-static/resources/view/fchomo/node.js:1283
+#: htdocs/luci-static/resources/view/fchomo/node.js:1290
+#: htdocs/luci-static/resources/view/fchomo/node.js:1298
msgid "Expecting: only support %s."
-msgstr "请输入:仅支援 %s."
+msgstr "请输入:仅支援 %s。"
#: htdocs/luci-static/resources/view/fchomo/global.js:723
msgid "Experimental"
msgstr "实验性"
-#: htdocs/luci-static/resources/view/fchomo/client.js:551
-#: htdocs/luci-static/resources/view/fchomo/client.js:564
-#: htdocs/luci-static/resources/view/fchomo/client.js:572
-#: htdocs/luci-static/resources/view/fchomo/client.js:579
-#: htdocs/luci-static/resources/view/fchomo/client.js:589
-#: htdocs/luci-static/resources/view/fchomo/client.js:596
-#: htdocs/luci-static/resources/view/fchomo/client.js:604
-#: htdocs/luci-static/resources/view/fchomo/client.js:611
-#: htdocs/luci-static/resources/view/fchomo/client.js:678
+#: htdocs/luci-static/resources/view/fchomo/client.js:553
+#: htdocs/luci-static/resources/view/fchomo/client.js:566
+#: htdocs/luci-static/resources/view/fchomo/client.js:574
+#: htdocs/luci-static/resources/view/fchomo/client.js:581
+#: htdocs/luci-static/resources/view/fchomo/client.js:591
+#: htdocs/luci-static/resources/view/fchomo/client.js:598
+#: htdocs/luci-static/resources/view/fchomo/client.js:606
+#: htdocs/luci-static/resources/view/fchomo/client.js:613
+#: htdocs/luci-static/resources/view/fchomo/client.js:680
msgid "Factor"
msgstr "条件"
-#: htdocs/luci-static/resources/fchomo.js:1363
+#: htdocs/luci-static/resources/fchomo.js:1713
msgid "Failed to execute \"/etc/init.d/fchomo %s %s\" reason: %s"
msgstr "无法执行 \"/etc/init.d/fchomo %s %s\" 原因: %s"
-#: htdocs/luci-static/resources/fchomo.js:1316
+#: htdocs/luci-static/resources/fchomo.js:1666
msgid "Failed to generate %s, error: %s."
msgstr "生成 %s 失败,错误:%s。"
-#: htdocs/luci-static/resources/fchomo.js:1728
+#: htdocs/luci-static/resources/fchomo.js:2078
msgid "Failed to upload %s, error: %s."
msgstr "上传 %s 失败,错误:%s。"
-#: htdocs/luci-static/resources/fchomo.js:1747
+#: htdocs/luci-static/resources/fchomo.js:2097
msgid "Failed to upload, error: %s."
msgstr "上传失败,错误:%s。"
-#: htdocs/luci-static/resources/fchomo.js:241
+#: htdocs/luci-static/resources/fchomo.js:242
#: htdocs/luci-static/resources/fchomo/listeners.js:449
msgid "Fallback"
msgstr "自动回退"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1418
-#: htdocs/luci-static/resources/view/fchomo/client.js:1431
+#: htdocs/luci-static/resources/view/fchomo/client.js:1481
+#: htdocs/luci-static/resources/view/fchomo/client.js:1494
+#: htdocs/luci-static/resources/view/fchomo/client.js:1925
msgid "Fallback DNS server"
msgstr "後備 DNS 服务器"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1815
+#: htdocs/luci-static/resources/view/fchomo/client.js:1881
+#: htdocs/luci-static/resources/view/fchomo/client.js:1922
msgid "Fallback filter"
msgstr "後備过滤器"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1174
-#: htdocs/luci-static/resources/view/fchomo/node.js:1977
+#: htdocs/luci-static/resources/view/fchomo/client.js:1234
+#: htdocs/luci-static/resources/view/fchomo/node.js:2011
msgid "Filter nodes that meet keywords or regexps."
msgstr "过滤匹配关键字或表达式的节点。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1682
+#: htdocs/luci-static/resources/view/fchomo/client.js:1748
msgid "Filter record type:"
msgstr "过滤记录类型:"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1650
-#: htdocs/luci-static/resources/view/fchomo/client.js:1666
+#: htdocs/luci-static/resources/view/fchomo/client.js:1716
+#: htdocs/luci-static/resources/view/fchomo/client.js:1732
msgid "Filter record: %s"
msgstr "过滤 %s 记录"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1417
+#: htdocs/luci-static/resources/view/fchomo/client.js:1480
msgid "Final DNS server"
msgstr "兜底 DNS 服务器"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1419
+#: htdocs/luci-static/resources/view/fchomo/client.js:1482
msgid "Final DNS server (For non-poisoned domains)"
msgstr "兜底 DNS 服务器 (用于未被投毒污染的域名)"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1421
+#: htdocs/luci-static/resources/view/fchomo/client.js:1484
msgid "Final DNS server (For poisoned domains)"
msgstr "兜底 DNS 服务器 (用于已被投毒污染的域名)"
@@ -1117,12 +1156,12 @@ msgstr "兜底 DNS 服务器 (用于已被投毒污染的域名)"
msgid "Firewall"
msgstr "防火墙"
-#: htdocs/luci-static/resources/fchomo/listeners.js:535
-#: htdocs/luci-static/resources/view/fchomo/node.js:677
+#: htdocs/luci-static/resources/fchomo/listeners.js:532
+#: htdocs/luci-static/resources/view/fchomo/node.js:687
msgid "Flow"
msgstr "流控"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1163
+#: htdocs/luci-static/resources/view/fchomo/client.js:1223
msgid ""
"For details, see %s."
@@ -1130,9 +1169,9 @@ msgstr ""
"实现细节请参阅 %s."
-#: htdocs/luci-static/resources/view/fchomo/client.js:1140
-#: htdocs/luci-static/resources/view/fchomo/node.js:1843
-#: htdocs/luci-static/resources/view/fchomo/node.js:1969
+#: htdocs/luci-static/resources/view/fchomo/client.js:1183
+#: htdocs/luci-static/resources/view/fchomo/node.js:1877
+#: htdocs/luci-static/resources/view/fchomo/node.js:2003
msgid ""
"For format see %s."
@@ -1140,8 +1179,8 @@ msgstr ""
"格式请参阅 %s"
"a>."
-#: htdocs/luci-static/resources/view/fchomo/node.js:777
-#: htdocs/luci-static/resources/view/fchomo/node.js:860
+#: htdocs/luci-static/resources/view/fchomo/node.js:787
+#: htdocs/luci-static/resources/view/fchomo/node.js:870
msgid "Force DNS remote resolution."
msgstr "强制 DNS 远程解析。"
@@ -1160,7 +1199,7 @@ msgstr "格式"
msgid "FullCombo Shark!"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1294
+#: htdocs/luci-static/resources/view/fchomo/node.js:1323
msgid "GET"
msgstr ""
@@ -1169,7 +1208,7 @@ msgid "GFW list version"
msgstr "GFW 域名列表版本"
#: htdocs/luci-static/resources/fchomo/listeners.js:196
-#: htdocs/luci-static/resources/view/fchomo/node.js:324
+#: htdocs/luci-static/resources/view/fchomo/node.js:334
msgid "Gecko"
msgstr ""
@@ -1178,9 +1217,9 @@ msgid "General"
msgstr "常规"
#: htdocs/luci-static/resources/fchomo/listeners.js:119
-#: htdocs/luci-static/resources/view/fchomo/client.js:1019
+#: htdocs/luci-static/resources/view/fchomo/client.js:1038
#: htdocs/luci-static/resources/view/fchomo/node.js:233
-#: htdocs/luci-static/resources/view/fchomo/node.js:1658
+#: htdocs/luci-static/resources/view/fchomo/node.js:1687
msgid "General fields"
msgstr "常规字段"
@@ -1188,17 +1227,17 @@ msgstr "常规字段"
msgid "General settings"
msgstr "常规设置"
-#: htdocs/luci-static/resources/fchomo.js:553
-#: htdocs/luci-static/resources/fchomo.js:555
-#: htdocs/luci-static/resources/fchomo.js:569
-#: htdocs/luci-static/resources/fchomo.js:571
+#: htdocs/luci-static/resources/fchomo.js:578
+#: htdocs/luci-static/resources/fchomo.js:580
+#: htdocs/luci-static/resources/fchomo.js:594
+#: htdocs/luci-static/resources/fchomo.js:596
#: htdocs/luci-static/resources/fchomo/listeners.js:341
#: htdocs/luci-static/resources/fchomo/listeners.js:385
#: htdocs/luci-static/resources/fchomo/listeners.js:387
-#: htdocs/luci-static/resources/fchomo/listeners.js:827
-#: htdocs/luci-static/resources/fchomo/listeners.js:1060
+#: htdocs/luci-static/resources/fchomo/listeners.js:845
+#: htdocs/luci-static/resources/fchomo/listeners.js:1078
#: htdocs/luci-static/resources/view/fchomo/global.js:608
-#: htdocs/luci-static/resources/view/fchomo/node.js:1811
+#: htdocs/luci-static/resources/view/fchomo/node.js:1845
msgid "Generate"
msgstr "生成"
@@ -1214,21 +1253,21 @@ msgstr "GeoIP 版本"
msgid "GeoSite version"
msgstr "GeoSite 版本"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1825
+#: htdocs/luci-static/resources/view/fchomo/client.js:1891
msgid "Geoip code"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1822
+#: htdocs/luci-static/resources/view/fchomo/client.js:1888
msgid "Geoip enable"
msgstr "Geoip 启用"
-#: htdocs/luci-static/resources/view/fchomo/client.js:853
-#: htdocs/luci-static/resources/view/fchomo/client.js:862
-#: htdocs/luci-static/resources/view/fchomo/client.js:1834
+#: htdocs/luci-static/resources/view/fchomo/client.js:861
+#: htdocs/luci-static/resources/view/fchomo/client.js:870
+#: htdocs/luci-static/resources/view/fchomo/client.js:1900
msgid "Geosite"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:45
+#: htdocs/luci-static/resources/fchomo.js:46
msgid "GitHub"
msgstr ""
@@ -1245,11 +1284,11 @@ msgstr "全局"
msgid "Global Authentication"
msgstr "全局认证"
-#: htdocs/luci-static/resources/view/fchomo/node.js:701
+#: htdocs/luci-static/resources/view/fchomo/node.js:711
msgid "Global padding"
msgstr "全局填充"
-#: htdocs/luci-static/resources/fchomo.js:44
+#: htdocs/luci-static/resources/fchomo.js:45
msgid "Google"
msgstr "谷歌"
@@ -1261,58 +1300,58 @@ msgstr "谷歌 FCM"
msgid "Grant access to fchomo configuration"
msgstr "授予 fchomo 访问 UCI 配置的权限"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1044
+#: htdocs/luci-static/resources/view/fchomo/client.js:1063
msgid "Group"
msgstr "组"
-#: htdocs/luci-static/resources/fchomo.js:153
-#: htdocs/luci-static/resources/fchomo.js:189
-#: htdocs/luci-static/resources/fchomo/listeners.js:569
-#: htdocs/luci-static/resources/view/fchomo/node.js:883
-#: htdocs/luci-static/resources/view/fchomo/node.js:1243
-#: htdocs/luci-static/resources/view/fchomo/node.js:1254
-#: htdocs/luci-static/resources/view/fchomo/node.js:1261
+#: htdocs/luci-static/resources/fchomo.js:154
+#: htdocs/luci-static/resources/fchomo.js:190
+#: htdocs/luci-static/resources/fchomo/listeners.js:578
+#: htdocs/luci-static/resources/view/fchomo/node.js:905
+#: htdocs/luci-static/resources/view/fchomo/node.js:1272
+#: htdocs/luci-static/resources/view/fchomo/node.js:1283
+#: htdocs/luci-static/resources/view/fchomo/node.js:1290
msgid "HTTP"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:291
-#: htdocs/luci-static/resources/view/fchomo/node.js:1316
-#: htdocs/luci-static/resources/view/fchomo/node.js:1823
-#: htdocs/luci-static/resources/view/fchomo/ruleset.js:414
+#: htdocs/luci-static/resources/view/fchomo/node.js:301
+#: htdocs/luci-static/resources/view/fchomo/node.js:1345
+#: htdocs/luci-static/resources/view/fchomo/node.js:1857
+#: htdocs/luci-static/resources/view/fchomo/ruleset.js:419
msgid "HTTP header"
msgstr "HTTP header"
#: htdocs/luci-static/resources/fchomo/listeners.js:430
-#: htdocs/luci-static/resources/view/fchomo/node.js:484
+#: htdocs/luci-static/resources/view/fchomo/node.js:494
msgid "HTTP mask"
msgstr "HTTP 伪装"
#: htdocs/luci-static/resources/fchomo/listeners.js:435
-#: htdocs/luci-static/resources/view/fchomo/node.js:489
-#: htdocs/luci-static/resources/view/fchomo/node.js:524
-#: htdocs/luci-static/resources/view/fchomo/node.js:526
+#: htdocs/luci-static/resources/view/fchomo/node.js:499
+#: htdocs/luci-static/resources/view/fchomo/node.js:534
+#: htdocs/luci-static/resources/view/fchomo/node.js:536
msgid "HTTP mask mode"
msgstr "HTTP 伪装模式"
-#: htdocs/luci-static/resources/view/fchomo/node.js:514
+#: htdocs/luci-static/resources/view/fchomo/node.js:524
msgid "HTTP mask multiplex"
msgstr "HTTP 伪装多路复用"
-#: htdocs/luci-static/resources/view/fchomo/node.js:499
-#: htdocs/luci-static/resources/view/fchomo/node.js:504
+#: htdocs/luci-static/resources/view/fchomo/node.js:509
+#: htdocs/luci-static/resources/view/fchomo/node.js:514
msgid "HTTP mask: %s"
msgstr "HTTP 伪装: %s"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1293
+#: htdocs/luci-static/resources/view/fchomo/node.js:1322
msgid "HTTP request method"
msgstr "HTTP 请求方法"
#: htdocs/luci-static/resources/fchomo/listeners.js:445
-#: htdocs/luci-static/resources/view/fchomo/node.js:510
+#: htdocs/luci-static/resources/view/fchomo/node.js:520
msgid "HTTP root path"
msgstr "HTTP 根路径"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1581
+#: htdocs/luci-static/resources/view/fchomo/client.js:1647
msgid "HTTP/3"
msgstr ""
@@ -1322,9 +1361,9 @@ msgid ""
"returned if empty."
msgstr "身份验证失败时的 HTTP3 服务器响应。默认返回 404 页面。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1244
-#: htdocs/luci-static/resources/view/fchomo/node.js:1255
-#: htdocs/luci-static/resources/view/fchomo/node.js:1262
+#: htdocs/luci-static/resources/view/fchomo/node.js:1273
+#: htdocs/luci-static/resources/view/fchomo/node.js:1284
+#: htdocs/luci-static/resources/view/fchomo/node.js:1291
msgid "HTTPUpgrade"
msgstr ""
@@ -1332,15 +1371,16 @@ msgstr ""
msgid "Handle domain"
msgstr "处理域名"
-#: htdocs/luci-static/resources/view/fchomo/node.js:406
+#: htdocs/luci-static/resources/view/fchomo/node.js:416
msgid "Handshake mode"
msgstr "握手模式"
-#: htdocs/luci-static/resources/fchomo/listeners.js:582
+#: htdocs/luci-static/resources/fchomo/listeners.js:590
msgid "Handshake target that supports TLS 1.3"
msgstr "握手目标 (支援 TLS 1.3)"
#: htdocs/luci-static/resources/fchomo/listeners.js:417
+#: htdocs/luci-static/resources/view/fchomo/node.js:962
msgid "Handshake timeout"
msgstr "握手超时"
@@ -1348,57 +1388,57 @@ msgstr "握手超时"
msgid "Header to read real client IP from (e.g. X-Forwarded-For)"
msgstr "用于读取客户端真实 IP 的 Header(例如 X-Forwarded-For)"
-#: htdocs/luci-static/resources/view/fchomo/node.js:788
+#: htdocs/luci-static/resources/view/fchomo/node.js:798
msgid "Health check"
msgstr "健康检查"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1109
-#: htdocs/luci-static/resources/view/fchomo/node.js:1937
+#: htdocs/luci-static/resources/view/fchomo/client.js:1152
+#: htdocs/luci-static/resources/view/fchomo/node.js:1971
msgid "Health check URL"
msgstr "健康检查 URL"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1138
-#: htdocs/luci-static/resources/view/fchomo/node.js:1967
+#: htdocs/luci-static/resources/view/fchomo/client.js:1181
+#: htdocs/luci-static/resources/view/fchomo/node.js:2001
msgid "Health check expected status"
msgstr "健康检查预期状态"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1118
-#: htdocs/luci-static/resources/view/fchomo/node.js:1947
+#: htdocs/luci-static/resources/view/fchomo/client.js:1161
+#: htdocs/luci-static/resources/view/fchomo/node.js:1981
msgid "Health check interval"
msgstr "健康检查间隔"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1125
-#: htdocs/luci-static/resources/view/fchomo/node.js:1954
+#: htdocs/luci-static/resources/view/fchomo/client.js:1168
+#: htdocs/luci-static/resources/view/fchomo/node.js:1988
msgid "Health check timeout"
msgstr "健康检查超时"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1021
-#: htdocs/luci-static/resources/view/fchomo/node.js:1660
+#: htdocs/luci-static/resources/view/fchomo/client.js:1040
+#: htdocs/luci-static/resources/view/fchomo/node.js:1689
msgid "Health fields"
msgstr "健康字段"
-#: htdocs/luci-static/resources/view/fchomo/node.js:606
+#: htdocs/luci-static/resources/view/fchomo/node.js:616
msgid "Heartbeat interval"
msgstr "心跳间隔"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1189
+#: htdocs/luci-static/resources/view/fchomo/client.js:1249
msgid "Hidden"
msgstr "隐藏"
-#: htdocs/luci-static/resources/fchomo/listeners.js:575
-#: htdocs/luci-static/resources/view/fchomo/node.js:889
+#: htdocs/luci-static/resources/fchomo/listeners.js:583
+#: htdocs/luci-static/resources/view/fchomo/node.js:910
msgid "Host that supports TLS 1.3"
msgstr "主机名称 (支援 TLS 1.3)"
-#: htdocs/luci-static/resources/view/fchomo/node.js:361
+#: htdocs/luci-static/resources/view/fchomo/node.js:371
msgid "Host-key"
msgstr "主机密钥"
-#: htdocs/luci-static/resources/view/fchomo/node.js:356
+#: htdocs/luci-static/resources/view/fchomo/node.js:366
msgid "Host-key algorithms"
msgstr "主机密钥算法"
-#: htdocs/luci-static/resources/view/fchomo/node.js:504
+#: htdocs/luci-static/resources/view/fchomo/node.js:514
msgid "Host/SNI override"
msgstr "主机/SNI 覆盖"
@@ -1407,12 +1447,12 @@ msgstr "主机/SNI 覆盖"
msgid "Hosts"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:165
-#: htdocs/luci-static/resources/fchomo.js:201
+#: htdocs/luci-static/resources/fchomo.js:166
+#: htdocs/luci-static/resources/fchomo.js:202
msgid "Hysteria2"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:166
+#: htdocs/luci-static/resources/fchomo.js:167
msgid "Hysteria2 Realm"
msgstr "Hysteria2 Realm"
@@ -1421,58 +1461,58 @@ msgstr "Hysteria2 Realm"
msgid "Hysteria2 Realm fields"
msgstr "Hysteria2 Realm 字段"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1827
-#: htdocs/luci-static/resources/view/fchomo/client.js:1840
+#: htdocs/luci-static/resources/view/fchomo/client.js:1893
+#: htdocs/luci-static/resources/view/fchomo/client.js:1906
msgid "IP"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1838
+#: htdocs/luci-static/resources/view/fchomo/client.js:1904
msgid "IP CIDR"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:563
+#: htdocs/luci-static/resources/view/fchomo/node.js:573
msgid "IP override"
msgstr "IP 覆写"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1536
-#: htdocs/luci-static/resources/view/fchomo/node.js:1923
+#: htdocs/luci-static/resources/view/fchomo/node.js:1565
+#: htdocs/luci-static/resources/view/fchomo/node.js:1957
msgid "IP version"
msgstr "IP 版本"
-#: htdocs/luci-static/resources/fchomo.js:174
+#: htdocs/luci-static/resources/fchomo.js:175
msgid "IPv4 only"
msgstr "仅 IPv4"
-#: htdocs/luci-static/resources/fchomo.js:175
+#: htdocs/luci-static/resources/fchomo.js:176
msgid "IPv6 only"
msgstr "仅 IPv6"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1400
+#: htdocs/luci-static/resources/view/fchomo/client.js:1463
#: htdocs/luci-static/resources/view/fchomo/global.js:436
msgid "IPv6 support"
msgstr "IPv6 支持"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1195
+#: htdocs/luci-static/resources/view/fchomo/client.js:1255
msgid "Icon"
msgstr "图标"
-#: htdocs/luci-static/resources/view/fchomo/node.js:650
+#: htdocs/luci-static/resources/view/fchomo/node.js:660
msgid "Idle session check interval"
msgstr "闲置会话检查间隔"
-#: htdocs/luci-static/resources/view/fchomo/node.js:657
+#: htdocs/luci-static/resources/view/fchomo/node.js:667
msgid "Idle session timeout"
msgstr "闲置会话超时"
-#: htdocs/luci-static/resources/fchomo/listeners.js:486
+#: htdocs/luci-static/resources/fchomo/listeners.js:483
msgid "Idle timeout"
msgstr "闲置超时"
-#: htdocs/luci-static/resources/fchomo.js:1464
+#: htdocs/luci-static/resources/fchomo.js:1814
msgid "If All ports is selected, uncheck others"
msgstr "如果选择了“所有端口”,则取消选中“其他”"
-#: htdocs/luci-static/resources/view/fchomo/client.js:69
+#: htdocs/luci-static/resources/view/fchomo/client.js:71
msgid "If Block is selected, uncheck others"
msgstr "如果选择了“阻止”,则取消选中“其他”"
@@ -1480,24 +1520,24 @@ msgstr "如果选择了“阻止”,则取消选中“其他”"
msgid "Ignore client bandwidth"
msgstr "忽略客户端带宽"
-#: htdocs/luci-static/resources/fchomo.js:738
+#: htdocs/luci-static/resources/fchomo.js:763
msgid "Import"
msgstr "导入"
-#: htdocs/luci-static/resources/view/fchomo/client.js:957
-#: htdocs/luci-static/resources/view/fchomo/client.js:1013
-#: htdocs/luci-static/resources/view/fchomo/client.js:1218
-#: htdocs/luci-static/resources/view/fchomo/client.js:1269
-#: htdocs/luci-static/resources/view/fchomo/client.js:1337
-#: htdocs/luci-static/resources/view/fchomo/client.js:1361
-#: htdocs/luci-static/resources/view/fchomo/client.js:1465
-#: htdocs/luci-static/resources/view/fchomo/client.js:1503
-#: htdocs/luci-static/resources/view/fchomo/client.js:1717
-#: htdocs/luci-static/resources/view/fchomo/client.js:1734
-#: htdocs/luci-static/resources/view/fchomo/client.js:1769
-#: htdocs/luci-static/resources/view/fchomo/client.js:1790
-#: htdocs/luci-static/resources/view/fchomo/node.js:1562
-#: htdocs/luci-static/resources/view/fchomo/node.js:1646
+#: htdocs/luci-static/resources/view/fchomo/client.js:975
+#: htdocs/luci-static/resources/view/fchomo/client.js:1032
+#: htdocs/luci-static/resources/view/fchomo/client.js:1278
+#: htdocs/luci-static/resources/view/fchomo/client.js:1329
+#: htdocs/luci-static/resources/view/fchomo/client.js:1400
+#: htdocs/luci-static/resources/view/fchomo/client.js:1424
+#: htdocs/luci-static/resources/view/fchomo/client.js:1528
+#: htdocs/luci-static/resources/view/fchomo/client.js:1566
+#: htdocs/luci-static/resources/view/fchomo/client.js:1783
+#: htdocs/luci-static/resources/view/fchomo/client.js:1800
+#: htdocs/luci-static/resources/view/fchomo/client.js:1835
+#: htdocs/luci-static/resources/view/fchomo/client.js:1856
+#: htdocs/luci-static/resources/view/fchomo/node.js:1591
+#: htdocs/luci-static/resources/view/fchomo/node.js:1675
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:154
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:249
msgid "Import mihomo config"
@@ -1511,55 +1551,61 @@ msgstr "导入规则集链接"
#: htdocs/luci-static/resources/fchomo/listeners.js:176
#: htdocs/luci-static/resources/fchomo/listeners.js:182
-#: htdocs/luci-static/resources/view/fchomo/node.js:310
-#: htdocs/luci-static/resources/view/fchomo/node.js:316
-#: htdocs/luci-static/resources/view/fchomo/node.js:1881
-#: htdocs/luci-static/resources/view/fchomo/node.js:1887
+#: htdocs/luci-static/resources/view/fchomo/node.js:320
+#: htdocs/luci-static/resources/view/fchomo/node.js:326
+#: htdocs/luci-static/resources/view/fchomo/node.js:1915
+#: htdocs/luci-static/resources/view/fchomo/node.js:1921
msgid "In Mbps."
msgstr "单位为 Mbps。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1736
+#: htdocs/luci-static/resources/view/fchomo/node.js:1765
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:392
msgid "In bytes. %s will be used if empty."
msgstr "单位为字节。留空则使用 %s。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:607
-#: htdocs/luci-static/resources/view/fchomo/node.js:614
+#: htdocs/luci-static/resources/view/fchomo/node.js:617
+#: htdocs/luci-static/resources/view/fchomo/node.js:624
msgid "In millisecond."
msgstr "单位为毫秒。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1126
-#: htdocs/luci-static/resources/view/fchomo/client.js:1155
-#: htdocs/luci-static/resources/view/fchomo/node.js:1955
+#: htdocs/luci-static/resources/view/fchomo/client.js:1169
+#: htdocs/luci-static/resources/view/fchomo/client.js:1215
+#: htdocs/luci-static/resources/view/fchomo/node.js:1989
msgid "In millisecond. %s will be used if empty."
msgstr "单位为毫秒。留空则使用 %s。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1385
+#: htdocs/luci-static/resources/view/fchomo/node.js:1414
msgid "In milliseconds."
msgstr "单位为毫秒。"
#: htdocs/luci-static/resources/fchomo/listeners.js:418
-#: htdocs/luci-static/resources/fchomo/listeners.js:487
-#: htdocs/luci-static/resources/fchomo/listeners.js:494
-#: htdocs/luci-static/resources/view/fchomo/node.js:651
-#: htdocs/luci-static/resources/view/fchomo/node.js:658
-#: htdocs/luci-static/resources/view/fchomo/node.js:1332
+#: htdocs/luci-static/resources/fchomo/listeners.js:484
+#: htdocs/luci-static/resources/fchomo/listeners.js:491
+#: htdocs/luci-static/resources/view/fchomo/node.js:661
+#: htdocs/luci-static/resources/view/fchomo/node.js:668
+#: htdocs/luci-static/resources/view/fchomo/node.js:1361
msgid "In seconds."
msgstr "单位为秒。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1119
+#: htdocs/luci-static/resources/view/fchomo/client.js:1162
#: htdocs/luci-static/resources/view/fchomo/global.js:446
#: htdocs/luci-static/resources/view/fchomo/global.js:451
#: htdocs/luci-static/resources/view/fchomo/global.js:536
-#: htdocs/luci-static/resources/view/fchomo/node.js:304
-#: htdocs/luci-static/resources/view/fchomo/node.js:1742
-#: htdocs/luci-static/resources/view/fchomo/node.js:1948
+#: htdocs/luci-static/resources/view/fchomo/node.js:314
+#: htdocs/luci-static/resources/view/fchomo/node.js:1771
+#: htdocs/luci-static/resources/view/fchomo/node.js:1982
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:398
msgid "In seconds. %s will be used if empty."
msgstr "单位为秒。留空则使用 %s。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:743
-#: htdocs/luci-static/resources/view/fchomo/node.js:1009
+#: htdocs/luci-static/resources/view/fchomo/node.js:963
+msgid ""
+"In seconds. After configuration, the handshake is not affected by the outer "
+"connection timeout."
+msgstr "单位为秒。配置后握手时不受外层连接超时影响。"
+
+#: htdocs/luci-static/resources/fchomo/listeners.js:761
+#: htdocs/luci-static/resources/view/fchomo/node.js:1037
msgid ""
"In the order of one Padding-Length and one Padding-"
"Interval, infinite concatenation."
@@ -1573,35 +1619,35 @@ msgstr ""
msgid "Inbound"
msgstr "入站"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1079
+#: htdocs/luci-static/resources/view/fchomo/client.js:1116
msgid "Include all"
msgstr "引入所有"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1084
+#: htdocs/luci-static/resources/view/fchomo/client.js:1121
msgid "Include all node"
msgstr "引入所有节点"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1089
+#: htdocs/luci-static/resources/view/fchomo/client.js:1126
msgid "Include all provider"
msgstr "引入所有供应商"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1090
+#: htdocs/luci-static/resources/view/fchomo/client.js:1127
msgid "Includes all Provider."
msgstr "引入所有供应商。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1080
+#: htdocs/luci-static/resources/view/fchomo/client.js:1117
msgid "Includes all Proxy Node and Provider."
msgstr "引入所有代理节点及供应商。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1085
+#: htdocs/luci-static/resources/view/fchomo/client.js:1122
msgid "Includes all Proxy Node."
msgstr "引入所有代理节点。"
-#: htdocs/luci-static/resources/fchomo.js:92
+#: htdocs/luci-static/resources/fchomo.js:93
msgid "Info"
msgstr "信息"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1675
+#: htdocs/luci-static/resources/view/fchomo/node.js:1704
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:288
msgid "Inline"
msgstr "内嵌"
@@ -1610,57 +1656,65 @@ msgstr "内嵌"
msgid "Interface Control"
msgstr "接口控制"
-#: htdocs/luci-static/resources/fchomo.js:52
-#: htdocs/luci-static/resources/fchomo.js:59
-#: htdocs/luci-static/resources/fchomo.js:172
+#: htdocs/luci-static/resources/fchomo.js:53
+#: htdocs/luci-static/resources/fchomo.js:60
+#: htdocs/luci-static/resources/fchomo.js:173
#: htdocs/luci-static/resources/fchomo.js:377
-#: htdocs/luci-static/resources/view/fchomo/node.js:1897
+#: htdocs/luci-static/resources/view/fchomo/node.js:1931
msgid "Keep default"
msgstr "保持缺省"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1421
+#: htdocs/luci-static/resources/view/fchomo/node.js:1450
msgid "Keep-alive period"
msgstr "Keep-alive 周期"
#: htdocs/luci-static/resources/fchomo/listeners.js:296
-#: htdocs/luci-static/resources/view/fchomo/node.js:420
+#: htdocs/luci-static/resources/view/fchomo/node.js:430
msgid "Key"
msgstr "密钥"
-#: htdocs/luci-static/resources/fchomo/listeners.js:987
-#: htdocs/luci-static/resources/view/fchomo/node.js:1173
+#: htdocs/luci-static/resources/fchomo/listeners.js:1005
+#: htdocs/luci-static/resources/view/fchomo/node.js:1202
msgid "Key path"
msgstr "证书路径"
-#: htdocs/luci-static/resources/fchomo/listeners.js:762
+#: htdocs/luci-static/resources/fchomo/listeners.js:780
msgid "Keypairs"
msgstr "密钥对"
#: htdocs/luci-static/resources/fchomo/listeners.js:128
-#: htdocs/luci-static/resources/view/fchomo/client.js:1024
-#: htdocs/luci-static/resources/view/fchomo/client.js:1275
-#: htdocs/luci-static/resources/view/fchomo/client.js:1367
-#: htdocs/luci-static/resources/view/fchomo/client.js:1509
-#: htdocs/luci-static/resources/view/fchomo/client.js:1740
-#: htdocs/luci-static/resources/view/fchomo/client.js:1796
+#: htdocs/luci-static/resources/view/fchomo/client.js:1043
+#: htdocs/luci-static/resources/view/fchomo/client.js:1335
+#: htdocs/luci-static/resources/view/fchomo/client.js:1430
+#: htdocs/luci-static/resources/view/fchomo/client.js:1572
+#: htdocs/luci-static/resources/view/fchomo/client.js:1806
+#: htdocs/luci-static/resources/view/fchomo/client.js:1862
#: htdocs/luci-static/resources/view/fchomo/node.js:241
-#: htdocs/luci-static/resources/view/fchomo/node.js:1663
-#: htdocs/luci-static/resources/view/fchomo/node.js:2016
+#: htdocs/luci-static/resources/view/fchomo/node.js:1692
+#: htdocs/luci-static/resources/view/fchomo/node.js:2050
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:267
msgid "Label"
msgstr "标签"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1132
-#: htdocs/luci-static/resources/view/fchomo/node.js:1961
+#: htdocs/luci-static/resources/view/fchomo/client.js:1175
+#: htdocs/luci-static/resources/view/fchomo/node.js:1995
msgid "Lazy"
-msgstr "懒惰状态"
+msgstr "怠惰状态"
+
+#: htdocs/luci-static/resources/view/fchomo/client.js:1913
+msgid "Lazy query"
+msgstr "怠惰查询"
+
+#: htdocs/luci-static/resources/view/fchomo/client.js:1914
+msgid "Lazy query."
+msgstr "怠惰查询。"
#: htdocs/luci-static/resources/fchomo/listeners.js:437
-#: htdocs/luci-static/resources/view/fchomo/node.js:491
+#: htdocs/luci-static/resources/view/fchomo/node.js:501
msgid "Legacy"
msgstr "传统"
-#: htdocs/luci-static/resources/fchomo/listeners.js:544
+#: htdocs/luci-static/resources/fchomo/listeners.js:541
msgid ""
"Legacy protocol support (VMess MD5 Authentication) is provided for "
"compatibility purposes only, use of alterId > 1 is not recommended."
@@ -1672,8 +1726,8 @@ msgstr ""
msgid "Less compatibility and sometimes better performance."
msgstr "有时性能更好。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:968
-#: htdocs/luci-static/resources/view/fchomo/node.js:1095
+#: htdocs/luci-static/resources/fchomo/listeners.js:986
+#: htdocs/luci-static/resources/view/fchomo/node.js:1123
msgid "List of supported application level protocols, in order of preference."
msgstr "支持的应用层协议协商列表,按顺序排列。"
@@ -1690,7 +1744,7 @@ msgid "Listen interfaces"
msgstr "监听接口"
#: htdocs/luci-static/resources/fchomo/listeners.js:153
-#: htdocs/luci-static/resources/view/fchomo/client.js:1392
+#: htdocs/luci-static/resources/view/fchomo/client.js:1455
msgid "Listen port"
msgstr "监听端口"
@@ -1698,26 +1752,26 @@ msgstr "监听端口"
msgid "Listen ports"
msgstr "监听端口"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1397
+#: htdocs/luci-static/resources/view/fchomo/client.js:1460
msgid "Listen routing mark (Fwmark)"
msgstr "监听路由标记 (Fwmark)"
-#: htdocs/luci-static/resources/fchomo.js:243
+#: htdocs/luci-static/resources/fchomo.js:244
msgid "Load balance"
msgstr "负载均衡"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1673
+#: htdocs/luci-static/resources/view/fchomo/node.js:1702
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:286
msgid "Local"
msgstr "本地"
-#: htdocs/luci-static/resources/view/fchomo/node.js:744
-#: htdocs/luci-static/resources/view/fchomo/node.js:807
+#: htdocs/luci-static/resources/view/fchomo/node.js:754
+#: htdocs/luci-static/resources/view/fchomo/node.js:817
msgid "Local IPv6 address"
msgstr "本地 IPv6 地址"
-#: htdocs/luci-static/resources/view/fchomo/node.js:736
-#: htdocs/luci-static/resources/view/fchomo/node.js:799
+#: htdocs/luci-static/resources/view/fchomo/node.js:746
+#: htdocs/luci-static/resources/view/fchomo/node.js:809
msgid "Local address"
msgstr "本地地址"
@@ -1741,10 +1795,10 @@ msgstr "日志等级"
#: htdocs/luci-static/resources/fchomo/listeners.js:373
#: htdocs/luci-static/resources/fchomo/listeners.js:374
#: htdocs/luci-static/resources/fchomo/listeners.js:379
-#: htdocs/luci-static/resources/view/fchomo/node.js:444
-#: htdocs/luci-static/resources/view/fchomo/node.js:445
-#: htdocs/luci-static/resources/view/fchomo/node.js:446
-#: htdocs/luci-static/resources/view/fchomo/node.js:451
+#: htdocs/luci-static/resources/view/fchomo/node.js:454
+#: htdocs/luci-static/resources/view/fchomo/node.js:455
+#: htdocs/luci-static/resources/view/fchomo/node.js:456
+#: htdocs/luci-static/resources/view/fchomo/node.js:461
msgid "Low-entropy data stream"
msgstr "低熵数据流"
@@ -1753,12 +1807,12 @@ msgid "Lowercase only"
msgstr "仅限小写"
#: htdocs/luci-static/resources/view/fchomo/global.js:523
-#: htdocs/luci-static/resources/view/fchomo/node.js:750
-#: htdocs/luci-static/resources/view/fchomo/node.js:853
+#: htdocs/luci-static/resources/view/fchomo/node.js:760
+#: htdocs/luci-static/resources/view/fchomo/node.js:863
msgid "MTU"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:203
+#: htdocs/luci-static/resources/fchomo.js:204
msgid "Masque"
msgstr ""
@@ -1766,70 +1820,70 @@ msgstr ""
msgid "Masquerade"
msgstr "伪装"
-#: htdocs/luci-static/resources/view/fchomo/client.js:858
+#: htdocs/luci-static/resources/view/fchomo/client.js:866
msgid "Match domain. Support wildcards."
msgstr "匹配域名。支持通配符。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1844
+#: htdocs/luci-static/resources/view/fchomo/client.js:1910
msgid "Match domain. Support wildcards."
msgstr "匹配域名。支持通配符。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:863
+#: htdocs/luci-static/resources/view/fchomo/client.js:871
msgid "Match geosite."
msgstr "匹配 geosite。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1835
+#: htdocs/luci-static/resources/view/fchomo/client.js:1901
msgid "Match geosite."
msgstr "匹配 geosite。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1826
+#: htdocs/luci-static/resources/view/fchomo/client.js:1892
msgid "Match response with geoip."
msgstr "匹配响应通过 geoip。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1839
+#: htdocs/luci-static/resources/view/fchomo/client.js:1905
msgid "Match response with ipcidr."
msgstr "匹配响应通过 ipcidr"
-#: htdocs/luci-static/resources/view/fchomo/client.js:868
+#: htdocs/luci-static/resources/view/fchomo/client.js:876
msgid "Match rule set."
msgstr "匹配规则集。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1338
+#: htdocs/luci-static/resources/view/fchomo/node.js:1367
msgid "Max Early Data"
msgstr "前置数据最大值"
-#: htdocs/luci-static/resources/fchomo/listeners.js:480
-#: htdocs/luci-static/resources/view/fchomo/node.js:588
+#: htdocs/luci-static/resources/fchomo/listeners.js:477
+#: htdocs/luci-static/resources/view/fchomo/node.js:598
msgid "Max UDP relay packet size"
msgstr "UDP 中继数据包最大尺寸"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1186
+#: htdocs/luci-static/resources/fchomo/listeners.js:1204
msgid "Max buffered posts"
msgstr "POST 最大缓冲"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1396
+#: htdocs/luci-static/resources/view/fchomo/node.js:1425
msgid "Max concurrency"
msgstr "最大并发"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1401
+#: htdocs/luci-static/resources/view/fchomo/node.js:1430
msgid "Max connections"
msgstr "最大连接数"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1146
+#: htdocs/luci-static/resources/view/fchomo/client.js:1189
msgid "Max count of failures"
msgstr "最大失败次数"
#: htdocs/luci-static/resources/fchomo/listeners.js:181
-#: htdocs/luci-static/resources/view/fchomo/node.js:315
+#: htdocs/luci-static/resources/view/fchomo/node.js:325
msgid "Max download speed"
msgstr "最大下载速度"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1197
-#: htdocs/luci-static/resources/view/fchomo/node.js:1378
+#: htdocs/luci-static/resources/fchomo/listeners.js:1215
+#: htdocs/luci-static/resources/view/fchomo/node.js:1407
msgid "Max each POST bytes"
msgstr "POST 最大字节数"
-#: htdocs/luci-static/resources/view/fchomo/node.js:620
+#: htdocs/luci-static/resources/view/fchomo/node.js:630
msgid "Max open streams"
msgstr "限制打开流的数量"
@@ -1841,29 +1895,29 @@ msgstr "最大 Realms 总数"
msgid "Max realms per client IP"
msgstr "每客户端 IP 最大 Realms 总数"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1411
+#: htdocs/luci-static/resources/view/fchomo/node.js:1440
msgid "Max request times"
msgstr "最大请求次数"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1416
+#: htdocs/luci-static/resources/view/fchomo/node.js:1445
msgid "Max reusable seconds"
msgstr "最大可复用秒数"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1406
+#: htdocs/luci-static/resources/view/fchomo/node.js:1435
msgid "Max reuse times"
msgstr "最大复用次数"
#: htdocs/luci-static/resources/fchomo/listeners.js:175
-#: htdocs/luci-static/resources/view/fchomo/node.js:309
+#: htdocs/luci-static/resources/view/fchomo/node.js:319
msgid "Max upload speed"
msgstr "最大上传速度"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1442
-#: htdocs/luci-static/resources/view/fchomo/node.js:1462
+#: htdocs/luci-static/resources/view/fchomo/node.js:1471
+#: htdocs/luci-static/resources/view/fchomo/node.js:1491
msgid "Maximum connections"
msgstr "最大连接数"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1460
+#: htdocs/luci-static/resources/view/fchomo/node.js:1489
msgid ""
"Maximum multiplexed streams in a connection before opening a new connection."
"
Conflict with %s and %s."
@@ -1872,27 +1926,27 @@ msgstr ""
"%s 冲突。"
#: htdocs/luci-static/resources/fchomo/listeners.js:402
-#: htdocs/luci-static/resources/view/fchomo/node.js:463
+#: htdocs/luci-static/resources/view/fchomo/node.js:473
msgid "Maximum padding rate"
msgstr "最大填充率"
#: htdocs/luci-static/resources/fchomo/listeners.js:410
-#: htdocs/luci-static/resources/view/fchomo/node.js:471
+#: htdocs/luci-static/resources/view/fchomo/node.js:481
msgid ""
"Maximum padding rate must be greater than or equal to the minimum padding "
"rate."
msgstr "最大填充率必须大于等于最小填充率。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1459
+#: htdocs/luci-static/resources/view/fchomo/node.js:1488
msgid "Maximum streams"
msgstr "最大流数量"
-#: htdocs/luci-static/resources/fchomo.js:157
-#: htdocs/luci-static/resources/fchomo.js:193
+#: htdocs/luci-static/resources/fchomo.js:158
+#: htdocs/luci-static/resources/fchomo.js:194
msgid "Mieru"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:912
+#: htdocs/luci-static/resources/view/fchomo/client.js:930
#: htdocs/luci-static/resources/view/fchomo/log.js:149
#: htdocs/luci-static/resources/view/fchomo/log.js:154
msgid "Mihomo client"
@@ -1904,30 +1958,30 @@ msgstr "Mihomo 客户端"
msgid "Mihomo server"
msgstr "Mihomo 服务端"
-#: htdocs/luci-static/resources/view/fchomo/node.js:664
+#: htdocs/luci-static/resources/view/fchomo/node.js:674
msgid "Min of idle sessions to keep"
msgstr "要保留的最少闲置会话数"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1384
+#: htdocs/luci-static/resources/view/fchomo/node.js:1413
msgid "Min posts interval"
msgstr "POST 请求最小间隔时间"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1451
+#: htdocs/luci-static/resources/view/fchomo/node.js:1480
msgid ""
"Minimum multiplexed streams in a connection before opening a new connection."
msgstr "在打开新连接之前,连接中的最小多路复用流数量。"
#: htdocs/luci-static/resources/fchomo/listeners.js:395
-#: htdocs/luci-static/resources/view/fchomo/node.js:456
+#: htdocs/luci-static/resources/view/fchomo/node.js:466
msgid "Minimum padding rate"
msgstr "最小填充率"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1450
-#: htdocs/luci-static/resources/view/fchomo/node.js:1462
+#: htdocs/luci-static/resources/view/fchomo/node.js:1479
+#: htdocs/luci-static/resources/view/fchomo/node.js:1491
msgid "Minimum streams"
msgstr "最小流数量"
-#: htdocs/luci-static/resources/fchomo.js:155
+#: htdocs/luci-static/resources/fchomo.js:156
#: htdocs/luci-static/resources/view/fchomo/global.js:518
msgid "Mixed"
msgstr "混合"
@@ -1940,7 +1994,7 @@ msgstr "混合 系统 TCP 栈和 gVisor UDP 栈。"
msgid "Mixed port"
msgstr "混合端口"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1428
+#: htdocs/luci-static/resources/view/fchomo/node.js:1457
msgid "Multiplex"
msgstr "多路复用"
@@ -1949,20 +2003,20 @@ msgstr "多路复用"
msgid "Multiplex fields"
msgstr "多路复用字段"
-#: htdocs/luci-static/resources/view/fchomo/node.js:397
+#: htdocs/luci-static/resources/view/fchomo/node.js:407
msgid "Multiplexing"
msgstr "多路复用"
-#: htdocs/luci-static/resources/view/fchomo/client.js:622
-#: htdocs/luci-static/resources/view/fchomo/client.js:697
+#: htdocs/luci-static/resources/view/fchomo/client.js:624
+#: htdocs/luci-static/resources/view/fchomo/client.js:702
msgid "NOT"
msgstr "NOT"
-#: htdocs/luci-static/resources/fchomo/listeners.js:616
+#: htdocs/luci-static/resources/fchomo/listeners.js:629
msgid "Name of the Proxy group as outbound."
msgstr "出站代理组的名称。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1748
+#: htdocs/luci-static/resources/view/fchomo/node.js:1777
msgid "Name of the Proxy group to download provider."
msgstr "用于下载供应商订阅的代理组名称。"
@@ -1970,11 +2024,11 @@ msgstr "用于下载供应商订阅的代理组名称。"
msgid "Name of the Proxy group to download rule set."
msgstr "用于下载规则集订阅的代理组名称。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:610
+#: htdocs/luci-static/resources/fchomo/listeners.js:618
msgid "Name of the Sub rule used for inbound matching."
msgstr "用于入站匹配的子规则名称。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:572
+#: htdocs/luci-static/resources/view/fchomo/node.js:582
msgid "Native UDP"
msgstr "原生 UDP"
@@ -1982,15 +2036,15 @@ msgstr "原生 UDP"
msgid "Native appearance"
msgstr "原生外观"
-#: htdocs/luci-static/resources/view/fchomo/node.js:756
+#: htdocs/luci-static/resources/view/fchomo/node.js:766
msgid "Network"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:642
+#: htdocs/luci-static/resources/fchomo/listeners.js:660
msgid "Network type"
msgstr "网络类型"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1899
+#: htdocs/luci-static/resources/view/fchomo/node.js:1933
msgid "No"
msgstr ""
@@ -1998,24 +2052,24 @@ msgstr ""
msgid "No Authentication IP ranges"
msgstr "无需认证的 IP 范围"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1181
+#: htdocs/luci-static/resources/fchomo/listeners.js:1199
msgid "No SSE header"
msgstr "无 SSE header"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1529
+#: htdocs/luci-static/resources/view/fchomo/client.js:1592
msgid "No add'l params"
msgstr "无附加参数"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1368
+#: htdocs/luci-static/resources/view/fchomo/node.js:1397
msgid "No gRPC header"
msgstr "无 gRPC header"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1133
-#: htdocs/luci-static/resources/view/fchomo/node.js:1962
+#: htdocs/luci-static/resources/view/fchomo/client.js:1176
+#: htdocs/luci-static/resources/view/fchomo/node.js:1996
msgid "No testing is performed when this provider node is not in use."
msgstr "当此供应商的节点未使用时,不执行任何测试。"
-#: htdocs/luci-static/resources/fchomo.js:699
+#: htdocs/luci-static/resources/fchomo.js:724
msgid "No valid %s found."
msgstr "未找到有效的%s。"
@@ -2023,27 +2077,27 @@ msgstr "未找到有效的%s。"
msgid "No valid rule-set link found."
msgstr "未找到有效的规则集链接。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1051
+#: htdocs/luci-static/resources/view/fchomo/client.js:1076
#: htdocs/luci-static/resources/view/fchomo/node.js:228
msgid "Node"
msgstr "节点"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1178
-#: htdocs/luci-static/resources/view/fchomo/node.js:1982
+#: htdocs/luci-static/resources/view/fchomo/client.js:1238
+#: htdocs/luci-static/resources/view/fchomo/node.js:2016
msgid "Node exclude filter"
msgstr "排除节点"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1183
-#: htdocs/luci-static/resources/view/fchomo/node.js:1989
+#: htdocs/luci-static/resources/view/fchomo/client.js:1243
+#: htdocs/luci-static/resources/view/fchomo/node.js:2023
msgid "Node exclude type"
msgstr "排除节点类型"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1173
-#: htdocs/luci-static/resources/view/fchomo/node.js:1976
+#: htdocs/luci-static/resources/view/fchomo/client.js:1233
+#: htdocs/luci-static/resources/view/fchomo/node.js:2010
msgid "Node filter"
msgstr "过滤节点"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1154
+#: htdocs/luci-static/resources/view/fchomo/client.js:1214
msgid "Node switch tolerance"
msgstr "节点切换容差"
@@ -2055,49 +2109,49 @@ msgstr "无"
msgid "Not Installed"
msgstr "未安装"
-#: htdocs/luci-static/resources/fchomo.js:1242
+#: htdocs/luci-static/resources/fchomo.js:1592
msgid "Not Running"
msgstr "未在运行"
-#: htdocs/luci-static/resources/view/fchomo/node.js:517
+#: htdocs/luci-static/resources/view/fchomo/node.js:527
msgid "OFF"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:519
+#: htdocs/luci-static/resources/view/fchomo/node.js:529
msgid "ON"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:568
-#: htdocs/luci-static/resources/view/fchomo/node.js:882
+#: htdocs/luci-static/resources/fchomo/listeners.js:577
+#: htdocs/luci-static/resources/view/fchomo/node.js:904
msgid "Obfs Mode"
msgstr "Obfs 模式"
#: htdocs/luci-static/resources/fchomo/listeners.js:213
-#: htdocs/luci-static/resources/view/fchomo/node.js:341
+#: htdocs/luci-static/resources/view/fchomo/node.js:351
msgid "Obfuscate maximum packet size"
msgstr "混淆最大数据包大小"
#: htdocs/luci-static/resources/fchomo/listeners.js:208
-#: htdocs/luci-static/resources/view/fchomo/node.js:336
+#: htdocs/luci-static/resources/view/fchomo/node.js:346
msgid "Obfuscate minimum packet size"
msgstr "混淆最小数据包大小"
#: htdocs/luci-static/resources/fchomo/listeners.js:200
-#: htdocs/luci-static/resources/view/fchomo/node.js:328
+#: htdocs/luci-static/resources/view/fchomo/node.js:338
msgid "Obfuscate password"
msgstr "混淆密码"
#: htdocs/luci-static/resources/fchomo/listeners.js:193
#: htdocs/luci-static/resources/fchomo/listeners.js:370
-#: htdocs/luci-static/resources/view/fchomo/node.js:321
-#: htdocs/luci-static/resources/view/fchomo/node.js:442
+#: htdocs/luci-static/resources/view/fchomo/node.js:331
+#: htdocs/luci-static/resources/view/fchomo/node.js:452
msgid "Obfuscate type"
msgstr "混淆类型"
#: htdocs/luci-static/resources/fchomo/listeners.js:371
#: htdocs/luci-static/resources/fchomo/listeners.js:372
-#: htdocs/luci-static/resources/view/fchomo/node.js:443
-#: htdocs/luci-static/resources/view/fchomo/node.js:444
+#: htdocs/luci-static/resources/view/fchomo/node.js:453
+#: htdocs/luci-static/resources/view/fchomo/node.js:454
msgid "Obfuscated as %s"
msgstr "混淆为%s"
@@ -2105,12 +2159,12 @@ msgstr "混淆为%s"
msgid "One or more numbers in the range 0-63 separated by commas"
msgstr "0-63 范围内的一个或多个数字,以逗号分隔"
-#: htdocs/luci-static/resources/fchomo/listeners.js:962
+#: htdocs/luci-static/resources/fchomo/listeners.js:980
msgid "Only applicable when %s are used as a frontend."
msgstr "仅当 %s 用作前端时适用。"
#: htdocs/luci-static/resources/fchomo/listeners.js:379
-#: htdocs/luci-static/resources/view/fchomo/node.js:451
+#: htdocs/luci-static/resources/view/fchomo/node.js:461
msgid "Only applies to the %s."
msgstr "只对%s生效。"
@@ -2118,7 +2172,7 @@ msgstr "只对%s生效。"
msgid "Only process traffic from specific interfaces. Leave empty for all."
msgstr "只处理来自指定接口的流量。留空表示全部。"
-#: htdocs/luci-static/resources/fchomo.js:1236
+#: htdocs/luci-static/resources/fchomo.js:1586
msgid "Open Dashboard"
msgstr "打开面板"
@@ -2135,16 +2189,16 @@ msgstr "出站"
msgid "Override destination"
msgstr "覆盖目标地址"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1020
-#: htdocs/luci-static/resources/view/fchomo/node.js:1659
+#: htdocs/luci-static/resources/view/fchomo/client.js:1039
+#: htdocs/luci-static/resources/view/fchomo/node.js:1688
msgid "Override fields"
msgstr "覆盖字段"
-#: htdocs/luci-static/resources/view/fchomo/node.js:564
+#: htdocs/luci-static/resources/view/fchomo/node.js:574
msgid "Override the IP address of the server that DNS response."
msgstr "覆盖 DNS 回应的服务器的 IP 地址。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:891
+#: htdocs/luci-static/resources/view/fchomo/client.js:904
msgid "Override the Proxy group of DNS server."
msgstr "覆盖 DNS 服务器所使用的代理组。"
@@ -2152,11 +2206,11 @@ msgstr "覆盖 DNS 服务器所使用的代理组。"
msgid "Override the connection destination address with the sniffed domain."
msgstr "使用嗅探到的域名覆盖连接目标。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1633
+#: htdocs/luci-static/resources/view/fchomo/client.js:1699
msgid "Override the existing ECS in original request."
msgstr "覆盖原始请求中已有的 ECS。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1200
+#: htdocs/luci-static/resources/view/fchomo/node.js:1229
msgid "Overrides the domain name used for HTTPS record queries."
msgstr "覆盖用于 HTTPS 记录查询的域名。"
@@ -2164,37 +2218,37 @@ msgstr "覆盖用于 HTTPS 记录查询的域名。"
msgid "Overview"
msgstr "概览"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1295
+#: htdocs/luci-static/resources/view/fchomo/node.js:1324
msgid "POST"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1296
+#: htdocs/luci-static/resources/view/fchomo/node.js:1325
msgid "PUT"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:713
+#: htdocs/luci-static/resources/view/fchomo/node.js:723
msgid "Packet encoding"
msgstr "数据包编码"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1373
+#: htdocs/luci-static/resources/view/fchomo/node.js:1402
msgid "Padding bytes"
msgstr "填充字节"
-#: htdocs/luci-static/resources/fchomo/listeners.js:524
+#: htdocs/luci-static/resources/fchomo/listeners.js:521
msgid "Padding scheme"
msgstr "填充方案"
-#: htdocs/luci-static/resources/fchomo/listeners.js:741
-#: htdocs/luci-static/resources/view/fchomo/node.js:1007
+#: htdocs/luci-static/resources/fchomo/listeners.js:759
+#: htdocs/luci-static/resources/view/fchomo/node.js:1035
msgid "Paddings"
msgstr "填充 (Paddings)"
#: htdocs/luci-static/resources/fchomo/listeners.js:166
#: htdocs/luci-static/resources/fchomo/listeners.js:263
-#: htdocs/luci-static/resources/fchomo/listeners.js:589
-#: htdocs/luci-static/resources/view/fchomo/node.js:285
-#: htdocs/luci-static/resources/view/fchomo/node.js:375
-#: htdocs/luci-static/resources/view/fchomo/node.js:897
+#: htdocs/luci-static/resources/fchomo/listeners.js:597
+#: htdocs/luci-static/resources/view/fchomo/node.js:295
+#: htdocs/luci-static/resources/view/fchomo/node.js:385
+#: htdocs/luci-static/resources/view/fchomo/node.js:917
msgid "Password"
msgstr "密码"
@@ -2206,13 +2260,13 @@ msgstr "捆绑包路径"
msgid "Path in bundle: %s"
msgstr "在捆绑包%s中的路径"
-#: htdocs/luci-static/resources/fchomo/listeners.js:681
-#: htdocs/luci-static/resources/view/fchomo/node.js:1723
+#: htdocs/luci-static/resources/fchomo/listeners.js:699
+#: htdocs/luci-static/resources/view/fchomo/node.js:1752
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:373
msgid "Payload"
msgstr "Payload"
-#: htdocs/luci-static/resources/view/fchomo/node.js:821
+#: htdocs/luci-static/resources/view/fchomo/node.js:831
msgid "Peer pubkic key"
msgstr "对端公钥"
@@ -2222,11 +2276,11 @@ msgid ""
"it is not needed."
msgstr "性能可能会略有下降,建议仅在需要时开启。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:848
+#: htdocs/luci-static/resources/view/fchomo/node.js:858
msgid "Periodically sends data packets to maintain connection persistence."
msgstr "定期发送数据包以维持连接持久性。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:847
+#: htdocs/luci-static/resources/view/fchomo/node.js:857
msgid "Persistent keepalive"
msgstr "持久连接"
@@ -2249,8 +2303,8 @@ msgid ""
"standards."
msgstr "链接格式标准请参考 %s。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1696
-#: htdocs/luci-static/resources/view/fchomo/node.js:1722
+#: htdocs/luci-static/resources/view/fchomo/node.js:1725
+#: htdocs/luci-static/resources/view/fchomo/node.js:1751
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:346
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:372
msgid ""
@@ -2259,33 +2313,33 @@ msgid ""
msgstr ""
"请输入 %s。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:958
-#: htdocs/luci-static/resources/view/fchomo/client.js:1219
-#: htdocs/luci-static/resources/view/fchomo/client.js:1338
-#: htdocs/luci-static/resources/view/fchomo/client.js:1466
-#: htdocs/luci-static/resources/view/fchomo/client.js:1718
-#: htdocs/luci-static/resources/view/fchomo/client.js:1770
-#: htdocs/luci-static/resources/view/fchomo/node.js:1563
+#: htdocs/luci-static/resources/view/fchomo/client.js:976
+#: htdocs/luci-static/resources/view/fchomo/client.js:1279
+#: htdocs/luci-static/resources/view/fchomo/client.js:1401
+#: htdocs/luci-static/resources/view/fchomo/client.js:1529
+#: htdocs/luci-static/resources/view/fchomo/client.js:1784
+#: htdocs/luci-static/resources/view/fchomo/client.js:1836
+#: htdocs/luci-static/resources/view/fchomo/node.js:1592
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:155
msgid "Please type %s fields of mihomo config."
msgstr "请输入 mihomo 配置的 %s 字段。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:560
-#: htdocs/luci-static/resources/view/fchomo/node.js:871
+#: htdocs/luci-static/resources/fchomo/listeners.js:557
+#: htdocs/luci-static/resources/view/fchomo/node.js:881
msgid "Plugin"
msgstr "插件"
-#: htdocs/luci-static/resources/fchomo/listeners.js:568
-#: htdocs/luci-static/resources/fchomo/listeners.js:575
-#: htdocs/luci-static/resources/fchomo/listeners.js:582
-#: htdocs/luci-static/resources/fchomo/listeners.js:589
-#: htdocs/luci-static/resources/fchomo/listeners.js:595
-#: htdocs/luci-static/resources/view/fchomo/node.js:882
-#: htdocs/luci-static/resources/view/fchomo/node.js:889
-#: htdocs/luci-static/resources/view/fchomo/node.js:897
-#: htdocs/luci-static/resources/view/fchomo/node.js:903
-#: htdocs/luci-static/resources/view/fchomo/node.js:911
+#: htdocs/luci-static/resources/fchomo/listeners.js:577
+#: htdocs/luci-static/resources/fchomo/listeners.js:583
+#: htdocs/luci-static/resources/fchomo/listeners.js:590
+#: htdocs/luci-static/resources/fchomo/listeners.js:597
+#: htdocs/luci-static/resources/fchomo/listeners.js:603
+#: htdocs/luci-static/resources/view/fchomo/node.js:904
+#: htdocs/luci-static/resources/view/fchomo/node.js:910
#: htdocs/luci-static/resources/view/fchomo/node.js:917
+#: htdocs/luci-static/resources/view/fchomo/node.js:923
+#: htdocs/luci-static/resources/view/fchomo/node.js:931
+#: htdocs/luci-static/resources/view/fchomo/node.js:937
msgid "Plugin:"
msgstr "插件:"
@@ -2293,15 +2347,15 @@ msgstr "插件:"
msgid "Port"
msgstr "端口"
-#: htdocs/luci-static/resources/fchomo.js:1473
+#: htdocs/luci-static/resources/fchomo.js:1823
msgid "Port %s alrealy exists!"
msgstr "端口 %s 已存在!"
-#: htdocs/luci-static/resources/view/fchomo/node.js:303
+#: htdocs/luci-static/resources/view/fchomo/node.js:313
msgid "Port hop interval"
msgstr "端口跳跃间隔"
-#: htdocs/luci-static/resources/view/fchomo/node.js:385
+#: htdocs/luci-static/resources/view/fchomo/node.js:395
msgid "Port range"
msgstr "端口范围"
@@ -2310,27 +2364,27 @@ msgid "Ports"
msgstr "端口"
#: htdocs/luci-static/resources/fchomo/listeners.js:153
-#: htdocs/luci-static/resources/view/fchomo/node.js:298
+#: htdocs/luci-static/resources/view/fchomo/node.js:308
msgid "Ports pool"
msgstr "端口池"
#: htdocs/luci-static/resources/fchomo/listeners.js:225
#: htdocs/luci-static/resources/fchomo/listeners.js:456
-#: htdocs/luci-static/resources/view/fchomo/node.js:534
-#: htdocs/luci-static/resources/view/fchomo/node.js:828
+#: htdocs/luci-static/resources/view/fchomo/node.js:544
+#: htdocs/luci-static/resources/view/fchomo/node.js:838
msgid "Pre-shared key"
msgstr "预共享密钥"
-#: htdocs/luci-static/resources/fchomo/listeners.js:879
-#: htdocs/luci-static/resources/view/fchomo/node.js:1042
+#: htdocs/luci-static/resources/fchomo/listeners.js:897
+#: htdocs/luci-static/resources/view/fchomo/node.js:1070
msgid "Pre-shared key of rendezvous server"
msgstr "牵线服务器的预共享密钥"
-#: htdocs/luci-static/resources/fchomo.js:176
+#: htdocs/luci-static/resources/fchomo.js:177
msgid "Prefer IPv4"
msgstr "优先 IPv4"
-#: htdocs/luci-static/resources/fchomo.js:177
+#: htdocs/luci-static/resources/fchomo.js:178
msgid "Prefer IPv6"
msgstr "优先 IPv6"
@@ -2341,23 +2395,23 @@ msgstr "防止某些情况下的 ICMP 环回问题。Ping 不会显示实际延
#: htdocs/luci-static/resources/view/fchomo/global.js:760
#: htdocs/luci-static/resources/view/fchomo/global.js:777
-#: htdocs/luci-static/resources/view/fchomo/node.js:1524
-#: htdocs/luci-static/resources/view/fchomo/node.js:1531
-#: htdocs/luci-static/resources/view/fchomo/node.js:1911
-#: htdocs/luci-static/resources/view/fchomo/node.js:1918
+#: htdocs/luci-static/resources/view/fchomo/node.js:1553
+#: htdocs/luci-static/resources/view/fchomo/node.js:1560
+#: htdocs/luci-static/resources/view/fchomo/node.js:1945
+#: htdocs/luci-static/resources/view/fchomo/node.js:1952
msgid "Priority: Proxy Node > Global."
msgstr "优先级: 代理节点 > 全局。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:347
+#: htdocs/luci-static/resources/view/fchomo/node.js:357
msgid "Priv-key"
msgstr "密钥"
-#: htdocs/luci-static/resources/view/fchomo/node.js:351
+#: htdocs/luci-static/resources/view/fchomo/node.js:361
msgid "Priv-key passphrase"
msgstr "密钥密码"
-#: htdocs/luci-static/resources/view/fchomo/node.js:721
-#: htdocs/luci-static/resources/view/fchomo/node.js:813
+#: htdocs/luci-static/resources/view/fchomo/node.js:731
+#: htdocs/luci-static/resources/view/fchomo/node.js:823
msgid "Private key"
msgstr "私钥"
@@ -2366,34 +2420,34 @@ msgid "Process matching mode"
msgstr "进程匹配模式"
#: htdocs/luci-static/resources/view/fchomo/global.js:708
-#: htdocs/luci-static/resources/view/fchomo/node.js:1434
+#: htdocs/luci-static/resources/view/fchomo/node.js:1463
msgid "Protocol"
msgstr "协议"
-#: htdocs/luci-static/resources/view/fchomo/node.js:708
+#: htdocs/luci-static/resources/view/fchomo/node.js:718
msgid "Protocol parameter. Enable length block encryption."
msgstr "协议参数。启用长度块加密。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:702
+#: htdocs/luci-static/resources/view/fchomo/node.js:712
msgid ""
"Protocol parameter. Will waste traffic randomly if enabled (enabled by "
"default in v2ray and cannot be disabled)."
msgstr "协议参数。 如启用会随机浪费流量(在 v2ray 中默认启用并且无法禁用)。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1065
-#: htdocs/luci-static/resources/view/fchomo/node.js:1546
-#: htdocs/luci-static/resources/view/fchomo/node.js:1555
-#: htdocs/luci-static/resources/view/fchomo/node.js:2027
+#: htdocs/luci-static/resources/view/fchomo/client.js:1096
+#: htdocs/luci-static/resources/view/fchomo/node.js:1575
+#: htdocs/luci-static/resources/view/fchomo/node.js:1584
+#: htdocs/luci-static/resources/view/fchomo/node.js:2061
msgid "Provider"
msgstr "供应商"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1729
+#: htdocs/luci-static/resources/view/fchomo/node.js:1758
msgid "Provider URL"
msgstr "供应商订阅 URL"
-#: htdocs/luci-static/resources/view/fchomo/client.js:932
#: htdocs/luci-static/resources/view/fchomo/client.js:950
-#: htdocs/luci-static/resources/view/fchomo/client.js:1422
+#: htdocs/luci-static/resources/view/fchomo/client.js:968
+#: htdocs/luci-static/resources/view/fchomo/client.js:1485
msgid "Proxy Group"
msgstr "代理组"
@@ -2410,24 +2464,24 @@ msgid "Proxy MAC-s"
msgstr "代理 MAC 地址"
#: htdocs/luci-static/resources/view/fchomo/node.js:219
-#: htdocs/luci-static/resources/view/fchomo/node.js:2026
+#: htdocs/luci-static/resources/view/fchomo/node.js:2060
msgid "Proxy Node"
msgstr "代理节点"
-#: htdocs/luci-static/resources/view/fchomo/node.js:2002
-#: htdocs/luci-static/resources/view/fchomo/node.js:2011
+#: htdocs/luci-static/resources/view/fchomo/node.js:2036
+#: htdocs/luci-static/resources/view/fchomo/node.js:2045
msgid "Proxy chain"
msgstr "代理链"
-#: htdocs/luci-static/resources/fchomo/listeners.js:615
-#: htdocs/luci-static/resources/view/fchomo/client.js:792
-#: htdocs/luci-static/resources/view/fchomo/client.js:1564
-#: htdocs/luci-static/resources/view/fchomo/node.js:1747
+#: htdocs/luci-static/resources/fchomo/listeners.js:628
+#: htdocs/luci-static/resources/view/fchomo/client.js:797
+#: htdocs/luci-static/resources/view/fchomo/client.js:1627
+#: htdocs/luci-static/resources/view/fchomo/node.js:1776
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:403
msgid "Proxy group"
msgstr "代理组"
-#: htdocs/luci-static/resources/view/fchomo/client.js:890
+#: htdocs/luci-static/resources/view/fchomo/client.js:903
msgid "Proxy group override"
msgstr "代理组覆盖"
@@ -2439,44 +2493,44 @@ msgstr "代理模式"
msgid "Proxy routerself"
msgstr "代理路由器自身"
-#: htdocs/luci-static/resources/view/fchomo/node.js:573
-#: htdocs/luci-static/resources/view/fchomo/node.js:793
+#: htdocs/luci-static/resources/view/fchomo/node.js:583
+#: htdocs/luci-static/resources/view/fchomo/node.js:803
msgid "QUIC"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:935
+#: htdocs/luci-static/resources/view/fchomo/client.js:953
#: htdocs/luci-static/resources/view/fchomo/server.js:44
msgid "Quick Reload"
msgstr "快速重载"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1075
-#: htdocs/luci-static/resources/view/fchomo/node.js:1214
+#: htdocs/luci-static/resources/fchomo/listeners.js:1093
+#: htdocs/luci-static/resources/view/fchomo/node.js:1243
msgid "REALITY"
msgstr "REALITY"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1229
+#: htdocs/luci-static/resources/view/fchomo/node.js:1258
msgid "REALITY X25519MLKEM768 PQC support"
msgstr "REALITY X25519MLKEM768 后量子加密支持"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1112
+#: htdocs/luci-static/resources/fchomo/listeners.js:1130
msgid "REALITY certificate issued to"
msgstr "REALITY 证书颁发给"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1080
+#: htdocs/luci-static/resources/fchomo/listeners.js:1098
msgid "REALITY handshake server"
msgstr "REALITY 握手服务器"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1087
+#: htdocs/luci-static/resources/fchomo/listeners.js:1105
msgid "REALITY private key"
msgstr "REALITY 私钥"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1102
-#: htdocs/luci-static/resources/view/fchomo/node.js:1219
+#: htdocs/luci-static/resources/fchomo/listeners.js:1120
+#: htdocs/luci-static/resources/view/fchomo/node.js:1248
msgid "REALITY public key"
msgstr "REALITY 公钥"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1106
-#: htdocs/luci-static/resources/view/fchomo/node.js:1224
+#: htdocs/luci-static/resources/fchomo/listeners.js:1124
+#: htdocs/luci-static/resources/view/fchomo/node.js:1253
msgid "REALITY short ID"
msgstr "REALITY 标识符"
@@ -2484,9 +2538,9 @@ msgstr "REALITY 标识符"
msgid "REMATCH-NAME marking"
msgstr "REMATCH-NAME 打标"
-#: htdocs/luci-static/resources/fchomo/listeners.js:712
-#: htdocs/luci-static/resources/fchomo/listeners.js:731
-#: htdocs/luci-static/resources/view/fchomo/node.js:997
+#: htdocs/luci-static/resources/fchomo/listeners.js:730
+#: htdocs/luci-static/resources/fchomo/listeners.js:749
+#: htdocs/luci-static/resources/view/fchomo/node.js:1025
msgid "RTT"
msgstr ""
@@ -2502,13 +2556,13 @@ msgstr "留空将使用随机令牌。"
msgid "Randomized traffic characteristics"
msgstr "随机化流量特征"
-#: htdocs/luci-static/resources/fchomo/listeners.js:868
-#: htdocs/luci-static/resources/view/fchomo/node.js:1031
+#: htdocs/luci-static/resources/fchomo/listeners.js:886
+#: htdocs/luci-static/resources/view/fchomo/node.js:1059
msgid "Realm"
msgstr "Realm"
-#: htdocs/luci-static/resources/fchomo/listeners.js:884
-#: htdocs/luci-static/resources/view/fchomo/node.js:1047
+#: htdocs/luci-static/resources/fchomo/listeners.js:902
+#: htdocs/luci-static/resources/view/fchomo/node.js:1075
msgid "Realm ID"
msgstr "Realm ID"
@@ -2536,8 +2590,8 @@ msgstr "Redirect TCP + Tun UDP"
msgid "Refresh every %s seconds."
msgstr "每 %s 秒刷新。"
-#: htdocs/luci-static/resources/fchomo.js:1229
-#: htdocs/luci-static/resources/view/fchomo/client.js:936
+#: htdocs/luci-static/resources/fchomo.js:1579
+#: htdocs/luci-static/resources/view/fchomo/client.js:954
#: htdocs/luci-static/resources/view/fchomo/global.js:193
#: htdocs/luci-static/resources/view/fchomo/server.js:45
msgid "Reload"
@@ -2547,46 +2601,46 @@ msgstr "重载"
msgid "Reload All"
msgstr "重载所有"
-#: htdocs/luci-static/resources/fchomo.js:187
+#: htdocs/luci-static/resources/fchomo.js:188
msgid "Rematch"
msgstr "再路由"
-#: htdocs/luci-static/resources/fchomo.js:187
+#: htdocs/luci-static/resources/fchomo.js:188
msgid "Rematching routing rules"
msgstr "重新匹配路由规则"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1674
+#: htdocs/luci-static/resources/view/fchomo/node.js:1703
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:287
msgid "Remote"
msgstr "远程"
-#: htdocs/luci-static/resources/view/fchomo/node.js:776
-#: htdocs/luci-static/resources/view/fchomo/node.js:859
+#: htdocs/luci-static/resources/view/fchomo/node.js:786
+#: htdocs/luci-static/resources/view/fchomo/node.js:869
msgid "Remote DNS resolve"
msgstr "远程 DNS 解析"
-#: htdocs/luci-static/resources/fchomo.js:1394
+#: htdocs/luci-static/resources/fchomo.js:1744
msgid "Remove"
msgstr "移除"
-#: htdocs/luci-static/resources/fchomo.js:1399
-#: htdocs/luci-static/resources/view/fchomo/node.js:1650
-#: htdocs/luci-static/resources/view/fchomo/node.js:1652
+#: htdocs/luci-static/resources/fchomo.js:1749
+#: htdocs/luci-static/resources/view/fchomo/node.js:1679
+#: htdocs/luci-static/resources/view/fchomo/node.js:1681
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:259
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:261
msgid "Remove idles"
msgstr "移除闲置"
-#: htdocs/luci-static/resources/fchomo/listeners.js:873
-#: htdocs/luci-static/resources/view/fchomo/node.js:1036
+#: htdocs/luci-static/resources/fchomo/listeners.js:891
+#: htdocs/luci-static/resources/view/fchomo/node.js:1064
msgid "Rendezvous server"
msgstr "牵线服务器"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1841
+#: htdocs/luci-static/resources/view/fchomo/node.js:1875
msgid "Replace name"
msgstr "名称替换"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1842
+#: htdocs/luci-static/resources/view/fchomo/node.js:1876
msgid "Replace node name."
msgstr "替换节点名称"
@@ -2594,13 +2648,13 @@ msgstr "替换节点名称"
msgid "Request"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1160
-#: htdocs/luci-static/resources/view/fchomo/node.js:1302
-#: htdocs/luci-static/resources/view/fchomo/node.js:1309
+#: htdocs/luci-static/resources/fchomo/listeners.js:1178
+#: htdocs/luci-static/resources/view/fchomo/node.js:1331
+#: htdocs/luci-static/resources/view/fchomo/node.js:1338
msgid "Request path"
msgstr "请求路径"
-#: htdocs/luci-static/resources/view/fchomo/node.js:613
+#: htdocs/luci-static/resources/view/fchomo/node.js:623
msgid "Request timeout"
msgstr "请求超时"
@@ -2613,11 +2667,11 @@ msgid "Require any"
msgstr ""
#: htdocs/luci-static/resources/fchomo.js:404
-#: htdocs/luci-static/resources/view/fchomo/node.js:1230
+#: htdocs/luci-static/resources/view/fchomo/node.js:1259
msgid "Requires server support."
msgstr "需要服务器支持。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:842
+#: htdocs/luci-static/resources/view/fchomo/node.js:852
msgid "Reserved field bytes"
msgstr "保留字段字节"
@@ -2625,26 +2679,26 @@ msgstr "保留字段字节"
msgid "Resources management"
msgstr "资源管理"
-#: htdocs/luci-static/resources/view/fchomo/node.js:917
+#: htdocs/luci-static/resources/view/fchomo/node.js:937
msgid "Restls script"
msgstr "Restls 剧本"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1190
+#: htdocs/luci-static/resources/view/fchomo/client.js:1250
msgid ""
"Returns hidden status in the API to hide the display of this proxy group."
msgstr "在 API 返回 hidden 状态,以隐藏该代理组显示。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1196
+#: htdocs/luci-static/resources/view/fchomo/client.js:1256
msgid ""
"Returns the string input for icon in the API to display in this proxy group."
msgstr "在 API 返回 icon 所输入的字符串,以在该代理组显示。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:518
+#: htdocs/luci-static/resources/view/fchomo/node.js:528
msgid "Reuse HTTP connections to reduce RTT for each connection establishment."
msgstr "重用 HTTP 连接以减少每次建立连接的 RTT。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:515
-#: htdocs/luci-static/resources/view/fchomo/node.js:519
+#: htdocs/luci-static/resources/view/fchomo/node.js:525
+#: htdocs/luci-static/resources/view/fchomo/node.js:529
msgid "Reusing a single tunnel to carry multiple target connections within it."
msgstr "复用单条隧道使其内部承载多条目标连线。"
@@ -2661,10 +2715,10 @@ msgstr "路由 DSCP"
msgid "Routing GFW"
msgstr "路由 GFW 流量"
-#: htdocs/luci-static/resources/fchomo/listeners.js:605
+#: htdocs/luci-static/resources/fchomo/listeners.js:613
#: htdocs/luci-static/resources/view/fchomo/global.js:776
-#: htdocs/luci-static/resources/view/fchomo/node.js:1530
-#: htdocs/luci-static/resources/view/fchomo/node.js:1917
+#: htdocs/luci-static/resources/view/fchomo/node.js:1559
+#: htdocs/luci-static/resources/view/fchomo/node.js:1951
msgid "Routing mark (Fwmark)"
msgstr "路由标记 (Fwmark)"
@@ -2685,8 +2739,8 @@ msgstr "路由模式将处理域名。"
msgid "Routing ports"
msgstr "路由端口"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1202
-#: htdocs/luci-static/resources/view/fchomo/client.js:1211
+#: htdocs/luci-static/resources/view/fchomo/client.js:1262
+#: htdocs/luci-static/resources/view/fchomo/client.js:1271
msgid "Routing rule"
msgstr "路由规则"
@@ -2702,8 +2756,8 @@ msgstr "路由表 ID"
msgid "Rule"
msgstr "规则"
-#: htdocs/luci-static/resources/view/fchomo/client.js:854
-#: htdocs/luci-static/resources/view/fchomo/client.js:867
+#: htdocs/luci-static/resources/view/fchomo/client.js:862
+#: htdocs/luci-static/resources/view/fchomo/client.js:875
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:147
msgid "Rule set"
msgstr "规则集"
@@ -2720,7 +2774,7 @@ msgstr "规则集"
msgid "Ruleset-URI-Scheme"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1242
+#: htdocs/luci-static/resources/fchomo.js:1592
msgid "Running"
msgstr "正在运行"
@@ -2728,15 +2782,15 @@ msgstr "正在运行"
msgid "SMTP"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:154
+#: htdocs/luci-static/resources/fchomo.js:155
msgid "SOCKS"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:190
+#: htdocs/luci-static/resources/fchomo.js:191
msgid "SOCKS5"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:206
+#: htdocs/luci-static/resources/fchomo.js:207
msgid "SSH"
msgstr ""
@@ -2744,29 +2798,29 @@ msgstr ""
msgid "STUN"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:890
-#: htdocs/luci-static/resources/view/fchomo/node.js:1053
+#: htdocs/luci-static/resources/fchomo/listeners.js:908
+#: htdocs/luci-static/resources/view/fchomo/node.js:1081
msgid "STUN servers"
msgstr "STUN 服务器"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1294
+#: htdocs/luci-static/resources/view/fchomo/client.js:1354
msgid "SUB-RULE"
msgstr "SUB-RULE"
-#: htdocs/luci-static/resources/view/fchomo/node.js:954
+#: htdocs/luci-static/resources/view/fchomo/node.js:982
msgid "SUoT version"
msgstr "SUoT 版本"
#: htdocs/luci-static/resources/fchomo/listeners.js:195
-#: htdocs/luci-static/resources/view/fchomo/node.js:323
+#: htdocs/luci-static/resources/view/fchomo/node.js:333
msgid "Salamander"
msgstr "Salamander"
-#: htdocs/luci-static/resources/fchomo.js:182
+#: htdocs/luci-static/resources/fchomo.js:183
msgid "Same dstaddr requests. Same node"
msgstr "相同 目标地址 请求。相同节点"
-#: htdocs/luci-static/resources/fchomo.js:183
+#: htdocs/luci-static/resources/fchomo.js:184
msgid "Same srcaddr and dstaddr requests. Same node"
msgstr "相同 来源地址 和 目标地址 请求。相同节点"
@@ -2779,7 +2833,7 @@ msgstr ""
msgid "Segment maximum size"
msgstr "分段最大尺寸"
-#: htdocs/luci-static/resources/fchomo.js:240
+#: htdocs/luci-static/resources/fchomo.js:241
msgid "Select"
msgstr "手动选择"
@@ -2791,14 +2845,18 @@ msgstr "选择面板"
msgid "Send padding randomly 0-3333 bytes with 50% probability."
msgstr "以 50% 的概率发送随机 0-3333 字节的填充。"
+#: htdocs/luci-static/resources/view/fchomo/client.js:1924
+msgid "Send queries to both the %s and the %s."
+msgstr "同时向%s和%s发起查询。"
+
#: htdocs/luci-static/resources/fchomo.js:399
#: htdocs/luci-static/resources/fchomo.js:400
msgid "Send random ticket of 300s-600s duration for client 0-RTT reuse."
msgstr "发送 300-600 秒的随机票证,以供客户端 0-RTT 重用。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:712
-#: htdocs/luci-static/resources/fchomo/listeners.js:973
-#: htdocs/luci-static/resources/fchomo/listeners.js:988
+#: htdocs/luci-static/resources/fchomo/listeners.js:730
+#: htdocs/luci-static/resources/fchomo/listeners.js:991
+#: htdocs/luci-static/resources/fchomo/listeners.js:1006
#: htdocs/luci-static/resources/view/fchomo/server.js:58
#: root/usr/share/luci/menu.d/luci-app-fchomo.json:62
msgid "Server"
@@ -2808,9 +2866,9 @@ msgstr "服务端"
msgid "Server address"
msgstr "服务器地址"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1154
-#: htdocs/luci-static/resources/view/fchomo/node.js:1281
-#: htdocs/luci-static/resources/view/fchomo/node.js:1287
+#: htdocs/luci-static/resources/fchomo/listeners.js:1172
+#: htdocs/luci-static/resources/view/fchomo/node.js:1310
+#: htdocs/luci-static/resources/view/fchomo/node.js:1316
msgid "Server hostname"
msgstr "服务器主机名称"
@@ -2822,46 +2880,46 @@ msgstr "服务端状态"
msgid "Service status"
msgstr "服务状态"
-#: htdocs/luci-static/resources/fchomo.js:156
-#: htdocs/luci-static/resources/fchomo.js:191
+#: htdocs/luci-static/resources/fchomo.js:157
+#: htdocs/luci-static/resources/fchomo.js:192
msgid "Shadowsocks"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:506
-#: htdocs/luci-static/resources/view/fchomo/node.js:632
+#: htdocs/luci-static/resources/fchomo/listeners.js:503
+#: htdocs/luci-static/resources/view/fchomo/node.js:642
msgid "Shadowsocks chipher"
msgstr "Shadowsocks 加密方法"
-#: htdocs/luci-static/resources/fchomo/listeners.js:501
-#: htdocs/luci-static/resources/view/fchomo/node.js:627
+#: htdocs/luci-static/resources/fchomo/listeners.js:498
+#: htdocs/luci-static/resources/view/fchomo/node.js:637
msgid "Shadowsocks encrypt"
msgstr "Shadowsocks 加密"
-#: htdocs/luci-static/resources/fchomo/listeners.js:514
-#: htdocs/luci-static/resources/view/fchomo/node.js:640
+#: htdocs/luci-static/resources/fchomo/listeners.js:511
+#: htdocs/luci-static/resources/view/fchomo/node.js:650
msgid "Shadowsocks password"
msgstr "Shadowsocks 密码"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1482
+#: htdocs/luci-static/resources/view/fchomo/node.js:1511
msgid "Show connections in the dashboard for breaking connections easier."
msgstr "在面板中显示连接以便于打断连接。"
-#: htdocs/luci-static/resources/fchomo.js:89
+#: htdocs/luci-static/resources/fchomo.js:90
msgid "Silent"
msgstr "静音"
-#: htdocs/luci-static/resources/fchomo.js:181
+#: htdocs/luci-static/resources/fchomo.js:182
msgid "Simple round-robin all nodes"
msgstr "简单轮替所有节点"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1735
+#: htdocs/luci-static/resources/view/fchomo/node.js:1764
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:391
msgid "Size limit"
msgstr "大小限制"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1597
-#: htdocs/luci-static/resources/view/fchomo/node.js:1151
-#: htdocs/luci-static/resources/view/fchomo/node.js:1892
+#: htdocs/luci-static/resources/view/fchomo/client.js:1663
+#: htdocs/luci-static/resources/view/fchomo/node.js:1180
+#: htdocs/luci-static/resources/view/fchomo/node.js:1926
msgid "Skip cert verify"
msgstr "跳过证书验证"
@@ -2877,8 +2935,8 @@ msgstr "跳过嗅探目标地址"
msgid "Skiped sniffing src address"
msgstr "跳过嗅探来源地址"
-#: htdocs/luci-static/resources/fchomo.js:159
-#: htdocs/luci-static/resources/fchomo.js:195
+#: htdocs/luci-static/resources/fchomo.js:160
+#: htdocs/luci-static/resources/fchomo.js:196
msgid "Snell"
msgstr ""
@@ -2909,7 +2967,7 @@ msgstr "指定需要被代理的目标端口。多个端口必须用逗号隔开
msgid "Stack"
msgstr "堆栈"
-#: htdocs/luci-static/resources/fchomo.js:60
+#: htdocs/luci-static/resources/fchomo.js:61
msgid "Standard"
msgstr "标准"
@@ -2921,22 +2979,22 @@ msgstr ""
msgid "Steam P2P"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1162
-#: htdocs/luci-static/resources/view/fchomo/client.js:1164
+#: htdocs/luci-static/resources/view/fchomo/client.js:1222
+#: htdocs/luci-static/resources/view/fchomo/client.js:1224
msgid "Strategy"
msgstr "策略"
-#: htdocs/luci-static/resources/fchomo/listeners.js:609
-#: htdocs/luci-static/resources/view/fchomo/client.js:1321
-#: htdocs/luci-static/resources/view/fchomo/client.js:1330
+#: htdocs/luci-static/resources/fchomo/listeners.js:617
+#: htdocs/luci-static/resources/view/fchomo/client.js:1384
+#: htdocs/luci-static/resources/view/fchomo/client.js:1393
msgid "Sub rule"
msgstr "子规则"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1376
+#: htdocs/luci-static/resources/view/fchomo/client.js:1439
msgid "Sub rule group"
msgstr "子规则组"
-#: htdocs/luci-static/resources/fchomo.js:702
+#: htdocs/luci-static/resources/fchomo.js:727
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:231
msgid "Successfully imported %s %s of total %s."
msgstr "已成功导入 %s 个%s (共 %s 个)。"
@@ -2945,12 +3003,12 @@ msgstr "已成功导入 %s 个%s (共 %s 个)。"
msgid "Successfully updated."
msgstr "更新成功。"
-#: htdocs/luci-static/resources/fchomo.js:1744
+#: htdocs/luci-static/resources/fchomo.js:2094
msgid "Successfully uploaded."
msgstr "已成功上传。"
-#: htdocs/luci-static/resources/fchomo.js:158
-#: htdocs/luci-static/resources/fchomo.js:194
+#: htdocs/luci-static/resources/fchomo.js:159
+#: htdocs/luci-static/resources/fchomo.js:195
msgid "Sudoku"
msgstr ""
@@ -2966,28 +3024,28 @@ msgstr ""
msgid "System"
msgstr "系统"
-#: htdocs/luci-static/resources/view/fchomo/client.js:57
+#: htdocs/luci-static/resources/view/fchomo/client.js:59
msgid "System DNS"
msgstr "系统 DNS"
-#: htdocs/luci-static/resources/fchomo.js:153
-#: htdocs/luci-static/resources/fchomo.js:158
+#: htdocs/luci-static/resources/fchomo.js:154
#: htdocs/luci-static/resources/fchomo.js:159
#: htdocs/luci-static/resources/fchomo.js:160
#: htdocs/luci-static/resources/fchomo.js:161
#: htdocs/luci-static/resources/fchomo.js:162
#: htdocs/luci-static/resources/fchomo.js:163
-#: htdocs/luci-static/resources/fchomo.js:189
-#: htdocs/luci-static/resources/fchomo.js:194
+#: htdocs/luci-static/resources/fchomo.js:164
+#: htdocs/luci-static/resources/fchomo.js:190
#: htdocs/luci-static/resources/fchomo.js:195
#: htdocs/luci-static/resources/fchomo.js:196
#: htdocs/luci-static/resources/fchomo.js:197
#: htdocs/luci-static/resources/fchomo.js:198
#: htdocs/luci-static/resources/fchomo.js:199
-#: htdocs/luci-static/resources/fchomo.js:206
-#: htdocs/luci-static/resources/fchomo/listeners.js:643
-#: htdocs/luci-static/resources/view/fchomo/client.js:598
-#: htdocs/luci-static/resources/view/fchomo/client.js:688
+#: htdocs/luci-static/resources/fchomo.js:200
+#: htdocs/luci-static/resources/fchomo.js:207
+#: htdocs/luci-static/resources/fchomo/listeners.js:661
+#: htdocs/luci-static/resources/view/fchomo/client.js:600
+#: htdocs/luci-static/resources/view/fchomo/client.js:690
msgid "TCP"
msgstr "TCP"
@@ -2995,7 +3053,7 @@ msgstr "TCP"
msgid "TCP concurrency"
msgstr "TCP 并发"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1475
+#: htdocs/luci-static/resources/view/fchomo/node.js:1504
msgid "TCP only"
msgstr "仅 TCP"
@@ -3007,41 +3065,41 @@ msgstr "TCP-Keep-Alive 闲置超时"
msgid "TCP-Keep-Alive interval"
msgstr "TCP-Keep-Alive 间隔"
-#: htdocs/luci-static/resources/fchomo.js:154
#: htdocs/luci-static/resources/fchomo.js:155
#: htdocs/luci-static/resources/fchomo.js:156
#: htdocs/luci-static/resources/fchomo.js:157
-#: htdocs/luci-static/resources/fchomo.js:166
+#: htdocs/luci-static/resources/fchomo.js:158
#: htdocs/luci-static/resources/fchomo.js:167
#: htdocs/luci-static/resources/fchomo.js:168
-#: htdocs/luci-static/resources/fchomo.js:188
-#: htdocs/luci-static/resources/fchomo.js:190
+#: htdocs/luci-static/resources/fchomo.js:169
+#: htdocs/luci-static/resources/fchomo.js:189
#: htdocs/luci-static/resources/fchomo.js:191
-#: htdocs/luci-static/resources/fchomo.js:193
-#: htdocs/luci-static/resources/fchomo.js:204
+#: htdocs/luci-static/resources/fchomo.js:192
+#: htdocs/luci-static/resources/fchomo.js:194
+#: htdocs/luci-static/resources/fchomo.js:205
msgid "TCP/UDP"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1506
-#: htdocs/luci-static/resources/view/fchomo/node.js:1859
+#: htdocs/luci-static/resources/view/fchomo/node.js:1535
+#: htdocs/luci-static/resources/view/fchomo/node.js:1893
msgid "TFO"
msgstr "TCP 快速打开 (TFO)"
-#: htdocs/luci-static/resources/fchomo/listeners.js:570
-#: htdocs/luci-static/resources/fchomo/listeners.js:900
+#: htdocs/luci-static/resources/fchomo/listeners.js:579
+#: htdocs/luci-static/resources/fchomo/listeners.js:918
#: htdocs/luci-static/resources/view/fchomo/global.js:550
-#: htdocs/luci-static/resources/view/fchomo/node.js:499
-#: htdocs/luci-static/resources/view/fchomo/node.js:884
-#: htdocs/luci-static/resources/view/fchomo/node.js:1063
+#: htdocs/luci-static/resources/view/fchomo/node.js:509
+#: htdocs/luci-static/resources/view/fchomo/node.js:906
+#: htdocs/luci-static/resources/view/fchomo/node.js:1091
msgid "TLS"
msgstr "TLS"
-#: htdocs/luci-static/resources/fchomo/listeners.js:967
-#: htdocs/luci-static/resources/view/fchomo/node.js:1094
+#: htdocs/luci-static/resources/fchomo/listeners.js:985
+#: htdocs/luci-static/resources/view/fchomo/node.js:1122
msgid "TLS ALPN"
msgstr "TLS ALPN"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1088
+#: htdocs/luci-static/resources/view/fchomo/node.js:1116
msgid "TLS SNI"
msgstr ""
@@ -3050,8 +3108,8 @@ msgstr ""
msgid "TLS fields"
msgstr "TLS字段"
-#: htdocs/luci-static/resources/fchomo.js:164
-#: htdocs/luci-static/resources/fchomo.js:202
+#: htdocs/luci-static/resources/fchomo.js:165
+#: htdocs/luci-static/resources/fchomo.js:203
msgid "TUIC"
msgstr ""
@@ -3059,7 +3117,7 @@ msgstr ""
msgid "TURN"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:553
+#: htdocs/luci-static/resources/fchomo/listeners.js:550
msgid "Target address"
msgstr "目标地址"
@@ -3068,35 +3126,35 @@ msgid ""
"Tell the client to use the BBR flow control algorithm instead of Hysteria CC."
msgstr "让客户端使用 BBR 流控算法。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:737
-#: htdocs/luci-static/resources/view/fchomo/node.js:745
+#: htdocs/luci-static/resources/view/fchomo/node.js:747
+#: htdocs/luci-static/resources/view/fchomo/node.js:755
msgid "The %s address used by local machine in the Cloudflare WARP network."
msgstr "Cloudflare WARP 网络中使用的本机 %s 地址。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:800
-#: htdocs/luci-static/resources/view/fchomo/node.js:808
+#: htdocs/luci-static/resources/view/fchomo/node.js:810
+#: htdocs/luci-static/resources/view/fchomo/node.js:818
msgid "The %s address used by local machine in the Wireguard network."
msgstr "WireGuard 网络中使用的本机 %s 地址。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:988
-#: htdocs/luci-static/resources/view/fchomo/node.js:1174
+#: htdocs/luci-static/resources/fchomo/listeners.js:1006
+#: htdocs/luci-static/resources/view/fchomo/node.js:1203
msgid "The %s private key, in PEM format."
msgstr "%s私钥,需要 PEM 格式。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:973
-#: htdocs/luci-static/resources/fchomo/listeners.js:1011
+#: htdocs/luci-static/resources/fchomo/listeners.js:991
+#: htdocs/luci-static/resources/fchomo/listeners.js:1029
#: htdocs/luci-static/resources/view/fchomo/global.js:571
-#: htdocs/luci-static/resources/view/fchomo/node.js:1160
+#: htdocs/luci-static/resources/view/fchomo/node.js:1189
msgid "The %s public key, in PEM format."
msgstr "%s公钥,需要 PEM 格式。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1194
+#: htdocs/luci-static/resources/view/fchomo/node.js:1223
msgid ""
"The ECH parameter of the HTTPS record for the domain. Leave empty to resolve "
"via DNS."
msgstr "域名的 HTTPS 记录的 ECH 参数。留空则通过 DNS 解析。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:421
+#: htdocs/luci-static/resources/view/fchomo/node.js:431
msgid "The ED25519 available private key or UUID provided by Sudoku server."
msgstr "Sudoku 服务器提供的 ED25519 可用私钥 或 UUID。"
@@ -3108,42 +3166,48 @@ msgstr "Sudoku 生成的 ED25519 主公钥 或 UUID。"
msgid "The default value is 2:00 every day."
msgstr "默认值为每天 2:00。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:744
-#: htdocs/luci-static/resources/view/fchomo/node.js:1010
+#: htdocs/luci-static/resources/view/fchomo/node.js:964
+msgid ""
+"The default value is %s, indicating that only the outer "
+"connection timeout is used."
+msgstr "默认值为%s,表示仅使用外层连接超时。"
+
+#: htdocs/luci-static/resources/fchomo/listeners.js:762
+#: htdocs/luci-static/resources/view/fchomo/node.js:1038
msgid ""
"The first padding must have a probability of 100% and at least 35 bytes."
msgstr "首个填充必须为 100% 的概率并且至少 35 字节。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1827
+#: htdocs/luci-static/resources/view/fchomo/client.js:1893
msgid "The matching %s will be deemed as not-poisoned."
msgstr "匹配 %s 的将被视为未被投毒污染。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1836
-#: htdocs/luci-static/resources/view/fchomo/client.js:1840
-#: htdocs/luci-static/resources/view/fchomo/client.js:1845
+#: htdocs/luci-static/resources/view/fchomo/client.js:1902
+#: htdocs/luci-static/resources/view/fchomo/client.js:1906
+#: htdocs/luci-static/resources/view/fchomo/client.js:1911
msgid "The matching %s will be deemed as poisoned."
msgstr "匹配 %s 的将被视为已被投毒污染。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:742
-#: htdocs/luci-static/resources/view/fchomo/node.js:1008
+#: htdocs/luci-static/resources/fchomo/listeners.js:760
+#: htdocs/luci-static/resources/view/fchomo/node.js:1036
msgid "The server and client can set different padding parameters."
msgstr "服务器和客户端可以设置不同的填充参数。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1069
+#: htdocs/luci-static/resources/fchomo/listeners.js:1087
#: htdocs/luci-static/resources/view/fchomo/global.js:615
msgid "This ECH parameter needs to be added to the HTTPS record of the domain."
msgstr "此 ECH 参数需要添加到域名的 HTTPS 记录中。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1600
-#: htdocs/luci-static/resources/view/fchomo/node.js:1154
-#: htdocs/luci-static/resources/view/fchomo/node.js:1895
+#: htdocs/luci-static/resources/view/fchomo/client.js:1666
+#: htdocs/luci-static/resources/view/fchomo/node.js:1183
+#: htdocs/luci-static/resources/view/fchomo/node.js:1929
msgid ""
"This is DANGEROUS, your traffic is almost like "
"PLAIN TEXT! Use at your own risk!"
msgstr ""
"这是危险行为,您的流量将几乎等同于明文!使用风险自负!"
-#: htdocs/luci-static/resources/view/fchomo/node.js:578
+#: htdocs/luci-static/resources/view/fchomo/node.js:588
msgid ""
"This is the TUIC port of the SUoT protocol, designed to provide a QUIC "
"stream based UDP relay mode that TUIC does not provide."
@@ -3176,22 +3240,22 @@ msgid "Tproxy port"
msgstr "Tproxy 端口"
#: htdocs/luci-static/resources/fchomo/listeners.js:285
-#: htdocs/luci-static/resources/view/fchomo/node.js:413
+#: htdocs/luci-static/resources/view/fchomo/node.js:423
msgid "Traffic pattern"
msgstr "流量模式"
-#: htdocs/luci-static/resources/view/fchomo/node.js:2054
+#: htdocs/luci-static/resources/view/fchomo/node.js:2098
msgid "Transit proxy group"
msgstr "中转代理组"
-#: htdocs/luci-static/resources/view/fchomo/node.js:2060
+#: htdocs/luci-static/resources/view/fchomo/node.js:2109
msgid "Transit proxy node"
msgstr "中转代理节点"
#: htdocs/luci-static/resources/fchomo/listeners.js:273
-#: htdocs/luci-static/resources/fchomo/listeners.js:1120
-#: htdocs/luci-static/resources/view/fchomo/node.js:390
-#: htdocs/luci-static/resources/view/fchomo/node.js:1236
+#: htdocs/luci-static/resources/fchomo/listeners.js:1138
+#: htdocs/luci-static/resources/view/fchomo/node.js:400
+#: htdocs/luci-static/resources/view/fchomo/node.js:1265
msgid "Transport"
msgstr "传输层"
@@ -3200,22 +3264,22 @@ msgstr "传输层"
msgid "Transport fields"
msgstr "传输层字段"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1125
-#: htdocs/luci-static/resources/view/fchomo/node.js:1241
+#: htdocs/luci-static/resources/fchomo/listeners.js:1143
+#: htdocs/luci-static/resources/view/fchomo/node.js:1270
msgid "Transport type"
msgstr "传输层类型"
-#: htdocs/luci-static/resources/view/fchomo/client.js:811
+#: htdocs/luci-static/resources/view/fchomo/client.js:819
msgid "Treat the destination IP as the source IP."
msgstr "将 目标 IP 视为 来源 IP。"
-#: htdocs/luci-static/resources/fchomo.js:162
-#: htdocs/luci-static/resources/fchomo.js:198
+#: htdocs/luci-static/resources/fchomo.js:163
+#: htdocs/luci-static/resources/fchomo.js:199
msgid "Trojan"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:167
-#: htdocs/luci-static/resources/fchomo.js:204
+#: htdocs/luci-static/resources/fchomo.js:168
+#: htdocs/luci-static/resources/fchomo.js:205
msgid "TrustTunnel"
msgstr ""
@@ -3239,35 +3303,35 @@ msgstr "Tun 设置"
msgid "Tun stack."
msgstr "Tun 堆栈"
-#: htdocs/luci-static/resources/fchomo.js:168
+#: htdocs/luci-static/resources/fchomo.js:169
msgid "Tunnel"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:142
-#: htdocs/luci-static/resources/view/fchomo/client.js:531
-#: htdocs/luci-static/resources/view/fchomo/client.js:652
-#: htdocs/luci-static/resources/view/fchomo/client.js:746
-#: htdocs/luci-static/resources/view/fchomo/client.js:851
-#: htdocs/luci-static/resources/view/fchomo/client.js:1038
+#: htdocs/luci-static/resources/view/fchomo/client.js:533
+#: htdocs/luci-static/resources/view/fchomo/client.js:654
+#: htdocs/luci-static/resources/view/fchomo/client.js:751
+#: htdocs/luci-static/resources/view/fchomo/client.js:859
+#: htdocs/luci-static/resources/view/fchomo/client.js:1057
#: htdocs/luci-static/resources/view/fchomo/node.js:250
-#: htdocs/luci-static/resources/view/fchomo/node.js:1672
-#: htdocs/luci-static/resources/view/fchomo/node.js:2025
+#: htdocs/luci-static/resources/view/fchomo/node.js:1701
+#: htdocs/luci-static/resources/view/fchomo/node.js:2059
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:285
msgid "Type"
msgstr "类型"
-#: htdocs/luci-static/resources/fchomo.js:164
#: htdocs/luci-static/resources/fchomo.js:165
-#: htdocs/luci-static/resources/fchomo.js:201
+#: htdocs/luci-static/resources/fchomo.js:166
#: htdocs/luci-static/resources/fchomo.js:202
#: htdocs/luci-static/resources/fchomo.js:203
-#: htdocs/luci-static/resources/fchomo.js:205
-#: htdocs/luci-static/resources/fchomo/listeners.js:644
-#: htdocs/luci-static/resources/fchomo/listeners.js:649
-#: htdocs/luci-static/resources/view/fchomo/client.js:597
-#: htdocs/luci-static/resources/view/fchomo/client.js:687
-#: htdocs/luci-static/resources/view/fchomo/node.js:942
-#: htdocs/luci-static/resources/view/fchomo/node.js:1869
+#: htdocs/luci-static/resources/fchomo.js:204
+#: htdocs/luci-static/resources/fchomo.js:206
+#: htdocs/luci-static/resources/fchomo/listeners.js:662
+#: htdocs/luci-static/resources/fchomo/listeners.js:667
+#: htdocs/luci-static/resources/view/fchomo/client.js:599
+#: htdocs/luci-static/resources/view/fchomo/client.js:689
+#: htdocs/luci-static/resources/view/fchomo/node.js:970
+#: htdocs/luci-static/resources/view/fchomo/node.js:1903
msgid "UDP"
msgstr "UDP"
@@ -3275,42 +3339,42 @@ msgstr "UDP"
msgid "UDP NAT expiration time"
msgstr "UDP NAT 过期时间"
-#: htdocs/luci-static/resources/view/fchomo/node.js:577
+#: htdocs/luci-static/resources/view/fchomo/node.js:587
msgid "UDP over stream"
msgstr "UDP over stream"
-#: htdocs/luci-static/resources/view/fchomo/node.js:583
+#: htdocs/luci-static/resources/view/fchomo/node.js:593
msgid "UDP over stream version"
msgstr "UDP over stream 版本"
-#: htdocs/luci-static/resources/view/fchomo/node.js:570
+#: htdocs/luci-static/resources/view/fchomo/node.js:580
msgid "UDP packet relay mode."
msgstr "UDP 包中继模式。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:569
+#: htdocs/luci-static/resources/view/fchomo/node.js:579
msgid "UDP relay mode"
msgstr "UDP 中继模式"
#: htdocs/luci-static/resources/fchomo/listeners.js:373
#: htdocs/luci-static/resources/fchomo/listeners.js:374
-#: htdocs/luci-static/resources/view/fchomo/node.js:445
-#: htdocs/luci-static/resources/view/fchomo/node.js:446
+#: htdocs/luci-static/resources/view/fchomo/node.js:455
+#: htdocs/luci-static/resources/view/fchomo/node.js:456
msgid "UP: %s; DOWN: %s"
msgstr "上传: %s; 下载: %s"
-#: htdocs/luci-static/resources/fchomo.js:242
+#: htdocs/luci-static/resources/fchomo.js:243
msgid "URL test"
msgstr "自动选择"
#: htdocs/luci-static/resources/fchomo/listeners.js:294
-#: htdocs/luci-static/resources/fchomo/listeners.js:474
-#: htdocs/luci-static/resources/fchomo/listeners.js:529
-#: htdocs/luci-static/resources/view/fchomo/node.js:557
-#: htdocs/luci-static/resources/view/fchomo/node.js:671
+#: htdocs/luci-static/resources/fchomo/listeners.js:471
+#: htdocs/luci-static/resources/fchomo/listeners.js:526
+#: htdocs/luci-static/resources/view/fchomo/node.js:567
+#: htdocs/luci-static/resources/view/fchomo/node.js:681
msgid "UUID"
msgstr "UUID"
-#: htdocs/luci-static/resources/fchomo.js:1287
+#: htdocs/luci-static/resources/fchomo.js:1637
msgid "Unable to download unsupported type: %s"
msgstr "无法下载不支持的类型: %s"
@@ -3335,8 +3399,8 @@ msgstr "未知错误。"
msgid "Unknown error: %s"
msgstr "未知错误:%s"
-#: htdocs/luci-static/resources/view/fchomo/node.js:948
-#: htdocs/luci-static/resources/view/fchomo/node.js:1874
+#: htdocs/luci-static/resources/view/fchomo/node.js:976
+#: htdocs/luci-static/resources/view/fchomo/node.js:1908
msgid "UoT"
msgstr "UDP over TCP (UoT)"
@@ -3344,22 +3408,22 @@ msgstr "UDP over TCP (UoT)"
msgid "Update failed."
msgstr "更新失败。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1741
+#: htdocs/luci-static/resources/view/fchomo/node.js:1770
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:397
msgid "Update interval"
msgstr "更新间隔"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1493
+#: htdocs/luci-static/resources/view/fchomo/node.js:1522
msgid "Upload bandwidth"
msgstr "上传带宽"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1494
+#: htdocs/luci-static/resources/view/fchomo/node.js:1523
msgid "Upload bandwidth in Mbps."
msgstr "上传带宽(单位:Mbps)。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:979
-#: htdocs/luci-static/resources/fchomo/listeners.js:1019
-#: htdocs/luci-static/resources/view/fchomo/node.js:1165
+#: htdocs/luci-static/resources/fchomo/listeners.js:997
+#: htdocs/luci-static/resources/fchomo/listeners.js:1037
+#: htdocs/luci-static/resources/view/fchomo/node.js:1194
msgid "Upload certificate"
msgstr "上传证书"
@@ -3367,45 +3431,45 @@ msgstr "上传证书"
msgid "Upload initial package"
msgstr "上传初始资源包"
-#: htdocs/luci-static/resources/fchomo/listeners.js:994
-#: htdocs/luci-static/resources/view/fchomo/node.js:1179
+#: htdocs/luci-static/resources/fchomo/listeners.js:1012
+#: htdocs/luci-static/resources/view/fchomo/node.js:1208
msgid "Upload key"
msgstr "上传密钥"
-#: htdocs/luci-static/resources/fchomo/listeners.js:982
-#: htdocs/luci-static/resources/fchomo/listeners.js:997
-#: htdocs/luci-static/resources/fchomo/listeners.js:1022
+#: htdocs/luci-static/resources/fchomo/listeners.js:1000
+#: htdocs/luci-static/resources/fchomo/listeners.js:1015
+#: htdocs/luci-static/resources/fchomo/listeners.js:1040
#: htdocs/luci-static/resources/view/fchomo/global.js:306
-#: htdocs/luci-static/resources/view/fchomo/node.js:1168
-#: htdocs/luci-static/resources/view/fchomo/node.js:1182
+#: htdocs/luci-static/resources/view/fchomo/node.js:1197
+#: htdocs/luci-static/resources/view/fchomo/node.js:1211
msgid "Upload..."
msgstr "上传..."
-#: htdocs/luci-static/resources/view/fchomo/node.js:273
+#: htdocs/luci-static/resources/view/fchomo/node.js:278
msgid "Use sub rule"
msgstr "使用子规则"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1420
+#: htdocs/luci-static/resources/view/fchomo/client.js:1483
msgid ""
"Used to resolve domains that can be directly connected. Can use domestic DNS "
"servers or ECS."
msgstr "用于解析可直连的域名。可以使用国内 DNS 服务器或 ECS。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1422
+#: htdocs/luci-static/resources/view/fchomo/client.js:1485
msgid ""
"Used to resolve domains you want to proxy. Recommended to configure %s for "
"DNS servers."
msgstr "用于解析想要代理的域名。建议为 DNS 服务器配置%s。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1404
+#: htdocs/luci-static/resources/view/fchomo/client.js:1467
msgid "Used to resolve the domain of the DNS server. Must be IP."
msgstr "用于解析 DNS 服务器的域名。必须是 IP。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1411
+#: htdocs/luci-static/resources/view/fchomo/client.js:1474
msgid "Used to resolve the domain of the Proxy node."
msgstr "用于解析代理节点的域名。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1089
+#: htdocs/luci-static/resources/view/fchomo/node.js:1117
msgid "Used to verify the hostname on the returned certificates."
msgstr "用于验证返回的证书上的主机名。"
@@ -3418,7 +3482,7 @@ msgid "User-hint is mandatory"
msgstr "User-hint 是必填项"
#: htdocs/luci-static/resources/fchomo/listeners.js:161
-#: htdocs/luci-static/resources/view/fchomo/node.js:280
+#: htdocs/luci-static/resources/view/fchomo/node.js:290
msgid "Username"
msgstr "用户名"
@@ -3426,26 +3490,26 @@ msgstr "用户名"
msgid "Users filter mode"
msgstr "使用者过滤模式"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1350
+#: htdocs/luci-static/resources/view/fchomo/node.js:1379
msgid "V2ray HTTPUpgrade"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1355
+#: htdocs/luci-static/resources/view/fchomo/node.js:1384
msgid "V2ray HTTPUpgrade fast open"
msgstr ""
+#: htdocs/luci-static/resources/fchomo.js:162
+#: htdocs/luci-static/resources/fchomo.js:198
+msgid "VLESS"
+msgstr ""
+
#: htdocs/luci-static/resources/fchomo.js:161
#: htdocs/luci-static/resources/fchomo.js:197
-msgid "VLESS"
-msgstr ""
-
-#: htdocs/luci-static/resources/fchomo.js:160
-#: htdocs/luci-static/resources/fchomo.js:196
msgid "VMess"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1678
-#: htdocs/luci-static/resources/view/fchomo/node.js:2031
+#: htdocs/luci-static/resources/view/fchomo/node.js:1707
+#: htdocs/luci-static/resources/view/fchomo/node.js:2065
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:328
msgid "Value"
msgstr "可视化值"
@@ -3455,13 +3519,13 @@ msgid "Verify if given"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:463
-#: htdocs/luci-static/resources/fchomo/listeners.js:595
-#: htdocs/luci-static/resources/view/fchomo/node.js:541
-#: htdocs/luci-static/resources/view/fchomo/node.js:903
+#: htdocs/luci-static/resources/fchomo/listeners.js:603
+#: htdocs/luci-static/resources/view/fchomo/node.js:551
+#: htdocs/luci-static/resources/view/fchomo/node.js:923
msgid "Version"
msgstr "版本"
-#: htdocs/luci-static/resources/view/fchomo/node.js:911
+#: htdocs/luci-static/resources/view/fchomo/node.js:931
msgid "Version hint"
msgstr ""
@@ -3474,20 +3538,20 @@ msgstr "Vless Encryption 字段"
msgid "Wait a random 0-111 milliseconds with 75% probability."
msgstr "以 75% 的概率等待随机 0-111 毫秒。"
-#: htdocs/luci-static/resources/fchomo.js:91
+#: htdocs/luci-static/resources/fchomo.js:92
msgid "Warning"
msgstr "警告"
#: htdocs/luci-static/resources/fchomo/listeners.js:441
-#: htdocs/luci-static/resources/fchomo/listeners.js:1127
-#: htdocs/luci-static/resources/fchomo/listeners.js:1136
-#: htdocs/luci-static/resources/fchomo/listeners.js:1143
-#: htdocs/luci-static/resources/view/fchomo/node.js:495
-#: htdocs/luci-static/resources/view/fchomo/node.js:524
-#: htdocs/luci-static/resources/view/fchomo/node.js:1246
-#: htdocs/luci-static/resources/view/fchomo/node.js:1257
-#: htdocs/luci-static/resources/view/fchomo/node.js:1264
-#: htdocs/luci-static/resources/view/fchomo/node.js:1270
+#: htdocs/luci-static/resources/fchomo/listeners.js:1145
+#: htdocs/luci-static/resources/fchomo/listeners.js:1154
+#: htdocs/luci-static/resources/fchomo/listeners.js:1161
+#: htdocs/luci-static/resources/view/fchomo/node.js:505
+#: htdocs/luci-static/resources/view/fchomo/node.js:534
+#: htdocs/luci-static/resources/view/fchomo/node.js:1275
+#: htdocs/luci-static/resources/view/fchomo/node.js:1286
+#: htdocs/luci-static/resources/view/fchomo/node.js:1293
+#: htdocs/luci-static/resources/view/fchomo/node.js:1299
msgid "WebSocket"
msgstr ""
@@ -3499,52 +3563,52 @@ msgstr "用作服务端时,HomeProxy 是更好的选择。"
msgid "White list"
msgstr "白名单"
-#: htdocs/luci-static/resources/fchomo.js:205
+#: htdocs/luci-static/resources/fchomo.js:206
msgid "WireGuard"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:822
+#: htdocs/luci-static/resources/view/fchomo/node.js:832
msgid "WireGuard peer public key."
msgstr "WireGuard 对端公钥。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:829
+#: htdocs/luci-static/resources/view/fchomo/node.js:839
msgid "WireGuard pre-shared key."
msgstr "WireGuard 预共享密钥。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:814
+#: htdocs/luci-static/resources/view/fchomo/node.js:824
msgid "WireGuard requires base64-encoded private keys."
msgstr "WireGuard 要求 base64 编码的私钥。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1128
-#: htdocs/luci-static/resources/fchomo/listeners.js:1137
-#: htdocs/luci-static/resources/view/fchomo/node.js:1247
-#: htdocs/luci-static/resources/view/fchomo/node.js:1265
+#: htdocs/luci-static/resources/fchomo/listeners.js:1146
+#: htdocs/luci-static/resources/fchomo/listeners.js:1155
+#: htdocs/luci-static/resources/view/fchomo/node.js:1276
+#: htdocs/luci-static/resources/view/fchomo/node.js:1294
msgid "XHTTP"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1173
-#: htdocs/luci-static/resources/view/fchomo/node.js:1360
+#: htdocs/luci-static/resources/fchomo/listeners.js:1191
+#: htdocs/luci-static/resources/view/fchomo/node.js:1389
msgid "XHTTP mode"
msgstr "XHTTP 模式"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1391
+#: htdocs/luci-static/resources/view/fchomo/node.js:1420
msgid "XMUX"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1396
-#: htdocs/luci-static/resources/view/fchomo/node.js:1401
-#: htdocs/luci-static/resources/view/fchomo/node.js:1406
-#: htdocs/luci-static/resources/view/fchomo/node.js:1411
-#: htdocs/luci-static/resources/view/fchomo/node.js:1416
-#: htdocs/luci-static/resources/view/fchomo/node.js:1421
+#: htdocs/luci-static/resources/view/fchomo/node.js:1425
+#: htdocs/luci-static/resources/view/fchomo/node.js:1430
+#: htdocs/luci-static/resources/view/fchomo/node.js:1435
+#: htdocs/luci-static/resources/view/fchomo/node.js:1440
+#: htdocs/luci-static/resources/view/fchomo/node.js:1445
+#: htdocs/luci-static/resources/view/fchomo/node.js:1450
msgid "XMUX:"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:703
+#: htdocs/luci-static/resources/fchomo/listeners.js:721
msgid "XOR mode"
msgstr "XOR 模式"
-#: htdocs/luci-static/resources/view/fchomo/node.js:716
+#: htdocs/luci-static/resources/view/fchomo/node.js:726
msgid "Xudp (Xray-core)"
msgstr ""
@@ -3552,22 +3616,22 @@ msgstr ""
msgid "Yaml text"
msgstr "Yaml 格式文本"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1898
+#: htdocs/luci-static/resources/view/fchomo/node.js:1932
msgid "Yes"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:46
+#: htdocs/luci-static/resources/fchomo.js:47
msgid "YouTube"
msgstr "油管"
-#: htdocs/luci-static/resources/fchomo.js:1726
+#: htdocs/luci-static/resources/fchomo.js:2076
msgid "Your %s was successfully uploaded. Size: %sB."
msgstr "您的 %s 已成功上传。大小:%sB。"
#: htdocs/luci-static/resources/fchomo.js:345
#: htdocs/luci-static/resources/fchomo.js:358
#: htdocs/luci-static/resources/fchomo.js:363
-#: htdocs/luci-static/resources/view/fchomo/node.js:696
+#: htdocs/luci-static/resources/view/fchomo/node.js:706
msgid "aes-128-gcm"
msgstr ""
@@ -3580,11 +3644,11 @@ msgstr ""
msgid "aes-256-gcm"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1758
+#: htdocs/luci-static/resources/view/fchomo/node.js:1792
msgid "age private key"
msgstr "age 私钥"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1819
+#: htdocs/luci-static/resources/view/fchomo/node.js:1853
msgid "age public key"
msgstr "age 公钥"
@@ -3596,17 +3660,17 @@ msgstr ""
msgid "age-x25519"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:693
+#: htdocs/luci-static/resources/view/fchomo/node.js:703
msgid "auto"
msgstr "自动"
-#: htdocs/luci-static/resources/fchomo.js:55
+#: htdocs/luci-static/resources/fchomo.js:56
msgid "bbr"
msgstr "bbr"
-#: htdocs/luci-static/resources/fchomo/listeners.js:984
-#: htdocs/luci-static/resources/fchomo/listeners.js:1024
-#: htdocs/luci-static/resources/view/fchomo/node.js:1170
+#: htdocs/luci-static/resources/fchomo/listeners.js:1002
+#: htdocs/luci-static/resources/fchomo/listeners.js:1042
+#: htdocs/luci-static/resources/view/fchomo/node.js:1199
msgid "certificate"
msgstr "证书"
@@ -3616,16 +3680,16 @@ msgstr "证书"
msgid "chacha20-ietf-poly1305"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:697
+#: htdocs/luci-static/resources/view/fchomo/node.js:707
msgid "chacha20-poly1305"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:53
+#: htdocs/luci-static/resources/fchomo.js:54
msgid "cubic"
msgstr "cubic"
-#: htdocs/luci-static/resources/fchomo/listeners.js:655
-#: htdocs/luci-static/resources/fchomo/listeners.js:686
+#: htdocs/luci-static/resources/fchomo/listeners.js:673
+#: htdocs/luci-static/resources/fchomo/listeners.js:704
msgid "decryption"
msgstr "decryption"
@@ -3633,41 +3697,41 @@ msgstr "decryption"
msgid "dnsmasq selects upstream on its own. (may affect CDN accuracy)"
msgstr "dnsmasq 自行选择上游服务器。 (可能影响 CDN 准确性)"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1886
+#: htdocs/luci-static/resources/view/fchomo/node.js:1920
msgid "down"
msgstr "Hysteria 下载速率"
-#: htdocs/luci-static/resources/fchomo/listeners.js:690
-#: htdocs/luci-static/resources/view/fchomo/node.js:962
-#: htdocs/luci-static/resources/view/fchomo/node.js:985
+#: htdocs/luci-static/resources/fchomo/listeners.js:708
+#: htdocs/luci-static/resources/view/fchomo/node.js:990
+#: htdocs/luci-static/resources/view/fchomo/node.js:1013
msgid "encryption"
msgstr "encryption"
#: htdocs/luci-static/resources/fchomo/listeners.js:425
-#: htdocs/luci-static/resources/view/fchomo/node.js:479
+#: htdocs/luci-static/resources/view/fchomo/node.js:489
msgid "false = bandwidth optimized downlink; true = pure Sudoku downlink."
msgstr "false = 带宽优化下行 true = 纯 Sudoku 下行。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1126
-#: htdocs/luci-static/resources/fchomo/listeners.js:1135
-#: htdocs/luci-static/resources/fchomo/listeners.js:1142
-#: htdocs/luci-static/resources/view/fchomo/node.js:1245
-#: htdocs/luci-static/resources/view/fchomo/node.js:1256
-#: htdocs/luci-static/resources/view/fchomo/node.js:1263
-#: htdocs/luci-static/resources/view/fchomo/node.js:1269
+#: htdocs/luci-static/resources/fchomo/listeners.js:1144
+#: htdocs/luci-static/resources/fchomo/listeners.js:1153
+#: htdocs/luci-static/resources/fchomo/listeners.js:1160
+#: htdocs/luci-static/resources/view/fchomo/node.js:1274
+#: htdocs/luci-static/resources/view/fchomo/node.js:1285
+#: htdocs/luci-static/resources/view/fchomo/node.js:1292
+#: htdocs/luci-static/resources/view/fchomo/node.js:1298
msgid "gRPC"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1326
+#: htdocs/luci-static/resources/view/fchomo/node.js:1355
msgid "gRPC User-Agent"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1331
+#: htdocs/luci-static/resources/view/fchomo/node.js:1360
msgid "gRPC ping interval"
msgstr "gRPC ping 间隔"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1167
-#: htdocs/luci-static/resources/view/fchomo/node.js:1322
+#: htdocs/luci-static/resources/fchomo/listeners.js:1185
+#: htdocs/luci-static/resources/view/fchomo/node.js:1351
msgid "gRPC service name"
msgstr "gRPC 服务名称"
@@ -3675,37 +3739,37 @@ msgstr "gRPC 服务名称"
msgid "gVisor"
msgstr "gVisor"
-#: htdocs/luci-static/resources/view/fchomo/node.js:760
+#: htdocs/luci-static/resources/view/fchomo/node.js:770
msgid "h2"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1438
+#: htdocs/luci-static/resources/view/fchomo/node.js:1467
msgid "h2mux"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:758
+#: htdocs/luci-static/resources/view/fchomo/node.js:768
msgid "h3"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:759
+#: htdocs/luci-static/resources/view/fchomo/node.js:769
msgid "h3-l4proxy"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:855
+#: htdocs/luci-static/resources/fchomo/listeners.js:873
msgid "least one keypair required"
msgstr "至少需要一对密钥"
-#: htdocs/luci-static/resources/fchomo.js:76
+#: htdocs/luci-static/resources/fchomo.js:77
msgid "metacubexd"
msgstr "metacubexd"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1011
-#: htdocs/luci-static/resources/view/fchomo/client.js:1267
-#: htdocs/luci-static/resources/view/fchomo/client.js:1359
-#: htdocs/luci-static/resources/view/fchomo/client.js:1501
-#: htdocs/luci-static/resources/view/fchomo/client.js:1732
-#: htdocs/luci-static/resources/view/fchomo/client.js:1788
-#: htdocs/luci-static/resources/view/fchomo/node.js:1644
+#: htdocs/luci-static/resources/view/fchomo/client.js:1030
+#: htdocs/luci-static/resources/view/fchomo/client.js:1327
+#: htdocs/luci-static/resources/view/fchomo/client.js:1422
+#: htdocs/luci-static/resources/view/fchomo/client.js:1564
+#: htdocs/luci-static/resources/view/fchomo/client.js:1798
+#: htdocs/luci-static/resources/view/fchomo/client.js:1854
+#: htdocs/luci-static/resources/view/fchomo/node.js:1673
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:247
msgid "mihomo config"
msgstr "mihomo 配置"
@@ -3714,33 +3778,33 @@ msgstr "mihomo 配置"
msgid "mlkem768x25519plus"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1511
-#: htdocs/luci-static/resources/view/fchomo/node.js:1864
+#: htdocs/luci-static/resources/view/fchomo/node.js:1540
+#: htdocs/luci-static/resources/view/fchomo/node.js:1898
msgid "mpTCP"
msgstr "多路径 TCP (mpTCP)"
-#: htdocs/luci-static/resources/fchomo.js:54
+#: htdocs/luci-static/resources/fchomo.js:55
msgid "new_reno"
msgstr "new_reno"
-#: htdocs/luci-static/resources/view/fchomo/client.js:828
+#: htdocs/luci-static/resources/view/fchomo/client.js:836
msgid "no-resolve"
msgstr "no-resolve"
-#: htdocs/luci-static/resources/fchomo.js:1461
-#: htdocs/luci-static/resources/fchomo.js:1556
-#: htdocs/luci-static/resources/fchomo.js:1591
-#: htdocs/luci-static/resources/fchomo.js:1619
+#: htdocs/luci-static/resources/fchomo.js:1811
+#: htdocs/luci-static/resources/fchomo.js:1906
+#: htdocs/luci-static/resources/fchomo.js:1941
+#: htdocs/luci-static/resources/fchomo.js:1969
msgid "non-empty value"
msgstr "非空值"
#: htdocs/luci-static/resources/fchomo.js:343
#: htdocs/luci-static/resources/fchomo.js:357
#: htdocs/luci-static/resources/fchomo.js:369
-#: htdocs/luci-static/resources/fchomo/listeners.js:561
-#: htdocs/luci-static/resources/view/fchomo/node.js:694
-#: htdocs/luci-static/resources/view/fchomo/node.js:714
-#: htdocs/luci-static/resources/view/fchomo/node.js:872
+#: htdocs/luci-static/resources/fchomo/listeners.js:558
+#: htdocs/luci-static/resources/view/fchomo/node.js:704
+#: htdocs/luci-static/resources/view/fchomo/node.js:724
+#: htdocs/luci-static/resources/view/fchomo/node.js:882
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:324
msgid "none"
msgstr "无"
@@ -3749,62 +3813,64 @@ msgstr "无"
msgid "not found"
msgstr "未找到"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1028
+#: htdocs/luci-static/resources/view/fchomo/client.js:1047
msgid "not included \",\""
msgstr "不包含 \",\""
-#: htdocs/luci-static/resources/fchomo.js:228
-#: htdocs/luci-static/resources/fchomo/listeners.js:611
-#: htdocs/luci-static/resources/fchomo/listeners.js:612
+#: htdocs/luci-static/resources/fchomo.js:229
+#: htdocs/luci-static/resources/fchomo/listeners.js:619
+#: htdocs/luci-static/resources/fchomo/listeners.js:622
msgid "null"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:562
-#: htdocs/luci-static/resources/view/fchomo/node.js:873
+#: htdocs/luci-static/resources/fchomo/listeners.js:559
+#: htdocs/luci-static/resources/fchomo/listeners.js:567
+#: htdocs/luci-static/resources/view/fchomo/node.js:883
+#: htdocs/luci-static/resources/view/fchomo/node.js:894
msgid "obfs-simple"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:526
+#: htdocs/luci-static/resources/view/fchomo/node.js:536
msgid "only applies when %s is %s."
msgstr "仅当 %s 为 %s 时适用。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:524
+#: htdocs/luci-static/resources/view/fchomo/node.js:534
msgid "only applies when %s is not %s."
msgstr "仅当 %s 不为 %s 时适用。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1844
+#: htdocs/luci-static/resources/view/fchomo/node.js:1878
msgid "override.proxy-name"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:715
+#: htdocs/luci-static/resources/view/fchomo/node.js:725
msgid "packet addr (v2ray-core v5+)"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1177
-#: htdocs/luci-static/resources/view/fchomo/node.js:1364
+#: htdocs/luci-static/resources/fchomo/listeners.js:1195
+#: htdocs/luci-static/resources/view/fchomo/node.js:1393
msgid "packet-up"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:439
-#: htdocs/luci-static/resources/view/fchomo/node.js:493
+#: htdocs/luci-static/resources/view/fchomo/node.js:503
msgid "poll"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:999
-#: htdocs/luci-static/resources/view/fchomo/node.js:1184
+#: htdocs/luci-static/resources/fchomo/listeners.js:1017
+#: htdocs/luci-static/resources/view/fchomo/node.js:1213
msgid "private key"
msgstr "私钥"
-#: htdocs/luci-static/resources/fchomo.js:78
+#: htdocs/luci-static/resources/fchomo.js:79
msgid "razord-meta"
msgstr "razord-meta"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1191
-#: htdocs/luci-static/resources/view/fchomo/client.js:1197
+#: htdocs/luci-static/resources/view/fchomo/client.js:1251
+#: htdocs/luci-static/resources/view/fchomo/client.js:1257
msgid "requires front-end adaptation using the API."
msgstr "需要使用 API 的前端适配。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:877
+#: htdocs/luci-static/resources/view/fchomo/node.js:887
msgid "restls"
msgstr ""
@@ -3812,39 +3878,41 @@ msgstr ""
msgid "rule-set"
msgstr "规则集"
-#: htdocs/luci-static/resources/fchomo/listeners.js:563
-#: htdocs/luci-static/resources/view/fchomo/node.js:876
+#: htdocs/luci-static/resources/fchomo/listeners.js:560
+#: htdocs/luci-static/resources/fchomo/listeners.js:568
+#: htdocs/luci-static/resources/view/fchomo/node.js:886
+#: htdocs/luci-static/resources/view/fchomo/node.js:895
msgid "shadow-tls"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1436
+#: htdocs/luci-static/resources/view/fchomo/node.js:1465
msgid "smux"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:438
-#: htdocs/luci-static/resources/view/fchomo/node.js:492
+#: htdocs/luci-static/resources/view/fchomo/node.js:502
msgid "split-stream"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:810
+#: htdocs/luci-static/resources/view/fchomo/client.js:818
msgid "src"
msgstr "src"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1175
-#: htdocs/luci-static/resources/view/fchomo/node.js:1362
+#: htdocs/luci-static/resources/fchomo/listeners.js:1193
+#: htdocs/luci-static/resources/view/fchomo/node.js:1391
msgid "stream-one"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1176
-#: htdocs/luci-static/resources/view/fchomo/node.js:1363
+#: htdocs/luci-static/resources/fchomo/listeners.js:1194
+#: htdocs/luci-static/resources/view/fchomo/node.js:1392
msgid "stream-up"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1192
+#: htdocs/luci-static/resources/fchomo/listeners.js:1210
msgid "stream-up server seconds"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:526
+#: htdocs/luci-static/resources/view/fchomo/node.js:536
msgid "stream/poll/auto"
msgstr ""
@@ -3864,80 +3932,77 @@ msgstr "独立 UCI 标识"
msgid "unique identifier"
msgstr "独立标识"
-#: htdocs/luci-static/resources/fchomo.js:1628
+#: htdocs/luci-static/resources/fchomo.js:1978
msgid "unique value"
msgstr "独立值"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1880
+#: htdocs/luci-static/resources/view/fchomo/node.js:1914
msgid "up"
msgstr "Hysteria 上传速率"
-#: htdocs/luci-static/resources/fchomo/listeners.js:464
-#: htdocs/luci-static/resources/fchomo/listeners.js:596
-#: htdocs/luci-static/resources/view/fchomo/node.js:542
-#: htdocs/luci-static/resources/view/fchomo/node.js:584
-#: htdocs/luci-static/resources/view/fchomo/node.js:904
-#: htdocs/luci-static/resources/view/fchomo/node.js:955
+#: htdocs/luci-static/resources/fchomo/listeners.js:604
+#: htdocs/luci-static/resources/view/fchomo/node.js:552
+#: htdocs/luci-static/resources/view/fchomo/node.js:594
+#: htdocs/luci-static/resources/view/fchomo/node.js:924
+#: htdocs/luci-static/resources/view/fchomo/node.js:983
msgid "v1"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:465
-#: htdocs/luci-static/resources/fchomo/listeners.js:597
-#: htdocs/luci-static/resources/view/fchomo/node.js:543
-#: htdocs/luci-static/resources/view/fchomo/node.js:905
-#: htdocs/luci-static/resources/view/fchomo/node.js:956
+#: htdocs/luci-static/resources/fchomo/listeners.js:605
+#: htdocs/luci-static/resources/view/fchomo/node.js:553
+#: htdocs/luci-static/resources/view/fchomo/node.js:925
+#: htdocs/luci-static/resources/view/fchomo/node.js:984
msgid "v2"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:466
-#: htdocs/luci-static/resources/fchomo/listeners.js:598
-#: htdocs/luci-static/resources/view/fchomo/node.js:544
-#: htdocs/luci-static/resources/view/fchomo/node.js:906
+#: htdocs/luci-static/resources/fchomo/listeners.js:606
+#: htdocs/luci-static/resources/view/fchomo/node.js:554
+#: htdocs/luci-static/resources/view/fchomo/node.js:926
msgid "v3"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:467
-#: htdocs/luci-static/resources/view/fchomo/node.js:545
+#: htdocs/luci-static/resources/fchomo/listeners.js:464
+#: htdocs/luci-static/resources/view/fchomo/node.js:555
msgid "v4"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:468
-#: htdocs/luci-static/resources/view/fchomo/node.js:546
+#: htdocs/luci-static/resources/fchomo/listeners.js:465
+#: htdocs/luci-static/resources/view/fchomo/node.js:556
msgid "v5"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1508
-#: htdocs/luci-static/resources/fchomo.js:1511
+#: htdocs/luci-static/resources/fchomo.js:1858
+#: htdocs/luci-static/resources/fchomo.js:1861
msgid "valid JSON format"
msgstr "有效的 JSON 格式"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1144
+#: htdocs/luci-static/resources/view/fchomo/node.js:1173
msgid "valid SHA256 string with %d characters"
msgstr "包含 %d 个字符的有效 SHA256 字符串"
-#: htdocs/luci-static/resources/fchomo.js:1533
-#: htdocs/luci-static/resources/fchomo.js:1536
+#: htdocs/luci-static/resources/fchomo.js:1883
+#: htdocs/luci-static/resources/fchomo.js:1886
msgid "valid URL"
msgstr "有效网址"
-#: htdocs/luci-static/resources/fchomo.js:1546
+#: htdocs/luci-static/resources/fchomo.js:1896
msgid "valid base64 key with %d characters"
msgstr "包含 %d 个字符的有效 base64 密钥"
-#: htdocs/luci-static/resources/fchomo.js:1606
-#: htdocs/luci-static/resources/fchomo.js:1612
+#: htdocs/luci-static/resources/fchomo.js:1956
+#: htdocs/luci-static/resources/fchomo.js:1962
msgid "valid format: 2x, 2p, 4v"
msgstr "有效格式: 2x, 2p, 4v"
-#: htdocs/luci-static/resources/fchomo.js:1593
+#: htdocs/luci-static/resources/fchomo.js:1943
msgid "valid key length with %d characters"
msgstr "包含 %d 个字符的有效密钥"
-#: htdocs/luci-static/resources/fchomo.js:1471
+#: htdocs/luci-static/resources/fchomo.js:1821
msgid "valid port value"
msgstr "有效端口值"
-#: htdocs/luci-static/resources/fchomo.js:1521
+#: htdocs/luci-static/resources/fchomo.js:1871
msgid "valid uuid"
msgstr "有效 uuid"
@@ -3953,23 +4018,23 @@ msgstr ""
msgid "xchacha20-ietf-poly1305"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:77
+#: htdocs/luci-static/resources/fchomo.js:78
msgid "yacd-meta"
msgstr "yacd-meta"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1437
+#: htdocs/luci-static/resources/view/fchomo/node.js:1466
msgid "yamux"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:75
+#: htdocs/luci-static/resources/fchomo.js:76
msgid "zashboard"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:695
+#: htdocs/luci-static/resources/view/fchomo/node.js:705
msgid "zero"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1289
+#: htdocs/luci-static/resources/fchomo.js:1639
msgid "🡇"
msgstr ""
diff --git a/luci-app-fchomo/po/zh_Hant/fchomo.po b/luci-app-fchomo/po/zh_Hant/fchomo.po
index 9404fe33..224c332a 100644
--- a/luci-app-fchomo/po/zh_Hant/fchomo.po
+++ b/luci-app-fchomo/po/zh_Hant/fchomo.po
@@ -21,40 +21,62 @@ msgstr "%s 日誌"
msgid "%s ports"
msgstr "%s 連接埠"
-#: htdocs/luci-static/resources/fchomo.js:617
-#: htdocs/luci-static/resources/fchomo.js:620
-#: htdocs/luci-static/resources/view/fchomo/client.js:316
+#: htdocs/luci-static/resources/fchomo.js:642
+#: htdocs/luci-static/resources/fchomo.js:645
+#: htdocs/luci-static/resources/view/fchomo/client.js:318
msgid "(Imported)"
msgstr "(已導入)"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1002
-#: htdocs/luci-static/resources/fchomo/listeners.js:1010
-#: htdocs/luci-static/resources/fchomo/listeners.js:1019
+#: htdocs/luci-static/resources/fchomo/listeners.js:1020
+#: htdocs/luci-static/resources/fchomo/listeners.js:1028
+#: htdocs/luci-static/resources/fchomo/listeners.js:1037
#: htdocs/luci-static/resources/view/fchomo/global.js:564
#: htdocs/luci-static/resources/view/fchomo/global.js:570
-#: htdocs/luci-static/resources/view/fchomo/node.js:1159
-#: htdocs/luci-static/resources/view/fchomo/node.js:1165
-#: htdocs/luci-static/resources/view/fchomo/node.js:1173
-#: htdocs/luci-static/resources/view/fchomo/node.js:1179
+#: htdocs/luci-static/resources/view/fchomo/node.js:1188
+#: htdocs/luci-static/resources/view/fchomo/node.js:1194
+#: htdocs/luci-static/resources/view/fchomo/node.js:1202
+#: htdocs/luci-static/resources/view/fchomo/node.js:1208
msgid "(mTLS)"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:869
-#: htdocs/luci-static/resources/view/fchomo/client.js:870
-#: htdocs/luci-static/resources/view/fchomo/client.js:1052
-#: htdocs/luci-static/resources/view/fchomo/client.js:1053
-#: htdocs/luci-static/resources/view/fchomo/client.js:1066
-#: htdocs/luci-static/resources/view/fchomo/client.js:1067
-#: htdocs/luci-static/resources/view/fchomo/client.js:1296
-#: htdocs/luci-static/resources/view/fchomo/node.js:268
-#: htdocs/luci-static/resources/view/fchomo/node.js:274
-#: htdocs/luci-static/resources/view/fchomo/node.js:2035
-#: htdocs/luci-static/resources/view/fchomo/node.js:2041
-#: htdocs/luci-static/resources/view/fchomo/node.js:2055
-#: htdocs/luci-static/resources/view/fchomo/node.js:2061
+#: htdocs/luci-static/resources/view/fchomo/client.js:688
+msgid "-- NETWORK --"
+msgstr ""
+
+#: htdocs/luci-static/resources/view/fchomo/client.js:1204
+msgid "-- PROXY-GROUP --"
+msgstr ""
+
+#: htdocs/luci-static/resources/view/fchomo/client.js:1139
+#: htdocs/luci-static/resources/view/fchomo/client.js:1206
+msgid "-- PROXY-NODE --"
+msgstr ""
+
+#: htdocs/luci-static/resources/fchomo.js:832
+#: htdocs/luci-static/resources/view/fchomo/client.js:877
+#: htdocs/luci-static/resources/view/fchomo/client.js:880
+#: htdocs/luci-static/resources/view/fchomo/client.js:1077
+#: htdocs/luci-static/resources/view/fchomo/client.js:1081
+#: htdocs/luci-static/resources/view/fchomo/client.js:1097
+#: htdocs/luci-static/resources/view/fchomo/client.js:1101
+#: htdocs/luci-static/resources/view/fchomo/client.js:1357
+#: htdocs/luci-static/resources/view/fchomo/node.js:270
+#: htdocs/luci-static/resources/view/fchomo/node.js:281
+#: htdocs/luci-static/resources/view/fchomo/node.js:2071
+#: htdocs/luci-static/resources/view/fchomo/node.js:2082
+#: htdocs/luci-static/resources/view/fchomo/node.js:2101
+#: htdocs/luci-static/resources/view/fchomo/node.js:2112
msgid "-- Please choose --"
msgstr "-- 請選擇 --"
+#: htdocs/luci-static/resources/view/fchomo/client.js:691
+msgid "-- RULE-SET --"
+msgstr ""
+
+#: htdocs/luci-static/resources/fchomo.js:833
+msgid "-- custom --"
+msgstr ""
+
#: htdocs/luci-static/resources/fchomo.js:404
msgid "0-RTT reuse."
msgstr "0-RTT 重用。"
@@ -64,7 +86,7 @@ msgstr "0-RTT 重用。"
msgid "1-RTT only."
msgstr "僅限 1-RTT。"
-#: htdocs/luci-static/resources/fchomo.js:43
+#: htdocs/luci-static/resources/fchomo.js:44
msgid "163Music"
msgstr "網易雲音樂"
@@ -80,20 +102,20 @@ msgstr ""
msgid "2022-blake3-chacha20-poly1305"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:698
+#: htdocs/luci-static/resources/view/fchomo/client.js:703
msgid "0 or 1 only."
msgstr "僅限 0 或 1。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:980
-#: htdocs/luci-static/resources/fchomo/listeners.js:995
-#: htdocs/luci-static/resources/fchomo/listeners.js:1020
-#: htdocs/luci-static/resources/view/fchomo/node.js:1166
-#: htdocs/luci-static/resources/view/fchomo/node.js:1180
+#: htdocs/luci-static/resources/fchomo/listeners.js:998
+#: htdocs/luci-static/resources/fchomo/listeners.js:1013
+#: htdocs/luci-static/resources/fchomo/listeners.js:1038
+#: htdocs/luci-static/resources/view/fchomo/node.js:1195
+#: htdocs/luci-static/resources/view/fchomo/node.js:1209
msgid "Save your configuration before uploading files!"
msgstr "上傳文件前請先保存配置!"
#: htdocs/luci-static/resources/fchomo/listeners.js:286
-#: htdocs/luci-static/resources/view/fchomo/node.js:414
+#: htdocs/luci-static/resources/view/fchomo/node.js:424
msgid ""
"A base64 string is used to fine-tune network behavior.
Please refer to "
"the document"
@@ -153,9 +175,9 @@ msgstr "API 令牌"
#: htdocs/luci-static/resources/fchomo/listeners.js:371
#: htdocs/luci-static/resources/fchomo/listeners.js:373
#: htdocs/luci-static/resources/fchomo/listeners.js:374
-#: htdocs/luci-static/resources/view/fchomo/node.js:443
-#: htdocs/luci-static/resources/view/fchomo/node.js:445
-#: htdocs/luci-static/resources/view/fchomo/node.js:446
+#: htdocs/luci-static/resources/view/fchomo/node.js:453
+#: htdocs/luci-static/resources/view/fchomo/node.js:455
+#: htdocs/luci-static/resources/view/fchomo/node.js:456
msgid "ASCII data stream"
msgstr "ASCII 資料流"
@@ -168,15 +190,15 @@ msgstr "ASN 版本"
msgid "Access Control"
msgstr "訪問控制"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1710
+#: htdocs/luci-static/resources/view/fchomo/client.js:1776
msgid "Add a Bootstrap DNS policy (Node)"
msgstr "新增 引導 DNS 策略 (節點)"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1762
+#: htdocs/luci-static/resources/view/fchomo/client.js:1828
msgid "Add a DNS policy"
msgstr "新增 DNS 策略"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1458
+#: htdocs/luci-static/resources/view/fchomo/client.js:1521
msgid "Add a DNS server"
msgstr "新增 DNS 伺服器"
@@ -188,19 +210,19 @@ msgstr "新增 節點"
msgid "Add a inbound"
msgstr "新增 入站"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1555
+#: htdocs/luci-static/resources/view/fchomo/node.js:1584
msgid "Add a provider"
msgstr "新增 供應商"
-#: htdocs/luci-static/resources/view/fchomo/node.js:2011
+#: htdocs/luci-static/resources/view/fchomo/node.js:2045
msgid "Add a proxy chain"
msgstr "新增 代理鏈"
-#: htdocs/luci-static/resources/view/fchomo/client.js:950
+#: htdocs/luci-static/resources/view/fchomo/client.js:968
msgid "Add a proxy group"
msgstr "新增 代理組"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1211
+#: htdocs/luci-static/resources/view/fchomo/client.js:1271
msgid "Add a routing rule"
msgstr "新增 路由規則"
@@ -212,20 +234,20 @@ msgstr "新增 規則集"
msgid "Add a server"
msgstr "新增 伺服器"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1330
+#: htdocs/luci-static/resources/view/fchomo/client.js:1393
msgid "Add a sub rule"
msgstr "新增 子規則"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1833
+#: htdocs/luci-static/resources/view/fchomo/node.js:1867
msgid "Add prefix"
msgstr "添加前綴"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1837
+#: htdocs/luci-static/resources/view/fchomo/node.js:1871
msgid "Add suffix"
msgstr "添加後綴"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1518
-#: htdocs/luci-static/resources/view/fchomo/client.js:1523
+#: htdocs/luci-static/resources/view/fchomo/client.js:1581
+#: htdocs/luci-static/resources/view/fchomo/client.js:1586
msgid "Address"
msgstr "位址"
@@ -236,7 +258,7 @@ msgid ""
msgstr ""
"在 1-RTT client/server hello 之後,以 100% 的機率隨機填充 111-1111 位元組。"
-#: htdocs/luci-static/resources/fchomo.js:62
+#: htdocs/luci-static/resources/fchomo.js:63
msgid "Aggressive"
msgstr "侵略性"
@@ -261,11 +283,11 @@ msgid ""
msgstr ""
"允許從私有網路訪問。要從公共網站訪問私有網路上的 API,則必須啟用。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:961
+#: htdocs/luci-static/resources/fchomo/listeners.js:979
msgid "Allow insecure connections"
msgstr "允許不安全的連線"
-#: htdocs/luci-static/resources/view/fchomo/node.js:835
+#: htdocs/luci-static/resources/view/fchomo/node.js:845
msgid "Allowed IPs"
msgstr "允許的 IP"
@@ -277,13 +299,13 @@ msgstr "已是最新版本。"
msgid "Already in updating."
msgstr "已在更新中。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:543
-#: htdocs/luci-static/resources/view/fchomo/node.js:685
+#: htdocs/luci-static/resources/fchomo/listeners.js:540
+#: htdocs/luci-static/resources/view/fchomo/node.js:695
msgid "Alter ID"
msgstr "額外 ID"
-#: htdocs/luci-static/resources/fchomo.js:163
-#: htdocs/luci-static/resources/fchomo.js:199
+#: htdocs/luci-static/resources/fchomo.js:164
+#: htdocs/luci-static/resources/fchomo.js:200
msgid "AnyTLS"
msgstr ""
@@ -300,20 +322,20 @@ msgstr "作為 dnsmasq 的最優先上游"
msgid "As the TOP upstream of dnsmasq."
msgstr "作為 dnsmasq 的最優先上游。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:493
+#: htdocs/luci-static/resources/fchomo/listeners.js:490
msgid "Auth timeout"
-msgstr "認證超時"
+msgstr "認證逾時"
-#: htdocs/luci-static/resources/view/fchomo/node.js:707
+#: htdocs/luci-static/resources/view/fchomo/node.js:717
msgid "Authenticated length"
msgstr "認證長度"
#: htdocs/luci-static/resources/fchomo/listeners.js:440
-#: htdocs/luci-static/resources/fchomo/listeners.js:1174
+#: htdocs/luci-static/resources/fchomo/listeners.js:1192
#: htdocs/luci-static/resources/view/fchomo/global.js:423
-#: htdocs/luci-static/resources/view/fchomo/node.js:494
-#: htdocs/luci-static/resources/view/fchomo/node.js:518
-#: htdocs/luci-static/resources/view/fchomo/node.js:1361
+#: htdocs/luci-static/resources/view/fchomo/node.js:504
+#: htdocs/luci-static/resources/view/fchomo/node.js:528
+#: htdocs/luci-static/resources/view/fchomo/node.js:1390
msgid "Auto"
msgstr "自動"
@@ -329,20 +351,20 @@ msgstr "自動更新"
msgid "Auto update resources."
msgstr "自動更新資源文件。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:633
-#: htdocs/luci-static/resources/view/fchomo/node.js:933
+#: htdocs/luci-static/resources/fchomo/listeners.js:651
+#: htdocs/luci-static/resources/view/fchomo/node.js:953
msgid "BBR profile"
msgstr "BBR 設定檔"
-#: htdocs/luci-static/resources/fchomo.js:42
+#: htdocs/luci-static/resources/fchomo.js:43
msgid "Baidu"
msgstr "百度"
-#: htdocs/luci-static/resources/view/fchomo/node.js:722
+#: htdocs/luci-static/resources/view/fchomo/node.js:732
msgid "Base64 encoded ECDSA private key on the NIST P-256 curve."
msgstr "基於 NIST P-256 曲線的 Base64 編碼 ECDSA 私鑰。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:730
+#: htdocs/luci-static/resources/view/fchomo/node.js:740
msgid "Base64 encoded ECDSA public key on the NIST P-256 curve."
msgstr "基於 NIST P-256 曲線的 Base64 編碼 ECDSA 公鑰。"
@@ -364,13 +386,13 @@ msgid "Binary mrs"
msgstr "二進位 mrs"
#: htdocs/luci-static/resources/view/fchomo/global.js:758
-#: htdocs/luci-static/resources/view/fchomo/node.js:1522
-#: htdocs/luci-static/resources/view/fchomo/node.js:1909
+#: htdocs/luci-static/resources/view/fchomo/node.js:1551
+#: htdocs/luci-static/resources/view/fchomo/node.js:1943
msgid "Bind interface"
msgstr "綁定介面"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1523
-#: htdocs/luci-static/resources/view/fchomo/node.js:1910
+#: htdocs/luci-static/resources/view/fchomo/node.js:1552
+#: htdocs/luci-static/resources/view/fchomo/node.js:1944
msgid "Bind outbound interface."
msgstr "綁定出站介面。"
@@ -383,20 +405,20 @@ msgstr "綁定出站流量至指定介面。留空自動檢測。"
msgid "Black list"
msgstr "黑名單"
-#: htdocs/luci-static/resources/view/fchomo/client.js:58
+#: htdocs/luci-static/resources/view/fchomo/client.js:60
msgid "Block DNS queries"
msgstr "封鎖 DNS 請求"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1701
-#: htdocs/luci-static/resources/view/fchomo/client.js:1710
+#: htdocs/luci-static/resources/view/fchomo/client.js:1767
+#: htdocs/luci-static/resources/view/fchomo/client.js:1776
msgid "Bootstrap DNS policy (Node)"
msgstr "引導 DNS 策略 (節點)"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1403
+#: htdocs/luci-static/resources/view/fchomo/client.js:1466
msgid "Bootstrap DNS server"
msgstr "引導 DNS 伺服器"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1410
+#: htdocs/luci-static/resources/view/fchomo/client.js:1473
msgid "Bootstrap DNS server (Node)"
msgstr "引導 DNS 伺服器 (節點)"
@@ -416,10 +438,10 @@ msgstr "繞過 DSCP"
#: htdocs/luci-static/resources/fchomo/listeners.js:439
#: htdocs/luci-static/resources/fchomo/listeners.js:440
#: htdocs/luci-static/resources/fchomo/listeners.js:441
-#: htdocs/luci-static/resources/view/fchomo/node.js:492
-#: htdocs/luci-static/resources/view/fchomo/node.js:493
-#: htdocs/luci-static/resources/view/fchomo/node.js:494
-#: htdocs/luci-static/resources/view/fchomo/node.js:495
+#: htdocs/luci-static/resources/view/fchomo/node.js:502
+#: htdocs/luci-static/resources/view/fchomo/node.js:503
+#: htdocs/luci-static/resources/view/fchomo/node.js:504
+#: htdocs/luci-static/resources/view/fchomo/node.js:505
msgid "CDN support"
msgstr "CDN 支援"
@@ -435,21 +457,21 @@ msgstr "CORS 允許私有網路"
msgid "CORS allowed origins, * will be used if empty."
msgstr "CORS 允許的來源,留空則使用 *。"
-#: htdocs/luci-static/resources/fchomo.js:733
+#: htdocs/luci-static/resources/fchomo.js:758
msgid "Cancel"
msgstr "取消"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1138
+#: htdocs/luci-static/resources/view/fchomo/node.js:1167
msgid "Cert fingerprint"
msgstr "憑證指紋"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1139
+#: htdocs/luci-static/resources/view/fchomo/node.js:1168
msgid ""
"Certificate fingerprint. Used to implement SSL Pinning and prevent MitM."
msgstr "憑證指紋。用於實現 SSL憑證固定 並防止 MitM。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:972
-#: htdocs/luci-static/resources/view/fchomo/node.js:1159
+#: htdocs/luci-static/resources/fchomo/listeners.js:990
+#: htdocs/luci-static/resources/view/fchomo/node.js:1188
msgid "Certificate path"
msgstr "憑證路徑"
@@ -462,6 +484,13 @@ msgstr "檢查"
msgid "Check routerself NAT Behavior"
msgstr "檢測路由器自身 NAT 行為"
+#: htdocs/luci-static/resources/view/fchomo/client.js:1921
+msgid ""
+"Check the response from the %s, only initiate query if the "
+"%s is satisfied."
+msgstr ""
+"檢查來自%s的回應,僅在滿足%s條件時才發起查詢。"
+
#: htdocs/luci-static/resources/view/fchomo/global.js:86
msgid "Check update"
msgstr "檢查更新"
@@ -480,14 +509,14 @@ msgstr "大陸網域清單版本"
#: htdocs/luci-static/resources/fchomo/listeners.js:255
#: htdocs/luci-static/resources/fchomo/listeners.js:354
-#: htdocs/luci-static/resources/view/fchomo/node.js:367
-#: htdocs/luci-static/resources/view/fchomo/node.js:426
-#: htdocs/luci-static/resources/view/fchomo/node.js:691
+#: htdocs/luci-static/resources/view/fchomo/node.js:377
+#: htdocs/luci-static/resources/view/fchomo/node.js:436
+#: htdocs/luci-static/resources/view/fchomo/node.js:701
msgid "Chipher"
msgstr "加密方法"
#: htdocs/luci-static/resources/fchomo/listeners.js:363
-#: htdocs/luci-static/resources/view/fchomo/node.js:435
+#: htdocs/luci-static/resources/view/fchomo/node.js:445
msgid "Chipher must be enabled if obfuscate downlink is disabled."
msgstr "如果下行鏈路混淆功能已停用,則必須啟用加密。"
@@ -503,25 +532,25 @@ msgstr ""
"點擊此處下載"
"最新的初始包。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:731
-#: htdocs/luci-static/resources/fchomo/listeners.js:1011
+#: htdocs/luci-static/resources/fchomo/listeners.js:749
+#: htdocs/luci-static/resources/fchomo/listeners.js:1029
#: htdocs/luci-static/resources/view/fchomo/global.js:571
-#: htdocs/luci-static/resources/view/fchomo/node.js:997
-#: htdocs/luci-static/resources/view/fchomo/node.js:1160
-#: htdocs/luci-static/resources/view/fchomo/node.js:1174
+#: htdocs/luci-static/resources/view/fchomo/node.js:1025
+#: htdocs/luci-static/resources/view/fchomo/node.js:1189
+#: htdocs/luci-static/resources/view/fchomo/node.js:1203
#: root/usr/share/luci/menu.d/luci-app-fchomo.json:22
msgid "Client"
msgstr "客戶端"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1010
+#: htdocs/luci-static/resources/fchomo/listeners.js:1028
msgid "Client Auth Certificate path"
msgstr "客戶端認證憑證路徑"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1002
+#: htdocs/luci-static/resources/fchomo/listeners.js:1020
msgid "Client Auth type"
msgstr "客戶端認證類型"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1205
+#: htdocs/luci-static/resources/view/fchomo/node.js:1234
msgid "Client fingerprint"
msgstr "客戶端指紋"
@@ -542,16 +571,16 @@ msgstr "收集資料中..."
msgid "Common ports (bypass P2P traffic)"
msgstr "常用連接埠(繞過 P2P 流量)"
-#: htdocs/luci-static/resources/fchomo.js:1405
+#: htdocs/luci-static/resources/fchomo.js:1755
msgid "Complete"
msgstr "完成"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1853
+#: htdocs/luci-static/resources/view/fchomo/node.js:1887
msgid "Configuration Items"
msgstr "配置項"
-#: htdocs/luci-static/resources/fchomo/listeners.js:625
-#: htdocs/luci-static/resources/view/fchomo/node.js:924
+#: htdocs/luci-static/resources/fchomo/listeners.js:643
+#: htdocs/luci-static/resources/view/fchomo/node.js:944
msgid "Congestion controller"
msgstr "擁塞控制器"
@@ -559,27 +588,27 @@ msgstr "擁塞控制器"
msgid "Connection check"
msgstr "連接檢查"
-#: htdocs/luci-static/resources/view/fchomo/node.js:551
+#: htdocs/luci-static/resources/view/fchomo/node.js:561
msgid "Connection reuse"
msgstr "連接重用"
-#: htdocs/luci-static/resources/fchomo.js:61
+#: htdocs/luci-static/resources/fchomo.js:62
msgid "Conservative"
msgstr "保守"
-#: htdocs/luci-static/resources/fchomo.js:602
+#: htdocs/luci-static/resources/fchomo.js:627
msgid "Content copied to clipboard!"
msgstr "內容已複製到剪貼簿!"
-#: htdocs/luci-static/resources/view/fchomo/client.js:679
-#: htdocs/luci-static/resources/view/fchomo/node.js:1698
-#: htdocs/luci-static/resources/view/fchomo/node.js:1724
+#: htdocs/luci-static/resources/view/fchomo/client.js:681
+#: htdocs/luci-static/resources/view/fchomo/node.js:1727
+#: htdocs/luci-static/resources/view/fchomo/node.js:1753
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:348
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:374
msgid "Content will not be verified, Please make sure you enter it correctly."
msgstr "內容將不會被驗證,請確保輸入正確。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1697
+#: htdocs/luci-static/resources/view/fchomo/node.js:1726
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:347
msgid "Contents"
msgstr "內容"
@@ -588,7 +617,7 @@ msgstr "內容"
msgid "Contents have been saved."
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:604
+#: htdocs/luci-static/resources/fchomo.js:629
msgid "Copy"
msgstr "複製"
@@ -604,8 +633,8 @@ msgstr "Cron 表達式"
msgid "Custom Direct List"
msgstr "自訂直連清單"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1824
-#: htdocs/luci-static/resources/view/fchomo/ruleset.js:415
+#: htdocs/luci-static/resources/view/fchomo/node.js:1858
+#: htdocs/luci-static/resources/view/fchomo/ruleset.js:420
msgid "Custom HTTP header."
msgstr "自訂 HTTP header。"
@@ -614,7 +643,7 @@ msgid "Custom Proxy List"
msgstr "自訂代理清單"
#: htdocs/luci-static/resources/fchomo/listeners.js:378
-#: htdocs/luci-static/resources/view/fchomo/node.js:450
+#: htdocs/luci-static/resources/view/fchomo/node.js:460
msgid "Custom byte layout"
msgstr "自訂位元組佈局"
@@ -623,12 +652,12 @@ msgid ""
"Custom internal hosts. Support yaml or json format."
msgstr "自訂內部 hosts。支援 yaml 或 json 格式。"
-#: htdocs/luci-static/resources/fchomo.js:188
+#: htdocs/luci-static/resources/fchomo.js:189
msgid "DIRECT"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1753
-#: htdocs/luci-static/resources/view/fchomo/client.js:1762
+#: htdocs/luci-static/resources/view/fchomo/client.js:1819
+#: htdocs/luci-static/resources/view/fchomo/client.js:1828
msgid "DNS policy"
msgstr "DNS 策略"
@@ -636,15 +665,15 @@ msgstr "DNS 策略"
msgid "DNS port"
msgstr " DNS 連接埠"
-#: htdocs/luci-static/resources/view/fchomo/client.js:882
-#: htdocs/luci-static/resources/view/fchomo/client.js:1449
-#: htdocs/luci-static/resources/view/fchomo/client.js:1458
-#: htdocs/luci-static/resources/view/fchomo/node.js:782
-#: htdocs/luci-static/resources/view/fchomo/node.js:865
+#: htdocs/luci-static/resources/view/fchomo/client.js:895
+#: htdocs/luci-static/resources/view/fchomo/client.js:1512
+#: htdocs/luci-static/resources/view/fchomo/client.js:1521
+#: htdocs/luci-static/resources/view/fchomo/node.js:792
+#: htdocs/luci-static/resources/view/fchomo/node.js:875
msgid "DNS server"
msgstr "DNS 伺服器"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1386
+#: htdocs/luci-static/resources/view/fchomo/client.js:1449
msgid "DNS settings"
msgstr "DNS 設定"
@@ -656,31 +685,37 @@ msgstr "DSCP 清單"
msgid "Dashboard version"
msgstr "面板版本"
-#: htdocs/luci-static/resources/fchomo.js:93
+#: htdocs/luci-static/resources/fchomo.js:94
msgid "Debug"
msgstr "調試"
-#: htdocs/luci-static/resources/view/fchomo/client.js:56
+#: htdocs/luci-static/resources/view/fchomo/client.js:58
msgid "Default DNS (issued by WAN)"
msgstr "預設 DNS(由 WAN 下發)"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1424
+#: htdocs/luci-static/resources/view/fchomo/client.js:1487
+#: htdocs/luci-static/resources/view/fchomo/client.js:1922
+#: htdocs/luci-static/resources/view/fchomo/client.js:1925
msgid "Default DNS server"
msgstr "預設 DNS 伺服器"
+#: htdocs/luci-static/resources/view/fchomo/client.js:1197
+msgid "Default selected"
+msgstr "預設選中"
+
#: htdocs/luci-static/resources/view/fchomo/node.js:22
msgid "Derive from priv-key"
msgstr "從私鑰派生"
-#: htdocs/luci-static/resources/view/fchomo/node.js:836
+#: htdocs/luci-static/resources/view/fchomo/node.js:846
msgid "Destination addresses allowed to be forwarded via Wireguard."
msgstr "允許通過 WireGuard 轉發的目的位址"
-#: htdocs/luci-static/resources/view/fchomo/node.js:2034
+#: htdocs/luci-static/resources/view/fchomo/node.js:2068
msgid "Destination provider"
msgstr "落地供應商"
-#: htdocs/luci-static/resources/view/fchomo/node.js:2040
+#: htdocs/luci-static/resources/view/fchomo/node.js:2079
msgid "Destination proxy node"
msgstr "落地代理節點"
@@ -688,8 +723,8 @@ msgstr "落地代理節點"
msgid "Dial fields"
msgstr "撥號欄位"
-#: htdocs/luci-static/resources/view/fchomo/node.js:2047
-#: htdocs/luci-static/resources/view/fchomo/node.js:2067
+#: htdocs/luci-static/resources/view/fchomo/node.js:2091
+#: htdocs/luci-static/resources/view/fchomo/node.js:2121
msgid "Different chain head/tail"
msgstr "不同的鏈頭/鏈尾"
@@ -711,7 +746,7 @@ msgstr "直連 MAC 位址"
#: htdocs/luci-static/resources/fchomo/listeners.js:194
#: htdocs/luci-static/resources/view/fchomo/global.js:424
-#: htdocs/luci-static/resources/view/fchomo/node.js:322
+#: htdocs/luci-static/resources/view/fchomo/node.js:332
msgid "Disable"
msgstr "停用"
@@ -727,11 +762,11 @@ msgstr "停用 quic-go 的 通用分段卸載(GSO)"
msgid "Disable ICMP Forwarding"
msgstr "禁用 ICMP 轉發"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1082
+#: htdocs/luci-static/resources/view/fchomo/node.js:1110
msgid "Disable SNI"
msgstr "停用 SNI"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1103
+#: htdocs/luci-static/resources/view/fchomo/client.js:1146
msgid "Disable UDP"
msgstr "停用 UDP"
@@ -739,7 +774,7 @@ msgstr "停用 UDP"
msgid "Disable safe path check"
msgstr "禁用安全路徑檢查"
-#: htdocs/luci-static/resources/view/fchomo/client.js:829
+#: htdocs/luci-static/resources/view/fchomo/client.js:837
msgid ""
"Do not resolve the domain connection to IP for this match.Only works "
"for pure domain inbound connections without DNS resolution. e.g., socks5h"
@@ -747,62 +782,62 @@ msgstr ""
"不要將網域連線解析為 IP 以進行此次匹配。 僅對未經 DNS 解析的純網域入站連"
"線有效。例如,socks5h"
-#: htdocs/luci-static/resources/view/fchomo/client.js:852
-#: htdocs/luci-static/resources/view/fchomo/client.js:857
-#: htdocs/luci-static/resources/view/fchomo/client.js:1836
-#: htdocs/luci-static/resources/view/fchomo/client.js:1843
-#: htdocs/luci-static/resources/view/fchomo/client.js:1845
+#: htdocs/luci-static/resources/view/fchomo/client.js:860
+#: htdocs/luci-static/resources/view/fchomo/client.js:865
+#: htdocs/luci-static/resources/view/fchomo/client.js:1902
+#: htdocs/luci-static/resources/view/fchomo/client.js:1909
+#: htdocs/luci-static/resources/view/fchomo/client.js:1911
msgid "Domain"
msgstr "網域"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1083
+#: htdocs/luci-static/resources/view/fchomo/node.js:1111
msgid "Donot send server name in ClientHello."
msgstr "不要在 ClientHello 中傳送伺服器名稱。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1598
-#: htdocs/luci-static/resources/view/fchomo/node.js:1152
-#: htdocs/luci-static/resources/view/fchomo/node.js:1893
+#: htdocs/luci-static/resources/view/fchomo/client.js:1664
+#: htdocs/luci-static/resources/view/fchomo/node.js:1181
+#: htdocs/luci-static/resources/view/fchomo/node.js:1927
msgid "Donot verifying server certificate."
msgstr "不驗證伺服器憑證。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1499
+#: htdocs/luci-static/resources/view/fchomo/node.js:1528
msgid "Download bandwidth"
msgstr "下載頻寬"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1500
+#: htdocs/luci-static/resources/view/fchomo/node.js:1529
msgid "Download bandwidth in Mbps."
msgstr "下載頻寬(單位:Mbps)。"
-#: htdocs/luci-static/resources/fchomo.js:1284
+#: htdocs/luci-static/resources/fchomo.js:1634
msgid "Download failed: %s"
msgstr "下載失敗: %s"
-#: htdocs/luci-static/resources/fchomo.js:1282
+#: htdocs/luci-static/resources/fchomo.js:1632
msgid "Download successful."
msgstr "下載成功。"
-#: htdocs/luci-static/resources/fchomo.js:173
+#: htdocs/luci-static/resources/fchomo.js:174
msgid "Dual stack"
msgstr "雙棧"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1199
+#: htdocs/luci-static/resources/view/fchomo/node.js:1228
msgid "ECH HTTPS record query servername"
msgstr "ECH HTTPS 記錄查詢網域"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1068
-#: htdocs/luci-static/resources/view/fchomo/node.js:1193
+#: htdocs/luci-static/resources/fchomo/listeners.js:1086
+#: htdocs/luci-static/resources/view/fchomo/node.js:1222
msgid "ECH config"
msgstr "ECH 配置"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1027
+#: htdocs/luci-static/resources/fchomo/listeners.js:1045
msgid "ECH key"
msgstr "ECH 密鑰"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1632
+#: htdocs/luci-static/resources/view/fchomo/client.js:1698
msgid "ECS override"
msgstr "強制覆蓋 ECS"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1616
+#: htdocs/luci-static/resources/view/fchomo/client.js:1682
msgid "EDNS Client Subnet"
msgstr "EDNS 客戶端子網"
@@ -810,11 +845,11 @@ msgstr "EDNS 客戶端子網"
msgid "ETag support"
msgstr "ETag 支援"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1339
+#: htdocs/luci-static/resources/view/fchomo/node.js:1368
msgid "Early Data first packet length limit."
msgstr "前置數據長度閾值"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1345
+#: htdocs/luci-static/resources/view/fchomo/node.js:1374
msgid "Early Data header name"
msgstr "前置數據標頭"
@@ -830,7 +865,7 @@ msgstr "編輯出站"
msgid "Edit ruleset"
msgstr "編輯規則集"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1695
+#: htdocs/luci-static/resources/view/fchomo/node.js:1724
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:345
msgid "Editer"
msgstr "編輯器"
@@ -839,30 +874,30 @@ msgstr "編輯器"
msgid "Eliminate encryption header characteristics"
msgstr "消除加密頭特徵"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1094
+#: htdocs/luci-static/resources/view/fchomo/client.js:1131
msgid "Empty fallback"
msgstr "為空時回退"
#: htdocs/luci-static/resources/fchomo/listeners.js:133
-#: htdocs/luci-static/resources/view/fchomo/client.js:940
-#: htdocs/luci-static/resources/view/fchomo/client.js:1034
-#: htdocs/luci-static/resources/view/fchomo/client.js:1280
-#: htdocs/luci-static/resources/view/fchomo/client.js:1372
-#: htdocs/luci-static/resources/view/fchomo/client.js:1514
-#: htdocs/luci-static/resources/view/fchomo/client.js:1745
-#: htdocs/luci-static/resources/view/fchomo/client.js:1801
+#: htdocs/luci-static/resources/view/fchomo/client.js:958
+#: htdocs/luci-static/resources/view/fchomo/client.js:1053
+#: htdocs/luci-static/resources/view/fchomo/client.js:1340
+#: htdocs/luci-static/resources/view/fchomo/client.js:1435
+#: htdocs/luci-static/resources/view/fchomo/client.js:1577
+#: htdocs/luci-static/resources/view/fchomo/client.js:1811
+#: htdocs/luci-static/resources/view/fchomo/client.js:1867
#: htdocs/luci-static/resources/view/fchomo/global.js:422
#: htdocs/luci-static/resources/view/fchomo/global.js:704
#: htdocs/luci-static/resources/view/fchomo/node.js:246
-#: htdocs/luci-static/resources/view/fchomo/node.js:1668
-#: htdocs/luci-static/resources/view/fchomo/node.js:1932
-#: htdocs/luci-static/resources/view/fchomo/node.js:2021
+#: htdocs/luci-static/resources/view/fchomo/node.js:1697
+#: htdocs/luci-static/resources/view/fchomo/node.js:1966
+#: htdocs/luci-static/resources/view/fchomo/node.js:2055
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:272
#: htdocs/luci-static/resources/view/fchomo/server.js:49
msgid "Enable"
msgstr "啟用"
-#: htdocs/luci-static/resources/view/fchomo/node.js:600
+#: htdocs/luci-static/resources/view/fchomo/node.js:610
msgid ""
"Enable 0-RTT QUIC connection handshake on the client side. This is not "
"impacting much on the performance, as the protocol is fully multiplexed.
強烈建議停用此功能,因為它容易受到重放攻擊。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:599
+#: htdocs/luci-static/resources/view/fchomo/node.js:609
msgid "Enable 0-RTT handshake"
msgstr "啟用 0-RTT 握手"
@@ -883,57 +918,57 @@ msgstr ""
"為出站連線啟用 IP4P 轉換"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1187
+#: htdocs/luci-static/resources/view/fchomo/node.js:1216
msgid "Enable ECH"
msgstr "啟用 ECH"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1487
+#: htdocs/luci-static/resources/view/fchomo/node.js:1516
msgid "Enable TCP Brutal"
msgstr "啟用 TCP Brutal"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1488
+#: htdocs/luci-static/resources/view/fchomo/node.js:1517
msgid "Enable TCP Brutal congestion control algorithm"
msgstr "啟用 TCP Brutal 擁塞控制演算法。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:594
+#: htdocs/luci-static/resources/view/fchomo/node.js:604
msgid "Enable fast open"
msgstr "啟用 Fast open"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1476
+#: htdocs/luci-static/resources/view/fchomo/node.js:1505
msgid "Enable multiplexing only for TCP."
msgstr "僅為 TCP 啟用多路復用。"
#: htdocs/luci-static/resources/fchomo/listeners.js:424
-#: htdocs/luci-static/resources/view/fchomo/node.js:478
+#: htdocs/luci-static/resources/view/fchomo/node.js:488
msgid "Enable obfuscate for downlink"
msgstr "啟用下行鏈路混淆"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1470
+#: htdocs/luci-static/resources/view/fchomo/node.js:1499
msgid "Enable padding"
msgstr "啟用填充"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1481
+#: htdocs/luci-static/resources/view/fchomo/node.js:1510
msgid "Enable statistic"
msgstr "啟用統計"
-#: htdocs/luci-static/resources/view/fchomo/node.js:949
-#: htdocs/luci-static/resources/view/fchomo/node.js:1875
+#: htdocs/luci-static/resources/view/fchomo/node.js:977
+#: htdocs/luci-static/resources/view/fchomo/node.js:1909
msgid ""
"Enable the SUoT protocol, requires server support. Conflict with Multiplex."
msgstr "啟用 SUoT 協議,需要服務端支援。與多路復用衝突。"
#: htdocs/luci-static/resources/fchomo/listeners.js:201
-#: htdocs/luci-static/resources/view/fchomo/node.js:329
+#: htdocs/luci-static/resources/view/fchomo/node.js:339
msgid ""
"Enabling obfuscation will make the server incompatible with standard QUIC "
"connections, losing the ability to masquerade with HTTP/3."
msgstr "啟用混淆將使伺服器與標準的 QUIC 連線不相容,失去 HTTP/3 偽裝的能力。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:694
+#: htdocs/luci-static/resources/fchomo/listeners.js:712
msgid "Encryption method"
msgstr "加密方法"
-#: htdocs/luci-static/resources/view/fchomo/node.js:729
+#: htdocs/luci-static/resources/view/fchomo/node.js:739
msgid "Endpoint pubkic key"
msgstr "端點公鑰"
@@ -941,26 +976,26 @@ msgstr "端點公鑰"
msgid "Endpoint-Independent NAT"
msgstr "端點獨立 NAT"
-#: htdocs/luci-static/resources/view/fchomo/client.js:731
-#: htdocs/luci-static/resources/view/fchomo/client.js:874
+#: htdocs/luci-static/resources/view/fchomo/client.js:736
+#: htdocs/luci-static/resources/view/fchomo/client.js:887
msgid "Entry"
msgstr "條目"
-#: htdocs/luci-static/resources/fchomo.js:90
+#: htdocs/luci-static/resources/fchomo.js:91
msgid "Error"
msgstr "錯誤"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1147
+#: htdocs/luci-static/resources/view/fchomo/client.js:1190
msgid ""
"Exceeding this triggers a forced health check. 5 will be used "
"if empty."
msgstr "超過此限制將會觸發強制健康檢查。留空則使用 5。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1990
+#: htdocs/luci-static/resources/view/fchomo/node.js:2024
msgid "Exclude matched node types."
msgstr "排除匹配的節點類型。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1184
+#: htdocs/luci-static/resources/view/fchomo/client.js:1244
msgid ""
"Exclude matched node types. Available types see here."
@@ -968,8 +1003,8 @@ msgstr ""
"排除匹配的節點類型。可用類型請參考此處。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1179
-#: htdocs/luci-static/resources/view/fchomo/node.js:1983
+#: htdocs/luci-static/resources/view/fchomo/client.js:1239
+#: htdocs/luci-static/resources/view/fchomo/node.js:2017
msgid "Exclude nodes that meet keywords or regexps."
msgstr "排除匹配關鍵字或表達式的節點。"
@@ -977,139 +1012,143 @@ msgstr "排除匹配關鍵字或表達式的節點。"
msgid "Expand/Collapse result"
msgstr "展開/收起 結果"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1139
-#: htdocs/luci-static/resources/view/fchomo/node.js:1968
+#: htdocs/luci-static/resources/view/fchomo/client.js:1182
+#: htdocs/luci-static/resources/view/fchomo/node.js:2002
msgid "Expected HTTP code. 204 will be used if empty."
msgstr "預期的 HTTP code。留空則使用 204。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1141
-#: htdocs/luci-static/resources/view/fchomo/node.js:1970
+#: htdocs/luci-static/resources/view/fchomo/client.js:1184
+#: htdocs/luci-static/resources/view/fchomo/node.js:2004
msgid "Expected status"
msgstr "預期狀態"
#: htdocs/luci-static/resources/fchomo.js:452
#: htdocs/luci-static/resources/fchomo.js:455
#: htdocs/luci-static/resources/fchomo.js:458
-#: htdocs/luci-static/resources/fchomo.js:1422
-#: htdocs/luci-static/resources/fchomo.js:1430
-#: htdocs/luci-static/resources/fchomo.js:1438
-#: htdocs/luci-static/resources/fchomo.js:1461
-#: htdocs/luci-static/resources/fchomo.js:1464
-#: htdocs/luci-static/resources/fchomo.js:1471
-#: htdocs/luci-static/resources/fchomo.js:1487
-#: htdocs/luci-static/resources/fchomo.js:1496
-#: htdocs/luci-static/resources/fchomo.js:1508
-#: htdocs/luci-static/resources/fchomo.js:1511
-#: htdocs/luci-static/resources/fchomo.js:1521
-#: htdocs/luci-static/resources/fchomo.js:1533
-#: htdocs/luci-static/resources/fchomo.js:1536
-#: htdocs/luci-static/resources/fchomo.js:1546
-#: htdocs/luci-static/resources/fchomo.js:1556
-#: htdocs/luci-static/resources/fchomo.js:1591
-#: htdocs/luci-static/resources/fchomo.js:1593
-#: htdocs/luci-static/resources/fchomo.js:1606
-#: htdocs/luci-static/resources/fchomo.js:1612
-#: htdocs/luci-static/resources/fchomo.js:1619
-#: htdocs/luci-static/resources/fchomo.js:1628
+#: htdocs/luci-static/resources/fchomo.js:1772
+#: htdocs/luci-static/resources/fchomo.js:1780
+#: htdocs/luci-static/resources/fchomo.js:1788
+#: htdocs/luci-static/resources/fchomo.js:1811
+#: htdocs/luci-static/resources/fchomo.js:1814
+#: htdocs/luci-static/resources/fchomo.js:1821
+#: htdocs/luci-static/resources/fchomo.js:1837
+#: htdocs/luci-static/resources/fchomo.js:1846
+#: htdocs/luci-static/resources/fchomo.js:1858
+#: htdocs/luci-static/resources/fchomo.js:1861
+#: htdocs/luci-static/resources/fchomo.js:1871
+#: htdocs/luci-static/resources/fchomo.js:1883
+#: htdocs/luci-static/resources/fchomo.js:1886
+#: htdocs/luci-static/resources/fchomo.js:1896
+#: htdocs/luci-static/resources/fchomo.js:1906
+#: htdocs/luci-static/resources/fchomo.js:1941
+#: htdocs/luci-static/resources/fchomo.js:1943
+#: htdocs/luci-static/resources/fchomo.js:1956
+#: htdocs/luci-static/resources/fchomo.js:1962
+#: htdocs/luci-static/resources/fchomo.js:1969
+#: htdocs/luci-static/resources/fchomo.js:1978
#: htdocs/luci-static/resources/fchomo/listeners.js:363
#: htdocs/luci-static/resources/fchomo/listeners.js:410
-#: htdocs/luci-static/resources/fchomo/listeners.js:723
-#: htdocs/luci-static/resources/fchomo/listeners.js:754
-#: htdocs/luci-static/resources/fchomo/listeners.js:855
-#: htdocs/luci-static/resources/view/fchomo/client.js:69
-#: htdocs/luci-static/resources/view/fchomo/client.js:1028
-#: htdocs/luci-static/resources/view/fchomo/client.js:1529
+#: htdocs/luci-static/resources/fchomo/listeners.js:741
+#: htdocs/luci-static/resources/fchomo/listeners.js:772
+#: htdocs/luci-static/resources/fchomo/listeners.js:873
+#: htdocs/luci-static/resources/view/fchomo/client.js:71
+#: htdocs/luci-static/resources/view/fchomo/client.js:1047
+#: htdocs/luci-static/resources/view/fchomo/client.js:1592
#: htdocs/luci-static/resources/view/fchomo/global.js:904
-#: htdocs/luci-static/resources/view/fchomo/node.js:435
-#: htdocs/luci-static/resources/view/fchomo/node.js:471
-#: htdocs/luci-static/resources/view/fchomo/node.js:524
-#: htdocs/luci-static/resources/view/fchomo/node.js:526
-#: htdocs/luci-static/resources/view/fchomo/node.js:1020
-#: htdocs/luci-static/resources/view/fchomo/node.js:1144
-#: htdocs/luci-static/resources/view/fchomo/node.js:2047
-#: htdocs/luci-static/resources/view/fchomo/node.js:2067
+#: htdocs/luci-static/resources/view/fchomo/node.js:445
+#: htdocs/luci-static/resources/view/fchomo/node.js:481
+#: htdocs/luci-static/resources/view/fchomo/node.js:534
+#: htdocs/luci-static/resources/view/fchomo/node.js:536
+#: htdocs/luci-static/resources/view/fchomo/node.js:1048
+#: htdocs/luci-static/resources/view/fchomo/node.js:1173
+#: htdocs/luci-static/resources/view/fchomo/node.js:2091
+#: htdocs/luci-static/resources/view/fchomo/node.js:2121
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:300
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:314
msgid "Expecting: %s"
msgstr "請輸入:%s"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1135
-#: htdocs/luci-static/resources/fchomo/listeners.js:1142
-#: htdocs/luci-static/resources/view/fchomo/node.js:1254
-#: htdocs/luci-static/resources/view/fchomo/node.js:1261
-#: htdocs/luci-static/resources/view/fchomo/node.js:1269
+#: htdocs/luci-static/resources/fchomo/listeners.js:567
+#: htdocs/luci-static/resources/fchomo/listeners.js:1153
+#: htdocs/luci-static/resources/fchomo/listeners.js:1160
+#: htdocs/luci-static/resources/view/fchomo/node.js:894
+#: htdocs/luci-static/resources/view/fchomo/node.js:1283
+#: htdocs/luci-static/resources/view/fchomo/node.js:1290
+#: htdocs/luci-static/resources/view/fchomo/node.js:1298
msgid "Expecting: only support %s."
-msgstr "請輸入:僅支援 %s."
+msgstr "請輸入:僅支援 %s。"
#: htdocs/luci-static/resources/view/fchomo/global.js:723
msgid "Experimental"
msgstr "實驗性"
-#: htdocs/luci-static/resources/view/fchomo/client.js:551
-#: htdocs/luci-static/resources/view/fchomo/client.js:564
-#: htdocs/luci-static/resources/view/fchomo/client.js:572
-#: htdocs/luci-static/resources/view/fchomo/client.js:579
-#: htdocs/luci-static/resources/view/fchomo/client.js:589
-#: htdocs/luci-static/resources/view/fchomo/client.js:596
-#: htdocs/luci-static/resources/view/fchomo/client.js:604
-#: htdocs/luci-static/resources/view/fchomo/client.js:611
-#: htdocs/luci-static/resources/view/fchomo/client.js:678
+#: htdocs/luci-static/resources/view/fchomo/client.js:553
+#: htdocs/luci-static/resources/view/fchomo/client.js:566
+#: htdocs/luci-static/resources/view/fchomo/client.js:574
+#: htdocs/luci-static/resources/view/fchomo/client.js:581
+#: htdocs/luci-static/resources/view/fchomo/client.js:591
+#: htdocs/luci-static/resources/view/fchomo/client.js:598
+#: htdocs/luci-static/resources/view/fchomo/client.js:606
+#: htdocs/luci-static/resources/view/fchomo/client.js:613
+#: htdocs/luci-static/resources/view/fchomo/client.js:680
msgid "Factor"
msgstr "條件"
-#: htdocs/luci-static/resources/fchomo.js:1363
+#: htdocs/luci-static/resources/fchomo.js:1713
msgid "Failed to execute \"/etc/init.d/fchomo %s %s\" reason: %s"
msgstr "無法執行 \"/etc/init.d/fchomo %s %s\" 原因: %s"
-#: htdocs/luci-static/resources/fchomo.js:1316
+#: htdocs/luci-static/resources/fchomo.js:1666
msgid "Failed to generate %s, error: %s."
msgstr "生成 %s 失敗,錯誤:%s。"
-#: htdocs/luci-static/resources/fchomo.js:1728
+#: htdocs/luci-static/resources/fchomo.js:2078
msgid "Failed to upload %s, error: %s."
msgstr "上傳 %s 失敗,錯誤:%s。"
-#: htdocs/luci-static/resources/fchomo.js:1747
+#: htdocs/luci-static/resources/fchomo.js:2097
msgid "Failed to upload, error: %s."
msgstr "上傳失敗,錯誤:%s。"
-#: htdocs/luci-static/resources/fchomo.js:241
+#: htdocs/luci-static/resources/fchomo.js:242
#: htdocs/luci-static/resources/fchomo/listeners.js:449
msgid "Fallback"
msgstr "自動回退"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1418
-#: htdocs/luci-static/resources/view/fchomo/client.js:1431
+#: htdocs/luci-static/resources/view/fchomo/client.js:1481
+#: htdocs/luci-static/resources/view/fchomo/client.js:1494
+#: htdocs/luci-static/resources/view/fchomo/client.js:1925
msgid "Fallback DNS server"
msgstr "後備 DNS 伺服器"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1815
+#: htdocs/luci-static/resources/view/fchomo/client.js:1881
+#: htdocs/luci-static/resources/view/fchomo/client.js:1922
msgid "Fallback filter"
msgstr "後備過濾器"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1174
-#: htdocs/luci-static/resources/view/fchomo/node.js:1977
+#: htdocs/luci-static/resources/view/fchomo/client.js:1234
+#: htdocs/luci-static/resources/view/fchomo/node.js:2011
msgid "Filter nodes that meet keywords or regexps."
msgstr "過濾匹配關鍵字或表達式的節點。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1682
+#: htdocs/luci-static/resources/view/fchomo/client.js:1748
msgid "Filter record type:"
msgstr "過濾記錄類型:"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1650
-#: htdocs/luci-static/resources/view/fchomo/client.js:1666
+#: htdocs/luci-static/resources/view/fchomo/client.js:1716
+#: htdocs/luci-static/resources/view/fchomo/client.js:1732
msgid "Filter record: %s"
msgstr "過濾 %s 記錄"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1417
+#: htdocs/luci-static/resources/view/fchomo/client.js:1480
msgid "Final DNS server"
msgstr "兜底 DNS 伺服器"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1419
+#: htdocs/luci-static/resources/view/fchomo/client.js:1482
msgid "Final DNS server (For non-poisoned domains)"
msgstr "兜底 DNS 伺服器 (用於未被投毒汙染的網域)"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1421
+#: htdocs/luci-static/resources/view/fchomo/client.js:1484
msgid "Final DNS server (For poisoned domains)"
msgstr "兜底 DNS 伺服器 (用於已被投毒汙染的網域)"
@@ -1117,12 +1156,12 @@ msgstr "兜底 DNS 伺服器 (用於已被投毒汙染的網域)"
msgid "Firewall"
msgstr "防火牆"
-#: htdocs/luci-static/resources/fchomo/listeners.js:535
-#: htdocs/luci-static/resources/view/fchomo/node.js:677
+#: htdocs/luci-static/resources/fchomo/listeners.js:532
+#: htdocs/luci-static/resources/view/fchomo/node.js:687
msgid "Flow"
msgstr "流控"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1163
+#: htdocs/luci-static/resources/view/fchomo/client.js:1223
msgid ""
"For details, see %s."
@@ -1130,9 +1169,9 @@ msgstr ""
"實作細節請參閱 %s."
-#: htdocs/luci-static/resources/view/fchomo/client.js:1140
-#: htdocs/luci-static/resources/view/fchomo/node.js:1843
-#: htdocs/luci-static/resources/view/fchomo/node.js:1969
+#: htdocs/luci-static/resources/view/fchomo/client.js:1183
+#: htdocs/luci-static/resources/view/fchomo/node.js:1877
+#: htdocs/luci-static/resources/view/fchomo/node.js:2003
msgid ""
"For format see %s."
@@ -1140,8 +1179,8 @@ msgstr ""
"格式請參閱 %s"
"a>."
-#: htdocs/luci-static/resources/view/fchomo/node.js:777
-#: htdocs/luci-static/resources/view/fchomo/node.js:860
+#: htdocs/luci-static/resources/view/fchomo/node.js:787
+#: htdocs/luci-static/resources/view/fchomo/node.js:870
msgid "Force DNS remote resolution."
msgstr "強制 DNS 遠端解析。"
@@ -1160,7 +1199,7 @@ msgstr "格式"
msgid "FullCombo Shark!"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1294
+#: htdocs/luci-static/resources/view/fchomo/node.js:1323
msgid "GET"
msgstr ""
@@ -1169,7 +1208,7 @@ msgid "GFW list version"
msgstr "GFW 網域清單版本"
#: htdocs/luci-static/resources/fchomo/listeners.js:196
-#: htdocs/luci-static/resources/view/fchomo/node.js:324
+#: htdocs/luci-static/resources/view/fchomo/node.js:334
msgid "Gecko"
msgstr ""
@@ -1178,9 +1217,9 @@ msgid "General"
msgstr "常規"
#: htdocs/luci-static/resources/fchomo/listeners.js:119
-#: htdocs/luci-static/resources/view/fchomo/client.js:1019
+#: htdocs/luci-static/resources/view/fchomo/client.js:1038
#: htdocs/luci-static/resources/view/fchomo/node.js:233
-#: htdocs/luci-static/resources/view/fchomo/node.js:1658
+#: htdocs/luci-static/resources/view/fchomo/node.js:1687
msgid "General fields"
msgstr "常規欄位"
@@ -1188,17 +1227,17 @@ msgstr "常規欄位"
msgid "General settings"
msgstr "常規設定"
-#: htdocs/luci-static/resources/fchomo.js:553
-#: htdocs/luci-static/resources/fchomo.js:555
-#: htdocs/luci-static/resources/fchomo.js:569
-#: htdocs/luci-static/resources/fchomo.js:571
+#: htdocs/luci-static/resources/fchomo.js:578
+#: htdocs/luci-static/resources/fchomo.js:580
+#: htdocs/luci-static/resources/fchomo.js:594
+#: htdocs/luci-static/resources/fchomo.js:596
#: htdocs/luci-static/resources/fchomo/listeners.js:341
#: htdocs/luci-static/resources/fchomo/listeners.js:385
#: htdocs/luci-static/resources/fchomo/listeners.js:387
-#: htdocs/luci-static/resources/fchomo/listeners.js:827
-#: htdocs/luci-static/resources/fchomo/listeners.js:1060
+#: htdocs/luci-static/resources/fchomo/listeners.js:845
+#: htdocs/luci-static/resources/fchomo/listeners.js:1078
#: htdocs/luci-static/resources/view/fchomo/global.js:608
-#: htdocs/luci-static/resources/view/fchomo/node.js:1811
+#: htdocs/luci-static/resources/view/fchomo/node.js:1845
msgid "Generate"
msgstr "生成"
@@ -1214,21 +1253,21 @@ msgstr "GeoIP 版本"
msgid "GeoSite version"
msgstr "GeoSite 版本"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1825
+#: htdocs/luci-static/resources/view/fchomo/client.js:1891
msgid "Geoip code"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1822
+#: htdocs/luci-static/resources/view/fchomo/client.js:1888
msgid "Geoip enable"
msgstr "Geoip 啟用"
-#: htdocs/luci-static/resources/view/fchomo/client.js:853
-#: htdocs/luci-static/resources/view/fchomo/client.js:862
-#: htdocs/luci-static/resources/view/fchomo/client.js:1834
+#: htdocs/luci-static/resources/view/fchomo/client.js:861
+#: htdocs/luci-static/resources/view/fchomo/client.js:870
+#: htdocs/luci-static/resources/view/fchomo/client.js:1900
msgid "Geosite"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:45
+#: htdocs/luci-static/resources/fchomo.js:46
msgid "GitHub"
msgstr ""
@@ -1245,11 +1284,11 @@ msgstr "全域"
msgid "Global Authentication"
msgstr "全域認證"
-#: htdocs/luci-static/resources/view/fchomo/node.js:701
+#: htdocs/luci-static/resources/view/fchomo/node.js:711
msgid "Global padding"
msgstr "全域填充"
-#: htdocs/luci-static/resources/fchomo.js:44
+#: htdocs/luci-static/resources/fchomo.js:45
msgid "Google"
msgstr "Google"
@@ -1261,58 +1300,58 @@ msgstr ""
msgid "Grant access to fchomo configuration"
msgstr "授予 fchomo 存取 UCI 配置的權限"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1044
+#: htdocs/luci-static/resources/view/fchomo/client.js:1063
msgid "Group"
msgstr "組"
-#: htdocs/luci-static/resources/fchomo.js:153
-#: htdocs/luci-static/resources/fchomo.js:189
-#: htdocs/luci-static/resources/fchomo/listeners.js:569
-#: htdocs/luci-static/resources/view/fchomo/node.js:883
-#: htdocs/luci-static/resources/view/fchomo/node.js:1243
-#: htdocs/luci-static/resources/view/fchomo/node.js:1254
-#: htdocs/luci-static/resources/view/fchomo/node.js:1261
+#: htdocs/luci-static/resources/fchomo.js:154
+#: htdocs/luci-static/resources/fchomo.js:190
+#: htdocs/luci-static/resources/fchomo/listeners.js:578
+#: htdocs/luci-static/resources/view/fchomo/node.js:905
+#: htdocs/luci-static/resources/view/fchomo/node.js:1272
+#: htdocs/luci-static/resources/view/fchomo/node.js:1283
+#: htdocs/luci-static/resources/view/fchomo/node.js:1290
msgid "HTTP"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:291
-#: htdocs/luci-static/resources/view/fchomo/node.js:1316
-#: htdocs/luci-static/resources/view/fchomo/node.js:1823
-#: htdocs/luci-static/resources/view/fchomo/ruleset.js:414
+#: htdocs/luci-static/resources/view/fchomo/node.js:301
+#: htdocs/luci-static/resources/view/fchomo/node.js:1345
+#: htdocs/luci-static/resources/view/fchomo/node.js:1857
+#: htdocs/luci-static/resources/view/fchomo/ruleset.js:419
msgid "HTTP header"
msgstr "HTTP header"
#: htdocs/luci-static/resources/fchomo/listeners.js:430
-#: htdocs/luci-static/resources/view/fchomo/node.js:484
+#: htdocs/luci-static/resources/view/fchomo/node.js:494
msgid "HTTP mask"
msgstr "HTTP 偽裝"
#: htdocs/luci-static/resources/fchomo/listeners.js:435
-#: htdocs/luci-static/resources/view/fchomo/node.js:489
-#: htdocs/luci-static/resources/view/fchomo/node.js:524
-#: htdocs/luci-static/resources/view/fchomo/node.js:526
+#: htdocs/luci-static/resources/view/fchomo/node.js:499
+#: htdocs/luci-static/resources/view/fchomo/node.js:534
+#: htdocs/luci-static/resources/view/fchomo/node.js:536
msgid "HTTP mask mode"
msgstr "HTTP 偽裝模式"
-#: htdocs/luci-static/resources/view/fchomo/node.js:514
+#: htdocs/luci-static/resources/view/fchomo/node.js:524
msgid "HTTP mask multiplex"
msgstr "HTTP 偽裝多路復用"
-#: htdocs/luci-static/resources/view/fchomo/node.js:499
-#: htdocs/luci-static/resources/view/fchomo/node.js:504
+#: htdocs/luci-static/resources/view/fchomo/node.js:509
+#: htdocs/luci-static/resources/view/fchomo/node.js:514
msgid "HTTP mask: %s"
msgstr "HTTP 偽裝: %s"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1293
+#: htdocs/luci-static/resources/view/fchomo/node.js:1322
msgid "HTTP request method"
msgstr "HTTP 請求方法"
#: htdocs/luci-static/resources/fchomo/listeners.js:445
-#: htdocs/luci-static/resources/view/fchomo/node.js:510
+#: htdocs/luci-static/resources/view/fchomo/node.js:520
msgid "HTTP root path"
msgstr "HTTP 根路徑"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1581
+#: htdocs/luci-static/resources/view/fchomo/client.js:1647
msgid "HTTP/3"
msgstr ""
@@ -1322,9 +1361,9 @@ msgid ""
"returned if empty."
msgstr "身份驗證失敗時的 HTTP3 伺服器回應。預設回傳 404 頁面。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1244
-#: htdocs/luci-static/resources/view/fchomo/node.js:1255
-#: htdocs/luci-static/resources/view/fchomo/node.js:1262
+#: htdocs/luci-static/resources/view/fchomo/node.js:1273
+#: htdocs/luci-static/resources/view/fchomo/node.js:1284
+#: htdocs/luci-static/resources/view/fchomo/node.js:1291
msgid "HTTPUpgrade"
msgstr ""
@@ -1332,73 +1371,74 @@ msgstr ""
msgid "Handle domain"
msgstr "處理網域"
-#: htdocs/luci-static/resources/view/fchomo/node.js:406
+#: htdocs/luci-static/resources/view/fchomo/node.js:416
msgid "Handshake mode"
msgstr "握手模式"
-#: htdocs/luci-static/resources/fchomo/listeners.js:582
+#: htdocs/luci-static/resources/fchomo/listeners.js:590
msgid "Handshake target that supports TLS 1.3"
msgstr "握手目標 (支援 TLS 1.3)"
#: htdocs/luci-static/resources/fchomo/listeners.js:417
+#: htdocs/luci-static/resources/view/fchomo/node.js:962
msgid "Handshake timeout"
-msgstr "握手超時"
+msgstr "握手逾時"
#: htdocs/luci-static/resources/fchomo/listeners.js:244
msgid "Header to read real client IP from (e.g. X-Forwarded-For)"
msgstr "用於讀取客戶端真實 IP 的 Header(例如 X-Forwarded-For)"
-#: htdocs/luci-static/resources/view/fchomo/node.js:788
+#: htdocs/luci-static/resources/view/fchomo/node.js:798
msgid "Health check"
msgstr "健康檢查"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1109
-#: htdocs/luci-static/resources/view/fchomo/node.js:1937
+#: htdocs/luci-static/resources/view/fchomo/client.js:1152
+#: htdocs/luci-static/resources/view/fchomo/node.js:1971
msgid "Health check URL"
msgstr "健康檢查 URL"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1138
-#: htdocs/luci-static/resources/view/fchomo/node.js:1967
+#: htdocs/luci-static/resources/view/fchomo/client.js:1181
+#: htdocs/luci-static/resources/view/fchomo/node.js:2001
msgid "Health check expected status"
msgstr "健康檢查预期状态"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1118
-#: htdocs/luci-static/resources/view/fchomo/node.js:1947
+#: htdocs/luci-static/resources/view/fchomo/client.js:1161
+#: htdocs/luci-static/resources/view/fchomo/node.js:1981
msgid "Health check interval"
msgstr "健康檢查間隔"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1125
-#: htdocs/luci-static/resources/view/fchomo/node.js:1954
+#: htdocs/luci-static/resources/view/fchomo/client.js:1168
+#: htdocs/luci-static/resources/view/fchomo/node.js:1988
msgid "Health check timeout"
-msgstr "健康檢查超时"
+msgstr "健康檢查逾時"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1021
-#: htdocs/luci-static/resources/view/fchomo/node.js:1660
+#: htdocs/luci-static/resources/view/fchomo/client.js:1040
+#: htdocs/luci-static/resources/view/fchomo/node.js:1689
msgid "Health fields"
msgstr "健康欄位"
-#: htdocs/luci-static/resources/view/fchomo/node.js:606
+#: htdocs/luci-static/resources/view/fchomo/node.js:616
msgid "Heartbeat interval"
msgstr "心跳間隔"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1189
+#: htdocs/luci-static/resources/view/fchomo/client.js:1249
msgid "Hidden"
msgstr "隱藏"
-#: htdocs/luci-static/resources/fchomo/listeners.js:575
-#: htdocs/luci-static/resources/view/fchomo/node.js:889
+#: htdocs/luci-static/resources/fchomo/listeners.js:583
+#: htdocs/luci-static/resources/view/fchomo/node.js:910
msgid "Host that supports TLS 1.3"
msgstr "主機名稱 (支援 TLS 1.3)"
-#: htdocs/luci-static/resources/view/fchomo/node.js:361
+#: htdocs/luci-static/resources/view/fchomo/node.js:371
msgid "Host-key"
msgstr "主機金鑰"
-#: htdocs/luci-static/resources/view/fchomo/node.js:356
+#: htdocs/luci-static/resources/view/fchomo/node.js:366
msgid "Host-key algorithms"
msgstr "主機金鑰演算法"
-#: htdocs/luci-static/resources/view/fchomo/node.js:504
+#: htdocs/luci-static/resources/view/fchomo/node.js:514
msgid "Host/SNI override"
msgstr "主機/SNI 覆蓋"
@@ -1407,12 +1447,12 @@ msgstr "主機/SNI 覆蓋"
msgid "Hosts"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:165
-#: htdocs/luci-static/resources/fchomo.js:201
+#: htdocs/luci-static/resources/fchomo.js:166
+#: htdocs/luci-static/resources/fchomo.js:202
msgid "Hysteria2"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:166
+#: htdocs/luci-static/resources/fchomo.js:167
msgid "Hysteria2 Realm"
msgstr "Hysteria2 Realm"
@@ -1421,58 +1461,58 @@ msgstr "Hysteria2 Realm"
msgid "Hysteria2 Realm fields"
msgstr "Hysteria2 Realm 欄位"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1827
-#: htdocs/luci-static/resources/view/fchomo/client.js:1840
+#: htdocs/luci-static/resources/view/fchomo/client.js:1893
+#: htdocs/luci-static/resources/view/fchomo/client.js:1906
msgid "IP"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1838
+#: htdocs/luci-static/resources/view/fchomo/client.js:1904
msgid "IP CIDR"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:563
+#: htdocs/luci-static/resources/view/fchomo/node.js:573
msgid "IP override"
msgstr "IP 覆寫"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1536
-#: htdocs/luci-static/resources/view/fchomo/node.js:1923
+#: htdocs/luci-static/resources/view/fchomo/node.js:1565
+#: htdocs/luci-static/resources/view/fchomo/node.js:1957
msgid "IP version"
msgstr "IP 版本"
-#: htdocs/luci-static/resources/fchomo.js:174
+#: htdocs/luci-static/resources/fchomo.js:175
msgid "IPv4 only"
msgstr "僅 IPv4"
-#: htdocs/luci-static/resources/fchomo.js:175
+#: htdocs/luci-static/resources/fchomo.js:176
msgid "IPv6 only"
msgstr "僅 IPv6"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1400
+#: htdocs/luci-static/resources/view/fchomo/client.js:1463
#: htdocs/luci-static/resources/view/fchomo/global.js:436
msgid "IPv6 support"
msgstr "IPv6 支援"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1195
+#: htdocs/luci-static/resources/view/fchomo/client.js:1255
msgid "Icon"
msgstr "圖標"
-#: htdocs/luci-static/resources/view/fchomo/node.js:650
+#: htdocs/luci-static/resources/view/fchomo/node.js:660
msgid "Idle session check interval"
msgstr "閒置會話檢查間隔"
-#: htdocs/luci-static/resources/view/fchomo/node.js:657
+#: htdocs/luci-static/resources/view/fchomo/node.js:667
msgid "Idle session timeout"
msgstr "閒置會話逾時"
-#: htdocs/luci-static/resources/fchomo/listeners.js:486
+#: htdocs/luci-static/resources/fchomo/listeners.js:483
msgid "Idle timeout"
msgstr "閒置逾時"
-#: htdocs/luci-static/resources/fchomo.js:1464
+#: htdocs/luci-static/resources/fchomo.js:1814
msgid "If All ports is selected, uncheck others"
msgstr "如果選擇了“所有連接埠”,則取消選取“其他”"
-#: htdocs/luci-static/resources/view/fchomo/client.js:69
+#: htdocs/luci-static/resources/view/fchomo/client.js:71
msgid "If Block is selected, uncheck others"
msgstr "如果選擇了“封鎖”,則取消選取“其他”"
@@ -1480,24 +1520,24 @@ msgstr "如果選擇了“封鎖”,則取消選取“其他”"
msgid "Ignore client bandwidth"
msgstr "忽略客戶端頻寬"
-#: htdocs/luci-static/resources/fchomo.js:738
+#: htdocs/luci-static/resources/fchomo.js:763
msgid "Import"
msgstr "導入"
-#: htdocs/luci-static/resources/view/fchomo/client.js:957
-#: htdocs/luci-static/resources/view/fchomo/client.js:1013
-#: htdocs/luci-static/resources/view/fchomo/client.js:1218
-#: htdocs/luci-static/resources/view/fchomo/client.js:1269
-#: htdocs/luci-static/resources/view/fchomo/client.js:1337
-#: htdocs/luci-static/resources/view/fchomo/client.js:1361
-#: htdocs/luci-static/resources/view/fchomo/client.js:1465
-#: htdocs/luci-static/resources/view/fchomo/client.js:1503
-#: htdocs/luci-static/resources/view/fchomo/client.js:1717
-#: htdocs/luci-static/resources/view/fchomo/client.js:1734
-#: htdocs/luci-static/resources/view/fchomo/client.js:1769
-#: htdocs/luci-static/resources/view/fchomo/client.js:1790
-#: htdocs/luci-static/resources/view/fchomo/node.js:1562
-#: htdocs/luci-static/resources/view/fchomo/node.js:1646
+#: htdocs/luci-static/resources/view/fchomo/client.js:975
+#: htdocs/luci-static/resources/view/fchomo/client.js:1032
+#: htdocs/luci-static/resources/view/fchomo/client.js:1278
+#: htdocs/luci-static/resources/view/fchomo/client.js:1329
+#: htdocs/luci-static/resources/view/fchomo/client.js:1400
+#: htdocs/luci-static/resources/view/fchomo/client.js:1424
+#: htdocs/luci-static/resources/view/fchomo/client.js:1528
+#: htdocs/luci-static/resources/view/fchomo/client.js:1566
+#: htdocs/luci-static/resources/view/fchomo/client.js:1783
+#: htdocs/luci-static/resources/view/fchomo/client.js:1800
+#: htdocs/luci-static/resources/view/fchomo/client.js:1835
+#: htdocs/luci-static/resources/view/fchomo/client.js:1856
+#: htdocs/luci-static/resources/view/fchomo/node.js:1591
+#: htdocs/luci-static/resources/view/fchomo/node.js:1675
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:154
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:249
msgid "Import mihomo config"
@@ -1511,55 +1551,61 @@ msgstr "導入規則集連結"
#: htdocs/luci-static/resources/fchomo/listeners.js:176
#: htdocs/luci-static/resources/fchomo/listeners.js:182
-#: htdocs/luci-static/resources/view/fchomo/node.js:310
-#: htdocs/luci-static/resources/view/fchomo/node.js:316
-#: htdocs/luci-static/resources/view/fchomo/node.js:1881
-#: htdocs/luci-static/resources/view/fchomo/node.js:1887
+#: htdocs/luci-static/resources/view/fchomo/node.js:320
+#: htdocs/luci-static/resources/view/fchomo/node.js:326
+#: htdocs/luci-static/resources/view/fchomo/node.js:1915
+#: htdocs/luci-static/resources/view/fchomo/node.js:1921
msgid "In Mbps."
msgstr "單位為 Mbps。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1736
+#: htdocs/luci-static/resources/view/fchomo/node.js:1765
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:392
msgid "In bytes. %s will be used if empty."
msgstr "單位為位元組。留空則使用 %s。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:607
-#: htdocs/luci-static/resources/view/fchomo/node.js:614
+#: htdocs/luci-static/resources/view/fchomo/node.js:617
+#: htdocs/luci-static/resources/view/fchomo/node.js:624
msgid "In millisecond."
msgstr "單位為毫秒。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1126
-#: htdocs/luci-static/resources/view/fchomo/client.js:1155
-#: htdocs/luci-static/resources/view/fchomo/node.js:1955
+#: htdocs/luci-static/resources/view/fchomo/client.js:1169
+#: htdocs/luci-static/resources/view/fchomo/client.js:1215
+#: htdocs/luci-static/resources/view/fchomo/node.js:1989
msgid "In millisecond. %s will be used if empty."
msgstr "單位為毫秒。留空則使用 %s。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1385
+#: htdocs/luci-static/resources/view/fchomo/node.js:1414
msgid "In milliseconds."
msgstr "單位為毫秒。"
#: htdocs/luci-static/resources/fchomo/listeners.js:418
-#: htdocs/luci-static/resources/fchomo/listeners.js:487
-#: htdocs/luci-static/resources/fchomo/listeners.js:494
-#: htdocs/luci-static/resources/view/fchomo/node.js:651
-#: htdocs/luci-static/resources/view/fchomo/node.js:658
-#: htdocs/luci-static/resources/view/fchomo/node.js:1332
+#: htdocs/luci-static/resources/fchomo/listeners.js:484
+#: htdocs/luci-static/resources/fchomo/listeners.js:491
+#: htdocs/luci-static/resources/view/fchomo/node.js:661
+#: htdocs/luci-static/resources/view/fchomo/node.js:668
+#: htdocs/luci-static/resources/view/fchomo/node.js:1361
msgid "In seconds."
msgstr "單位為秒。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1119
+#: htdocs/luci-static/resources/view/fchomo/client.js:1162
#: htdocs/luci-static/resources/view/fchomo/global.js:446
#: htdocs/luci-static/resources/view/fchomo/global.js:451
#: htdocs/luci-static/resources/view/fchomo/global.js:536
-#: htdocs/luci-static/resources/view/fchomo/node.js:304
-#: htdocs/luci-static/resources/view/fchomo/node.js:1742
-#: htdocs/luci-static/resources/view/fchomo/node.js:1948
+#: htdocs/luci-static/resources/view/fchomo/node.js:314
+#: htdocs/luci-static/resources/view/fchomo/node.js:1771
+#: htdocs/luci-static/resources/view/fchomo/node.js:1982
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:398
msgid "In seconds. %s will be used if empty."
msgstr "單位為秒。留空則使用 %s。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:743
-#: htdocs/luci-static/resources/view/fchomo/node.js:1009
+#: htdocs/luci-static/resources/view/fchomo/node.js:963
+msgid ""
+"In seconds. After configuration, the handshake is not affected by the outer "
+"connection timeout."
+msgstr "單位為秒。配置後握手時不受外層連線逾時影響。"
+
+#: htdocs/luci-static/resources/fchomo/listeners.js:761
+#: htdocs/luci-static/resources/view/fchomo/node.js:1037
msgid ""
"In the order of one Padding-Length and one Padding-"
"Interval, infinite concatenation."
@@ -1573,35 +1619,35 @@ msgstr ""
msgid "Inbound"
msgstr "入站"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1079
+#: htdocs/luci-static/resources/view/fchomo/client.js:1116
msgid "Include all"
msgstr "引入所有"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1084
+#: htdocs/luci-static/resources/view/fchomo/client.js:1121
msgid "Include all node"
msgstr "引入所有節點"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1089
+#: htdocs/luci-static/resources/view/fchomo/client.js:1126
msgid "Include all provider"
msgstr "引入所有供應商"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1090
+#: htdocs/luci-static/resources/view/fchomo/client.js:1127
msgid "Includes all Provider."
msgstr "引入所有供應商。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1080
+#: htdocs/luci-static/resources/view/fchomo/client.js:1117
msgid "Includes all Proxy Node and Provider."
msgstr "引入所有代理節點及供應商。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1085
+#: htdocs/luci-static/resources/view/fchomo/client.js:1122
msgid "Includes all Proxy Node."
msgstr "引入所有代理節點。"
-#: htdocs/luci-static/resources/fchomo.js:92
+#: htdocs/luci-static/resources/fchomo.js:93
msgid "Info"
msgstr "訊息"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1675
+#: htdocs/luci-static/resources/view/fchomo/node.js:1704
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:288
msgid "Inline"
msgstr "內嵌"
@@ -1610,57 +1656,65 @@ msgstr "內嵌"
msgid "Interface Control"
msgstr "介面控制"
-#: htdocs/luci-static/resources/fchomo.js:52
-#: htdocs/luci-static/resources/fchomo.js:59
-#: htdocs/luci-static/resources/fchomo.js:172
+#: htdocs/luci-static/resources/fchomo.js:53
+#: htdocs/luci-static/resources/fchomo.js:60
+#: htdocs/luci-static/resources/fchomo.js:173
#: htdocs/luci-static/resources/fchomo.js:377
-#: htdocs/luci-static/resources/view/fchomo/node.js:1897
+#: htdocs/luci-static/resources/view/fchomo/node.js:1931
msgid "Keep default"
msgstr "保持預設"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1421
+#: htdocs/luci-static/resources/view/fchomo/node.js:1450
msgid "Keep-alive period"
msgstr "Keep-alive 週期"
#: htdocs/luci-static/resources/fchomo/listeners.js:296
-#: htdocs/luci-static/resources/view/fchomo/node.js:420
+#: htdocs/luci-static/resources/view/fchomo/node.js:430
msgid "Key"
msgstr "密鑰"
-#: htdocs/luci-static/resources/fchomo/listeners.js:987
-#: htdocs/luci-static/resources/view/fchomo/node.js:1173
+#: htdocs/luci-static/resources/fchomo/listeners.js:1005
+#: htdocs/luci-static/resources/view/fchomo/node.js:1202
msgid "Key path"
msgstr "憑證路徑"
-#: htdocs/luci-static/resources/fchomo/listeners.js:762
+#: htdocs/luci-static/resources/fchomo/listeners.js:780
msgid "Keypairs"
msgstr "密鑰對"
#: htdocs/luci-static/resources/fchomo/listeners.js:128
-#: htdocs/luci-static/resources/view/fchomo/client.js:1024
-#: htdocs/luci-static/resources/view/fchomo/client.js:1275
-#: htdocs/luci-static/resources/view/fchomo/client.js:1367
-#: htdocs/luci-static/resources/view/fchomo/client.js:1509
-#: htdocs/luci-static/resources/view/fchomo/client.js:1740
-#: htdocs/luci-static/resources/view/fchomo/client.js:1796
+#: htdocs/luci-static/resources/view/fchomo/client.js:1043
+#: htdocs/luci-static/resources/view/fchomo/client.js:1335
+#: htdocs/luci-static/resources/view/fchomo/client.js:1430
+#: htdocs/luci-static/resources/view/fchomo/client.js:1572
+#: htdocs/luci-static/resources/view/fchomo/client.js:1806
+#: htdocs/luci-static/resources/view/fchomo/client.js:1862
#: htdocs/luci-static/resources/view/fchomo/node.js:241
-#: htdocs/luci-static/resources/view/fchomo/node.js:1663
-#: htdocs/luci-static/resources/view/fchomo/node.js:2016
+#: htdocs/luci-static/resources/view/fchomo/node.js:1692
+#: htdocs/luci-static/resources/view/fchomo/node.js:2050
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:267
msgid "Label"
msgstr "標籤"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1132
-#: htdocs/luci-static/resources/view/fchomo/node.js:1961
+#: htdocs/luci-static/resources/view/fchomo/client.js:1175
+#: htdocs/luci-static/resources/view/fchomo/node.js:1995
msgid "Lazy"
-msgstr "懶惰狀態"
+msgstr "怠惰狀態"
+
+#: htdocs/luci-static/resources/view/fchomo/client.js:1913
+msgid "Lazy query"
+msgstr "怠惰查詢"
+
+#: htdocs/luci-static/resources/view/fchomo/client.js:1914
+msgid "Lazy query."
+msgstr "怠惰查詢。"
#: htdocs/luci-static/resources/fchomo/listeners.js:437
-#: htdocs/luci-static/resources/view/fchomo/node.js:491
+#: htdocs/luci-static/resources/view/fchomo/node.js:501
msgid "Legacy"
msgstr "傳統"
-#: htdocs/luci-static/resources/fchomo/listeners.js:544
+#: htdocs/luci-static/resources/fchomo/listeners.js:541
msgid ""
"Legacy protocol support (VMess MD5 Authentication) is provided for "
"compatibility purposes only, use of alterId > 1 is not recommended."
@@ -1672,8 +1726,8 @@ msgstr ""
msgid "Less compatibility and sometimes better performance."
msgstr "有時效能較好。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:968
-#: htdocs/luci-static/resources/view/fchomo/node.js:1095
+#: htdocs/luci-static/resources/fchomo/listeners.js:986
+#: htdocs/luci-static/resources/view/fchomo/node.js:1123
msgid "List of supported application level protocols, in order of preference."
msgstr "支援的應用層協議協商清單,依序排列。"
@@ -1690,7 +1744,7 @@ msgid "Listen interfaces"
msgstr "監聽介面"
#: htdocs/luci-static/resources/fchomo/listeners.js:153
-#: htdocs/luci-static/resources/view/fchomo/client.js:1392
+#: htdocs/luci-static/resources/view/fchomo/client.js:1455
msgid "Listen port"
msgstr "監聽埠"
@@ -1698,26 +1752,26 @@ msgstr "監聽埠"
msgid "Listen ports"
msgstr "監聽埠"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1397
+#: htdocs/luci-static/resources/view/fchomo/client.js:1460
msgid "Listen routing mark (Fwmark)"
msgstr "監聽路由標記 (Fwmark)"
-#: htdocs/luci-static/resources/fchomo.js:243
+#: htdocs/luci-static/resources/fchomo.js:244
msgid "Load balance"
msgstr "負載均衡"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1673
+#: htdocs/luci-static/resources/view/fchomo/node.js:1702
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:286
msgid "Local"
msgstr "本地"
-#: htdocs/luci-static/resources/view/fchomo/node.js:744
-#: htdocs/luci-static/resources/view/fchomo/node.js:807
+#: htdocs/luci-static/resources/view/fchomo/node.js:754
+#: htdocs/luci-static/resources/view/fchomo/node.js:817
msgid "Local IPv6 address"
msgstr "本地 IPv6 位址"
-#: htdocs/luci-static/resources/view/fchomo/node.js:736
-#: htdocs/luci-static/resources/view/fchomo/node.js:799
+#: htdocs/luci-static/resources/view/fchomo/node.js:746
+#: htdocs/luci-static/resources/view/fchomo/node.js:809
msgid "Local address"
msgstr "本地位址"
@@ -1741,10 +1795,10 @@ msgstr "日誌等級"
#: htdocs/luci-static/resources/fchomo/listeners.js:373
#: htdocs/luci-static/resources/fchomo/listeners.js:374
#: htdocs/luci-static/resources/fchomo/listeners.js:379
-#: htdocs/luci-static/resources/view/fchomo/node.js:444
-#: htdocs/luci-static/resources/view/fchomo/node.js:445
-#: htdocs/luci-static/resources/view/fchomo/node.js:446
-#: htdocs/luci-static/resources/view/fchomo/node.js:451
+#: htdocs/luci-static/resources/view/fchomo/node.js:454
+#: htdocs/luci-static/resources/view/fchomo/node.js:455
+#: htdocs/luci-static/resources/view/fchomo/node.js:456
+#: htdocs/luci-static/resources/view/fchomo/node.js:461
msgid "Low-entropy data stream"
msgstr "低熵資料流"
@@ -1753,12 +1807,12 @@ msgid "Lowercase only"
msgstr "僅限小寫"
#: htdocs/luci-static/resources/view/fchomo/global.js:523
-#: htdocs/luci-static/resources/view/fchomo/node.js:750
-#: htdocs/luci-static/resources/view/fchomo/node.js:853
+#: htdocs/luci-static/resources/view/fchomo/node.js:760
+#: htdocs/luci-static/resources/view/fchomo/node.js:863
msgid "MTU"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:203
+#: htdocs/luci-static/resources/fchomo.js:204
msgid "Masque"
msgstr ""
@@ -1766,70 +1820,70 @@ msgstr ""
msgid "Masquerade"
msgstr "偽裝"
-#: htdocs/luci-static/resources/view/fchomo/client.js:858
+#: htdocs/luci-static/resources/view/fchomo/client.js:866
msgid "Match domain. Support wildcards."
msgstr "匹配網域。支援通配符。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1844
+#: htdocs/luci-static/resources/view/fchomo/client.js:1910
msgid "Match domain. Support wildcards."
msgstr "匹配網域。支援通配符。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:863
+#: htdocs/luci-static/resources/view/fchomo/client.js:871
msgid "Match geosite."
msgstr "匹配 geosite。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1835
+#: htdocs/luci-static/resources/view/fchomo/client.js:1901
msgid "Match geosite."
msgstr "匹配 geosite。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1826
+#: htdocs/luci-static/resources/view/fchomo/client.js:1892
msgid "Match response with geoip."
msgstr "匹配回應通過 geoip。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1839
+#: htdocs/luci-static/resources/view/fchomo/client.js:1905
msgid "Match response with ipcidr."
msgstr "匹配回應通過 ipcidr"
-#: htdocs/luci-static/resources/view/fchomo/client.js:868
+#: htdocs/luci-static/resources/view/fchomo/client.js:876
msgid "Match rule set."
msgstr "匹配規則集。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1338
+#: htdocs/luci-static/resources/view/fchomo/node.js:1367
msgid "Max Early Data"
msgstr "前置數據最大值"
-#: htdocs/luci-static/resources/fchomo/listeners.js:480
-#: htdocs/luci-static/resources/view/fchomo/node.js:588
+#: htdocs/luci-static/resources/fchomo/listeners.js:477
+#: htdocs/luci-static/resources/view/fchomo/node.js:598
msgid "Max UDP relay packet size"
msgstr "UDP 中繼數據包最大尺寸"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1186
+#: htdocs/luci-static/resources/fchomo/listeners.js:1204
msgid "Max buffered posts"
msgstr "POST 最大緩衝"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1396
+#: htdocs/luci-static/resources/view/fchomo/node.js:1425
msgid "Max concurrency"
msgstr "最大並發"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1401
+#: htdocs/luci-static/resources/view/fchomo/node.js:1430
msgid "Max connections"
msgstr "最大連線數"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1146
+#: htdocs/luci-static/resources/view/fchomo/client.js:1189
msgid "Max count of failures"
msgstr "最大失敗次數"
#: htdocs/luci-static/resources/fchomo/listeners.js:181
-#: htdocs/luci-static/resources/view/fchomo/node.js:315
+#: htdocs/luci-static/resources/view/fchomo/node.js:325
msgid "Max download speed"
msgstr "最大下載速度"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1197
-#: htdocs/luci-static/resources/view/fchomo/node.js:1378
+#: htdocs/luci-static/resources/fchomo/listeners.js:1215
+#: htdocs/luci-static/resources/view/fchomo/node.js:1407
msgid "Max each POST bytes"
msgstr "POST 最大位元組數"
-#: htdocs/luci-static/resources/view/fchomo/node.js:620
+#: htdocs/luci-static/resources/view/fchomo/node.js:630
msgid "Max open streams"
msgstr "限制打開流的數量"
@@ -1841,29 +1895,29 @@ msgstr "最大 Realms 數量"
msgid "Max realms per client IP"
msgstr "每客戶端 IP 最大 Realms 數量"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1411
+#: htdocs/luci-static/resources/view/fchomo/node.js:1440
msgid "Max request times"
msgstr "最大請求次數"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1416
+#: htdocs/luci-static/resources/view/fchomo/node.js:1445
msgid "Max reusable seconds"
msgstr "最大可重用秒數"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1406
+#: htdocs/luci-static/resources/view/fchomo/node.js:1435
msgid "Max reuse times"
msgstr "最大重用次數"
#: htdocs/luci-static/resources/fchomo/listeners.js:175
-#: htdocs/luci-static/resources/view/fchomo/node.js:309
+#: htdocs/luci-static/resources/view/fchomo/node.js:319
msgid "Max upload speed"
msgstr "最大上傳速度"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1442
-#: htdocs/luci-static/resources/view/fchomo/node.js:1462
+#: htdocs/luci-static/resources/view/fchomo/node.js:1471
+#: htdocs/luci-static/resources/view/fchomo/node.js:1491
msgid "Maximum connections"
msgstr "最大連線數"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1460
+#: htdocs/luci-static/resources/view/fchomo/node.js:1489
msgid ""
"Maximum multiplexed streams in a connection before opening a new connection."
"
Conflict with %s and %s."
@@ -1872,27 +1926,27 @@ msgstr ""
"%s 衝突。"
#: htdocs/luci-static/resources/fchomo/listeners.js:402
-#: htdocs/luci-static/resources/view/fchomo/node.js:463
+#: htdocs/luci-static/resources/view/fchomo/node.js:473
msgid "Maximum padding rate"
msgstr "最大填充率"
#: htdocs/luci-static/resources/fchomo/listeners.js:410
-#: htdocs/luci-static/resources/view/fchomo/node.js:471
+#: htdocs/luci-static/resources/view/fchomo/node.js:481
msgid ""
"Maximum padding rate must be greater than or equal to the minimum padding "
"rate."
msgstr "最大填充率必須大於等于最小填充率。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1459
+#: htdocs/luci-static/resources/view/fchomo/node.js:1488
msgid "Maximum streams"
msgstr "最大流數量"
-#: htdocs/luci-static/resources/fchomo.js:157
-#: htdocs/luci-static/resources/fchomo.js:193
+#: htdocs/luci-static/resources/fchomo.js:158
+#: htdocs/luci-static/resources/fchomo.js:194
msgid "Mieru"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:912
+#: htdocs/luci-static/resources/view/fchomo/client.js:930
#: htdocs/luci-static/resources/view/fchomo/log.js:149
#: htdocs/luci-static/resources/view/fchomo/log.js:154
msgid "Mihomo client"
@@ -1904,30 +1958,30 @@ msgstr "Mihomo 客戶端"
msgid "Mihomo server"
msgstr "Mihomo 服務端"
-#: htdocs/luci-static/resources/view/fchomo/node.js:664
+#: htdocs/luci-static/resources/view/fchomo/node.js:674
msgid "Min of idle sessions to keep"
msgstr "要保留的最少閒置會話數"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1384
+#: htdocs/luci-static/resources/view/fchomo/node.js:1413
msgid "Min posts interval"
msgstr "POST 請求最小間隔時間"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1451
+#: htdocs/luci-static/resources/view/fchomo/node.js:1480
msgid ""
"Minimum multiplexed streams in a connection before opening a new connection."
msgstr "在開啟新連線之前,連線中的最小多路復用流數量。"
#: htdocs/luci-static/resources/fchomo/listeners.js:395
-#: htdocs/luci-static/resources/view/fchomo/node.js:456
+#: htdocs/luci-static/resources/view/fchomo/node.js:466
msgid "Minimum padding rate"
msgstr "最小填充率"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1450
-#: htdocs/luci-static/resources/view/fchomo/node.js:1462
+#: htdocs/luci-static/resources/view/fchomo/node.js:1479
+#: htdocs/luci-static/resources/view/fchomo/node.js:1491
msgid "Minimum streams"
msgstr "最小流數量"
-#: htdocs/luci-static/resources/fchomo.js:155
+#: htdocs/luci-static/resources/fchomo.js:156
#: htdocs/luci-static/resources/view/fchomo/global.js:518
msgid "Mixed"
msgstr "混合"
@@ -1940,7 +1994,7 @@ msgstr "混合 系統 TCP 堆栈和 gVisor UDP 堆栈
msgid "Mixed port"
msgstr "混合連接埠"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1428
+#: htdocs/luci-static/resources/view/fchomo/node.js:1457
msgid "Multiplex"
msgstr "多路復用"
@@ -1949,20 +2003,20 @@ msgstr "多路復用"
msgid "Multiplex fields"
msgstr "多路復用欄位"
-#: htdocs/luci-static/resources/view/fchomo/node.js:397
+#: htdocs/luci-static/resources/view/fchomo/node.js:407
msgid "Multiplexing"
msgstr "多路復用"
-#: htdocs/luci-static/resources/view/fchomo/client.js:622
-#: htdocs/luci-static/resources/view/fchomo/client.js:697
+#: htdocs/luci-static/resources/view/fchomo/client.js:624
+#: htdocs/luci-static/resources/view/fchomo/client.js:702
msgid "NOT"
msgstr "NOT"
-#: htdocs/luci-static/resources/fchomo/listeners.js:616
+#: htdocs/luci-static/resources/fchomo/listeners.js:629
msgid "Name of the Proxy group as outbound."
msgstr "出站代理組的名稱。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1748
+#: htdocs/luci-static/resources/view/fchomo/node.js:1777
msgid "Name of the Proxy group to download provider."
msgstr "用於下載供應商訂閱的代理組名稱。"
@@ -1970,11 +2024,11 @@ msgstr "用於下載供應商訂閱的代理組名稱。"
msgid "Name of the Proxy group to download rule set."
msgstr "用於下載規則集訂閱的代理組名稱。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:610
+#: htdocs/luci-static/resources/fchomo/listeners.js:618
msgid "Name of the Sub rule used for inbound matching."
msgstr "用於入站匹配的子規則名稱。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:572
+#: htdocs/luci-static/resources/view/fchomo/node.js:582
msgid "Native UDP"
msgstr "原生 UDP"
@@ -1982,15 +2036,15 @@ msgstr "原生 UDP"
msgid "Native appearance"
msgstr "原生外觀"
-#: htdocs/luci-static/resources/view/fchomo/node.js:756
+#: htdocs/luci-static/resources/view/fchomo/node.js:766
msgid "Network"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:642
+#: htdocs/luci-static/resources/fchomo/listeners.js:660
msgid "Network type"
msgstr "網路類型"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1899
+#: htdocs/luci-static/resources/view/fchomo/node.js:1933
msgid "No"
msgstr ""
@@ -1998,24 +2052,24 @@ msgstr ""
msgid "No Authentication IP ranges"
msgstr "無需認證的 IP 範圍"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1181
+#: htdocs/luci-static/resources/fchomo/listeners.js:1199
msgid "No SSE header"
msgstr "無 SSE header"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1529
+#: htdocs/luci-static/resources/view/fchomo/client.js:1592
msgid "No add'l params"
msgstr "無附加參數"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1368
+#: htdocs/luci-static/resources/view/fchomo/node.js:1397
msgid "No gRPC header"
msgstr "無 gRPC header"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1133
-#: htdocs/luci-static/resources/view/fchomo/node.js:1962
+#: htdocs/luci-static/resources/view/fchomo/client.js:1176
+#: htdocs/luci-static/resources/view/fchomo/node.js:1996
msgid "No testing is performed when this provider node is not in use."
msgstr "當此供應商的節點未使用時,不執行任何測試。"
-#: htdocs/luci-static/resources/fchomo.js:699
+#: htdocs/luci-static/resources/fchomo.js:724
msgid "No valid %s found."
msgstr "未找到有效的%s。"
@@ -2023,27 +2077,27 @@ msgstr "未找到有效的%s。"
msgid "No valid rule-set link found."
msgstr "未找到有效的規則集連結。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1051
+#: htdocs/luci-static/resources/view/fchomo/client.js:1076
#: htdocs/luci-static/resources/view/fchomo/node.js:228
msgid "Node"
msgstr "節點"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1178
-#: htdocs/luci-static/resources/view/fchomo/node.js:1982
+#: htdocs/luci-static/resources/view/fchomo/client.js:1238
+#: htdocs/luci-static/resources/view/fchomo/node.js:2016
msgid "Node exclude filter"
msgstr "排除節點"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1183
-#: htdocs/luci-static/resources/view/fchomo/node.js:1989
+#: htdocs/luci-static/resources/view/fchomo/client.js:1243
+#: htdocs/luci-static/resources/view/fchomo/node.js:2023
msgid "Node exclude type"
msgstr "排除節點類型"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1173
-#: htdocs/luci-static/resources/view/fchomo/node.js:1976
+#: htdocs/luci-static/resources/view/fchomo/client.js:1233
+#: htdocs/luci-static/resources/view/fchomo/node.js:2010
msgid "Node filter"
msgstr "過濾節點"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1154
+#: htdocs/luci-static/resources/view/fchomo/client.js:1214
msgid "Node switch tolerance"
msgstr "節點切換容差"
@@ -2055,49 +2109,49 @@ msgstr "無"
msgid "Not Installed"
msgstr "未安裝"
-#: htdocs/luci-static/resources/fchomo.js:1242
+#: htdocs/luci-static/resources/fchomo.js:1592
msgid "Not Running"
msgstr "未在運作"
-#: htdocs/luci-static/resources/view/fchomo/node.js:517
+#: htdocs/luci-static/resources/view/fchomo/node.js:527
msgid "OFF"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:519
+#: htdocs/luci-static/resources/view/fchomo/node.js:529
msgid "ON"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:568
-#: htdocs/luci-static/resources/view/fchomo/node.js:882
+#: htdocs/luci-static/resources/fchomo/listeners.js:577
+#: htdocs/luci-static/resources/view/fchomo/node.js:904
msgid "Obfs Mode"
msgstr "Obfs 模式"
#: htdocs/luci-static/resources/fchomo/listeners.js:213
-#: htdocs/luci-static/resources/view/fchomo/node.js:341
+#: htdocs/luci-static/resources/view/fchomo/node.js:351
msgid "Obfuscate maximum packet size"
msgstr "混淆最大資料包大小"
#: htdocs/luci-static/resources/fchomo/listeners.js:208
-#: htdocs/luci-static/resources/view/fchomo/node.js:336
+#: htdocs/luci-static/resources/view/fchomo/node.js:346
msgid "Obfuscate minimum packet size"
msgstr "混淆最小資料包大小"
#: htdocs/luci-static/resources/fchomo/listeners.js:200
-#: htdocs/luci-static/resources/view/fchomo/node.js:328
+#: htdocs/luci-static/resources/view/fchomo/node.js:338
msgid "Obfuscate password"
msgstr "混淆密碼"
#: htdocs/luci-static/resources/fchomo/listeners.js:193
#: htdocs/luci-static/resources/fchomo/listeners.js:370
-#: htdocs/luci-static/resources/view/fchomo/node.js:321
-#: htdocs/luci-static/resources/view/fchomo/node.js:442
+#: htdocs/luci-static/resources/view/fchomo/node.js:331
+#: htdocs/luci-static/resources/view/fchomo/node.js:452
msgid "Obfuscate type"
msgstr "混淆類型"
#: htdocs/luci-static/resources/fchomo/listeners.js:371
#: htdocs/luci-static/resources/fchomo/listeners.js:372
-#: htdocs/luci-static/resources/view/fchomo/node.js:443
-#: htdocs/luci-static/resources/view/fchomo/node.js:444
+#: htdocs/luci-static/resources/view/fchomo/node.js:453
+#: htdocs/luci-static/resources/view/fchomo/node.js:454
msgid "Obfuscated as %s"
msgstr "混淆為%s"
@@ -2105,12 +2159,12 @@ msgstr "混淆為%s"
msgid "One or more numbers in the range 0-63 separated by commas"
msgstr "0-63 範圍內的一個或多個數字,以逗號分隔"
-#: htdocs/luci-static/resources/fchomo/listeners.js:962
+#: htdocs/luci-static/resources/fchomo/listeners.js:980
msgid "Only applicable when %s are used as a frontend."
msgstr "僅當 %s 用作前端時適用。"
#: htdocs/luci-static/resources/fchomo/listeners.js:379
-#: htdocs/luci-static/resources/view/fchomo/node.js:451
+#: htdocs/luci-static/resources/view/fchomo/node.js:461
msgid "Only applies to the %s."
msgstr "只對%s生效。"
@@ -2118,7 +2172,7 @@ msgstr "只對%s生效。"
msgid "Only process traffic from specific interfaces. Leave empty for all."
msgstr "只處理來自指定介面的流量。留空表示全部。"
-#: htdocs/luci-static/resources/fchomo.js:1236
+#: htdocs/luci-static/resources/fchomo.js:1586
msgid "Open Dashboard"
msgstr "打開面板"
@@ -2135,16 +2189,16 @@ msgstr "出站"
msgid "Override destination"
msgstr "覆蓋目標位址"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1020
-#: htdocs/luci-static/resources/view/fchomo/node.js:1659
+#: htdocs/luci-static/resources/view/fchomo/client.js:1039
+#: htdocs/luci-static/resources/view/fchomo/node.js:1688
msgid "Override fields"
msgstr "覆蓋欄位"
-#: htdocs/luci-static/resources/view/fchomo/node.js:564
+#: htdocs/luci-static/resources/view/fchomo/node.js:574
msgid "Override the IP address of the server that DNS response."
msgstr "覆蓋 DNS 回應的伺服器的 IP 位址。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:891
+#: htdocs/luci-static/resources/view/fchomo/client.js:904
msgid "Override the Proxy group of DNS server."
msgstr "覆蓋 DNS 伺服器所使用的代理組。"
@@ -2152,11 +2206,11 @@ msgstr "覆蓋 DNS 伺服器所使用的代理組。"
msgid "Override the connection destination address with the sniffed domain."
msgstr "使用嗅探到的網域覆寫連線目標。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1633
+#: htdocs/luci-static/resources/view/fchomo/client.js:1699
msgid "Override the existing ECS in original request."
msgstr "覆蓋原始請求中已有的 ECS。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1200
+#: htdocs/luci-static/resources/view/fchomo/node.js:1229
msgid "Overrides the domain name used for HTTPS record queries."
msgstr "覆蓋用於 HTTPS 記錄查詢的網域。"
@@ -2164,37 +2218,37 @@ msgstr "覆蓋用於 HTTPS 記錄查詢的網域。"
msgid "Overview"
msgstr "概覽"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1295
+#: htdocs/luci-static/resources/view/fchomo/node.js:1324
msgid "POST"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1296
+#: htdocs/luci-static/resources/view/fchomo/node.js:1325
msgid "PUT"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:713
+#: htdocs/luci-static/resources/view/fchomo/node.js:723
msgid "Packet encoding"
msgstr "數據包編碼"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1373
+#: htdocs/luci-static/resources/view/fchomo/node.js:1402
msgid "Padding bytes"
msgstr "填充位元組"
-#: htdocs/luci-static/resources/fchomo/listeners.js:524
+#: htdocs/luci-static/resources/fchomo/listeners.js:521
msgid "Padding scheme"
msgstr "填充方案"
-#: htdocs/luci-static/resources/fchomo/listeners.js:741
-#: htdocs/luci-static/resources/view/fchomo/node.js:1007
+#: htdocs/luci-static/resources/fchomo/listeners.js:759
+#: htdocs/luci-static/resources/view/fchomo/node.js:1035
msgid "Paddings"
msgstr "填充 (Paddings)"
#: htdocs/luci-static/resources/fchomo/listeners.js:166
#: htdocs/luci-static/resources/fchomo/listeners.js:263
-#: htdocs/luci-static/resources/fchomo/listeners.js:589
-#: htdocs/luci-static/resources/view/fchomo/node.js:285
-#: htdocs/luci-static/resources/view/fchomo/node.js:375
-#: htdocs/luci-static/resources/view/fchomo/node.js:897
+#: htdocs/luci-static/resources/fchomo/listeners.js:597
+#: htdocs/luci-static/resources/view/fchomo/node.js:295
+#: htdocs/luci-static/resources/view/fchomo/node.js:385
+#: htdocs/luci-static/resources/view/fchomo/node.js:917
msgid "Password"
msgstr "密碼"
@@ -2206,13 +2260,13 @@ msgstr "捆綁包路徑"
msgid "Path in bundle: %s"
msgstr "在捆綁包%s中的路徑"
-#: htdocs/luci-static/resources/fchomo/listeners.js:681
-#: htdocs/luci-static/resources/view/fchomo/node.js:1723
+#: htdocs/luci-static/resources/fchomo/listeners.js:699
+#: htdocs/luci-static/resources/view/fchomo/node.js:1752
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:373
msgid "Payload"
msgstr "Payload"
-#: htdocs/luci-static/resources/view/fchomo/node.js:821
+#: htdocs/luci-static/resources/view/fchomo/node.js:831
msgid "Peer pubkic key"
msgstr "對端公鑰"
@@ -2222,11 +2276,11 @@ msgid ""
"it is not needed."
msgstr "效能可能會略有下降,建議僅在需要時開啟。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:848
+#: htdocs/luci-static/resources/view/fchomo/node.js:858
msgid "Periodically sends data packets to maintain connection persistence."
msgstr "定期發送資料包以維持連線持久性。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:847
+#: htdocs/luci-static/resources/view/fchomo/node.js:857
msgid "Persistent keepalive"
msgstr "持久連接"
@@ -2249,8 +2303,8 @@ msgid ""
"standards."
msgstr "連結格式標準請參考 %s。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1696
-#: htdocs/luci-static/resources/view/fchomo/node.js:1722
+#: htdocs/luci-static/resources/view/fchomo/node.js:1725
+#: htdocs/luci-static/resources/view/fchomo/node.js:1751
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:346
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:372
msgid ""
@@ -2259,33 +2313,33 @@ msgid ""
msgstr ""
"請輸入 %s。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:958
-#: htdocs/luci-static/resources/view/fchomo/client.js:1219
-#: htdocs/luci-static/resources/view/fchomo/client.js:1338
-#: htdocs/luci-static/resources/view/fchomo/client.js:1466
-#: htdocs/luci-static/resources/view/fchomo/client.js:1718
-#: htdocs/luci-static/resources/view/fchomo/client.js:1770
-#: htdocs/luci-static/resources/view/fchomo/node.js:1563
+#: htdocs/luci-static/resources/view/fchomo/client.js:976
+#: htdocs/luci-static/resources/view/fchomo/client.js:1279
+#: htdocs/luci-static/resources/view/fchomo/client.js:1401
+#: htdocs/luci-static/resources/view/fchomo/client.js:1529
+#: htdocs/luci-static/resources/view/fchomo/client.js:1784
+#: htdocs/luci-static/resources/view/fchomo/client.js:1836
+#: htdocs/luci-static/resources/view/fchomo/node.js:1592
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:155
msgid "Please type %s fields of mihomo config."
msgstr "請輸入 mihomo 配置的 %s 欄位。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:560
-#: htdocs/luci-static/resources/view/fchomo/node.js:871
+#: htdocs/luci-static/resources/fchomo/listeners.js:557
+#: htdocs/luci-static/resources/view/fchomo/node.js:881
msgid "Plugin"
msgstr "插件"
-#: htdocs/luci-static/resources/fchomo/listeners.js:568
-#: htdocs/luci-static/resources/fchomo/listeners.js:575
-#: htdocs/luci-static/resources/fchomo/listeners.js:582
-#: htdocs/luci-static/resources/fchomo/listeners.js:589
-#: htdocs/luci-static/resources/fchomo/listeners.js:595
-#: htdocs/luci-static/resources/view/fchomo/node.js:882
-#: htdocs/luci-static/resources/view/fchomo/node.js:889
-#: htdocs/luci-static/resources/view/fchomo/node.js:897
-#: htdocs/luci-static/resources/view/fchomo/node.js:903
-#: htdocs/luci-static/resources/view/fchomo/node.js:911
+#: htdocs/luci-static/resources/fchomo/listeners.js:577
+#: htdocs/luci-static/resources/fchomo/listeners.js:583
+#: htdocs/luci-static/resources/fchomo/listeners.js:590
+#: htdocs/luci-static/resources/fchomo/listeners.js:597
+#: htdocs/luci-static/resources/fchomo/listeners.js:603
+#: htdocs/luci-static/resources/view/fchomo/node.js:904
+#: htdocs/luci-static/resources/view/fchomo/node.js:910
#: htdocs/luci-static/resources/view/fchomo/node.js:917
+#: htdocs/luci-static/resources/view/fchomo/node.js:923
+#: htdocs/luci-static/resources/view/fchomo/node.js:931
+#: htdocs/luci-static/resources/view/fchomo/node.js:937
msgid "Plugin:"
msgstr "插件:"
@@ -2293,15 +2347,15 @@ msgstr "插件:"
msgid "Port"
msgstr "連接埠"
-#: htdocs/luci-static/resources/fchomo.js:1473
+#: htdocs/luci-static/resources/fchomo.js:1823
msgid "Port %s alrealy exists!"
msgstr "連接埠 %s 已存在!"
-#: htdocs/luci-static/resources/view/fchomo/node.js:303
+#: htdocs/luci-static/resources/view/fchomo/node.js:313
msgid "Port hop interval"
msgstr "連接埠跳躍間隔"
-#: htdocs/luci-static/resources/view/fchomo/node.js:385
+#: htdocs/luci-static/resources/view/fchomo/node.js:395
msgid "Port range"
msgstr "連接埠範圍"
@@ -2310,27 +2364,27 @@ msgid "Ports"
msgstr "連接埠"
#: htdocs/luci-static/resources/fchomo/listeners.js:153
-#: htdocs/luci-static/resources/view/fchomo/node.js:298
+#: htdocs/luci-static/resources/view/fchomo/node.js:308
msgid "Ports pool"
msgstr "連接埠池"
#: htdocs/luci-static/resources/fchomo/listeners.js:225
#: htdocs/luci-static/resources/fchomo/listeners.js:456
-#: htdocs/luci-static/resources/view/fchomo/node.js:534
-#: htdocs/luci-static/resources/view/fchomo/node.js:828
+#: htdocs/luci-static/resources/view/fchomo/node.js:544
+#: htdocs/luci-static/resources/view/fchomo/node.js:838
msgid "Pre-shared key"
msgstr "預先共用金鑰"
-#: htdocs/luci-static/resources/fchomo/listeners.js:879
-#: htdocs/luci-static/resources/view/fchomo/node.js:1042
+#: htdocs/luci-static/resources/fchomo/listeners.js:897
+#: htdocs/luci-static/resources/view/fchomo/node.js:1070
msgid "Pre-shared key of rendezvous server"
msgstr "牽線伺服器的預先共用金鑰"
-#: htdocs/luci-static/resources/fchomo.js:176
+#: htdocs/luci-static/resources/fchomo.js:177
msgid "Prefer IPv4"
msgstr "優先 IPv4"
-#: htdocs/luci-static/resources/fchomo.js:177
+#: htdocs/luci-static/resources/fchomo.js:178
msgid "Prefer IPv6"
msgstr "優先 IPv6"
@@ -2341,23 +2395,23 @@ msgstr "防止某些情況下的 ICMP 環回問題。 Ping 不會顯示實際延
#: htdocs/luci-static/resources/view/fchomo/global.js:760
#: htdocs/luci-static/resources/view/fchomo/global.js:777
-#: htdocs/luci-static/resources/view/fchomo/node.js:1524
-#: htdocs/luci-static/resources/view/fchomo/node.js:1531
-#: htdocs/luci-static/resources/view/fchomo/node.js:1911
-#: htdocs/luci-static/resources/view/fchomo/node.js:1918
+#: htdocs/luci-static/resources/view/fchomo/node.js:1553
+#: htdocs/luci-static/resources/view/fchomo/node.js:1560
+#: htdocs/luci-static/resources/view/fchomo/node.js:1945
+#: htdocs/luci-static/resources/view/fchomo/node.js:1952
msgid "Priority: Proxy Node > Global."
msgstr "優先權: 代理節點 > 全域。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:347
+#: htdocs/luci-static/resources/view/fchomo/node.js:357
msgid "Priv-key"
msgstr "金鑰"
-#: htdocs/luci-static/resources/view/fchomo/node.js:351
+#: htdocs/luci-static/resources/view/fchomo/node.js:361
msgid "Priv-key passphrase"
msgstr "金鑰密碼"
-#: htdocs/luci-static/resources/view/fchomo/node.js:721
-#: htdocs/luci-static/resources/view/fchomo/node.js:813
+#: htdocs/luci-static/resources/view/fchomo/node.js:731
+#: htdocs/luci-static/resources/view/fchomo/node.js:823
msgid "Private key"
msgstr "私鑰"
@@ -2366,34 +2420,34 @@ msgid "Process matching mode"
msgstr "進程匹配模式"
#: htdocs/luci-static/resources/view/fchomo/global.js:708
-#: htdocs/luci-static/resources/view/fchomo/node.js:1434
+#: htdocs/luci-static/resources/view/fchomo/node.js:1463
msgid "Protocol"
msgstr "協議"
-#: htdocs/luci-static/resources/view/fchomo/node.js:708
+#: htdocs/luci-static/resources/view/fchomo/node.js:718
msgid "Protocol parameter. Enable length block encryption."
msgstr "協議參數。啟用長度塊加密。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:702
+#: htdocs/luci-static/resources/view/fchomo/node.js:712
msgid ""
"Protocol parameter. Will waste traffic randomly if enabled (enabled by "
"default in v2ray and cannot be disabled)."
msgstr "協議參數。 如啟用會隨機浪費流量(在 v2ray 中預設為啟用且無法停用)。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1065
-#: htdocs/luci-static/resources/view/fchomo/node.js:1546
-#: htdocs/luci-static/resources/view/fchomo/node.js:1555
-#: htdocs/luci-static/resources/view/fchomo/node.js:2027
+#: htdocs/luci-static/resources/view/fchomo/client.js:1096
+#: htdocs/luci-static/resources/view/fchomo/node.js:1575
+#: htdocs/luci-static/resources/view/fchomo/node.js:1584
+#: htdocs/luci-static/resources/view/fchomo/node.js:2061
msgid "Provider"
msgstr "供應商"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1729
+#: htdocs/luci-static/resources/view/fchomo/node.js:1758
msgid "Provider URL"
msgstr "供應商訂閱 URL"
-#: htdocs/luci-static/resources/view/fchomo/client.js:932
#: htdocs/luci-static/resources/view/fchomo/client.js:950
-#: htdocs/luci-static/resources/view/fchomo/client.js:1422
+#: htdocs/luci-static/resources/view/fchomo/client.js:968
+#: htdocs/luci-static/resources/view/fchomo/client.js:1485
msgid "Proxy Group"
msgstr "代理組"
@@ -2410,24 +2464,24 @@ msgid "Proxy MAC-s"
msgstr "代理 MAC 位址"
#: htdocs/luci-static/resources/view/fchomo/node.js:219
-#: htdocs/luci-static/resources/view/fchomo/node.js:2026
+#: htdocs/luci-static/resources/view/fchomo/node.js:2060
msgid "Proxy Node"
msgstr "代理節點"
-#: htdocs/luci-static/resources/view/fchomo/node.js:2002
-#: htdocs/luci-static/resources/view/fchomo/node.js:2011
+#: htdocs/luci-static/resources/view/fchomo/node.js:2036
+#: htdocs/luci-static/resources/view/fchomo/node.js:2045
msgid "Proxy chain"
msgstr "代理鏈"
-#: htdocs/luci-static/resources/fchomo/listeners.js:615
-#: htdocs/luci-static/resources/view/fchomo/client.js:792
-#: htdocs/luci-static/resources/view/fchomo/client.js:1564
-#: htdocs/luci-static/resources/view/fchomo/node.js:1747
+#: htdocs/luci-static/resources/fchomo/listeners.js:628
+#: htdocs/luci-static/resources/view/fchomo/client.js:797
+#: htdocs/luci-static/resources/view/fchomo/client.js:1627
+#: htdocs/luci-static/resources/view/fchomo/node.js:1776
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:403
msgid "Proxy group"
msgstr "代理組"
-#: htdocs/luci-static/resources/view/fchomo/client.js:890
+#: htdocs/luci-static/resources/view/fchomo/client.js:903
msgid "Proxy group override"
msgstr "代理組覆蓋"
@@ -2439,44 +2493,44 @@ msgstr "代理模式"
msgid "Proxy routerself"
msgstr "代理路由器自身"
-#: htdocs/luci-static/resources/view/fchomo/node.js:573
-#: htdocs/luci-static/resources/view/fchomo/node.js:793
+#: htdocs/luci-static/resources/view/fchomo/node.js:583
+#: htdocs/luci-static/resources/view/fchomo/node.js:803
msgid "QUIC"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:935
+#: htdocs/luci-static/resources/view/fchomo/client.js:953
#: htdocs/luci-static/resources/view/fchomo/server.js:44
msgid "Quick Reload"
msgstr "快速重載"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1075
-#: htdocs/luci-static/resources/view/fchomo/node.js:1214
+#: htdocs/luci-static/resources/fchomo/listeners.js:1093
+#: htdocs/luci-static/resources/view/fchomo/node.js:1243
msgid "REALITY"
msgstr "REALITY"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1229
+#: htdocs/luci-static/resources/view/fchomo/node.js:1258
msgid "REALITY X25519MLKEM768 PQC support"
msgstr "REALITY X25519MLKEM768 後量子加密支援"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1112
+#: htdocs/luci-static/resources/fchomo/listeners.js:1130
msgid "REALITY certificate issued to"
msgstr "REALITY 證書頒發給"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1080
+#: htdocs/luci-static/resources/fchomo/listeners.js:1098
msgid "REALITY handshake server"
msgstr "REALITY 握手伺服器"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1087
+#: htdocs/luci-static/resources/fchomo/listeners.js:1105
msgid "REALITY private key"
msgstr "REALITY 私鑰"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1102
-#: htdocs/luci-static/resources/view/fchomo/node.js:1219
+#: htdocs/luci-static/resources/fchomo/listeners.js:1120
+#: htdocs/luci-static/resources/view/fchomo/node.js:1248
msgid "REALITY public key"
msgstr "REALITY 公鑰"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1106
-#: htdocs/luci-static/resources/view/fchomo/node.js:1224
+#: htdocs/luci-static/resources/fchomo/listeners.js:1124
+#: htdocs/luci-static/resources/view/fchomo/node.js:1253
msgid "REALITY short ID"
msgstr "REALITY 標識符"
@@ -2484,9 +2538,9 @@ msgstr "REALITY 標識符"
msgid "REMATCH-NAME marking"
msgstr "REMATCH-NAME 打標"
-#: htdocs/luci-static/resources/fchomo/listeners.js:712
-#: htdocs/luci-static/resources/fchomo/listeners.js:731
-#: htdocs/luci-static/resources/view/fchomo/node.js:997
+#: htdocs/luci-static/resources/fchomo/listeners.js:730
+#: htdocs/luci-static/resources/fchomo/listeners.js:749
+#: htdocs/luci-static/resources/view/fchomo/node.js:1025
msgid "RTT"
msgstr ""
@@ -2502,13 +2556,13 @@ msgstr "留空將使用隨機令牌。"
msgid "Randomized traffic characteristics"
msgstr "隨機化流量特徵"
-#: htdocs/luci-static/resources/fchomo/listeners.js:868
-#: htdocs/luci-static/resources/view/fchomo/node.js:1031
+#: htdocs/luci-static/resources/fchomo/listeners.js:886
+#: htdocs/luci-static/resources/view/fchomo/node.js:1059
msgid "Realm"
msgstr "Realm"
-#: htdocs/luci-static/resources/fchomo/listeners.js:884
-#: htdocs/luci-static/resources/view/fchomo/node.js:1047
+#: htdocs/luci-static/resources/fchomo/listeners.js:902
+#: htdocs/luci-static/resources/view/fchomo/node.js:1075
msgid "Realm ID"
msgstr "Realm ID"
@@ -2536,8 +2590,8 @@ msgstr "Redirect TCP + Tun UDP"
msgid "Refresh every %s seconds."
msgstr "每 %s 秒刷新。"
-#: htdocs/luci-static/resources/fchomo.js:1229
-#: htdocs/luci-static/resources/view/fchomo/client.js:936
+#: htdocs/luci-static/resources/fchomo.js:1579
+#: htdocs/luci-static/resources/view/fchomo/client.js:954
#: htdocs/luci-static/resources/view/fchomo/global.js:193
#: htdocs/luci-static/resources/view/fchomo/server.js:45
msgid "Reload"
@@ -2547,46 +2601,46 @@ msgstr "重載"
msgid "Reload All"
msgstr "重載所有"
-#: htdocs/luci-static/resources/fchomo.js:187
+#: htdocs/luci-static/resources/fchomo.js:188
msgid "Rematch"
msgstr "再路由"
-#: htdocs/luci-static/resources/fchomo.js:187
+#: htdocs/luci-static/resources/fchomo.js:188
msgid "Rematching routing rules"
msgstr "重新匹配路由規則"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1674
+#: htdocs/luci-static/resources/view/fchomo/node.js:1703
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:287
msgid "Remote"
msgstr "遠端"
-#: htdocs/luci-static/resources/view/fchomo/node.js:776
-#: htdocs/luci-static/resources/view/fchomo/node.js:859
+#: htdocs/luci-static/resources/view/fchomo/node.js:786
+#: htdocs/luci-static/resources/view/fchomo/node.js:869
msgid "Remote DNS resolve"
msgstr "遠端 DNS 解析"
-#: htdocs/luci-static/resources/fchomo.js:1394
+#: htdocs/luci-static/resources/fchomo.js:1744
msgid "Remove"
msgstr "移除"
-#: htdocs/luci-static/resources/fchomo.js:1399
-#: htdocs/luci-static/resources/view/fchomo/node.js:1650
-#: htdocs/luci-static/resources/view/fchomo/node.js:1652
+#: htdocs/luci-static/resources/fchomo.js:1749
+#: htdocs/luci-static/resources/view/fchomo/node.js:1679
+#: htdocs/luci-static/resources/view/fchomo/node.js:1681
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:259
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:261
msgid "Remove idles"
msgstr "移除閒置"
-#: htdocs/luci-static/resources/fchomo/listeners.js:873
-#: htdocs/luci-static/resources/view/fchomo/node.js:1036
+#: htdocs/luci-static/resources/fchomo/listeners.js:891
+#: htdocs/luci-static/resources/view/fchomo/node.js:1064
msgid "Rendezvous server"
msgstr "牽線伺服器"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1841
+#: htdocs/luci-static/resources/view/fchomo/node.js:1875
msgid "Replace name"
msgstr "名稱替換"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1842
+#: htdocs/luci-static/resources/view/fchomo/node.js:1876
msgid "Replace node name."
msgstr "替換節點名稱"
@@ -2594,13 +2648,13 @@ msgstr "替換節點名稱"
msgid "Request"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1160
-#: htdocs/luci-static/resources/view/fchomo/node.js:1302
-#: htdocs/luci-static/resources/view/fchomo/node.js:1309
+#: htdocs/luci-static/resources/fchomo/listeners.js:1178
+#: htdocs/luci-static/resources/view/fchomo/node.js:1331
+#: htdocs/luci-static/resources/view/fchomo/node.js:1338
msgid "Request path"
msgstr "請求路徑"
-#: htdocs/luci-static/resources/view/fchomo/node.js:613
+#: htdocs/luci-static/resources/view/fchomo/node.js:623
msgid "Request timeout"
msgstr "請求逾時"
@@ -2613,11 +2667,11 @@ msgid "Require any"
msgstr ""
#: htdocs/luci-static/resources/fchomo.js:404
-#: htdocs/luci-static/resources/view/fchomo/node.js:1230
+#: htdocs/luci-static/resources/view/fchomo/node.js:1259
msgid "Requires server support."
msgstr "需要伺服器支援。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:842
+#: htdocs/luci-static/resources/view/fchomo/node.js:852
msgid "Reserved field bytes"
msgstr "保留字段位元組"
@@ -2625,26 +2679,26 @@ msgstr "保留字段位元組"
msgid "Resources management"
msgstr "資源管理"
-#: htdocs/luci-static/resources/view/fchomo/node.js:917
+#: htdocs/luci-static/resources/view/fchomo/node.js:937
msgid "Restls script"
msgstr "Restls 劇本"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1190
+#: htdocs/luci-static/resources/view/fchomo/client.js:1250
msgid ""
"Returns hidden status in the API to hide the display of this proxy group."
msgstr "在 API 傳回 hidden 狀態,以隱藏該代理組顯示。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1196
+#: htdocs/luci-static/resources/view/fchomo/client.js:1256
msgid ""
"Returns the string input for icon in the API to display in this proxy group."
msgstr "在 API 傳回 icon 所輸入的字串,以在該代理組顯示。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:518
+#: htdocs/luci-static/resources/view/fchomo/node.js:528
msgid "Reuse HTTP connections to reduce RTT for each connection establishment."
msgstr "重用 HTTP 連接以減少每次建立連接的 RTT。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:515
-#: htdocs/luci-static/resources/view/fchomo/node.js:519
+#: htdocs/luci-static/resources/view/fchomo/node.js:525
+#: htdocs/luci-static/resources/view/fchomo/node.js:529
msgid "Reusing a single tunnel to carry multiple target connections within it."
msgstr "複用單條隧道使其內部承載多條目標連線。"
@@ -2661,10 +2715,10 @@ msgstr "路由 DSCP"
msgid "Routing GFW"
msgstr "路由 GFW 流量"
-#: htdocs/luci-static/resources/fchomo/listeners.js:605
+#: htdocs/luci-static/resources/fchomo/listeners.js:613
#: htdocs/luci-static/resources/view/fchomo/global.js:776
-#: htdocs/luci-static/resources/view/fchomo/node.js:1530
-#: htdocs/luci-static/resources/view/fchomo/node.js:1917
+#: htdocs/luci-static/resources/view/fchomo/node.js:1559
+#: htdocs/luci-static/resources/view/fchomo/node.js:1951
msgid "Routing mark (Fwmark)"
msgstr "路由標記 (Fwmark)"
@@ -2685,8 +2739,8 @@ msgstr "路由模式將處理網域。"
msgid "Routing ports"
msgstr "路由連接埠"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1202
-#: htdocs/luci-static/resources/view/fchomo/client.js:1211
+#: htdocs/luci-static/resources/view/fchomo/client.js:1262
+#: htdocs/luci-static/resources/view/fchomo/client.js:1271
msgid "Routing rule"
msgstr "路由規則"
@@ -2702,8 +2756,8 @@ msgstr "路由表 ID"
msgid "Rule"
msgstr "規則"
-#: htdocs/luci-static/resources/view/fchomo/client.js:854
-#: htdocs/luci-static/resources/view/fchomo/client.js:867
+#: htdocs/luci-static/resources/view/fchomo/client.js:862
+#: htdocs/luci-static/resources/view/fchomo/client.js:875
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:147
msgid "Rule set"
msgstr "規則集"
@@ -2720,7 +2774,7 @@ msgstr "規則集"
msgid "Ruleset-URI-Scheme"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1242
+#: htdocs/luci-static/resources/fchomo.js:1592
msgid "Running"
msgstr "正在運作"
@@ -2728,15 +2782,15 @@ msgstr "正在運作"
msgid "SMTP"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:154
+#: htdocs/luci-static/resources/fchomo.js:155
msgid "SOCKS"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:190
+#: htdocs/luci-static/resources/fchomo.js:191
msgid "SOCKS5"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:206
+#: htdocs/luci-static/resources/fchomo.js:207
msgid "SSH"
msgstr ""
@@ -2744,29 +2798,29 @@ msgstr ""
msgid "STUN"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:890
-#: htdocs/luci-static/resources/view/fchomo/node.js:1053
+#: htdocs/luci-static/resources/fchomo/listeners.js:908
+#: htdocs/luci-static/resources/view/fchomo/node.js:1081
msgid "STUN servers"
msgstr "STUN 伺服器"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1294
+#: htdocs/luci-static/resources/view/fchomo/client.js:1354
msgid "SUB-RULE"
msgstr "SUB-RULE"
-#: htdocs/luci-static/resources/view/fchomo/node.js:954
+#: htdocs/luci-static/resources/view/fchomo/node.js:982
msgid "SUoT version"
msgstr "SUoT 版本"
#: htdocs/luci-static/resources/fchomo/listeners.js:195
-#: htdocs/luci-static/resources/view/fchomo/node.js:323
+#: htdocs/luci-static/resources/view/fchomo/node.js:333
msgid "Salamander"
msgstr "Salamander"
-#: htdocs/luci-static/resources/fchomo.js:182
+#: htdocs/luci-static/resources/fchomo.js:183
msgid "Same dstaddr requests. Same node"
msgstr "相同 目標位址 請求。相同節點"
-#: htdocs/luci-static/resources/fchomo.js:183
+#: htdocs/luci-static/resources/fchomo.js:184
msgid "Same srcaddr and dstaddr requests. Same node"
msgstr "相同 來源位址 和 目標位址 請求。相同節點"
@@ -2779,7 +2833,7 @@ msgstr ""
msgid "Segment maximum size"
msgstr "分段最大尺寸"
-#: htdocs/luci-static/resources/fchomo.js:240
+#: htdocs/luci-static/resources/fchomo.js:241
msgid "Select"
msgstr "手動選擇"
@@ -2791,14 +2845,18 @@ msgstr "選擇面板"
msgid "Send padding randomly 0-3333 bytes with 50% probability."
msgstr "以 50% 的機率發送隨機 0 到 3333 位元組的填充。"
+#: htdocs/luci-static/resources/view/fchomo/client.js:1924
+msgid "Send queries to both the %s and the %s."
+msgstr "同時向%s和%s發起查詢。"
+
#: htdocs/luci-static/resources/fchomo.js:399
#: htdocs/luci-static/resources/fchomo.js:400
msgid "Send random ticket of 300s-600s duration for client 0-RTT reuse."
msgstr "發送 300-600 秒的隨機票證,以供客戶端 0-RTT 重用。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:712
-#: htdocs/luci-static/resources/fchomo/listeners.js:973
-#: htdocs/luci-static/resources/fchomo/listeners.js:988
+#: htdocs/luci-static/resources/fchomo/listeners.js:730
+#: htdocs/luci-static/resources/fchomo/listeners.js:991
+#: htdocs/luci-static/resources/fchomo/listeners.js:1006
#: htdocs/luci-static/resources/view/fchomo/server.js:58
#: root/usr/share/luci/menu.d/luci-app-fchomo.json:62
msgid "Server"
@@ -2808,9 +2866,9 @@ msgstr "服務端"
msgid "Server address"
msgstr "伺服器位址"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1154
-#: htdocs/luci-static/resources/view/fchomo/node.js:1281
-#: htdocs/luci-static/resources/view/fchomo/node.js:1287
+#: htdocs/luci-static/resources/fchomo/listeners.js:1172
+#: htdocs/luci-static/resources/view/fchomo/node.js:1310
+#: htdocs/luci-static/resources/view/fchomo/node.js:1316
msgid "Server hostname"
msgstr "伺服器主機名稱"
@@ -2822,46 +2880,46 @@ msgstr "服務端狀態"
msgid "Service status"
msgstr "服務狀態"
-#: htdocs/luci-static/resources/fchomo.js:156
-#: htdocs/luci-static/resources/fchomo.js:191
+#: htdocs/luci-static/resources/fchomo.js:157
+#: htdocs/luci-static/resources/fchomo.js:192
msgid "Shadowsocks"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:506
-#: htdocs/luci-static/resources/view/fchomo/node.js:632
+#: htdocs/luci-static/resources/fchomo/listeners.js:503
+#: htdocs/luci-static/resources/view/fchomo/node.js:642
msgid "Shadowsocks chipher"
msgstr "Shadowsocks 加密方法"
-#: htdocs/luci-static/resources/fchomo/listeners.js:501
-#: htdocs/luci-static/resources/view/fchomo/node.js:627
+#: htdocs/luci-static/resources/fchomo/listeners.js:498
+#: htdocs/luci-static/resources/view/fchomo/node.js:637
msgid "Shadowsocks encrypt"
msgstr "Shadowsocks 加密"
-#: htdocs/luci-static/resources/fchomo/listeners.js:514
-#: htdocs/luci-static/resources/view/fchomo/node.js:640
+#: htdocs/luci-static/resources/fchomo/listeners.js:511
+#: htdocs/luci-static/resources/view/fchomo/node.js:650
msgid "Shadowsocks password"
msgstr "Shadowsocks 密碼"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1482
+#: htdocs/luci-static/resources/view/fchomo/node.js:1511
msgid "Show connections in the dashboard for breaking connections easier."
msgstr "在面板中顯示連線以便於打斷連線。"
-#: htdocs/luci-static/resources/fchomo.js:89
+#: htdocs/luci-static/resources/fchomo.js:90
msgid "Silent"
msgstr "靜音"
-#: htdocs/luci-static/resources/fchomo.js:181
+#: htdocs/luci-static/resources/fchomo.js:182
msgid "Simple round-robin all nodes"
msgstr "簡單輪替所有節點"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1735
+#: htdocs/luci-static/resources/view/fchomo/node.js:1764
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:391
msgid "Size limit"
msgstr "大小限制"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1597
-#: htdocs/luci-static/resources/view/fchomo/node.js:1151
-#: htdocs/luci-static/resources/view/fchomo/node.js:1892
+#: htdocs/luci-static/resources/view/fchomo/client.js:1663
+#: htdocs/luci-static/resources/view/fchomo/node.js:1180
+#: htdocs/luci-static/resources/view/fchomo/node.js:1926
msgid "Skip cert verify"
msgstr "跳過憑證驗證"
@@ -2877,8 +2935,8 @@ msgstr "跳過嗅探目標位址"
msgid "Skiped sniffing src address"
msgstr "跳過嗅探來源位址"
-#: htdocs/luci-static/resources/fchomo.js:159
-#: htdocs/luci-static/resources/fchomo.js:195
+#: htdocs/luci-static/resources/fchomo.js:160
+#: htdocs/luci-static/resources/fchomo.js:196
msgid "Snell"
msgstr ""
@@ -2909,7 +2967,7 @@ msgstr "指定需要被代理的目標連接埠。多個連接埠必須以逗號
msgid "Stack"
msgstr "堆栈"
-#: htdocs/luci-static/resources/fchomo.js:60
+#: htdocs/luci-static/resources/fchomo.js:61
msgid "Standard"
msgstr "標準"
@@ -2921,22 +2979,22 @@ msgstr "Steam 客戶端"
msgid "Steam P2P"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:1162
-#: htdocs/luci-static/resources/view/fchomo/client.js:1164
+#: htdocs/luci-static/resources/view/fchomo/client.js:1222
+#: htdocs/luci-static/resources/view/fchomo/client.js:1224
msgid "Strategy"
msgstr "策略"
-#: htdocs/luci-static/resources/fchomo/listeners.js:609
-#: htdocs/luci-static/resources/view/fchomo/client.js:1321
-#: htdocs/luci-static/resources/view/fchomo/client.js:1330
+#: htdocs/luci-static/resources/fchomo/listeners.js:617
+#: htdocs/luci-static/resources/view/fchomo/client.js:1384
+#: htdocs/luci-static/resources/view/fchomo/client.js:1393
msgid "Sub rule"
msgstr "子規則"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1376
+#: htdocs/luci-static/resources/view/fchomo/client.js:1439
msgid "Sub rule group"
msgstr "子規則組"
-#: htdocs/luci-static/resources/fchomo.js:702
+#: htdocs/luci-static/resources/fchomo.js:727
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:231
msgid "Successfully imported %s %s of total %s."
msgstr "已成功匯入 %s 個%s (共 %s 個)。"
@@ -2945,12 +3003,12 @@ msgstr "已成功匯入 %s 個%s (共 %s 個)。"
msgid "Successfully updated."
msgstr "更新成功。"
-#: htdocs/luci-static/resources/fchomo.js:1744
+#: htdocs/luci-static/resources/fchomo.js:2094
msgid "Successfully uploaded."
msgstr "已成功上傳。"
-#: htdocs/luci-static/resources/fchomo.js:158
-#: htdocs/luci-static/resources/fchomo.js:194
+#: htdocs/luci-static/resources/fchomo.js:159
+#: htdocs/luci-static/resources/fchomo.js:195
msgid "Sudoku"
msgstr ""
@@ -2966,28 +3024,28 @@ msgstr ""
msgid "System"
msgstr "系統"
-#: htdocs/luci-static/resources/view/fchomo/client.js:57
+#: htdocs/luci-static/resources/view/fchomo/client.js:59
msgid "System DNS"
msgstr "系統 DNS"
-#: htdocs/luci-static/resources/fchomo.js:153
-#: htdocs/luci-static/resources/fchomo.js:158
+#: htdocs/luci-static/resources/fchomo.js:154
#: htdocs/luci-static/resources/fchomo.js:159
#: htdocs/luci-static/resources/fchomo.js:160
#: htdocs/luci-static/resources/fchomo.js:161
#: htdocs/luci-static/resources/fchomo.js:162
#: htdocs/luci-static/resources/fchomo.js:163
-#: htdocs/luci-static/resources/fchomo.js:189
-#: htdocs/luci-static/resources/fchomo.js:194
+#: htdocs/luci-static/resources/fchomo.js:164
+#: htdocs/luci-static/resources/fchomo.js:190
#: htdocs/luci-static/resources/fchomo.js:195
#: htdocs/luci-static/resources/fchomo.js:196
#: htdocs/luci-static/resources/fchomo.js:197
#: htdocs/luci-static/resources/fchomo.js:198
#: htdocs/luci-static/resources/fchomo.js:199
-#: htdocs/luci-static/resources/fchomo.js:206
-#: htdocs/luci-static/resources/fchomo/listeners.js:643
-#: htdocs/luci-static/resources/view/fchomo/client.js:598
-#: htdocs/luci-static/resources/view/fchomo/client.js:688
+#: htdocs/luci-static/resources/fchomo.js:200
+#: htdocs/luci-static/resources/fchomo.js:207
+#: htdocs/luci-static/resources/fchomo/listeners.js:661
+#: htdocs/luci-static/resources/view/fchomo/client.js:600
+#: htdocs/luci-static/resources/view/fchomo/client.js:690
msgid "TCP"
msgstr "TCP"
@@ -2995,7 +3053,7 @@ msgstr "TCP"
msgid "TCP concurrency"
msgstr "TCP 併發"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1475
+#: htdocs/luci-static/resources/view/fchomo/node.js:1504
msgid "TCP only"
msgstr "僅 TCP"
@@ -3007,41 +3065,41 @@ msgstr "TCP-Keep-Alive 閒置逾時"
msgid "TCP-Keep-Alive interval"
msgstr "TCP-Keep-Alive 間隔"
-#: htdocs/luci-static/resources/fchomo.js:154
#: htdocs/luci-static/resources/fchomo.js:155
#: htdocs/luci-static/resources/fchomo.js:156
#: htdocs/luci-static/resources/fchomo.js:157
-#: htdocs/luci-static/resources/fchomo.js:166
+#: htdocs/luci-static/resources/fchomo.js:158
#: htdocs/luci-static/resources/fchomo.js:167
#: htdocs/luci-static/resources/fchomo.js:168
-#: htdocs/luci-static/resources/fchomo.js:188
-#: htdocs/luci-static/resources/fchomo.js:190
+#: htdocs/luci-static/resources/fchomo.js:169
+#: htdocs/luci-static/resources/fchomo.js:189
#: htdocs/luci-static/resources/fchomo.js:191
-#: htdocs/luci-static/resources/fchomo.js:193
-#: htdocs/luci-static/resources/fchomo.js:204
+#: htdocs/luci-static/resources/fchomo.js:192
+#: htdocs/luci-static/resources/fchomo.js:194
+#: htdocs/luci-static/resources/fchomo.js:205
msgid "TCP/UDP"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1506
-#: htdocs/luci-static/resources/view/fchomo/node.js:1859
+#: htdocs/luci-static/resources/view/fchomo/node.js:1535
+#: htdocs/luci-static/resources/view/fchomo/node.js:1893
msgid "TFO"
msgstr "TCP 快速開啟 (TFO)"
-#: htdocs/luci-static/resources/fchomo/listeners.js:570
-#: htdocs/luci-static/resources/fchomo/listeners.js:900
+#: htdocs/luci-static/resources/fchomo/listeners.js:579
+#: htdocs/luci-static/resources/fchomo/listeners.js:918
#: htdocs/luci-static/resources/view/fchomo/global.js:550
-#: htdocs/luci-static/resources/view/fchomo/node.js:499
-#: htdocs/luci-static/resources/view/fchomo/node.js:884
-#: htdocs/luci-static/resources/view/fchomo/node.js:1063
+#: htdocs/luci-static/resources/view/fchomo/node.js:509
+#: htdocs/luci-static/resources/view/fchomo/node.js:906
+#: htdocs/luci-static/resources/view/fchomo/node.js:1091
msgid "TLS"
msgstr "TLS"
-#: htdocs/luci-static/resources/fchomo/listeners.js:967
-#: htdocs/luci-static/resources/view/fchomo/node.js:1094
+#: htdocs/luci-static/resources/fchomo/listeners.js:985
+#: htdocs/luci-static/resources/view/fchomo/node.js:1122
msgid "TLS ALPN"
msgstr "TLS ALPN"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1088
+#: htdocs/luci-static/resources/view/fchomo/node.js:1116
msgid "TLS SNI"
msgstr ""
@@ -3050,8 +3108,8 @@ msgstr ""
msgid "TLS fields"
msgstr "TLS欄位"
-#: htdocs/luci-static/resources/fchomo.js:164
-#: htdocs/luci-static/resources/fchomo.js:202
+#: htdocs/luci-static/resources/fchomo.js:165
+#: htdocs/luci-static/resources/fchomo.js:203
msgid "TUIC"
msgstr ""
@@ -3059,7 +3117,7 @@ msgstr ""
msgid "TURN"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:553
+#: htdocs/luci-static/resources/fchomo/listeners.js:550
msgid "Target address"
msgstr "目標位址"
@@ -3068,35 +3126,35 @@ msgid ""
"Tell the client to use the BBR flow control algorithm instead of Hysteria CC."
msgstr "讓客戶端使用 BBR 流控演算法。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:737
-#: htdocs/luci-static/resources/view/fchomo/node.js:745
+#: htdocs/luci-static/resources/view/fchomo/node.js:747
+#: htdocs/luci-static/resources/view/fchomo/node.js:755
msgid "The %s address used by local machine in the Cloudflare WARP network."
msgstr "Cloudflare WARP 網路中使用的本機 %s 位址。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:800
-#: htdocs/luci-static/resources/view/fchomo/node.js:808
+#: htdocs/luci-static/resources/view/fchomo/node.js:810
+#: htdocs/luci-static/resources/view/fchomo/node.js:818
msgid "The %s address used by local machine in the Wireguard network."
msgstr "WireGuard 網路中使用的本機 %s 位址。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:988
-#: htdocs/luci-static/resources/view/fchomo/node.js:1174
+#: htdocs/luci-static/resources/fchomo/listeners.js:1006
+#: htdocs/luci-static/resources/view/fchomo/node.js:1203
msgid "The %s private key, in PEM format."
msgstr "%s私鑰,需要 PEM 格式。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:973
-#: htdocs/luci-static/resources/fchomo/listeners.js:1011
+#: htdocs/luci-static/resources/fchomo/listeners.js:991
+#: htdocs/luci-static/resources/fchomo/listeners.js:1029
#: htdocs/luci-static/resources/view/fchomo/global.js:571
-#: htdocs/luci-static/resources/view/fchomo/node.js:1160
+#: htdocs/luci-static/resources/view/fchomo/node.js:1189
msgid "The %s public key, in PEM format."
msgstr "%s公鑰,需要 PEM 格式。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1194
+#: htdocs/luci-static/resources/view/fchomo/node.js:1223
msgid ""
"The ECH parameter of the HTTPS record for the domain. Leave empty to resolve "
"via DNS."
msgstr "網域的 HTTPS 記錄的 ECH 參數。留空則透過 DNS 解析。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:421
+#: htdocs/luci-static/resources/view/fchomo/node.js:431
msgid "The ED25519 available private key or UUID provided by Sudoku server."
msgstr "Sudoku 伺服器提供的 ED25519 可用私鑰 或 UUID。"
@@ -3108,42 +3166,48 @@ msgstr "Sudoku 產生的 ED25519 主公鑰 或 UUID。"
msgid "The default value is 2:00 every day."
msgstr "預設值為每天 2:00。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:744
-#: htdocs/luci-static/resources/view/fchomo/node.js:1010
+#: htdocs/luci-static/resources/view/fchomo/node.js:964
+msgid ""
+"The default value is %s, indicating that only the outer "
+"connection timeout is used."
+msgstr "預設值為%s,表示僅使用外層連線逾時。"
+
+#: htdocs/luci-static/resources/fchomo/listeners.js:762
+#: htdocs/luci-static/resources/view/fchomo/node.js:1038
msgid ""
"The first padding must have a probability of 100% and at least 35 bytes."
msgstr "首個填充必須為 100% 的機率並且至少 35 位元組。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1827
+#: htdocs/luci-static/resources/view/fchomo/client.js:1893
msgid "The matching %s will be deemed as not-poisoned."
msgstr "匹配 %s 的將被視為未被投毒汙染。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1836
-#: htdocs/luci-static/resources/view/fchomo/client.js:1840
-#: htdocs/luci-static/resources/view/fchomo/client.js:1845
+#: htdocs/luci-static/resources/view/fchomo/client.js:1902
+#: htdocs/luci-static/resources/view/fchomo/client.js:1906
+#: htdocs/luci-static/resources/view/fchomo/client.js:1911
msgid "The matching %s will be deemed as poisoned."
msgstr "匹配 %s 的將被視為已被投毒汙染。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:742
-#: htdocs/luci-static/resources/view/fchomo/node.js:1008
+#: htdocs/luci-static/resources/fchomo/listeners.js:760
+#: htdocs/luci-static/resources/view/fchomo/node.js:1036
msgid "The server and client can set different padding parameters."
msgstr "伺服器和客戶端可以設定不同的填充參數。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1069
+#: htdocs/luci-static/resources/fchomo/listeners.js:1087
#: htdocs/luci-static/resources/view/fchomo/global.js:615
msgid "This ECH parameter needs to be added to the HTTPS record of the domain."
msgstr "此 ECH 參數需要加入到網域的 HTTPS 記錄中。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1600
-#: htdocs/luci-static/resources/view/fchomo/node.js:1154
-#: htdocs/luci-static/resources/view/fchomo/node.js:1895
+#: htdocs/luci-static/resources/view/fchomo/client.js:1666
+#: htdocs/luci-static/resources/view/fchomo/node.js:1183
+#: htdocs/luci-static/resources/view/fchomo/node.js:1929
msgid ""
"This is DANGEROUS, your traffic is almost like "
"PLAIN TEXT! Use at your own risk!"
msgstr ""
"這是危險行為,您的流量將幾乎等同於明文!使用風險自負!"
-#: htdocs/luci-static/resources/view/fchomo/node.js:578
+#: htdocs/luci-static/resources/view/fchomo/node.js:588
msgid ""
"This is the TUIC port of the SUoT protocol, designed to provide a QUIC "
"stream based UDP relay mode that TUIC does not provide."
@@ -3176,22 +3240,22 @@ msgid "Tproxy port"
msgstr "Tproxy 連接埠"
#: htdocs/luci-static/resources/fchomo/listeners.js:285
-#: htdocs/luci-static/resources/view/fchomo/node.js:413
+#: htdocs/luci-static/resources/view/fchomo/node.js:423
msgid "Traffic pattern"
msgstr "流量模式"
-#: htdocs/luci-static/resources/view/fchomo/node.js:2054
+#: htdocs/luci-static/resources/view/fchomo/node.js:2098
msgid "Transit proxy group"
msgstr "中轉代理組"
-#: htdocs/luci-static/resources/view/fchomo/node.js:2060
+#: htdocs/luci-static/resources/view/fchomo/node.js:2109
msgid "Transit proxy node"
msgstr "中轉代理節點"
#: htdocs/luci-static/resources/fchomo/listeners.js:273
-#: htdocs/luci-static/resources/fchomo/listeners.js:1120
-#: htdocs/luci-static/resources/view/fchomo/node.js:390
-#: htdocs/luci-static/resources/view/fchomo/node.js:1236
+#: htdocs/luci-static/resources/fchomo/listeners.js:1138
+#: htdocs/luci-static/resources/view/fchomo/node.js:400
+#: htdocs/luci-static/resources/view/fchomo/node.js:1265
msgid "Transport"
msgstr "傳輸層"
@@ -3200,22 +3264,22 @@ msgstr "傳輸層"
msgid "Transport fields"
msgstr "傳輸層欄位"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1125
-#: htdocs/luci-static/resources/view/fchomo/node.js:1241
+#: htdocs/luci-static/resources/fchomo/listeners.js:1143
+#: htdocs/luci-static/resources/view/fchomo/node.js:1270
msgid "Transport type"
msgstr "傳輸層類型"
-#: htdocs/luci-static/resources/view/fchomo/client.js:811
+#: htdocs/luci-static/resources/view/fchomo/client.js:819
msgid "Treat the destination IP as the source IP."
msgstr "將 目標 IP 視為 來源 IP。"
-#: htdocs/luci-static/resources/fchomo.js:162
-#: htdocs/luci-static/resources/fchomo.js:198
+#: htdocs/luci-static/resources/fchomo.js:163
+#: htdocs/luci-static/resources/fchomo.js:199
msgid "Trojan"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:167
-#: htdocs/luci-static/resources/fchomo.js:204
+#: htdocs/luci-static/resources/fchomo.js:168
+#: htdocs/luci-static/resources/fchomo.js:205
msgid "TrustTunnel"
msgstr ""
@@ -3239,35 +3303,35 @@ msgstr "Tun 設定"
msgid "Tun stack."
msgstr "Tun 堆栈"
-#: htdocs/luci-static/resources/fchomo.js:168
+#: htdocs/luci-static/resources/fchomo.js:169
msgid "Tunnel"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:142
-#: htdocs/luci-static/resources/view/fchomo/client.js:531
-#: htdocs/luci-static/resources/view/fchomo/client.js:652
-#: htdocs/luci-static/resources/view/fchomo/client.js:746
-#: htdocs/luci-static/resources/view/fchomo/client.js:851
-#: htdocs/luci-static/resources/view/fchomo/client.js:1038
+#: htdocs/luci-static/resources/view/fchomo/client.js:533
+#: htdocs/luci-static/resources/view/fchomo/client.js:654
+#: htdocs/luci-static/resources/view/fchomo/client.js:751
+#: htdocs/luci-static/resources/view/fchomo/client.js:859
+#: htdocs/luci-static/resources/view/fchomo/client.js:1057
#: htdocs/luci-static/resources/view/fchomo/node.js:250
-#: htdocs/luci-static/resources/view/fchomo/node.js:1672
-#: htdocs/luci-static/resources/view/fchomo/node.js:2025
+#: htdocs/luci-static/resources/view/fchomo/node.js:1701
+#: htdocs/luci-static/resources/view/fchomo/node.js:2059
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:285
msgid "Type"
msgstr "類型"
-#: htdocs/luci-static/resources/fchomo.js:164
#: htdocs/luci-static/resources/fchomo.js:165
-#: htdocs/luci-static/resources/fchomo.js:201
+#: htdocs/luci-static/resources/fchomo.js:166
#: htdocs/luci-static/resources/fchomo.js:202
#: htdocs/luci-static/resources/fchomo.js:203
-#: htdocs/luci-static/resources/fchomo.js:205
-#: htdocs/luci-static/resources/fchomo/listeners.js:644
-#: htdocs/luci-static/resources/fchomo/listeners.js:649
-#: htdocs/luci-static/resources/view/fchomo/client.js:597
-#: htdocs/luci-static/resources/view/fchomo/client.js:687
-#: htdocs/luci-static/resources/view/fchomo/node.js:942
-#: htdocs/luci-static/resources/view/fchomo/node.js:1869
+#: htdocs/luci-static/resources/fchomo.js:204
+#: htdocs/luci-static/resources/fchomo.js:206
+#: htdocs/luci-static/resources/fchomo/listeners.js:662
+#: htdocs/luci-static/resources/fchomo/listeners.js:667
+#: htdocs/luci-static/resources/view/fchomo/client.js:599
+#: htdocs/luci-static/resources/view/fchomo/client.js:689
+#: htdocs/luci-static/resources/view/fchomo/node.js:970
+#: htdocs/luci-static/resources/view/fchomo/node.js:1903
msgid "UDP"
msgstr "UDP"
@@ -3275,42 +3339,42 @@ msgstr "UDP"
msgid "UDP NAT expiration time"
msgstr "UDP NAT 過期時間"
-#: htdocs/luci-static/resources/view/fchomo/node.js:577
+#: htdocs/luci-static/resources/view/fchomo/node.js:587
msgid "UDP over stream"
msgstr "UDP over stream"
-#: htdocs/luci-static/resources/view/fchomo/node.js:583
+#: htdocs/luci-static/resources/view/fchomo/node.js:593
msgid "UDP over stream version"
msgstr "UDP over stream 版本"
-#: htdocs/luci-static/resources/view/fchomo/node.js:570
+#: htdocs/luci-static/resources/view/fchomo/node.js:580
msgid "UDP packet relay mode."
msgstr "UDP 包中繼模式。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:569
+#: htdocs/luci-static/resources/view/fchomo/node.js:579
msgid "UDP relay mode"
msgstr "UDP 中繼模式"
#: htdocs/luci-static/resources/fchomo/listeners.js:373
#: htdocs/luci-static/resources/fchomo/listeners.js:374
-#: htdocs/luci-static/resources/view/fchomo/node.js:445
-#: htdocs/luci-static/resources/view/fchomo/node.js:446
+#: htdocs/luci-static/resources/view/fchomo/node.js:455
+#: htdocs/luci-static/resources/view/fchomo/node.js:456
msgid "UP: %s; DOWN: %s"
msgstr "上傳: %s; 下載: %s"
-#: htdocs/luci-static/resources/fchomo.js:242
+#: htdocs/luci-static/resources/fchomo.js:243
msgid "URL test"
msgstr "自動選擇"
#: htdocs/luci-static/resources/fchomo/listeners.js:294
-#: htdocs/luci-static/resources/fchomo/listeners.js:474
-#: htdocs/luci-static/resources/fchomo/listeners.js:529
-#: htdocs/luci-static/resources/view/fchomo/node.js:557
-#: htdocs/luci-static/resources/view/fchomo/node.js:671
+#: htdocs/luci-static/resources/fchomo/listeners.js:471
+#: htdocs/luci-static/resources/fchomo/listeners.js:526
+#: htdocs/luci-static/resources/view/fchomo/node.js:567
+#: htdocs/luci-static/resources/view/fchomo/node.js:681
msgid "UUID"
msgstr "UUID"
-#: htdocs/luci-static/resources/fchomo.js:1287
+#: htdocs/luci-static/resources/fchomo.js:1637
msgid "Unable to download unsupported type: %s"
msgstr "無法下載不支援的類型: %s"
@@ -3335,8 +3399,8 @@ msgstr "未知錯誤。"
msgid "Unknown error: %s"
msgstr "未知錯誤:%s"
-#: htdocs/luci-static/resources/view/fchomo/node.js:948
-#: htdocs/luci-static/resources/view/fchomo/node.js:1874
+#: htdocs/luci-static/resources/view/fchomo/node.js:976
+#: htdocs/luci-static/resources/view/fchomo/node.js:1908
msgid "UoT"
msgstr "UDP over TCP (UoT)"
@@ -3344,22 +3408,22 @@ msgstr "UDP over TCP (UoT)"
msgid "Update failed."
msgstr "更新失敗。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1741
+#: htdocs/luci-static/resources/view/fchomo/node.js:1770
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:397
msgid "Update interval"
msgstr "更新間隔"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1493
+#: htdocs/luci-static/resources/view/fchomo/node.js:1522
msgid "Upload bandwidth"
msgstr "上傳頻寬"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1494
+#: htdocs/luci-static/resources/view/fchomo/node.js:1523
msgid "Upload bandwidth in Mbps."
msgstr "上傳頻寬(單位:Mbps)。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:979
-#: htdocs/luci-static/resources/fchomo/listeners.js:1019
-#: htdocs/luci-static/resources/view/fchomo/node.js:1165
+#: htdocs/luci-static/resources/fchomo/listeners.js:997
+#: htdocs/luci-static/resources/fchomo/listeners.js:1037
+#: htdocs/luci-static/resources/view/fchomo/node.js:1194
msgid "Upload certificate"
msgstr "上傳憑證"
@@ -3367,45 +3431,45 @@ msgstr "上傳憑證"
msgid "Upload initial package"
msgstr "上傳初始資源包"
-#: htdocs/luci-static/resources/fchomo/listeners.js:994
-#: htdocs/luci-static/resources/view/fchomo/node.js:1179
+#: htdocs/luci-static/resources/fchomo/listeners.js:1012
+#: htdocs/luci-static/resources/view/fchomo/node.js:1208
msgid "Upload key"
msgstr "上傳金鑰"
-#: htdocs/luci-static/resources/fchomo/listeners.js:982
-#: htdocs/luci-static/resources/fchomo/listeners.js:997
-#: htdocs/luci-static/resources/fchomo/listeners.js:1022
+#: htdocs/luci-static/resources/fchomo/listeners.js:1000
+#: htdocs/luci-static/resources/fchomo/listeners.js:1015
+#: htdocs/luci-static/resources/fchomo/listeners.js:1040
#: htdocs/luci-static/resources/view/fchomo/global.js:306
-#: htdocs/luci-static/resources/view/fchomo/node.js:1168
-#: htdocs/luci-static/resources/view/fchomo/node.js:1182
+#: htdocs/luci-static/resources/view/fchomo/node.js:1197
+#: htdocs/luci-static/resources/view/fchomo/node.js:1211
msgid "Upload..."
msgstr "上傳..."
-#: htdocs/luci-static/resources/view/fchomo/node.js:273
+#: htdocs/luci-static/resources/view/fchomo/node.js:278
msgid "Use sub rule"
msgstr "使用子規則"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1420
+#: htdocs/luci-static/resources/view/fchomo/client.js:1483
msgid ""
"Used to resolve domains that can be directly connected. Can use domestic DNS "
"servers or ECS."
msgstr "用於解析可直連的網域。可使用國內 DNS 伺服器或 ECS。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1422
+#: htdocs/luci-static/resources/view/fchomo/client.js:1485
msgid ""
"Used to resolve domains you want to proxy. Recommended to configure %s for "
"DNS servers."
msgstr "用於解析想要代理的網域。建議為 DNS 伺服器配置%s。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1404
+#: htdocs/luci-static/resources/view/fchomo/client.js:1467
msgid "Used to resolve the domain of the DNS server. Must be IP."
msgstr "用於解析 DNS 伺服器的網域。必須是 IP。"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1411
+#: htdocs/luci-static/resources/view/fchomo/client.js:1474
msgid "Used to resolve the domain of the Proxy node."
msgstr "用於解析代理節點的網域。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1089
+#: htdocs/luci-static/resources/view/fchomo/node.js:1117
msgid "Used to verify the hostname on the returned certificates."
msgstr "用於驗證傳回的憑證上的主機名稱。"
@@ -3418,7 +3482,7 @@ msgid "User-hint is mandatory"
msgstr "User-hint 是必填項"
#: htdocs/luci-static/resources/fchomo/listeners.js:161
-#: htdocs/luci-static/resources/view/fchomo/node.js:280
+#: htdocs/luci-static/resources/view/fchomo/node.js:290
msgid "Username"
msgstr "使用者名稱"
@@ -3426,26 +3490,26 @@ msgstr "使用者名稱"
msgid "Users filter mode"
msgstr "使用者過濾模式"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1350
+#: htdocs/luci-static/resources/view/fchomo/node.js:1379
msgid "V2ray HTTPUpgrade"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1355
+#: htdocs/luci-static/resources/view/fchomo/node.js:1384
msgid "V2ray HTTPUpgrade fast open"
msgstr ""
+#: htdocs/luci-static/resources/fchomo.js:162
+#: htdocs/luci-static/resources/fchomo.js:198
+msgid "VLESS"
+msgstr ""
+
#: htdocs/luci-static/resources/fchomo.js:161
#: htdocs/luci-static/resources/fchomo.js:197
-msgid "VLESS"
-msgstr ""
-
-#: htdocs/luci-static/resources/fchomo.js:160
-#: htdocs/luci-static/resources/fchomo.js:196
msgid "VMess"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1678
-#: htdocs/luci-static/resources/view/fchomo/node.js:2031
+#: htdocs/luci-static/resources/view/fchomo/node.js:1707
+#: htdocs/luci-static/resources/view/fchomo/node.js:2065
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:328
msgid "Value"
msgstr "可視化值"
@@ -3455,13 +3519,13 @@ msgid "Verify if given"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:463
-#: htdocs/luci-static/resources/fchomo/listeners.js:595
-#: htdocs/luci-static/resources/view/fchomo/node.js:541
-#: htdocs/luci-static/resources/view/fchomo/node.js:903
+#: htdocs/luci-static/resources/fchomo/listeners.js:603
+#: htdocs/luci-static/resources/view/fchomo/node.js:551
+#: htdocs/luci-static/resources/view/fchomo/node.js:923
msgid "Version"
msgstr "版本"
-#: htdocs/luci-static/resources/view/fchomo/node.js:911
+#: htdocs/luci-static/resources/view/fchomo/node.js:931
msgid "Version hint"
msgstr ""
@@ -3474,20 +3538,20 @@ msgstr "Vless Encryption 欄位"
msgid "Wait a random 0-111 milliseconds with 75% probability."
msgstr "以 75% 的機率等待隨機 0-111 毫秒。"
-#: htdocs/luci-static/resources/fchomo.js:91
+#: htdocs/luci-static/resources/fchomo.js:92
msgid "Warning"
msgstr "警告"
#: htdocs/luci-static/resources/fchomo/listeners.js:441
-#: htdocs/luci-static/resources/fchomo/listeners.js:1127
-#: htdocs/luci-static/resources/fchomo/listeners.js:1136
-#: htdocs/luci-static/resources/fchomo/listeners.js:1143
-#: htdocs/luci-static/resources/view/fchomo/node.js:495
-#: htdocs/luci-static/resources/view/fchomo/node.js:524
-#: htdocs/luci-static/resources/view/fchomo/node.js:1246
-#: htdocs/luci-static/resources/view/fchomo/node.js:1257
-#: htdocs/luci-static/resources/view/fchomo/node.js:1264
-#: htdocs/luci-static/resources/view/fchomo/node.js:1270
+#: htdocs/luci-static/resources/fchomo/listeners.js:1145
+#: htdocs/luci-static/resources/fchomo/listeners.js:1154
+#: htdocs/luci-static/resources/fchomo/listeners.js:1161
+#: htdocs/luci-static/resources/view/fchomo/node.js:505
+#: htdocs/luci-static/resources/view/fchomo/node.js:534
+#: htdocs/luci-static/resources/view/fchomo/node.js:1275
+#: htdocs/luci-static/resources/view/fchomo/node.js:1286
+#: htdocs/luci-static/resources/view/fchomo/node.js:1293
+#: htdocs/luci-static/resources/view/fchomo/node.js:1299
msgid "WebSocket"
msgstr ""
@@ -3499,52 +3563,52 @@ msgstr "用作服務端時,HomeProxy 是更好的選擇。"
msgid "White list"
msgstr "白名單"
-#: htdocs/luci-static/resources/fchomo.js:205
+#: htdocs/luci-static/resources/fchomo.js:206
msgid "WireGuard"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:822
+#: htdocs/luci-static/resources/view/fchomo/node.js:832
msgid "WireGuard peer public key."
msgstr "WireGuard 對端公鑰。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:829
+#: htdocs/luci-static/resources/view/fchomo/node.js:839
msgid "WireGuard pre-shared key."
msgstr "WireGuard 預先共用金鑰。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:814
+#: htdocs/luci-static/resources/view/fchomo/node.js:824
msgid "WireGuard requires base64-encoded private keys."
msgstr "WireGuard 要求 base64 編碼的私鑰。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1128
-#: htdocs/luci-static/resources/fchomo/listeners.js:1137
-#: htdocs/luci-static/resources/view/fchomo/node.js:1247
-#: htdocs/luci-static/resources/view/fchomo/node.js:1265
+#: htdocs/luci-static/resources/fchomo/listeners.js:1146
+#: htdocs/luci-static/resources/fchomo/listeners.js:1155
+#: htdocs/luci-static/resources/view/fchomo/node.js:1276
+#: htdocs/luci-static/resources/view/fchomo/node.js:1294
msgid "XHTTP"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1173
-#: htdocs/luci-static/resources/view/fchomo/node.js:1360
+#: htdocs/luci-static/resources/fchomo/listeners.js:1191
+#: htdocs/luci-static/resources/view/fchomo/node.js:1389
msgid "XHTTP mode"
msgstr "XHTTP 模式"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1391
+#: htdocs/luci-static/resources/view/fchomo/node.js:1420
msgid "XMUX"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1396
-#: htdocs/luci-static/resources/view/fchomo/node.js:1401
-#: htdocs/luci-static/resources/view/fchomo/node.js:1406
-#: htdocs/luci-static/resources/view/fchomo/node.js:1411
-#: htdocs/luci-static/resources/view/fchomo/node.js:1416
-#: htdocs/luci-static/resources/view/fchomo/node.js:1421
+#: htdocs/luci-static/resources/view/fchomo/node.js:1425
+#: htdocs/luci-static/resources/view/fchomo/node.js:1430
+#: htdocs/luci-static/resources/view/fchomo/node.js:1435
+#: htdocs/luci-static/resources/view/fchomo/node.js:1440
+#: htdocs/luci-static/resources/view/fchomo/node.js:1445
+#: htdocs/luci-static/resources/view/fchomo/node.js:1450
msgid "XMUX:"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:703
+#: htdocs/luci-static/resources/fchomo/listeners.js:721
msgid "XOR mode"
msgstr "XOR 模式"
-#: htdocs/luci-static/resources/view/fchomo/node.js:716
+#: htdocs/luci-static/resources/view/fchomo/node.js:726
msgid "Xudp (Xray-core)"
msgstr ""
@@ -3552,22 +3616,22 @@ msgstr ""
msgid "Yaml text"
msgstr "Yaml 格式文本"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1898
+#: htdocs/luci-static/resources/view/fchomo/node.js:1932
msgid "Yes"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:46
+#: htdocs/luci-static/resources/fchomo.js:47
msgid "YouTube"
msgstr "YouTube"
-#: htdocs/luci-static/resources/fchomo.js:1726
+#: htdocs/luci-static/resources/fchomo.js:2076
msgid "Your %s was successfully uploaded. Size: %sB."
msgstr "您的 %s 已成功上傳。大小:%sB。"
#: htdocs/luci-static/resources/fchomo.js:345
#: htdocs/luci-static/resources/fchomo.js:358
#: htdocs/luci-static/resources/fchomo.js:363
-#: htdocs/luci-static/resources/view/fchomo/node.js:696
+#: htdocs/luci-static/resources/view/fchomo/node.js:706
msgid "aes-128-gcm"
msgstr ""
@@ -3580,11 +3644,11 @@ msgstr ""
msgid "aes-256-gcm"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1758
+#: htdocs/luci-static/resources/view/fchomo/node.js:1792
msgid "age private key"
msgstr "age 私鑰"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1819
+#: htdocs/luci-static/resources/view/fchomo/node.js:1853
msgid "age public key"
msgstr "age 公鑰"
@@ -3596,17 +3660,17 @@ msgstr ""
msgid "age-x25519"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:693
+#: htdocs/luci-static/resources/view/fchomo/node.js:703
msgid "auto"
msgstr "自動"
-#: htdocs/luci-static/resources/fchomo.js:55
+#: htdocs/luci-static/resources/fchomo.js:56
msgid "bbr"
msgstr "bbr"
-#: htdocs/luci-static/resources/fchomo/listeners.js:984
-#: htdocs/luci-static/resources/fchomo/listeners.js:1024
-#: htdocs/luci-static/resources/view/fchomo/node.js:1170
+#: htdocs/luci-static/resources/fchomo/listeners.js:1002
+#: htdocs/luci-static/resources/fchomo/listeners.js:1042
+#: htdocs/luci-static/resources/view/fchomo/node.js:1199
msgid "certificate"
msgstr "憑證"
@@ -3616,16 +3680,16 @@ msgstr "憑證"
msgid "chacha20-ietf-poly1305"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:697
+#: htdocs/luci-static/resources/view/fchomo/node.js:707
msgid "chacha20-poly1305"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:53
+#: htdocs/luci-static/resources/fchomo.js:54
msgid "cubic"
msgstr "cubic"
-#: htdocs/luci-static/resources/fchomo/listeners.js:655
-#: htdocs/luci-static/resources/fchomo/listeners.js:686
+#: htdocs/luci-static/resources/fchomo/listeners.js:673
+#: htdocs/luci-static/resources/fchomo/listeners.js:704
msgid "decryption"
msgstr "decryption"
@@ -3633,41 +3697,41 @@ msgstr "decryption"
msgid "dnsmasq selects upstream on its own. (may affect CDN accuracy)"
msgstr "dnsmasq 自行選擇上游服務器。 (可能影響 CDN 準確性)"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1886
+#: htdocs/luci-static/resources/view/fchomo/node.js:1920
msgid "down"
msgstr "Hysteria 下載速率"
-#: htdocs/luci-static/resources/fchomo/listeners.js:690
-#: htdocs/luci-static/resources/view/fchomo/node.js:962
-#: htdocs/luci-static/resources/view/fchomo/node.js:985
+#: htdocs/luci-static/resources/fchomo/listeners.js:708
+#: htdocs/luci-static/resources/view/fchomo/node.js:990
+#: htdocs/luci-static/resources/view/fchomo/node.js:1013
msgid "encryption"
msgstr "encryption"
#: htdocs/luci-static/resources/fchomo/listeners.js:425
-#: htdocs/luci-static/resources/view/fchomo/node.js:479
+#: htdocs/luci-static/resources/view/fchomo/node.js:489
msgid "false = bandwidth optimized downlink; true = pure Sudoku downlink."
msgstr "false = 頻寬最佳化下行 true = 純 Sudoku 下行。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1126
-#: htdocs/luci-static/resources/fchomo/listeners.js:1135
-#: htdocs/luci-static/resources/fchomo/listeners.js:1142
-#: htdocs/luci-static/resources/view/fchomo/node.js:1245
-#: htdocs/luci-static/resources/view/fchomo/node.js:1256
-#: htdocs/luci-static/resources/view/fchomo/node.js:1263
-#: htdocs/luci-static/resources/view/fchomo/node.js:1269
+#: htdocs/luci-static/resources/fchomo/listeners.js:1144
+#: htdocs/luci-static/resources/fchomo/listeners.js:1153
+#: htdocs/luci-static/resources/fchomo/listeners.js:1160
+#: htdocs/luci-static/resources/view/fchomo/node.js:1274
+#: htdocs/luci-static/resources/view/fchomo/node.js:1285
+#: htdocs/luci-static/resources/view/fchomo/node.js:1292
+#: htdocs/luci-static/resources/view/fchomo/node.js:1298
msgid "gRPC"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1326
+#: htdocs/luci-static/resources/view/fchomo/node.js:1355
msgid "gRPC User-Agent"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1331
+#: htdocs/luci-static/resources/view/fchomo/node.js:1360
msgid "gRPC ping interval"
msgstr "gRPC ping 間隔"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1167
-#: htdocs/luci-static/resources/view/fchomo/node.js:1322
+#: htdocs/luci-static/resources/fchomo/listeners.js:1185
+#: htdocs/luci-static/resources/view/fchomo/node.js:1351
msgid "gRPC service name"
msgstr "gRPC 服務名稱"
@@ -3675,37 +3739,37 @@ msgstr "gRPC 服務名稱"
msgid "gVisor"
msgstr "gVisor"
-#: htdocs/luci-static/resources/view/fchomo/node.js:760
+#: htdocs/luci-static/resources/view/fchomo/node.js:770
msgid "h2"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1438
+#: htdocs/luci-static/resources/view/fchomo/node.js:1467
msgid "h2mux"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:758
+#: htdocs/luci-static/resources/view/fchomo/node.js:768
msgid "h3"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:759
+#: htdocs/luci-static/resources/view/fchomo/node.js:769
msgid "h3-l4proxy"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:855
+#: htdocs/luci-static/resources/fchomo/listeners.js:873
msgid "least one keypair required"
msgstr "至少需要一對密鑰"
-#: htdocs/luci-static/resources/fchomo.js:76
+#: htdocs/luci-static/resources/fchomo.js:77
msgid "metacubexd"
msgstr "metacubexd"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1011
-#: htdocs/luci-static/resources/view/fchomo/client.js:1267
-#: htdocs/luci-static/resources/view/fchomo/client.js:1359
-#: htdocs/luci-static/resources/view/fchomo/client.js:1501
-#: htdocs/luci-static/resources/view/fchomo/client.js:1732
-#: htdocs/luci-static/resources/view/fchomo/client.js:1788
-#: htdocs/luci-static/resources/view/fchomo/node.js:1644
+#: htdocs/luci-static/resources/view/fchomo/client.js:1030
+#: htdocs/luci-static/resources/view/fchomo/client.js:1327
+#: htdocs/luci-static/resources/view/fchomo/client.js:1422
+#: htdocs/luci-static/resources/view/fchomo/client.js:1564
+#: htdocs/luci-static/resources/view/fchomo/client.js:1798
+#: htdocs/luci-static/resources/view/fchomo/client.js:1854
+#: htdocs/luci-static/resources/view/fchomo/node.js:1673
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:247
msgid "mihomo config"
msgstr "mihomo 配置"
@@ -3714,33 +3778,33 @@ msgstr "mihomo 配置"
msgid "mlkem768x25519plus"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1511
-#: htdocs/luci-static/resources/view/fchomo/node.js:1864
+#: htdocs/luci-static/resources/view/fchomo/node.js:1540
+#: htdocs/luci-static/resources/view/fchomo/node.js:1898
msgid "mpTCP"
msgstr "多路徑 TCP (mpTCP)"
-#: htdocs/luci-static/resources/fchomo.js:54
+#: htdocs/luci-static/resources/fchomo.js:55
msgid "new_reno"
msgstr "new_reno"
-#: htdocs/luci-static/resources/view/fchomo/client.js:828
+#: htdocs/luci-static/resources/view/fchomo/client.js:836
msgid "no-resolve"
msgstr "no-resolve"
-#: htdocs/luci-static/resources/fchomo.js:1461
-#: htdocs/luci-static/resources/fchomo.js:1556
-#: htdocs/luci-static/resources/fchomo.js:1591
-#: htdocs/luci-static/resources/fchomo.js:1619
+#: htdocs/luci-static/resources/fchomo.js:1811
+#: htdocs/luci-static/resources/fchomo.js:1906
+#: htdocs/luci-static/resources/fchomo.js:1941
+#: htdocs/luci-static/resources/fchomo.js:1969
msgid "non-empty value"
msgstr "非空值"
#: htdocs/luci-static/resources/fchomo.js:343
#: htdocs/luci-static/resources/fchomo.js:357
#: htdocs/luci-static/resources/fchomo.js:369
-#: htdocs/luci-static/resources/fchomo/listeners.js:561
-#: htdocs/luci-static/resources/view/fchomo/node.js:694
-#: htdocs/luci-static/resources/view/fchomo/node.js:714
-#: htdocs/luci-static/resources/view/fchomo/node.js:872
+#: htdocs/luci-static/resources/fchomo/listeners.js:558
+#: htdocs/luci-static/resources/view/fchomo/node.js:704
+#: htdocs/luci-static/resources/view/fchomo/node.js:724
+#: htdocs/luci-static/resources/view/fchomo/node.js:882
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:324
msgid "none"
msgstr "無"
@@ -3749,62 +3813,64 @@ msgstr "無"
msgid "not found"
msgstr "未找到"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1028
+#: htdocs/luci-static/resources/view/fchomo/client.js:1047
msgid "not included \",\""
msgstr "不包含 \",\""
-#: htdocs/luci-static/resources/fchomo.js:228
-#: htdocs/luci-static/resources/fchomo/listeners.js:611
-#: htdocs/luci-static/resources/fchomo/listeners.js:612
+#: htdocs/luci-static/resources/fchomo.js:229
+#: htdocs/luci-static/resources/fchomo/listeners.js:619
+#: htdocs/luci-static/resources/fchomo/listeners.js:622
msgid "null"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:562
-#: htdocs/luci-static/resources/view/fchomo/node.js:873
+#: htdocs/luci-static/resources/fchomo/listeners.js:559
+#: htdocs/luci-static/resources/fchomo/listeners.js:567
+#: htdocs/luci-static/resources/view/fchomo/node.js:883
+#: htdocs/luci-static/resources/view/fchomo/node.js:894
msgid "obfs-simple"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:526
+#: htdocs/luci-static/resources/view/fchomo/node.js:536
msgid "only applies when %s is %s."
msgstr "僅當 %s 為 %s 時適用。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:524
+#: htdocs/luci-static/resources/view/fchomo/node.js:534
msgid "only applies when %s is not %s."
msgstr "僅當 %s 不為 %s 時適用。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1844
+#: htdocs/luci-static/resources/view/fchomo/node.js:1878
msgid "override.proxy-name"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:715
+#: htdocs/luci-static/resources/view/fchomo/node.js:725
msgid "packet addr (v2ray-core v5+)"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1177
-#: htdocs/luci-static/resources/view/fchomo/node.js:1364
+#: htdocs/luci-static/resources/fchomo/listeners.js:1195
+#: htdocs/luci-static/resources/view/fchomo/node.js:1393
msgid "packet-up"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:439
-#: htdocs/luci-static/resources/view/fchomo/node.js:493
+#: htdocs/luci-static/resources/view/fchomo/node.js:503
msgid "poll"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:999
-#: htdocs/luci-static/resources/view/fchomo/node.js:1184
+#: htdocs/luci-static/resources/fchomo/listeners.js:1017
+#: htdocs/luci-static/resources/view/fchomo/node.js:1213
msgid "private key"
msgstr "私鑰"
-#: htdocs/luci-static/resources/fchomo.js:78
+#: htdocs/luci-static/resources/fchomo.js:79
msgid "razord-meta"
msgstr "razord-meta"
-#: htdocs/luci-static/resources/view/fchomo/client.js:1191
-#: htdocs/luci-static/resources/view/fchomo/client.js:1197
+#: htdocs/luci-static/resources/view/fchomo/client.js:1251
+#: htdocs/luci-static/resources/view/fchomo/client.js:1257
msgid "requires front-end adaptation using the API."
msgstr "需要使用 API 的前端適配。"
-#: htdocs/luci-static/resources/view/fchomo/node.js:877
+#: htdocs/luci-static/resources/view/fchomo/node.js:887
msgid "restls"
msgstr ""
@@ -3812,39 +3878,41 @@ msgstr ""
msgid "rule-set"
msgstr "規則集"
-#: htdocs/luci-static/resources/fchomo/listeners.js:563
-#: htdocs/luci-static/resources/view/fchomo/node.js:876
+#: htdocs/luci-static/resources/fchomo/listeners.js:560
+#: htdocs/luci-static/resources/fchomo/listeners.js:568
+#: htdocs/luci-static/resources/view/fchomo/node.js:886
+#: htdocs/luci-static/resources/view/fchomo/node.js:895
msgid "shadow-tls"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:1436
+#: htdocs/luci-static/resources/view/fchomo/node.js:1465
msgid "smux"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:438
-#: htdocs/luci-static/resources/view/fchomo/node.js:492
+#: htdocs/luci-static/resources/view/fchomo/node.js:502
msgid "split-stream"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/client.js:810
+#: htdocs/luci-static/resources/view/fchomo/client.js:818
msgid "src"
msgstr "src"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1175
-#: htdocs/luci-static/resources/view/fchomo/node.js:1362
+#: htdocs/luci-static/resources/fchomo/listeners.js:1193
+#: htdocs/luci-static/resources/view/fchomo/node.js:1391
msgid "stream-one"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1176
-#: htdocs/luci-static/resources/view/fchomo/node.js:1363
+#: htdocs/luci-static/resources/fchomo/listeners.js:1194
+#: htdocs/luci-static/resources/view/fchomo/node.js:1392
msgid "stream-up"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1192
+#: htdocs/luci-static/resources/fchomo/listeners.js:1210
msgid "stream-up server seconds"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:526
+#: htdocs/luci-static/resources/view/fchomo/node.js:536
msgid "stream/poll/auto"
msgstr ""
@@ -3864,80 +3932,77 @@ msgstr "獨立 UCI 識別"
msgid "unique identifier"
msgstr "獨立標識"
-#: htdocs/luci-static/resources/fchomo.js:1628
+#: htdocs/luci-static/resources/fchomo.js:1978
msgid "unique value"
msgstr "獨立值"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1880
+#: htdocs/luci-static/resources/view/fchomo/node.js:1914
msgid "up"
msgstr "Hysteria 上傳速率"
-#: htdocs/luci-static/resources/fchomo/listeners.js:464
-#: htdocs/luci-static/resources/fchomo/listeners.js:596
-#: htdocs/luci-static/resources/view/fchomo/node.js:542
-#: htdocs/luci-static/resources/view/fchomo/node.js:584
-#: htdocs/luci-static/resources/view/fchomo/node.js:904
-#: htdocs/luci-static/resources/view/fchomo/node.js:955
+#: htdocs/luci-static/resources/fchomo/listeners.js:604
+#: htdocs/luci-static/resources/view/fchomo/node.js:552
+#: htdocs/luci-static/resources/view/fchomo/node.js:594
+#: htdocs/luci-static/resources/view/fchomo/node.js:924
+#: htdocs/luci-static/resources/view/fchomo/node.js:983
msgid "v1"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:465
-#: htdocs/luci-static/resources/fchomo/listeners.js:597
-#: htdocs/luci-static/resources/view/fchomo/node.js:543
-#: htdocs/luci-static/resources/view/fchomo/node.js:905
-#: htdocs/luci-static/resources/view/fchomo/node.js:956
+#: htdocs/luci-static/resources/fchomo/listeners.js:605
+#: htdocs/luci-static/resources/view/fchomo/node.js:553
+#: htdocs/luci-static/resources/view/fchomo/node.js:925
+#: htdocs/luci-static/resources/view/fchomo/node.js:984
msgid "v2"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:466
-#: htdocs/luci-static/resources/fchomo/listeners.js:598
-#: htdocs/luci-static/resources/view/fchomo/node.js:544
-#: htdocs/luci-static/resources/view/fchomo/node.js:906
+#: htdocs/luci-static/resources/fchomo/listeners.js:606
+#: htdocs/luci-static/resources/view/fchomo/node.js:554
+#: htdocs/luci-static/resources/view/fchomo/node.js:926
msgid "v3"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:467
-#: htdocs/luci-static/resources/view/fchomo/node.js:545
+#: htdocs/luci-static/resources/fchomo/listeners.js:464
+#: htdocs/luci-static/resources/view/fchomo/node.js:555
msgid "v4"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:468
-#: htdocs/luci-static/resources/view/fchomo/node.js:546
+#: htdocs/luci-static/resources/fchomo/listeners.js:465
+#: htdocs/luci-static/resources/view/fchomo/node.js:556
msgid "v5"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1508
-#: htdocs/luci-static/resources/fchomo.js:1511
+#: htdocs/luci-static/resources/fchomo.js:1858
+#: htdocs/luci-static/resources/fchomo.js:1861
msgid "valid JSON format"
msgstr "有效的 JSON 格式"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1144
+#: htdocs/luci-static/resources/view/fchomo/node.js:1173
msgid "valid SHA256 string with %d characters"
msgstr "包含 %d 個字元的有效 SHA256 字串"
-#: htdocs/luci-static/resources/fchomo.js:1533
-#: htdocs/luci-static/resources/fchomo.js:1536
+#: htdocs/luci-static/resources/fchomo.js:1883
+#: htdocs/luci-static/resources/fchomo.js:1886
msgid "valid URL"
msgstr "有效網址"
-#: htdocs/luci-static/resources/fchomo.js:1546
+#: htdocs/luci-static/resources/fchomo.js:1896
msgid "valid base64 key with %d characters"
msgstr "包含 %d 個字元的有效 base64 金鑰"
-#: htdocs/luci-static/resources/fchomo.js:1606
-#: htdocs/luci-static/resources/fchomo.js:1612
+#: htdocs/luci-static/resources/fchomo.js:1956
+#: htdocs/luci-static/resources/fchomo.js:1962
msgid "valid format: 2x, 2p, 4v"
msgstr "有效格式: 2x, 2p, 4v"
-#: htdocs/luci-static/resources/fchomo.js:1593
+#: htdocs/luci-static/resources/fchomo.js:1943
msgid "valid key length with %d characters"
msgstr "包含 %d 個字元的有效金鑰"
-#: htdocs/luci-static/resources/fchomo.js:1471
+#: htdocs/luci-static/resources/fchomo.js:1821
msgid "valid port value"
msgstr "有效連接埠值"
-#: htdocs/luci-static/resources/fchomo.js:1521
+#: htdocs/luci-static/resources/fchomo.js:1871
msgid "valid uuid"
msgstr "有效 uuid"
@@ -3953,23 +4018,23 @@ msgstr ""
msgid "xchacha20-ietf-poly1305"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:77
+#: htdocs/luci-static/resources/fchomo.js:78
msgid "yacd-meta"
msgstr "yacd-meta"
-#: htdocs/luci-static/resources/view/fchomo/node.js:1437
+#: htdocs/luci-static/resources/view/fchomo/node.js:1466
msgid "yamux"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:75
+#: htdocs/luci-static/resources/fchomo.js:76
msgid "zashboard"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:695
+#: htdocs/luci-static/resources/view/fchomo/node.js:705
msgid "zero"
msgstr ""
-#: htdocs/luci-static/resources/fchomo.js:1289
+#: htdocs/luci-static/resources/fchomo.js:1639
msgid "🡇"
msgstr ""
diff --git a/luci-app-fchomo/root/usr/share/fchomo/generate_client.uc b/luci-app-fchomo/root/usr/share/fchomo/generate_client.uc
index 569efab3..37bfc9bb 100644
--- a/luci-app-fchomo/root/usr/share/fchomo/generate_client.uc
+++ b/luci-app-fchomo/root/usr/share/fchomo/generate_client.uc
@@ -121,7 +121,7 @@ function parse_filter(cfg) {
return cfg;
}
-function get_proxy(cfg) {
+function get_proxy(cfg, pass_undefined) {
if (isEmpty(cfg))
return null;
@@ -129,9 +129,12 @@ function get_proxy(cfg) {
return cfg;
const label = uci.get(uciconf, cfg, 'label');
- if (isEmpty(label))
- die(sprintf("%s's label is missing, please check your configuration.", cfg));
- else
+ if (isEmpty(label)) {
+ if (pass_undefined)
+ return cfg;
+ else
+ die(sprintf("%s's label is missing, please check your configuration.", cfg));
+ } else
return label;
}
@@ -440,6 +443,7 @@ if (!isEmpty(config.dns.fallback))
ipcidr: uci.get(uciconf, ucidns, 'fallback_filter_ipcidr') || [],
domain: uci.get(uciconf, ucidns, 'fallback_filter_domain') || [],
};
+config.dns["fallback-lazy-query"] = strToBool(uci.get(uciconf, ucidns, 'fallback_lazy_query'));
/* DNS END */
/* Hosts START */
@@ -559,10 +563,6 @@ uci.foreach(uciconf, ucinode, (cfg) => {
psk: cfg.snell_psk,
version: cfg.snell_version,
reuse: strToBool(cfg.snell_reuse),
- "obfs-opts": cfg.type === 'snell' ? {
- mode: cfg.plugin_opts_obfsmode,
- host: cfg.plugin_opts_host,
- } : null,
/* TUIC */
ip: cfg.tuic_ip,
@@ -610,19 +610,35 @@ uci.foreach(uciconf, ucinode, (cfg) => {
"persistent-keepalive": strToInt(cfg.wireguard_persistent_keepalive),
/* Plugin fields */
- plugin: cfg.plugin,
- "plugin-opts": cfg.plugin ? {
- mode: cfg.plugin_opts_obfsmode,
- host: cfg.plugin_opts_host,
- password: cfg.plugin_opts_thetlspassword,
- version: strToInt(cfg.plugin_opts_shadowtls_version),
- "version-hint": cfg.plugin_opts_restls_versionhint,
- "restls-script": cfg.plugin_opts_restls_script
- } : null,
+ ...(cfg.plugin ? (
+ cfg.type === 'snell' ? {
+ // snell
+ "obfs-opts": {
+ mode: cfg.plugin in ['shadow-tls'] ? cfg.plugin : cfg.plugin_opts_obfsmode,
+ host: cfg.plugin_opts_host,
+ password: cfg.plugin_opts_thetlspassword,
+ version: strToInt(cfg.plugin_opts_shadowtls_version),
+ alpn: cfg.tls_alpn // Array
+ }
+ } : {
+ // others
+ plugin: cfg.plugin,
+ "plugin-opts": {
+ mode: cfg.plugin_opts_obfsmode,
+ host: cfg.plugin_opts_host,
+ password: cfg.plugin_opts_thetlspassword,
+ version: strToInt(cfg.plugin_opts_shadowtls_version),
+ alpn: cfg.tls_alpn, // Array
+ "version-hint": cfg.plugin_opts_restls_versionhint,
+ "restls-script": cfg.plugin_opts_restls_script
+ }
+ }
+ ) : {}),
/* Extra fields */
"congestion-controller": cfg.congestion_controller,
"bbr-profile": cfg.bbr_profile,
+ "handshake-timeout": strToInt(cfg.handshake_timeout),
udp: strToBool(cfg.udp),
"udp-over-tcp": strToBool(cfg.uot),
"udp-over-tcp-version": cfg.uot_version,
@@ -633,7 +649,7 @@ uci.foreach(uciconf, ucinode, (cfg) => {
"disable-sni": strToBool(cfg.tls_disable_sni),
...arrToObj([[(cfg.type in ['vmess', 'vless']) ? 'servername' : 'sni', cfg.tls_sni]]),
fingerprint: cfg.tls_fingerprint,
- alpn: cfg.tls_alpn, // Array
+ alpn: cfg.plugin in ['shadow-tls'] ? null : cfg.tls_alpn, // Array
"skip-cert-verify": strToBool(cfg.tls_skip_cert_verify),
certificate: cfg.tls_cert_path, // mTLS
"private-key": cfg.masque_private_key || cfg.wireguard_private_key || cfg.ssh_priv_key || cfg.tls_key_path, // mTLS/SSH/WireGuard/Masque
@@ -744,7 +760,9 @@ uci.foreach(uciconf, ucipgrp, (cfg) => {
"include-all": strToBool(cfg.include_all),
"include-all-proxies": strToBool(cfg.include_all_proxies),
"include-all-providers": strToBool(cfg.include_all_providers),
- "empty-fallback": cfg.empty_fallback ? get_proxy(cfg.empty_fallback) : null,
+ "empty-fallback": cfg.empty_fallback ? get_proxy(cfg.empty_fallback, true) : null,
+ // Select fields
+ "default-selected": cfg.default_selected ? get_proxy(cfg.default_selected, true) : null,
// Url-test fields
tolerance: (cfg.type === 'url-test') ? strToInt(cfg.tolerance) ?? 150 : null,
// Load-balance fields
diff --git a/luci-app-fchomo/root/usr/share/ucode/fchomo.uc b/luci-app-fchomo/root/usr/share/ucode/fchomo.uc
index 4e811211..b01edc2c 100644
--- a/luci-app-fchomo/root/usr/share/ucode/fchomo.uc
+++ b/luci-app-fchomo/root/usr/share/ucode/fchomo.uc
@@ -307,10 +307,6 @@ export function parseListener(cfg, isClient, label) {
/* Snell */
psk: cfg.snell_psk,
version: cfg.snell_version,
- "obfs-opts": cfg.type === 'snell' ? {
- mode: cfg.plugin_opts_obfsmode,
- host: cfg.plugin_opts_host,
- } : null,
/* Tuic */
"max-idle-time": durationToSecond(cfg.tuic_max_idle_time),
@@ -334,29 +330,41 @@ export function parseListener(cfg, isClient, label) {
target: cfg.tunnel_target,
/* Plugin fields */
- ...(cfg.plugin ? {
+ ...(cfg.plugin ? (
+ cfg.plugin === 'obfs' ? (
// obfs-simple
- "simple-obfs": cfg.plugin === 'obfs' ? {
- enable: true,
- mode: cfg.plugin_opts_obfsmode
- } : null,
+ cfg.type === 'snell' ? {
+ // snell
+ "obfs-opts": {
+ mode: cfg.plugin_opts_obfsmode,
+ host: cfg.plugin_opts_host
+ }
+ } : {
+ // shadowsocks
+ "simple-obfs": {
+ enable: true,
+ mode: cfg.plugin_opts_obfsmode
+ }
+ }
+ ) : cfg.plugin === 'shadow-tls' ? {
// shadow-tls
- "shadow-tls": cfg.plugin === 'shadow-tls' ? {
- enable: true,
- version: strToInt(cfg.plugin_opts_shadowtls_version),
- ...(strToInt(cfg.plugin_opts_shadowtls_version) >= 3 ? {
- users: [
- {
- name: 1,
- password: cfg.plugin_opts_thetlspassword
- }
- ],
- } : { password: cfg.plugin_opts_thetlspassword }),
- handshake: {
- dest: cfg.plugin_opts_handshake_dest
- },
- } : null
- } : {}),
+ "shadow-tls": {
+ enable: true,
+ version: strToInt(cfg.plugin_opts_shadowtls_version),
+ ...(strToInt(cfg.plugin_opts_shadowtls_version) >= 3 ? {
+ users: [
+ {
+ name: 1,
+ password: cfg.plugin_opts_thetlspassword
+ }
+ ],
+ } : { password: cfg.plugin_opts_thetlspassword }),
+ handshake: {
+ dest: cfg.plugin_opts_handshake_dest
+ }
+ }
+ } : {}
+ ) : {}),
/* Extra fields */
"congestion-controller": cfg.congestion_controller,
diff --git a/luci-app-lite-watchdog/Makefile b/luci-app-lite-watchdog/Makefile
index a7f38cc2..c98aca68 100644
--- a/luci-app-lite-watchdog/Makefile
+++ b/luci-app-lite-watchdog/Makefile
@@ -12,8 +12,8 @@ PKG_MAINTAINER:=Rafał Wabik <4Rafal@gmail.com>
LUCI_DESCRIPTION:=LuCI JS interface for the lite-watchdog scripts.
LUCI_DEPENDS:=+sms-tool +kmod-usb-serial +kmod-usb-serial-option +comgt
LUCI_PKGARCH:=all
-PKG_VERSION:=1.0.17
-PKG_RELEASE:=2
+PKG_VERSION:=1.0.18
+PKG_RELEASE:=3
define Package/luci-app-lite-watchdog/conffiles
/etc/modem/log.txt
diff --git a/luci-app-lite-watchdog/htdocs/luci-static/resources/view/modem/watchdog.js b/luci-app-lite-watchdog/htdocs/luci-static/resources/view/modem/watchdog.js
index a99bcdf7..e581b893 100644
--- a/luci-app-lite-watchdog/htdocs/luci-static/resources/view/modem/watchdog.js
+++ b/luci-app-lite-watchdog/htdocs/luci-static/resources/view/modem/watchdog.js
@@ -241,6 +241,7 @@ return view.extend({
o.value('wan', _('Connection restart'));
o.value('reboot', _('Reboot'));
o.default = action || "wan";
+ o.rmempty = false;
}
return m.render();
diff --git a/luci-theme-aurora/.dev/src/media/_tokens.css b/luci-theme-aurora/.dev/src/media/_tokens.css
index 37e619b9..3adbc350 100644
--- a/luci-theme-aurora/.dev/src/media/_tokens.css
+++ b/luci-theme-aurora/.dev/src/media/_tokens.css
@@ -9,7 +9,7 @@
--bg: oklch(0.967 0.003 264);
--surface: oklch(1 0 0);
--text: oklch(0.21 0.02 264);
- --brand: oklch(0.68 0.11 233);
+ --brand: oklch(0.58 0.14 233);
--on-brand: oklch(1 0 0);
--link: oklch(0.74 0.238 322.16);
--info: oklch(0.45 0.12 255);
@@ -18,16 +18,16 @@
--danger: oklch(0.35 0.12 25);
--text-muted: oklch(49.77% 0.0135 264);
--text-subtle: oklch(60.36% 0.0112 264);
- --surface-sunken: oklch(95.7% 0.003 264);
+ --surface-sunken: oklch(95.5% 0.003 264);
--surface-overlay: oklch(98.3% 0.003 264);
- --hairline: oklch(21% 0.02 264 / 0.08);
+ --hairline: oklch(21% 0.02 264 / 0.13);
--hover-faint: oklch(92.7% 0.003 264);
- --brand-hover: oklch(62% 0.11 233);
- --brand-subtle: oklch(93.26% 0.0155 238);
- --brand-subtle-hover: oklch(89.26% 0.0155 238);
- --focus-ring: oklch(68% 0.11 233 / 0.6);
- --progress-start: oklch(77.7% 0.0724 233.4);
- --progress-end: oklch(0.68 0.11 233);
+ --brand-hover: oklch(52% 0.14 233);
+ --brand-subtle: oklch(92.06% 0.0191 237.1);
+ --brand-subtle-hover: oklch(88.06% 0.0191 237.1);
+ --focus-ring: oklch(58% 0.14 233 / 0.6);
+ --progress-start: oklch(71.13% 0.0919 233.3);
+ --progress-end: oklch(0.58 0.14 233);
--info-surface: oklch(94% 0.05 255);
--warning-surface: oklch(95% 0.05 60);
--success-surface: oklch(94% 0.05 165);
diff --git a/luci-theme-aurora/.dev/src/media/components/_input.css b/luci-theme-aurora/.dev/src/media/components/_input.css
index f9b49a18..067190d2 100644
--- a/luci-theme-aurora/.dev/src/media/components/_input.css
+++ b/luci-theme-aurora/.dev/src/media/components/_input.css
@@ -6,7 +6,7 @@ input[type="text"],
input[type="password"],
.cbi-input-text,
.cbi-input {
- @apply text-text border-hairline bg-surface-sunken placeholder-text-muted focus:border-brand focus:ring-focus-ring relative rounded-2xl border px-3 py-1.5 text-sm font-normal shadow-sm transition-[border-color,box-shadow] duration-150 focus:ring-2 focus:outline-none;
+ @apply text-text border-hairline bg-surface-overlay dark:bg-surface-sunken placeholder-text-muted focus:border-brand focus:ring-focus-ring relative rounded-2xl border px-3 py-1.5 text-sm font-normal shadow-sm transition-[border-color,box-shadow] duration-150 focus:ring-2 focus:outline-none;
.table.cbi-section-table & {
@apply w-full;
@@ -23,7 +23,7 @@ input[type="password"],
input[type="radio"],
input[type="checkbox"] {
- @apply focus:before:border-brand focus:before:ring-focus-ring checked:before:border-brand checked:before:bg-brand before:border-hairline before:bg-surface-sunken after:bg-on-brand hover:before:border-hairline relative mr-3 inline-block h-4 w-4 cursor-pointer appearance-none before:absolute before:top-0 before:left-0 before:h-4 before:w-4 before:border before:transition-[background-color,border-color,box-shadow] before:duration-150 after:absolute after:top-0.5 after:left-0.5 after:h-3 after:w-3 after:opacity-0 after:transition-opacity after:duration-150 checked:after:opacity-100 focus:before:ring-2 focus:before:outline-none disabled:cursor-not-allowed;
+ @apply focus:before:border-brand focus:before:ring-focus-ring checked:before:border-brand checked:before:bg-brand before:border-hairline before:bg-surface-overlay dark:before:bg-surface-sunken after:bg-on-brand hover:before:border-hairline relative mr-3 inline-block h-4 w-4 cursor-pointer appearance-none before:absolute before:top-0 before:left-0 before:h-4 before:w-4 before:border before:transition-[background-color,border-color,box-shadow] before:duration-150 after:absolute after:top-0.5 after:left-0.5 after:h-3 after:w-3 after:opacity-0 after:transition-opacity after:duration-150 checked:after:opacity-100 focus:before:ring-2 focus:before:outline-none disabled:cursor-not-allowed;
}
input[type="radio"] {
diff --git a/luci-theme-aurora/.dev/src/media/components/_select.css b/luci-theme-aurora/.dev/src/media/components/_select.css
index f83993db..7890f037 100644
--- a/luci-theme-aurora/.dev/src/media/components/_select.css
+++ b/luci-theme-aurora/.dev/src/media/components/_select.css
@@ -1,5 +1,5 @@
select {
- @apply text-text border-hairline bg-surface-sunken focus:border-brand focus:ring-focus-ring appearance-none rounded-2xl border px-3 py-1.5 pr-10 text-sm font-normal shadow-sm transition-[border-color,box-shadow] duration-150 focus:ring-2 focus:outline-none;
+ @apply text-text border-hairline bg-surface-overlay dark:bg-surface-sunken focus:border-brand focus:ring-focus-ring appearance-none rounded-2xl border px-3 py-1.5 pr-10 text-sm font-normal shadow-sm transition-[border-color,box-shadow] duration-150 focus:ring-2 focus:outline-none;
@apply bg-[url('@assets/icons/arrow-down.svg')] bg-size-[16px] bg-position-[right_0.75rem_center] bg-no-repeat dark:bg-[url('@assets/icons/arrow-down-dark.svg')];
&[disabled] {
@apply cursor-not-allowed opacity-40 dark:opacity-30;
diff --git a/luci-theme-aurora/.dev/src/media/components/_textarea.css b/luci-theme-aurora/.dev/src/media/components/_textarea.css
index cf1aa0eb..db3da8d0 100644
--- a/luci-theme-aurora/.dev/src/media/components/_textarea.css
+++ b/luci-theme-aurora/.dev/src/media/components/_textarea.css
@@ -1,5 +1,5 @@
textarea {
- @apply text-text border-hairline bg-surface-sunken placeholder-text-muted focus:border-brand focus:ring-focus-ring min-h-24 w-full resize-y rounded-2xl border px-3 py-2 text-sm font-normal shadow-sm transition-[border-color,box-shadow] duration-150 focus:ring-2 focus:outline-none;
+ @apply text-text border-hairline bg-surface-overlay dark:bg-surface-sunken placeholder-text-muted focus:border-brand focus:ring-focus-ring min-h-24 w-full resize-y rounded-2xl border px-3 py-2 text-sm font-normal shadow-sm transition-[border-color,box-shadow] duration-150 focus:ring-2 focus:outline-none;
&[disabled] {
@apply cursor-not-allowed opacity-40 dark:opacity-30;
}
diff --git a/luci-theme-aurora/.dev/src/media/login.css b/luci-theme-aurora/.dev/src/media/login.css
index f2fa5e4c..6f71c96d 100644
--- a/luci-theme-aurora/.dev/src/media/login.css
+++ b/luci-theme-aurora/.dev/src/media/login.css
@@ -92,7 +92,7 @@
}
.input-wrap {
- @apply border-hairline bg-surface-sunken relative rounded-2xl border [contain:layout_style];
+ @apply border-hairline bg-surface-overlay dark:bg-surface-sunken relative rounded-2xl border [contain:layout_style];
}
/* Focus ring: opacity-only transition runs on compositor thread, not main thread —
diff --git a/luci-theme-aurora/.dev/tokens/defaults.js b/luci-theme-aurora/.dev/tokens/defaults.js
index e2554606..543cdec3 100644
--- a/luci-theme-aurora/.dev/tokens/defaults.js
+++ b/luci-theme-aurora/.dev/tokens/defaults.js
@@ -4,7 +4,7 @@ export const DEFAULTS = {
bg: "oklch(0.967 0.003 264)",
surface: "oklch(1 0 0)",
text: "oklch(0.21 0.02 264)",
- brand: "oklch(0.68 0.11 233)",
+ brand: "oklch(0.58 0.14 233)",
on_brand: "oklch(1 0 0)",
link: "oklch(0.74 0.238 322.16)",
info: "oklch(0.45 0.12 255)",
diff --git a/luci-theme-aurora/.dev/tokens/spec.js b/luci-theme-aurora/.dev/tokens/spec.js
index 8ef369d6..c3f6e2ce 100644
--- a/luci-theme-aurora/.dev/tokens/spec.js
+++ b/luci-theme-aurora/.dev/tokens/spec.js
@@ -4,9 +4,9 @@ export const DERIVATIONS = {
light: {
text_muted: ["mix", "text", "bg", 0.62],
text_subtle: ["mix", "text", "bg", 0.48],
- surface_sunken: ["shade", "bg", -0.010],
+ surface_sunken: ["shade", "bg", -0.012],
surface_overlay: ["shade", "bg", 0.016],
- hairline: ["alpha", "text", 0.08],
+ hairline: ["alpha", "text", 0.13],
hover_faint: ["shade", "bg", -0.04],
brand_hover: ["shade", "brand", -0.06],
brand_subtle: ["mix", "brand", "bg", 0.12],
diff --git a/luci-theme-aurora/Makefile b/luci-theme-aurora/Makefile
index 2267bce0..cfbb2317 100644
--- a/luci-theme-aurora/Makefile
+++ b/luci-theme-aurora/Makefile
@@ -8,8 +8,8 @@ include $(TOPDIR)/rules.mk
LUCI_TITLE:=Aurora Theme (A modern browser theme built with Vite and Tailwind CSS)
LUCI_DEPENDS:=+luci-base
-PKG_VERSION:=1.0.6
-PKG_RELEASE:=40
+PKG_VERSION:=1.0.7
+PKG_RELEASE:=41
PKG_LICENSE:=Apache-2.0
LUCI_MINIFY_CSS:=
diff --git a/luci-theme-aurora/htdocs/luci-static/aurora/login.css b/luci-theme-aurora/htdocs/luci-static/aurora/login.css
index a725cae3..bf12b7a2 100644
--- a/luci-theme-aurora/htdocs/luci-static/aurora/login.css
+++ b/luci-theme-aurora/htdocs/luci-static/aurora/login.css
@@ -1,2 +1,2 @@
/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */
-@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-content:"";--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-tracking:initial}}:root,:host{--font-sans:var(--font-sans);--font-mono:var(--font-mono);--spacing:var(--spacing);--container-md:28rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--tracking-widest:.1em;--radius-sm:calc(var(--radius-base)*.25);--radius-md:calc(var(--radius-base)*.75);--radius-lg:var(--radius-base);--radius-xl:calc(var(--radius-base)*1.5);--radius-2xl:calc(var(--radius-base)*2);--radius-3xl:calc(var(--radius-base)*3);--radius-4xl:calc(var(--radius-base)*4);--shadow-sm:var(--app-shadow-sm);--shadow-md:var(--app-shadow-md);--shadow-lg:var(--app-shadow-md);--shadow-xl:var(--app-shadow-lg);--shadow-2xl:var(--app-shadow-lg);--animate-spin:spin 1s linear infinite;--blur-lg:16px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--radius:calc(var(--radius-base)*.5);--container-max-width:var(--container-max-width)}*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.static{position:static}.inset-x-0{inset-inline:calc(var(--spacing)*0)}.top-0{top:calc(var(--spacing)*0)}.top-14{top:calc(var(--spacing)*14)}.z-0{z-index:0}.z-10{z-index:10}.z-70{z-index:70}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.block{display:block}.grid{display:grid}.hidden{display:none}.inline{display:inline}.table{display:table}.h-14{height:calc(var(--spacing)*14)}.h-\[calc\(var\(--mega-menu-height\,0px\)\+3\.5rem\)\]{height:calc(var(--mega-menu-height,0px) + 3.5rem)}.h-\[calc\(var\(--mega-menu-height\,0px\)\+3\.5rem\+3rem\)\]{height:calc(var(--mega-menu-height,0px) + 3.5rem + 3rem)}.max-h-\[calc\(100dvh-3\.5rem\)\]{max-height:calc(100dvh - 3.5rem)}.shrink{flex-shrink:1}.grow{flex-grow:1}.-translate-y-full{--tw-translate-y:-100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-full{--tw-translate-y:100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.resize{resize:both}.grid-rows-\[0fr\]{grid-template-rows:0fr}.grid-rows-\[1fr\]{grid-template-rows:1fr}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-clip{overflow:clip}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-y-auto{overflow-y:auto}.overscroll-contain{overscroll-behavior:contain}.rounded{border-radius:calc(var(--radius-base)*.5)}.rounded-2xl{border-radius:calc(var(--radius-base)*2)}.rounded-lg{border-radius:var(--radius-base)}.border{border-style:var(--tw-border-style);border-width:1px}.border-hairline{border-color:var(--hairline)}.bg-brand-subtle{background-color:var(--brand-subtle)}.bg-mega-menu-bg{background-color:var(--mega-menu-bg)}.bg-mega-menu-scrim{background-color:var(--mega-menu-scrim)}.bg-surface{background-color:var(--surface)}.bg-surface-sunken{background-color:var(--surface-sunken)}.px-3{padding-inline:calc(var(--spacing)*3)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.pl-4{padding-left:calc(var(--spacing)*4)}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-brand{color:var(--brand)}.text-text{color:var(--text)}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:var(--app-shadow-md);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-lg{--tw-backdrop-blur:blur(var(--blur-lg));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[grid-template-rows\,opacity\]{transition-property:grid-template-rows,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[translate\]{transition-property:translate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-\(--mega-menu-duration\,300ms\){--tw-duration:var(--mega-menu-duration,.3s);transition-duration:var(--mega-menu-duration,.3s)}.duration-\[220ms\]{--tw-duration:.22s;transition-duration:.22s}.duration-\[250ms\]{--tw-duration:.25s;transition-duration:.25s}.after\:rotate-90:after{content:var(--tw-content);rotate:90deg}.after\:transition-\[transform\,opacity\]:after{content:var(--tw-content);transition-property:transform,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.after\:duration-\[250ms\]:after{content:var(--tw-content);--tw-duration:.25s;transition-duration:.25s}@media (hover:hover){.hover\:bg-hover-faint:hover{background-color:var(--hover-faint)}.hover\:text-brand:hover{color:var(--brand)}.hover\:text-text:hover{color:var(--text)}}@media not all and (min-width:48rem){.max-md\:min-h-10{min-height:calc(var(--spacing)*10)}.max-md\:bg-mega-menu-bg{background-color:var(--mega-menu-bg)}.max-md\:bg-scrim{background-color:var(--scrim)}.max-md\:p-1{padding:calc(var(--spacing)*1)}.max-md\:px-3{padding-inline:calc(var(--spacing)*3)}.max-md\:py-2{padding-block:calc(var(--spacing)*2)}.max-md\:pl-4{padding-left:calc(var(--spacing)*4)}.max-md\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.max-md\:backdrop-blur-lg{--tw-backdrop-blur:blur(var(--blur-lg));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}}:root{--bg:#f3f4f6;--surface:#fff;--text:#141822;--brand:#46a3d1;--on-brand:#fff;--link:#ec6cff;--info:#1f5596;--warning:#582f02;--success:#003d2a;--danger:#6c1517;--text-muted:#5f636b;--text-subtle:#7e8188;--surface-sunken:#f0f1f3;--surface-overlay:#f8f9fb;--hairline:#14182214;--hover-faint:#e6e7e9;--brand-hover:#3191bd;--brand-subtle:#e0eaf2;--brand-subtle-hover:#d3dde5;--focus-ring:#46a3d199;--progress-start:#88bfde;--progress-end:#46a3d1;--info-surface:#dbedff;--warning-surface:#ffe9d6;--success-surface:#cdf6e3;--danger-surface:#ffe2df;--danger-surface-hover:#fed2cd;--scrim:#0009;--mega-menu-bg:#f8f9fb;--mega-menu-scrim:#00000052;--app-shadow-sm:0 1px 3px #0000000f,0 1px 2px #0000000a;--app-shadow-md:0 4px 16px #00000014,0 1px 3px #0000000a;--app-shadow-lg:0 12px 32px #0000001f;--font-sans:"Lato",ui-sans-serif,system-ui,sans-serif;--font-mono:ui-monospace,"SF Mono",Menlo,Monaco,Consolas,monospace;--spacing:.25rem;--container-max-width:80rem;--radius-base:.5rem}@supports (color:lab(0% 0 0)){:root{--bg:lab(96.16% -.0918508 -1.13479);--surface:lab(100% 0 0);--text:lab(8.24713% -.0405461 -7.31381);--brand:lab(63.0437% -17.6746 -32.0381);--on-brand:lab(100% 0 0);--link:lab(66.1178% 66.0652 -52.4733);--info:lab(35.3965% .70706 -41.3493);--warning:lab(24.2528% 17.0621 33.1082);--success:lab(22.3041% -31.6825 8.84454);--danger:lab(23.385% 37.9736 23.5817);--text-muted:lab(41.6736% -.316054 -5.05283);--text-subtle:lab(53.9698% -.291258 -4.20712);--surface-sunken:lab(95% -.0917912 -1.13479);--surface-overlay:lab(98.016% -.0918806 -1.13482);--hairline:lab(8.24713% -.0405461 -7.31381/.08);--hover-faint:lab(91.52% -.0917316 -1.13473);--brand-hover:lab(56.0629% -17.1914 -31.9377);--brand-subtle:lab(92.212% -2.66662 -4.99353);--brand-subtle-hover:lab(87.5719% -2.66373 -4.99202);--focus-ring:lab(63.0437% -17.6746 -32.0381/.6);--progress-start:lab(74.2906% -12.7943 -21.5483);--progress-end:lab(63.0437% -17.6746 -32.0381);--info-surface:lab(92.9035% -3.38969 -18.021);--warning-surface:lab(94.0827% 8.92592 17.0212);--success-surface:lab(93.7117% -16.5752 4.79031);--danger-surface:lab(92.5749% 15.3735 8.32583);--danger-surface-hover:lab(87.9346% 15.3784 8.33243);--scrim:lab(0% 0 0/.6);--mega-menu-bg:lab(98.016% -.0918806 -1.13482);--mega-menu-scrim:lab(0% 0 0/.32);--app-shadow-sm:0 1px 3px lab(0% 0 0/.06),0 1px 2px lab(0% 0 0/.04);--app-shadow-md:0 4px 16px lab(0% 0 0/.08),0 1px 3px lab(0% 0 0/.04);--app-shadow-lg:0 12px 32px lab(0% 0 0/.12)}}[data-darkmode=true]{--bg:#05070e;--surface:#141822;--text:#f9fafb;--brand:#00958e;--on-brand:#fff;--link:#3bd0a3;--info:#90c1ff;--warning:#f0ba59;--success:#51bd85;--danger:#f17070;--text-muted:#909297;--text-subtle:#5d6067;--surface-sunken:#0a0e17;--surface-overlay:#181d27;--hairline:#f9fafb1a;--hover-faint:#f9fafb0d;--brand-hover:#00837d;--brand-subtle:#061a20;--brand-subtle-hover:#0f242a;--focus-ring:#00958e99;--progress-start:#006261;--progress-end:#00958e;--info-surface:#21344c;--warning-surface:#45310b;--success-surface:#153524;--danger-surface:#541f20;--danger-surface-hover:#602a2a;--scrim:#0009;--mega-menu-bg:#0a0e17;--mega-menu-scrim:#00000080;--app-shadow-sm:0 4px 12px #0000004d;--app-shadow-md:0 10px 28px #0000006b;--app-shadow-lg:0 20px 48px #0000008c}@supports (color:lab(0% 0 0)){[data-darkmode=true]{--bg:lab(1.93894% .0855997 -3.22397);--surface:lab(8.24713% -.0405461 -7.31381);--text:lab(98.252% -.0618994 -.756907);--brand:lab(55.0978% -44.5567 -7.62978);--on-brand:lab(100% 0 0);--link:lab(75.1723% -48.4917 10.7875);--info:lab(76.3382% -4.43128 -38.7);--warning:lab(79.1996% 12.6808 55.9505);--success:lab(69.2339% -42.392 18.6731);--danger:lab(63.5705% 50.8105 25.3639);--text-muted:lab(60.5379% -.225931 -3.05105);--text-subtle:lab(40.6865% -.278354 -4.23647);--surface-sunken:lab(3.9802% .0812709 -5.64623);--surface-overlay:lab(10.5702% -.0939444 -7.33123);--hairline:lab(98.252% -.0618994 -.756907/.1);--hover-faint:lab(98.252% -.0618994 -.756907/.05);--brand-hover:lab(49.2976% -44.6964 -7.56882);--brand-subtle:lab(7.95734% -6.34954 -6.72844);--brand-subtle-hover:lab(12.602% -6.92477 -6.76408);--focus-ring:lab(55.0986% -44.5682 -7.59286/.6);--progress-start:lab(36.8833% -28.7182 -7.50749);--progress-end:lab(55.0978% -44.5567 -7.62978);--info-surface:lab(20.893% -1.69295 -17.5199);--warning-surface:lab(22.2973% 6.18184 26.7927);--success-surface:lab(19.4608% -16.2551 7.16286);--danger-surface:lab(20.3014% 25.4342 12.827);--danger-surface-hover:lab(24.9464% 25.3964 12.6412);--scrim:lab(0% 0 0/.6);--mega-menu-bg:lab(3.9802% .0812709 -5.64623);--mega-menu-scrim:lab(0% 0 0/.5);--app-shadow-sm:0 4px 12px lab(0% 0 0/.3);--app-shadow-md:0 10px 28px lab(0% 0 0/.42);--app-shadow-lg:0 20px 48px lab(0% 0 0/.55)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-property:none!important;animation:none!important}.spinning:before{animation:var(--animate-spin)!important}}html{background-color:var(--bg);min-height:100dvh;font-family:var(--font-sans)}html body{background-color:var(--bg);min-height:100dvh}@keyframes divider-in{0%{opacity:0;transform:scaleX(.15)}}.login-screen{min-height:100dvh;padding-inline:calc(var(--spacing)*5);padding-bottom:calc(var(--spacing)*14);flex-direction:column;justify-content:center;align-items:center;display:flex;position:relative}.login-shell{width:100%;max-width:var(--container-md)}.login-bg{pointer-events:none;inset:calc(var(--spacing)*0);background-image:var(--login-bg-lqip,var(--login-bg));background-position:50%;background-repeat:no-repeat;background-size:cover;position:fixed;transform:translateZ(0)}.login-bg:after{pointer-events:none;inset:calc(var(--spacing)*0);background-image:var(--login-bg);opacity:0;will-change:opacity;--tw-content:"";content:var(--tw-content);background-position:50%;background-repeat:no-repeat;background-size:cover;transition:opacity .5s;position:absolute}.login-bg.full-loaded:after{opacity:1}.login-card{gap:calc(var(--spacing)*7);border-radius:calc(var(--radius-base)*4);background-color:var(--surface);padding:calc(var(--spacing)*14);--tw-shadow:var(--app-shadow-md);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);flex-direction:column;display:flex}@media not all and (min-width:48rem){.login-card{border-radius:calc(var(--radius-base)*3);padding:calc(var(--spacing)*9)}}.login-brand{align-items:center;gap:calc(var(--spacing)*3.5);display:flex}.login-divider{border-style:var(--tw-border-style);--tw-gradient-position:to right;border-width:0;width:100%;height:1px;animation:.7s cubic-bezier(.16,1,.3,1) .1s both divider-in}@supports (background-image:linear-gradient(in lab, red, red)){.login-divider{--tw-gradient-position:to right in oklab}}.login-divider{background-image:linear-gradient(var(--tw-gradient-stops));--tw-gradient-from:transparent;--tw-gradient-via:var(--hairline);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position));--tw-gradient-to:transparent}.login-logo{height:calc(var(--spacing)*11);width:calc(var(--spacing)*11);border-radius:calc(var(--radius-base)*2);background-color:var(--brand-subtle);--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--brand-subtle);flex-shrink:0;justify-content:center;align-items:center;display:flex}.login-logo img{height:calc(var(--spacing)*6);width:calc(var(--spacing)*6)}.login-title{gap:calc(var(--spacing)*1);flex-direction:column;display:flex}.login-hostname{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight);color:var(--text)}.login-subtitle{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--text)}.login-form{gap:calc(var(--spacing)*5);flex-direction:column;display:flex}.login-fields{gap:calc(var(--spacing)*4);flex-direction:column;display:flex}.login-field{gap:calc(var(--spacing)*2);flex-direction:column;display:flex}.login-label{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest);color:var(--text);text-transform:uppercase}.input-wrap{border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface-sunken);contain:layout style;position:relative}.input-wrap:after{pointer-events:none;border-radius:calc(var(--radius-2xl) + 1px);border-style:var(--tw-border-style);border-width:2px;border-color:var(--brand);opacity:0;will-change:opacity;--tw-content:"";content:var(--tw-content);transition:opacity .15s;position:absolute;inset:-1px}.input-wrap:focus-within:after{opacity:1}.login-input{appearance:none;border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);width:100%;padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2.5);font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));color:var(--text);--tw-outline-style:none;background-color:#0000;border-width:0;outline-style:none}.login-input::placeholder{color:var(--text-subtle)}.login-error{border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--danger-surface);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);text-align:center;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--danger)}.login-actions{padding-top:calc(var(--spacing)*4)}.login-submit{cursor:pointer;border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);background-color:var(--brand);width:100%;padding-block:calc(var(--spacing)*2.5);font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--on-brand);border-width:0}@media (hover:hover){.login-submit:hover{opacity:.9}}.login-submit:active{opacity:.8}.login-footer{right:calc(var(--spacing)*0);bottom:calc(var(--spacing)*5);left:calc(var(--spacing)*0);padding-inline:calc(var(--spacing)*5);text-align:center;font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--text-muted);position:absolute}.login-footer p{white-space:normal}.login-footer a{color:var(--brand)}@media (hover:hover){.login-footer a:hover{text-decoration-line:underline}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-tracking{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}
+@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-content:"";--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-tracking:initial}}:root,:host{--font-sans:var(--font-sans);--font-mono:var(--font-mono);--spacing:var(--spacing);--container-md:28rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--tracking-widest:.1em;--radius-sm:calc(var(--radius-base)*.25);--radius-md:calc(var(--radius-base)*.75);--radius-lg:var(--radius-base);--radius-xl:calc(var(--radius-base)*1.5);--radius-2xl:calc(var(--radius-base)*2);--radius-3xl:calc(var(--radius-base)*3);--radius-4xl:calc(var(--radius-base)*4);--shadow-sm:var(--app-shadow-sm);--shadow-md:var(--app-shadow-md);--shadow-lg:var(--app-shadow-md);--shadow-xl:var(--app-shadow-lg);--shadow-2xl:var(--app-shadow-lg);--animate-spin:spin 1s linear infinite;--blur-lg:16px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--radius:calc(var(--radius-base)*.5);--container-max-width:var(--container-max-width)}*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.static{position:static}.inset-x-0{inset-inline:calc(var(--spacing)*0)}.top-0{top:calc(var(--spacing)*0)}.top-14{top:calc(var(--spacing)*14)}.z-0{z-index:0}.z-10{z-index:10}.z-70{z-index:70}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.block{display:block}.grid{display:grid}.hidden{display:none}.inline{display:inline}.table{display:table}.h-14{height:calc(var(--spacing)*14)}.h-\[calc\(var\(--mega-menu-height\,0px\)\+3\.5rem\)\]{height:calc(var(--mega-menu-height,0px) + 3.5rem)}.h-\[calc\(var\(--mega-menu-height\,0px\)\+3\.5rem\+3rem\)\]{height:calc(var(--mega-menu-height,0px) + 3.5rem + 3rem)}.max-h-\[calc\(100dvh-3\.5rem\)\]{max-height:calc(100dvh - 3.5rem)}.shrink{flex-shrink:1}.grow{flex-grow:1}.-translate-y-full{--tw-translate-y:-100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-full{--tw-translate-y:100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.resize{resize:both}.grid-rows-\[0fr\]{grid-template-rows:0fr}.grid-rows-\[1fr\]{grid-template-rows:1fr}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-clip{overflow:clip}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-y-auto{overflow-y:auto}.overscroll-contain{overscroll-behavior:contain}.rounded{border-radius:calc(var(--radius-base)*.5)}.rounded-2xl{border-radius:calc(var(--radius-base)*2)}.rounded-lg{border-radius:var(--radius-base)}.border{border-style:var(--tw-border-style);border-width:1px}.border-hairline{border-color:var(--hairline)}.bg-brand-subtle{background-color:var(--brand-subtle)}.bg-mega-menu-bg{background-color:var(--mega-menu-bg)}.bg-mega-menu-scrim{background-color:var(--mega-menu-scrim)}.bg-surface{background-color:var(--surface)}.bg-surface-sunken{background-color:var(--surface-sunken)}.px-3{padding-inline:calc(var(--spacing)*3)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.pl-4{padding-left:calc(var(--spacing)*4)}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-brand{color:var(--brand)}.text-text{color:var(--text)}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:var(--app-shadow-md);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-lg{--tw-backdrop-blur:blur(var(--blur-lg));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[grid-template-rows\,opacity\]{transition-property:grid-template-rows,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[translate\]{transition-property:translate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-\(--mega-menu-duration\,300ms\){--tw-duration:var(--mega-menu-duration,.3s);transition-duration:var(--mega-menu-duration,.3s)}.duration-\[220ms\]{--tw-duration:.22s;transition-duration:.22s}.duration-\[250ms\]{--tw-duration:.25s;transition-duration:.25s}.after\:rotate-90:after{content:var(--tw-content);rotate:90deg}.after\:transition-\[transform\,opacity\]:after{content:var(--tw-content);transition-property:transform,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.after\:duration-\[250ms\]:after{content:var(--tw-content);--tw-duration:.25s;transition-duration:.25s}@media (hover:hover){.hover\:bg-hover-faint:hover{background-color:var(--hover-faint)}.hover\:text-brand:hover{color:var(--brand)}.hover\:text-text:hover{color:var(--text)}}@media not all and (min-width:48rem){.max-md\:min-h-10{min-height:calc(var(--spacing)*10)}.max-md\:bg-mega-menu-bg{background-color:var(--mega-menu-bg)}.max-md\:bg-scrim{background-color:var(--scrim)}.max-md\:p-1{padding:calc(var(--spacing)*1)}.max-md\:px-3{padding-inline:calc(var(--spacing)*3)}.max-md\:py-2{padding-block:calc(var(--spacing)*2)}.max-md\:pl-4{padding-left:calc(var(--spacing)*4)}.max-md\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.max-md\:backdrop-blur-lg{--tw-backdrop-blur:blur(var(--blur-lg));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}}:root{--bg:#f3f4f6;--surface:#fff;--text:#141822;--brand:#0085b7;--on-brand:#fff;--link:#ec6cff;--info:#1f5596;--warning:#582f02;--success:#003d2a;--danger:#6c1517;--text-muted:#5f636b;--text-subtle:#7e8188;--surface-sunken:#eff0f2;--surface-overlay:#f8f9fb;--hairline:#14182221;--hover-faint:#e6e7e9;--brand-hover:#0073a3;--brand-subtle:#dae7f0;--brand-subtle-hover:#cddae3;--focus-ring:#0085b799;--progress-start:#63acd2;--progress-end:#0085b7;--info-surface:#dbedff;--warning-surface:#ffe9d6;--success-surface:#cdf6e3;--danger-surface:#ffe2df;--danger-surface-hover:#fed2cd;--scrim:#0009;--mega-menu-bg:#f8f9fb;--mega-menu-scrim:#00000052;--app-shadow-sm:0 1px 3px #0000000f,0 1px 2px #0000000a;--app-shadow-md:0 4px 16px #00000014,0 1px 3px #0000000a;--app-shadow-lg:0 12px 32px #0000001f;--font-sans:"Lato",ui-sans-serif,system-ui,sans-serif;--font-mono:ui-monospace,"SF Mono",Menlo,Monaco,Consolas,monospace;--spacing:.25rem;--container-max-width:80rem;--radius-base:.5rem}@supports (color:lab(0% 0 0)){:root{--bg:lab(96.16% -.0918508 -1.13479);--surface:lab(100% 0 0);--text:lab(8.24713% -.0405461 -7.31381);--brand:lab(51.3503% -19.237 -40.2116);--on-brand:lab(100% 0 0);--link:lab(66.1178% 66.0652 -52.4733);--info:lab(35.3965% .70706 -41.3493);--warning:lab(24.2528% 17.0621 33.1082);--success:lab(22.3041% -31.6825 8.84454);--danger:lab(23.385% 37.9736 23.5817);--text-muted:lab(41.6736% -.316054 -5.05283);--text-subtle:lab(53.9698% -.291258 -4.20712);--surface-sunken:lab(94.768% -.0917614 -1.13479);--surface-overlay:lab(98.016% -.0918806 -1.13482);--hairline:lab(8.24713% -.0405461 -7.31381/.13);--hover-faint:lab(91.52% -.0917316 -1.13473);--brand-hover:lab(44.3401% -18.0233 -40.0589);--brand-subtle:lab(90.8302% -3.35431 -6.08345);--brand-subtle-hover:lab(86.19% -3.34981 -6.08118);--focus-ring:lab(51.3503% -19.237 -40.2116/.6);--progress-start:lab(66.6757% -15.4276 -27.0638);--progress-end:lab(51.3503% -19.237 -40.2116);--info-surface:lab(92.9035% -3.38969 -18.021);--warning-surface:lab(94.0827% 8.92592 17.0212);--success-surface:lab(93.7117% -16.5752 4.79031);--danger-surface:lab(92.5749% 15.3735 8.32583);--danger-surface-hover:lab(87.9346% 15.3784 8.33243);--scrim:lab(0% 0 0/.6);--mega-menu-bg:lab(98.016% -.0918806 -1.13482);--mega-menu-scrim:lab(0% 0 0/.32);--app-shadow-sm:0 1px 3px lab(0% 0 0/.06),0 1px 2px lab(0% 0 0/.04);--app-shadow-md:0 4px 16px lab(0% 0 0/.08),0 1px 3px lab(0% 0 0/.04);--app-shadow-lg:0 12px 32px lab(0% 0 0/.12)}}[data-darkmode=true]{--bg:#05070e;--surface:#141822;--text:#f9fafb;--brand:#00958e;--on-brand:#fff;--link:#3bd0a3;--info:#90c1ff;--warning:#f0ba59;--success:#51bd85;--danger:#f17070;--text-muted:#909297;--text-subtle:#5d6067;--surface-sunken:#0a0e17;--surface-overlay:#181d27;--hairline:#f9fafb1a;--hover-faint:#f9fafb0d;--brand-hover:#00837d;--brand-subtle:#061a20;--brand-subtle-hover:#0f242a;--focus-ring:#00958e99;--progress-start:#006261;--progress-end:#00958e;--info-surface:#21344c;--warning-surface:#45310b;--success-surface:#153524;--danger-surface:#541f20;--danger-surface-hover:#602a2a;--scrim:#0009;--mega-menu-bg:#0a0e17;--mega-menu-scrim:#00000080;--app-shadow-sm:0 4px 12px #0000004d;--app-shadow-md:0 10px 28px #0000006b;--app-shadow-lg:0 20px 48px #0000008c}@supports (color:lab(0% 0 0)){[data-darkmode=true]{--bg:lab(1.93894% .0855997 -3.22397);--surface:lab(8.24713% -.0405461 -7.31381);--text:lab(98.252% -.0618994 -.756907);--brand:lab(55.0978% -44.5567 -7.62978);--on-brand:lab(100% 0 0);--link:lab(75.1723% -48.4917 10.7875);--info:lab(76.3382% -4.43128 -38.7);--warning:lab(79.1996% 12.6808 55.9505);--success:lab(69.2339% -42.392 18.6731);--danger:lab(63.5705% 50.8105 25.3639);--text-muted:lab(60.5379% -.225931 -3.05105);--text-subtle:lab(40.6865% -.278354 -4.23647);--surface-sunken:lab(3.9802% .0812709 -5.64623);--surface-overlay:lab(10.5702% -.0939444 -7.33123);--hairline:lab(98.252% -.0618994 -.756907/.1);--hover-faint:lab(98.252% -.0618994 -.756907/.05);--brand-hover:lab(49.2976% -44.6964 -7.56882);--brand-subtle:lab(7.95734% -6.34954 -6.72844);--brand-subtle-hover:lab(12.602% -6.92477 -6.76408);--focus-ring:lab(55.0986% -44.5682 -7.59286/.6);--progress-start:lab(36.8833% -28.7182 -7.50749);--progress-end:lab(55.0978% -44.5567 -7.62978);--info-surface:lab(20.893% -1.69295 -17.5199);--warning-surface:lab(22.2973% 6.18184 26.7927);--success-surface:lab(19.4608% -16.2551 7.16286);--danger-surface:lab(20.3014% 25.4342 12.827);--danger-surface-hover:lab(24.9464% 25.3964 12.6412);--scrim:lab(0% 0 0/.6);--mega-menu-bg:lab(3.9802% .0812709 -5.64623);--mega-menu-scrim:lab(0% 0 0/.5);--app-shadow-sm:0 4px 12px lab(0% 0 0/.3);--app-shadow-md:0 10px 28px lab(0% 0 0/.42);--app-shadow-lg:0 20px 48px lab(0% 0 0/.55)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-property:none!important;animation:none!important}.spinning:before{animation:var(--animate-spin)!important}}html{background-color:var(--bg);min-height:100dvh;font-family:var(--font-sans)}html body{background-color:var(--bg);min-height:100dvh}@keyframes divider-in{0%{opacity:0;transform:scaleX(.15)}}.login-screen{min-height:100dvh;padding-inline:calc(var(--spacing)*5);padding-bottom:calc(var(--spacing)*14);flex-direction:column;justify-content:center;align-items:center;display:flex;position:relative}.login-shell{width:100%;max-width:var(--container-md)}.login-bg{pointer-events:none;inset:calc(var(--spacing)*0);background-image:var(--login-bg-lqip,var(--login-bg));background-position:50%;background-repeat:no-repeat;background-size:cover;position:fixed;transform:translateZ(0)}.login-bg:after{pointer-events:none;inset:calc(var(--spacing)*0);background-image:var(--login-bg);opacity:0;will-change:opacity;--tw-content:"";content:var(--tw-content);background-position:50%;background-repeat:no-repeat;background-size:cover;transition:opacity .5s;position:absolute}.login-bg.full-loaded:after{opacity:1}.login-card{gap:calc(var(--spacing)*7);border-radius:calc(var(--radius-base)*4);background-color:var(--surface);padding:calc(var(--spacing)*14);--tw-shadow:var(--app-shadow-md);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);flex-direction:column;display:flex}@media not all and (min-width:48rem){.login-card{border-radius:calc(var(--radius-base)*3);padding:calc(var(--spacing)*9)}}.login-brand{align-items:center;gap:calc(var(--spacing)*3.5);display:flex}.login-divider{border-style:var(--tw-border-style);--tw-gradient-position:to right;border-width:0;width:100%;height:1px;animation:.7s cubic-bezier(.16,1,.3,1) .1s both divider-in}@supports (background-image:linear-gradient(in lab, red, red)){.login-divider{--tw-gradient-position:to right in oklab}}.login-divider{background-image:linear-gradient(var(--tw-gradient-stops));--tw-gradient-from:transparent;--tw-gradient-via:var(--hairline);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position));--tw-gradient-to:transparent}.login-logo{height:calc(var(--spacing)*11);width:calc(var(--spacing)*11);border-radius:calc(var(--radius-base)*2);background-color:var(--brand-subtle);--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--brand-subtle);flex-shrink:0;justify-content:center;align-items:center;display:flex}.login-logo img{height:calc(var(--spacing)*6);width:calc(var(--spacing)*6)}.login-title{gap:calc(var(--spacing)*1);flex-direction:column;display:flex}.login-hostname{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight);color:var(--text)}.login-subtitle{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--text)}.login-form{gap:calc(var(--spacing)*5);flex-direction:column;display:flex}.login-fields{gap:calc(var(--spacing)*4);flex-direction:column;display:flex}.login-field{gap:calc(var(--spacing)*2);flex-direction:column;display:flex}.login-label{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest);color:var(--text);text-transform:uppercase}.input-wrap{border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface-overlay);contain:layout style;position:relative}.input-wrap:where([data-darkmode=true],[data-darkmode=true] *){background-color:var(--surface-sunken)}.input-wrap:after{pointer-events:none;border-radius:calc(var(--radius-2xl) + 1px);border-style:var(--tw-border-style);border-width:2px;border-color:var(--brand);opacity:0;will-change:opacity;--tw-content:"";content:var(--tw-content);transition:opacity .15s;position:absolute;inset:-1px}.input-wrap:focus-within:after{opacity:1}.login-input{appearance:none;border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);width:100%;padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2.5);font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));color:var(--text);--tw-outline-style:none;background-color:#0000;border-width:0;outline-style:none}.login-input::placeholder{color:var(--text-subtle)}.login-error{border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--danger-surface);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);text-align:center;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--danger)}.login-actions{padding-top:calc(var(--spacing)*4)}.login-submit{cursor:pointer;border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);background-color:var(--brand);width:100%;padding-block:calc(var(--spacing)*2.5);font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--on-brand);border-width:0}@media (hover:hover){.login-submit:hover{opacity:.9}}.login-submit:active{opacity:.8}.login-footer{right:calc(var(--spacing)*0);bottom:calc(var(--spacing)*5);left:calc(var(--spacing)*0);padding-inline:calc(var(--spacing)*5);text-align:center;font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--text-muted);position:absolute}.login-footer p{white-space:normal}.login-footer a{color:var(--brand)}@media (hover:hover){.login-footer a:hover{text-decoration-line:underline}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-tracking{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}
diff --git a/luci-theme-aurora/htdocs/luci-static/aurora/main.css b/luci-theme-aurora/htdocs/luci-static/aurora/main.css
index 11bbe093..b55be972 100644
--- a/luci-theme-aurora/htdocs/luci-static/aurora/main.css
+++ b/luci-theme-aurora/htdocs/luci-static/aurora/main.css
@@ -1,2 +1,2 @@
/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */
-@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-content:"";--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0;--tw-leading:initial;--tw-tracking:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-space-y-reverse:0;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-border-spacing-x:0;--tw-border-spacing-y:0}}:root,:host{--font-sans:var(--font-sans);--font-mono:var(--font-mono);--spacing:var(--spacing);--container-xs:20rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25/1.875);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-snug:1.375;--leading-normal:1.5;--leading-relaxed:1.625;--radius-sm:calc(var(--radius-base)*.25);--radius-md:calc(var(--radius-base)*.75);--radius-lg:var(--radius-base);--radius-xl:calc(var(--radius-base)*1.5);--radius-2xl:calc(var(--radius-base)*2);--radius-3xl:calc(var(--radius-base)*3);--radius-4xl:calc(var(--radius-base)*4);--shadow-sm:var(--app-shadow-sm);--shadow-md:var(--app-shadow-md);--shadow-lg:var(--app-shadow-md);--shadow-xl:var(--app-shadow-lg);--shadow-2xl:var(--app-shadow-lg);--ease-out:cubic-bezier(0,0,.2,1);--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--blur-md:12px;--blur-lg:16px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--radius:calc(var(--radius-base)*.5);--container-max-width:var(--container-max-width)}*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{scrollbar-color:initial;scrollbar-width:initial}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.static{position:static}.inset-x-0{inset-inline:calc(var(--spacing)*0)}.top-0{top:calc(var(--spacing)*0)}.top-14{top:calc(var(--spacing)*14)}.z-0{z-index:0}.z-10{z-index:10}.z-70{z-index:70}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.scrollbar::-webkit-scrollbar-track{background-color:var(--scrollbar-track);border-radius:var(--scrollbar-track-radius)}.scrollbar::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb);border-radius:var(--scrollbar-thumb-radius)}.scrollbar::-webkit-scrollbar-corner{background-color:var(--scrollbar-corner);border-radius:var(--scrollbar-corner-radius)}.scrollbar{scrollbar-width:auto;scrollbar-color:var(--scrollbar-thumb,initial)var(--scrollbar-track,initial)}.scrollbar::-webkit-scrollbar{width:var(--scrollbar-width,16px);height:var(--scrollbar-height,16px);display:block}.block{display:block}.grid{display:grid}.inline{display:inline}.table{display:table}.h-14{height:calc(var(--spacing)*14)}.h-\[calc\(var\(--mega-menu-height\,0px\)\+3\.5rem\)\]{height:calc(var(--mega-menu-height,0px) + 3.5rem)}.h-\[calc\(var\(--mega-menu-height\,0px\)\+3\.5rem\+3rem\)\]{height:calc(var(--mega-menu-height,0px) + 3.5rem + 3rem)}.max-h-\[calc\(100dvh-3\.5rem\)\]{max-height:calc(100dvh - 3.5rem)}.shrink{flex-shrink:1}.grow{flex-grow:1}.-translate-y-full{--tw-translate-y:-100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-full{--tw-translate-y:100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-in{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.resize{resize:both}.grid-rows-\[0fr\]{grid-template-rows:0fr}.grid-rows-\[1fr\]{grid-template-rows:1fr}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-clip{overflow:clip}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-y-auto{overflow-y:auto}.overscroll-contain{overscroll-behavior:contain}.rounded{border-radius:calc(var(--radius-base)*.5)}.rounded-2xl{border-radius:calc(var(--radius-base)*2)}.rounded-lg{border-radius:var(--radius-base)}.border{border-style:var(--tw-border-style);border-width:1px}.border-hairline{border-color:var(--hairline)}.bg-brand-subtle{background-color:var(--brand-subtle)}.bg-mega-menu-bg{background-color:var(--mega-menu-bg)}.bg-mega-menu-scrim{background-color:var(--mega-menu-scrim)}.bg-surface{background-color:var(--surface)}.bg-surface-sunken{background-color:var(--surface-sunken)}.px-3{padding-inline:calc(var(--spacing)*3)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.pl-4{padding-left:calc(var(--spacing)*4)}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-brand{color:var(--brand)}.text-text{color:var(--text)}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:var(--app-shadow-md);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-lg{--tw-backdrop-blur:blur(var(--blur-lg));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[grid-template-rows\,opacity\]{transition-property:grid-template-rows,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[translate\]{transition-property:translate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-\(--mega-menu-duration\,300ms\){--tw-duration:var(--mega-menu-duration,.3s);transition-duration:var(--mega-menu-duration,.3s)}.duration-\[220ms\]{--tw-duration:.22s;transition-duration:.22s}.duration-\[250ms\]{--tw-duration:.25s;transition-duration:.25s}.fade-in-0{--tw-enter-opacity:0}.fill-mode-backwards{--tw-animation-fill-mode:backwards;animation-fill-mode:backwards}.fill-mode-both{--tw-animation-fill-mode:both;animation-fill-mode:both}.slide-in-from-top-2{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.after\:rotate-90:after{content:var(--tw-content);rotate:90deg}.after\:transition-\[transform\,opacity\]:after{content:var(--tw-content);transition-property:transform,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.after\:duration-\[250ms\]:after{content:var(--tw-content);--tw-duration:.25s;transition-duration:.25s}@media (hover:hover){.hover\:bg-hover-faint:hover{background-color:var(--hover-faint)}.hover\:text-brand:hover{color:var(--brand)}.hover\:text-text:hover{color:var(--text)}}@media not all and (min-width:48rem){.max-md\:min-h-10{min-height:calc(var(--spacing)*10)}.max-md\:bg-mega-menu-bg{background-color:var(--mega-menu-bg)}.max-md\:bg-scrim{background-color:var(--scrim)}.max-md\:p-1{padding:calc(var(--spacing)*1)}.max-md\:px-3{padding-inline:calc(var(--spacing)*3)}.max-md\:py-2{padding-block:calc(var(--spacing)*2)}.max-md\:pl-4{padding-left:calc(var(--spacing)*4)}.max-md\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.max-md\:backdrop-blur-lg{--tw-backdrop-blur:blur(var(--blur-lg));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--bg:#f3f4f6;--surface:#fff;--text:#141822;--brand:#46a3d1;--on-brand:#fff;--link:#ec6cff;--info:#1f5596;--warning:#582f02;--success:#003d2a;--danger:#6c1517;--text-muted:#5f636b;--text-subtle:#7e8188;--surface-sunken:#f0f1f3;--surface-overlay:#f8f9fb;--hairline:#14182214;--hover-faint:#e6e7e9;--brand-hover:#3191bd;--brand-subtle:#e0eaf2;--brand-subtle-hover:#d3dde5;--focus-ring:#46a3d199;--progress-start:#88bfde;--progress-end:#46a3d1;--info-surface:#dbedff;--warning-surface:#ffe9d6;--success-surface:#cdf6e3;--danger-surface:#ffe2df;--danger-surface-hover:#fed2cd;--scrim:#0009;--mega-menu-bg:#f8f9fb;--mega-menu-scrim:#00000052;--app-shadow-sm:0 1px 3px #0000000f,0 1px 2px #0000000a;--app-shadow-md:0 4px 16px #00000014,0 1px 3px #0000000a;--app-shadow-lg:0 12px 32px #0000001f;--font-sans:"Lato",ui-sans-serif,system-ui,sans-serif;--font-mono:ui-monospace,"SF Mono",Menlo,Monaco,Consolas,monospace;--spacing:.25rem;--container-max-width:80rem;--radius-base:.5rem}@supports (color:lab(0% 0 0)){:root{--bg:lab(96.16% -.0918508 -1.13479);--surface:lab(100% 0 0);--text:lab(8.24713% -.0405461 -7.31381);--brand:lab(63.0437% -17.6746 -32.0381);--on-brand:lab(100% 0 0);--link:lab(66.1178% 66.0652 -52.4733);--info:lab(35.3965% .70706 -41.3493);--warning:lab(24.2528% 17.0621 33.1082);--success:lab(22.3041% -31.6825 8.84454);--danger:lab(23.385% 37.9736 23.5817);--text-muted:lab(41.6736% -.316054 -5.05283);--text-subtle:lab(53.9698% -.291258 -4.20712);--surface-sunken:lab(95% -.0917912 -1.13479);--surface-overlay:lab(98.016% -.0918806 -1.13482);--hairline:lab(8.24713% -.0405461 -7.31381/.08);--hover-faint:lab(91.52% -.0917316 -1.13473);--brand-hover:lab(56.0629% -17.1914 -31.9377);--brand-subtle:lab(92.212% -2.66662 -4.99353);--brand-subtle-hover:lab(87.5719% -2.66373 -4.99202);--focus-ring:lab(63.0437% -17.6746 -32.0381/.6);--progress-start:lab(74.2906% -12.7943 -21.5483);--progress-end:lab(63.0437% -17.6746 -32.0381);--info-surface:lab(92.9035% -3.38969 -18.021);--warning-surface:lab(94.0827% 8.92592 17.0212);--success-surface:lab(93.7117% -16.5752 4.79031);--danger-surface:lab(92.5749% 15.3735 8.32583);--danger-surface-hover:lab(87.9346% 15.3784 8.33243);--scrim:lab(0% 0 0/.6);--mega-menu-bg:lab(98.016% -.0918806 -1.13482);--mega-menu-scrim:lab(0% 0 0/.32);--app-shadow-sm:0 1px 3px lab(0% 0 0/.06),0 1px 2px lab(0% 0 0/.04);--app-shadow-md:0 4px 16px lab(0% 0 0/.08),0 1px 3px lab(0% 0 0/.04);--app-shadow-lg:0 12px 32px lab(0% 0 0/.12)}}[data-darkmode=true]{--bg:#05070e;--surface:#141822;--text:#f9fafb;--brand:#00958e;--on-brand:#fff;--link:#3bd0a3;--info:#90c1ff;--warning:#f0ba59;--success:#51bd85;--danger:#f17070;--text-muted:#909297;--text-subtle:#5d6067;--surface-sunken:#0a0e17;--surface-overlay:#181d27;--hairline:#f9fafb1a;--hover-faint:#f9fafb0d;--brand-hover:#00837d;--brand-subtle:#061a20;--brand-subtle-hover:#0f242a;--focus-ring:#00958e99;--progress-start:#006261;--progress-end:#00958e;--info-surface:#21344c;--warning-surface:#45310b;--success-surface:#153524;--danger-surface:#541f20;--danger-surface-hover:#602a2a;--scrim:#0009;--mega-menu-bg:#0a0e17;--mega-menu-scrim:#00000080;--app-shadow-sm:0 4px 12px #0000004d;--app-shadow-md:0 10px 28px #0000006b;--app-shadow-lg:0 20px 48px #0000008c}@supports (color:lab(0% 0 0)){[data-darkmode=true]{--bg:lab(1.93894% .0855997 -3.22397);--surface:lab(8.24713% -.0405461 -7.31381);--text:lab(98.252% -.0618994 -.756907);--brand:lab(55.0978% -44.5567 -7.62978);--on-brand:lab(100% 0 0);--link:lab(75.1723% -48.4917 10.7875);--info:lab(76.3382% -4.43128 -38.7);--warning:lab(79.1996% 12.6808 55.9505);--success:lab(69.2339% -42.392 18.6731);--danger:lab(63.5705% 50.8105 25.3639);--text-muted:lab(60.5379% -.225931 -3.05105);--text-subtle:lab(40.6865% -.278354 -4.23647);--surface-sunken:lab(3.9802% .0812709 -5.64623);--surface-overlay:lab(10.5702% -.0939444 -7.33123);--hairline:lab(98.252% -.0618994 -.756907/.1);--hover-faint:lab(98.252% -.0618994 -.756907/.05);--brand-hover:lab(49.2976% -44.6964 -7.56882);--brand-subtle:lab(7.95734% -6.34954 -6.72844);--brand-subtle-hover:lab(12.602% -6.92477 -6.76408);--focus-ring:lab(55.0986% -44.5682 -7.59286/.6);--progress-start:lab(36.8833% -28.7182 -7.50749);--progress-end:lab(55.0978% -44.5567 -7.62978);--info-surface:lab(20.893% -1.69295 -17.5199);--warning-surface:lab(22.2973% 6.18184 26.7927);--success-surface:lab(19.4608% -16.2551 7.16286);--danger-surface:lab(20.3014% 25.4342 12.827);--danger-surface-hover:lab(24.9464% 25.3964 12.6412);--scrim:lab(0% 0 0/.6);--mega-menu-bg:lab(3.9802% .0812709 -5.64623);--mega-menu-scrim:lab(0% 0 0/.5);--app-shadow-sm:0 4px 12px lab(0% 0 0/.3);--app-shadow-md:0 10px 28px lab(0% 0 0/.42);--app-shadow-lg:0 20px 48px lab(0% 0 0/.55)}}html{background-color:var(--bg);min-height:100dvh;font-family:var(--font-sans)}html body{background-color:var(--bg);min-height:100dvh}:not(html)::-webkit-scrollbar-track{background-color:var(--scrollbar-track);border-radius:var(--scrollbar-track-radius)}:not(html)::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb);border-radius:var(--scrollbar-thumb-radius)}:not(html)::-webkit-scrollbar-corner{background-color:var(--scrollbar-corner);border-radius:var(--scrollbar-corner-radius)}:not(html){scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb,initial)var(--scrollbar-track,initial)}:not(html)::-webkit-scrollbar{width:8px;height:8px;display:block}:not(html){--scrollbar-thumb-radius:9999px;--scrollbar-thumb:var(--text-muted);--scrollbar-track:transparent}html::-webkit-scrollbar-track{background-color:var(--scrollbar-track);border-radius:var(--scrollbar-track-radius)}html::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb);border-radius:var(--scrollbar-thumb-radius)}html::-webkit-scrollbar-corner{background-color:var(--scrollbar-corner);border-radius:var(--scrollbar-corner-radius)}html{scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb,initial)var(--scrollbar-track,initial)}html::-webkit-scrollbar{width:8px;height:8px;display:block}html{--scrollbar-thumb-radius:9999px;--scrollbar-thumb:var(--text-muted);--scrollbar-track:var(--surface)}html body{min-height:100dvh;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed);--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal);color:var(--text);flex-direction:column;display:flex;position:relative}html body.modal-overlay-active{height:100vh;overflow:hidden}h1,h2,h3,h4,h5,h6{font-family:var(--font-sans);--tw-leading:var(--leading-tight);line-height:var(--leading-tight);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight);color:var(--text)}h1{margin-bottom:calc(var(--spacing)*4);padding-left:calc(var(--spacing)*6);font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}@media not all and (min-width:48rem){h1{padding-left:calc(var(--spacing)*4);font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}}h2{margin-bottom:calc(var(--spacing)*4);padding-left:calc(var(--spacing)*5);font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}@media not all and (min-width:48rem){h2{margin-bottom:calc(var(--spacing)*2);padding-left:calc(var(--spacing)*4);font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}}h3{margin-bottom:calc(var(--spacing)*4);font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}@media not all and (min-width:48rem){h3{margin-bottom:calc(var(--spacing)*2);font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}}h4{margin-bottom:calc(var(--spacing)*2);font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}@media not all and (min-width:48rem){h4{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}}h5{margin-bottom:calc(var(--spacing)*2);font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}@media not all and (min-width:48rem){h5{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}h6{margin-bottom:calc(var(--spacing)*2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}@media not all and (min-width:48rem){h6{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}hr{border-style:var(--tw-border-style);border-width:0}strong{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}abbr{cursor:help}p{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed);color:var(--text)}pre{border-radius:calc(var(--radius-base)*1.5);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface-sunken);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);font-family:var(--font-mono);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed);overflow-wrap:break-word;white-space:pre-wrap;color:var(--text-muted);display:block}code{border-radius:calc(var(--radius-base)*.5);background-color:var(--surface-sunken);padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*1);font-family:var(--font-mono);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--text-muted)}a{color:var(--link);text-decoration-line:none}@media (hover:hover){a:hover{text-decoration-line:underline}}var{font-family:var(--font-mono);color:var(--link)}small{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal);color:var(--text)}em{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--text-muted);font-style:italic}header{top:calc(var(--spacing)*0);z-index:40;margin-bottom:calc(var(--spacing)*2);background-color:var(--bg);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:var(--mega-menu-duration,.3s);transition-duration:var(--mega-menu-duration,.3s);--tw-ease:cubic-bezier(.4,0,.6,1);transition-timing-function:cubic-bezier(.4,0,.6,1);position:sticky}header .header-content{z-index:10;height:calc(var(--spacing)*14);padding-inline:calc(var(--spacing)*6);padding-block:calc(var(--spacing)*3);justify-content:space-between;align-items:center;display:flex;position:relative}@media not all and (min-width:48rem){header .header-content{padding-inline:calc(var(--spacing)*4);padding-block:calc(var(--spacing)*2)}}[data-nav-type=mega-menu] :is(header) .desktop-menu-container{pointer-events:none;visibility:hidden;inset-inline:calc(var(--spacing)*0);top:calc(var(--spacing)*0);z-index:0;height:calc(var(--mega-menu-height,0px) + 3.5rem + 3rem);width:100%;position:absolute;overflow:clip}@media not all and (min-width:48rem){[data-nav-type=mega-menu] :is(header) .desktop-menu-container{display:none}}[data-nav-type=mega-menu] :is(header) .desktop-menu-container.active,[data-nav-type=mega-menu] :is(header) .desktop-menu-container.closing{visibility:visible}[data-nav-type=mega-menu] :is(header) .desktop-menu-container.active{pointer-events:auto}[data-nav-type=mega-menu] :is(header) .desktop-menu-container.closing{opacity:0;transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.22s;--tw-ease:cubic-bezier(.4,0,.6,1);transition-duration:.22s;transition-timing-function:cubic-bezier(.4,0,.6,1)}@media (prefers-reduced-motion:reduce){[data-nav-type=mega-menu] :is(header) .desktop-menu-container.closing{transition-property:none}}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-menu-sheet{inset-inline:calc(var(--spacing)*0);top:calc(var(--spacing)*0);height:calc(var(--mega-menu-height,0px) + 3.5rem);--tw-translate-y:-100%;translate:var(--tw-translate-x)var(--tw-translate-y);background-color:var(--mega-menu-bg);transition-property:translate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:var(--mega-menu-duration,.3s);transition-duration:var(--mega-menu-duration,.3s);--tw-ease:cubic-bezier(.4,0,.6,1);transition-timing-function:cubic-bezier(.4,0,.6,1);position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-menu-sheet{transition-property:none}}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-menu-sheet:after{content:var(--tw-content);pointer-events:none;content:var(--tw-content);content:var(--tw-content);inset:calc(var(--spacing)*0);content:var(--tw-content);border-bottom-style:var(--tw-border-style);content:var(--tw-content);border-bottom-width:1px;border-color:var(--hairline);content:var(--tw-content);--tw-shadow:var(--app-shadow-lg);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);content:var(--tw-content);transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));content:var(--tw-content);--tw-duration:var(--mega-menu-duration,.3s);transition-duration:var(--mega-menu-duration,.3s);--tw-content:"";content:var(--tw-content);position:absolute}@media (prefers-reduced-motion:reduce){[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-menu-sheet:after{content:var(--tw-content);transition-property:none}}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-menu-canvas{inset:calc(var(--spacing)*0);--tw-translate-y:100%;translate:var(--tw-translate-x)var(--tw-translate-y);transition-property:translate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:var(--mega-menu-duration,.3s);transition-duration:var(--mega-menu-duration,.3s);--tw-ease:cubic-bezier(.4,0,.6,1);transition-timing-function:cubic-bezier(.4,0,.6,1);position:absolute}@media (prefers-reduced-motion:reduce){[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-menu-canvas{transition-property:none}}[data-nav-type=mega-menu] :is(header) .desktop-menu-container.active .desktop-menu-sheet,[data-nav-type=mega-menu] :is(header) .desktop-menu-container.active .desktop-menu-canvas{--tw-translate-y:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}[data-nav-type=mega-menu] :is(header) .desktop-menu-container.closing .desktop-menu-sheet:after{content:var(--tw-content);opacity:0}[data-nav-type=mega-menu] :is(header) .desktop-menu-container>.desktop-menu-board{display:none}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav{pointer-events:none;inset-inline:calc(var(--spacing)*0);top:calc(var(--spacing)*14);--tw-translate-y:calc(var(--spacing)*1.5);max-width:72rem;max-height:calc(100dvh - 3.5rem);translate:var(--tw-translate-x)var(--tw-translate-y);column-gap:calc(var(--spacing)*8);overscroll-behavior:contain;padding-inline:calc(var(--spacing)*10);padding-top:calc(var(--spacing)*13);padding-bottom:calc(var(--spacing)*8);opacity:0;transition-property:opacity,translate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.25s;--tw-ease:var(--ease-out);transition-duration:.25s;transition-timing-function:var(--ease-out);grid-template-columns:12rem minmax(0,1fr) 13rem;margin-inline:auto;display:grid;position:absolute;overflow-y:auto}@media not all and (min-width:64rem){[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav{max-width:44rem;padding-inline:calc(var(--spacing)*8);grid-template-columns:repeat(1,minmax(0,1fr))}}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav.active{pointer-events:auto;--tw-translate-y:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y);opacity:1}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav .desktop-nav-anchor{align-self:flex-start}@media not all and (min-width:64rem){[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav .desktop-nav-anchor{display:none}}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav .desktop-nav-anchor .desktop-nav-title{align-items:center;gap:calc(var(--spacing)*2.5);font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight);color:var(--text);display:flex}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav .desktop-nav-anchor .desktop-nav-title:before{width:calc(var(--spacing)*6);height:calc(var(--spacing)*6);--tw-content:"";content:var(--tw-content);-webkit-mask:var(--menu-icon,url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M4%204h6v6h-6l0%20-6'%20/%3e%3cpath%20d='M14%204h6v6h-6l0%20-6'%20/%3e%3cpath%20d='M4%2014h6v6h-6l0%20-6'%20/%3e%3cpath%20d='M14%2017a3%203%200%201%200%206%200a3%203%200%201%200%20-6%200'%20/%3e%3c/svg%3e"))center/contain no-repeat;-webkit-mask:var(--menu-icon,url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M4%204h6v6h-6l0%20-6'%20/%3e%3cpath%20d='M14%204h6v6h-6l0%20-6'%20/%3e%3cpath%20d='M4%2014h6v6h-6l0%20-6'%20/%3e%3cpath%20d='M14%2017a3%203%200%201%200%206%200a3%203%200%201%200%20-6%200'%20/%3e%3c/svg%3e"))center/contain no-repeat;-webkit-mask:var(--menu-icon,url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M4%204h6v6h-6l0%20-6'%20/%3e%3cpath%20d='M14%204h6v6h-6l0%20-6'%20/%3e%3cpath%20d='M4%2014h6v6h-6l0%20-6'%20/%3e%3cpath%20d='M14%2017a3%203%200%201%200%206%200a3%203%200%201%200%20-6%200'%20/%3e%3c/svg%3e"))center/contain no-repeat;mask:var(--menu-icon,url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M4%204h6v6h-6l0%20-6'%20/%3e%3cpath%20d='M14%204h6v6h-6l0%20-6'%20/%3e%3cpath%20d='M4%2014h6v6h-6l0%20-6'%20/%3e%3cpath%20d='M14%2017a3%203%200%201%200%206%200a3%203%200%201%200%20-6%200'%20/%3e%3c/svg%3e"))center/contain no-repeat;background-color:currentColor;flex-shrink:0}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav .desktop-nav-list{grid-auto-flow:column;grid-template-rows:repeat(var(--menu-rows,6),auto);place-content:flex-start;column-gap:calc(var(--spacing)*8);row-gap:calc(var(--spacing)*1);display:grid}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav .desktop-nav-list>li{margin:calc(var(--spacing)*0);list-style-type:none}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav .desktop-nav-list>li>a{border-radius:var(--radius-base);width:fit-content;padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));white-space:nowrap;color:var(--text);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;text-decoration-line:none;transition-duration:.15s;display:block}@media (hover:hover){[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav .desktop-nav-list>li>a:hover{background-color:var(--hover-faint)}}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav .desktop-nav-list>li>a.is-active-page{background-color:var(--brand-subtle);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--brand)}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav .desktop-menu-board{gap:calc(var(--spacing)*2);border-left-style:var(--tw-border-style);border-left-width:1px;border-color:var(--hairline);padding-left:calc(var(--spacing)*7);flex-direction:column;align-self:flex-start;display:flex}@media not all and (min-width:64rem){[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav .desktop-menu-board{display:none}}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav .desktop-menu-board .board-label{margin-bottom:calc(var(--spacing)*.5);--tw-font-weight:var(--font-weight-medium);font-size:11px;font-weight:var(--font-weight-medium);--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide);color:var(--text-subtle);text-transform:uppercase}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav .desktop-menu-board .board-line{align-items:flex-start;gap:calc(var(--spacing)*2.5);max-width:100%;font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--text-muted);display:flex}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav .desktop-menu-board .board-line:before{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4);--tw-content:"";content:var(--tw-content);background-color:currentColor;flex-shrink:0}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav .desktop-menu-board .board-line .board-text{min-width:calc(var(--spacing)*0);--tw-leading:calc(var(--spacing)*4);line-height:calc(var(--spacing)*4);overflow-wrap:anywhere}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav .desktop-menu-board .board-line-host:before{-webkit-mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M3%2015a2%202%200%200%201%202%20-2h14a2%202%200%200%201%202%202v4a2%202%200%200%201%20-2%202h-14a2%202%200%200%201%20-2%20-2l0%20-4'%20/%3e%3cpath%20d='M17%2017l0%20.01'%20/%3e%3cpath%20d='M13%2017l0%20.01'%20/%3e%3cpath%20d='M15%2013l0%20-2'%20/%3e%3cpath%20d='M11.75%208.75a4%204%200%200%201%206.5%200'%20/%3e%3cpath%20d='M8.5%206.5a8%208%200%200%201%2013%200'%20/%3e%3c/svg%3e") 50%/contain no-repeat;mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M3%2015a2%202%200%200%201%202%20-2h14a2%202%200%200%201%202%202v4a2%202%200%200%201%20-2%202h-14a2%202%200%200%201%20-2%20-2l0%20-4'%20/%3e%3cpath%20d='M17%2017l0%20.01'%20/%3e%3cpath%20d='M13%2017l0%20.01'%20/%3e%3cpath%20d='M15%2013l0%20-2'%20/%3e%3cpath%20d='M11.75%208.75a4%204%200%200%201%206.5%200'%20/%3e%3cpath%20d='M8.5%206.5a8%208%200%200%201%2013%200'%20/%3e%3c/svg%3e") 50%/contain no-repeat}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav .desktop-menu-board .board-line-model:before{-webkit-mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M5%206a1%201%200%200%201%201%20-1h12a1%201%200%200%201%201%201v12a1%201%200%200%201%20-1%201h-12a1%201%200%200%201%20-1%20-1l0%20-12'%20/%3e%3cpath%20d='M9%209h6v6h-6l0%20-6'%20/%3e%3cpath%20d='M3%2010h2'%20/%3e%3cpath%20d='M3%2014h2'%20/%3e%3cpath%20d='M10%203v2'%20/%3e%3cpath%20d='M14%203v2'%20/%3e%3cpath%20d='M21%2010h-2'%20/%3e%3cpath%20d='M21%2014h-2'%20/%3e%3cpath%20d='M14%2021v-2'%20/%3e%3cpath%20d='M10%2021v-2'%20/%3e%3c/svg%3e") 50%/contain no-repeat;mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M5%206a1%201%200%200%201%201%20-1h12a1%201%200%200%201%201%201v12a1%201%200%200%201%20-1%201h-12a1%201%200%200%201%20-1%20-1l0%20-12'%20/%3e%3cpath%20d='M9%209h6v6h-6l0%20-6'%20/%3e%3cpath%20d='M3%2010h2'%20/%3e%3cpath%20d='M3%2014h2'%20/%3e%3cpath%20d='M10%203v2'%20/%3e%3cpath%20d='M14%203v2'%20/%3e%3cpath%20d='M21%2010h-2'%20/%3e%3cpath%20d='M21%2014h-2'%20/%3e%3cpath%20d='M14%2021v-2'%20/%3e%3cpath%20d='M10%2021v-2'%20/%3e%3c/svg%3e") 50%/contain no-repeat}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav .desktop-menu-board .board-line-firmware:before{-webkit-mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M12%203l8%204.5l0%209l-8%204.5l-8%20-4.5l0%20-9l8%20-4.5'%20/%3e%3cpath%20d='M12%2012l8%20-4.5'%20/%3e%3cpath%20d='M12%2012l0%209'%20/%3e%3cpath%20d='M12%2012l-8%20-4.5'%20/%3e%3cpath%20d='M16%205.25l-8%204.5'%20/%3e%3c/svg%3e") 50%/contain no-repeat;mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M12%203l8%204.5l0%209l-8%204.5l-8%20-4.5l0%20-9l8%20-4.5'%20/%3e%3cpath%20d='M12%2012l8%20-4.5'%20/%3e%3cpath%20d='M12%2012l0%209'%20/%3e%3cpath%20d='M12%2012l-8%20-4.5'%20/%3e%3cpath%20d='M16%205.25l-8%204.5'%20/%3e%3c/svg%3e") 50%/contain no-repeat}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav .desktop-menu-board .board-line-kernel:before{-webkit-mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M6.5%207.5a1%201%200%201%200%202%200a1%201%200%201%200%20-2%200'%20/%3e%3cpath%20d='M3%206v5.172a2%202%200%200%200%20.586%201.414l7.71%207.71a2.41%202.41%200%200%200%203.408%200l5.592%20-5.592a2.41%202.41%200%200%200%200%20-3.408l-7.71%20-7.71a2%202%200%200%200%20-1.414%20-.586h-5.172a3%203%200%200%200%20-3%203'%20/%3e%3c/svg%3e") 50%/contain no-repeat;mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M6.5%207.5a1%201%200%201%200%202%200a1%201%200%201%200%20-2%200'%20/%3e%3cpath%20d='M3%206v5.172a2%202%200%200%200%20.586%201.414l7.71%207.71a2.41%202.41%200%200%200%203.408%200l5.592%20-5.592a2.41%202.41%200%200%200%200%20-3.408l-7.71%20-7.71a2%202%200%200%200%20-1.414%20-.586h-5.172a3%203%200%200%200%20-3%203'%20/%3e%3c/svg%3e") 50%/contain no-repeat}[data-nav-type=mega-menu] :is(header):has(.desktop-menu-container:is(.active,.closing)){z-index:70}header .brand{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight);color:var(--text);transition-property:color,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;flex-shrink:0;text-decoration-line:none;transition-duration:.15s;display:inline-block}@media (hover:hover){header .brand:hover{--tw-translate-y:calc(var(--spacing)*-.5);translate:var(--tw-translate-x)var(--tw-translate-y);color:var(--brand)}}@media not all and (min-width:48rem){header .brand{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));flex:1}}header .nav{z-index:60;margin:calc(var(--spacing)*0);--tw-translate-x:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y);transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,);align-items:center;gap:calc(var(--spacing)*1);padding:calc(var(--spacing)*0);list-style-type:none;display:flex;position:absolute;left:50%}@media not all and (min-width:48rem){header .nav{display:none}}header .nav>li{position:relative}header .nav>li .menu{border-radius:calc(var(--radius-base)*1.5);padding-inline:calc(var(--spacing)*3.5);padding-block:calc(var(--spacing)*1.5);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--text);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;text-decoration-line:none;transition-duration:.15s;display:block}@media (hover:hover){header .nav>li .menu:hover{background-color:var(--hover-faint)}}header .nav>li .menu.menu-active{background-color:var(--brand-subtle);color:var(--brand)}header .nav>li .desktop-nav{pointer-events:none;left:calc(var(--spacing)*0);z-index:40;padding-inline:calc(var(--spacing)*0);padding-top:calc(var(--spacing)*0);opacity:0;transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;transition-duration:.15s}[data-nav-type=dropdown] :is(header .nav>li .desktop-nav){margin-top:calc(var(--spacing)*2);min-width:calc(var(--spacing)*48);position:absolute;top:100%}header .nav>li .desktop-nav.active{pointer-events:auto;opacity:1}[data-nav-type=dropdown] :is(header .nav>li .desktop-nav .desktop-nav-list){row-gap:calc(var(--spacing)*1);border-radius:calc(var(--radius-base)*3);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface-overlay);padding-block:calc(var(--spacing)*2);--tw-shadow:var(--app-shadow-md);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-backdrop-blur:blur(var(--blur-md));--tw-backdrop-saturate:saturate(150%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);flex-direction:column;display:flex}header .nav>li .desktop-nav .desktop-nav-list>li{margin:calc(var(--spacing)*0);list-style-type:none}header .nav>li .desktop-nav .desktop-nav-list>li>a{white-space:nowrap;color:var(--text);text-decoration-line:none;display:block}[data-nav-type=dropdown] :is(header .nav>li .desktop-nav .desktop-nav-list>li>a){margin-inline:calc(var(--spacing)*2);border-radius:calc(var(--radius-base)*1.5);padding-inline:calc(var(--spacing)*4);padding-block:calc(var(--spacing)*2);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;transition-duration:.15s}@media (hover:hover){[data-nav-type=dropdown] :is(header .nav>li .desktop-nav .desktop-nav-list>li>a):hover{background-color:var(--hover-faint)}}header .nav>li .desktop-nav .desktop-nav-list>li>a.is-active-page{background-color:var(--brand-subtle);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--brand)}header .navigation-controls{margin-right:calc(var(--spacing)*3);flex-shrink:0;align-items:center;display:flex}@media (min-width:48rem){header .navigation-controls{display:none}[data-nav-type=sidebar] :is(header .navigation-controls){display:flex}}header .navigation-controls .navigation-toggle{cursor:pointer;border-style:var(--tw-border-style);padding:calc(var(--spacing)*0);--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;background-color:#0000;border-width:0;border-radius:0;transition-duration:.15s}@media (hover:hover){header .navigation-controls .navigation-toggle:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}}header .navigation-controls .navigation-toggle:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}header .navigation-controls .navigation-toggle svg{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5);color:var(--text)}header .navigation-controls .navigation-toggle .navigation-toggle-line{transform-box:fill-box;transform-origin:50%;transition-property:transform,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;--tw-ease:var(--ease-in-out);transition-duration:.15s;transition-timing-function:var(--ease-in-out)}header .navigation-controls .navigation-toggle.is-expanded .navigation-toggle-line-top{transform:translateY(5px)rotate(45deg)}header .navigation-controls .navigation-toggle.is-expanded .navigation-toggle-line-middle{opacity:0;transform:scaleX(.35)}header .navigation-controls .navigation-toggle.is-expanded .navigation-toggle-line-bottom{transform:translate(3.75px,-5px)rotate(-45deg)scaleX(2)}header #indicators{gap:calc(var(--spacing)*5);flex-direction:row-reverse;flex-shrink:0;display:flex}@media (min-width:48rem){header #indicators{gap:calc(var(--spacing)*8)}}header #indicators span[data-indicator]{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5);cursor:pointer;font-size:0}header #indicators span[data-indicator]:before{content:var(--tw-content);content:var(--tw-content);width:calc(var(--spacing)*5);height:calc(var(--spacing)*5);content:var(--tw-content);content:var(--tw-content);color:var(--text);background-color:currentColor;position:absolute}header #indicators span[data-indicator][data-indicator=media_error]:before{content:var(--tw-content);-webkit-mask:url("data:image/svg+xml,%3csvg%20width='800'%20height='800'%20viewBox='0%200%20800%20800'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M99.5149%20622.549C93.2144%20633.653%2093.4349%20634%20107.075%20634H651.912C665.537%20634%20665.757%20633.622%20659.473%20622.549L385.196%20138.236C378.99%20127.258%20379.998%20127.258%20373.792%20138.236L99.5149%20622.534V622.549ZM440.01%20107.161L714.303%20591.475C744.577%20644.978%20713.373%20697%20651.912%20697H107.075C45.5668%20697%2014.4423%20644.946%2044.7005%20591.506L318.977%20107.192C349.314%2053.5947%20409.705%2053.6105%20440.026%20107.192L440.01%20107.161ZM379.494%20586.75C383.631%20586.75%20387.728%20585.936%20391.551%20584.353C395.373%20582.77%20398.847%20580.45%20401.773%20577.525C404.698%20574.6%20407.019%20571.127%20408.603%20567.305C410.186%20563.483%20411.001%20559.387%20411.001%20555.25C411.001%20551.112%20410.186%20547.016%20408.603%20543.194C407.019%20539.372%20404.698%20535.899%20401.773%20532.974C398.847%20530.049%20395.373%20527.729%20391.551%20526.146C387.728%20524.563%20383.631%20523.749%20379.494%20523.749C371.14%20523.751%20363.128%20527.07%20357.221%20532.977C351.314%20538.885%20347.996%20546.896%20347.996%20555.25C347.996%20563.603%20351.314%20571.614%20357.221%20577.522C363.128%20583.429%20371.14%20586.748%20379.494%20586.75ZM347.991%20303.249V460.749C347.991%20469.104%20351.31%20477.116%20357.218%20483.023C363.126%20488.931%20371.139%20492.249%20379.494%20492.249C387.849%20492.249%20395.862%20488.931%20401.769%20483.023C407.677%20477.116%20410.996%20469.104%20410.996%20460.749V303.249C410.996%20294.894%20407.677%20286.882%20401.769%20280.975C395.862%20275.067%20387.849%20271.749%20379.494%20271.749C371.139%20271.749%20363.126%20275.067%20357.218%20280.975C351.31%20286.882%20347.991%20294.894%20347.991%20303.249Z'%20fill='%230F162B'/%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3csvg%20width='800'%20height='800'%20viewBox='0%200%20800%20800'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M99.5149%20622.549C93.2144%20633.653%2093.4349%20634%20107.075%20634H651.912C665.537%20634%20665.757%20633.622%20659.473%20622.549L385.196%20138.236C378.99%20127.258%20379.998%20127.258%20373.792%20138.236L99.5149%20622.534V622.549ZM440.01%20107.161L714.303%20591.475C744.577%20644.978%20713.373%20697%20651.912%20697H107.075C45.5668%20697%2014.4423%20644.946%2044.7005%20591.506L318.977%20107.192C349.314%2053.5947%20409.705%2053.6105%20440.026%20107.192L440.01%20107.161ZM379.494%20586.75C383.631%20586.75%20387.728%20585.936%20391.551%20584.353C395.373%20582.77%20398.847%20580.45%20401.773%20577.525C404.698%20574.6%20407.019%20571.127%20408.603%20567.305C410.186%20563.483%20411.001%20559.387%20411.001%20555.25C411.001%20551.112%20410.186%20547.016%20408.603%20543.194C407.019%20539.372%20404.698%20535.899%20401.773%20532.974C398.847%20530.049%20395.373%20527.729%20391.551%20526.146C387.728%20524.563%20383.631%20523.749%20379.494%20523.749C371.14%20523.751%20363.128%20527.07%20357.221%20532.977C351.314%20538.885%20347.996%20546.896%20347.996%20555.25C347.996%20563.603%20351.314%20571.614%20357.221%20577.522C363.128%20583.429%20371.14%20586.748%20379.494%20586.75ZM347.991%20303.249V460.749C347.991%20469.104%20351.31%20477.116%20357.218%20483.023C363.126%20488.931%20371.139%20492.249%20379.494%20492.249C387.849%20492.249%20395.862%20488.931%20401.769%20483.023C407.677%20477.116%20410.996%20469.104%20410.996%20460.749V303.249C410.996%20294.894%20407.677%20286.882%20401.769%20280.975C395.862%20275.067%20387.849%20271.749%20379.494%20271.749C371.139%20271.749%20363.126%20275.067%20357.218%20280.975C351.31%20286.882%20347.991%20294.894%20347.991%20303.249Z'%20fill='%230F162B'/%3e%3c/svg%3e") 50%/cover no-repeat}header #indicators span[data-indicator][data-indicator=poll-status][data-style=active]:before{content:var(--tw-content);-webkit-mask:url("data:image/svg+xml,%3csvg%20width='800'%20height='800'%20viewBox='0%200%20800%20800'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M201.032%20123.921C202.67%20122.913%20204.182%20121.936%20205.537%20121.023C257.614%2085.7368%20319.094%2066.9154%20382%2067.0003C555.974%2067.0003%20697%20208.026%20697%20382C697.086%20440.93%20680.568%20498.691%20649.34%20548.666C648.405%20550.159%20647.097%20551.383%20645.545%20552.216C643.993%20553.05%20642.25%20553.465%20640.489%20553.42C638.728%20553.376%20637.009%20552.873%20635.501%20551.962C633.993%20551.051%20632.748%20549.763%20631.889%20548.225L552.509%20405.404C551.176%20403.007%20550.492%20400.303%20550.525%20397.56C550.558%20394.817%20551.307%20392.13%20552.698%20389.765C554.089%20387.401%20556.073%20385.44%20558.454%20384.078C560.836%20382.716%20563.531%20382%20566.275%20382H634C634.01%20335.412%20621.106%20289.734%20596.72%20250.038C572.334%20210.343%20537.422%20178.184%20495.861%20157.135C454.3%20136.085%20407.718%20126.968%20361.288%20130.797C314.858%20134.626%20270.398%20151.251%20232.847%20178.825C229.627%20181.188%20225.94%20182.839%20222.032%20183.668C218.124%20184.497%20214.085%20184.485%20210.182%20183.633C206.279%20182.781%20202.602%20181.108%20199.395%20178.726C196.189%20176.344%20193.525%20173.307%20191.582%20169.816L189.818%20166.666C185.825%20159.468%20184.763%20151.007%20186.852%20143.044C188.941%20135.082%20194.02%20128.232%20201.032%20123.921ZM558.715%20642.82C506.586%20678.213%20445.009%20697.092%20382%20697C208.025%20697%2067%20555.974%2067%20382C67%20322.969%2083.254%20267.718%20111.478%20220.5C112.696%20218.456%20114.432%20216.77%20116.509%20215.61C118.587%20214.45%20120.933%20213.858%20123.312%20213.893C125.691%20213.928%20128.019%20214.589%20130.061%20215.81C132.103%20217.03%20133.788%20218.768%20134.945%20220.846L211.49%20358.595C212.824%20360.993%20213.508%20363.697%20213.474%20366.44C213.441%20369.183%20212.692%20371.87%20211.302%20374.235C209.911%20376.599%20207.926%20378.56%20205.545%20379.922C203.164%20381.284%20200.468%20382%20197.725%20382H130C129.999%20428.603%20142.921%20474.294%20167.33%20513.993C191.739%20553.693%20226.679%20585.846%20268.265%20606.879C309.852%20627.913%20356.457%20637.002%20402.9%20633.137C449.342%20629.272%20493.803%20612.604%20531.341%20584.986C534.645%20582.52%20538.43%20580.775%20542.451%20579.865C546.472%20578.954%20550.64%20578.898%20554.684%20579.7C558.728%20580.501%20562.558%20582.143%20565.928%20584.519C569.297%20586.894%20572.131%20589.951%20574.244%20593.491C578.821%20601.138%20580.227%20610.272%20578.161%20618.941C576.095%20627.61%20570.721%20635.129%20563.188%20639.89C561.702%20640.833%20560.232%20641.799%20558.778%20642.788L558.715%20642.82Z'%20fill='%230F162B'/%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3csvg%20width='800'%20height='800'%20viewBox='0%200%20800%20800'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M201.032%20123.921C202.67%20122.913%20204.182%20121.936%20205.537%20121.023C257.614%2085.7368%20319.094%2066.9154%20382%2067.0003C555.974%2067.0003%20697%20208.026%20697%20382C697.086%20440.93%20680.568%20498.691%20649.34%20548.666C648.405%20550.159%20647.097%20551.383%20645.545%20552.216C643.993%20553.05%20642.25%20553.465%20640.489%20553.42C638.728%20553.376%20637.009%20552.873%20635.501%20551.962C633.993%20551.051%20632.748%20549.763%20631.889%20548.225L552.509%20405.404C551.176%20403.007%20550.492%20400.303%20550.525%20397.56C550.558%20394.817%20551.307%20392.13%20552.698%20389.765C554.089%20387.401%20556.073%20385.44%20558.454%20384.078C560.836%20382.716%20563.531%20382%20566.275%20382H634C634.01%20335.412%20621.106%20289.734%20596.72%20250.038C572.334%20210.343%20537.422%20178.184%20495.861%20157.135C454.3%20136.085%20407.718%20126.968%20361.288%20130.797C314.858%20134.626%20270.398%20151.251%20232.847%20178.825C229.627%20181.188%20225.94%20182.839%20222.032%20183.668C218.124%20184.497%20214.085%20184.485%20210.182%20183.633C206.279%20182.781%20202.602%20181.108%20199.395%20178.726C196.189%20176.344%20193.525%20173.307%20191.582%20169.816L189.818%20166.666C185.825%20159.468%20184.763%20151.007%20186.852%20143.044C188.941%20135.082%20194.02%20128.232%20201.032%20123.921ZM558.715%20642.82C506.586%20678.213%20445.009%20697.092%20382%20697C208.025%20697%2067%20555.974%2067%20382C67%20322.969%2083.254%20267.718%20111.478%20220.5C112.696%20218.456%20114.432%20216.77%20116.509%20215.61C118.587%20214.45%20120.933%20213.858%20123.312%20213.893C125.691%20213.928%20128.019%20214.589%20130.061%20215.81C132.103%20217.03%20133.788%20218.768%20134.945%20220.846L211.49%20358.595C212.824%20360.993%20213.508%20363.697%20213.474%20366.44C213.441%20369.183%20212.692%20371.87%20211.302%20374.235C209.911%20376.599%20207.926%20378.56%20205.545%20379.922C203.164%20381.284%20200.468%20382%20197.725%20382H130C129.999%20428.603%20142.921%20474.294%20167.33%20513.993C191.739%20553.693%20226.679%20585.846%20268.265%20606.879C309.852%20627.913%20356.457%20637.002%20402.9%20633.137C449.342%20629.272%20493.803%20612.604%20531.341%20584.986C534.645%20582.52%20538.43%20580.775%20542.451%20579.865C546.472%20578.954%20550.64%20578.898%20554.684%20579.7C558.728%20580.501%20562.558%20582.143%20565.928%20584.519C569.297%20586.894%20572.131%20589.951%20574.244%20593.491C578.821%20601.138%20580.227%20610.272%20578.161%20618.941C576.095%20627.61%20570.721%20635.129%20563.188%20639.89C561.702%20640.833%20560.232%20641.799%20558.778%20642.788L558.715%20642.82Z'%20fill='%230F162B'/%3e%3c/svg%3e") 50%/cover no-repeat}header #indicators span[data-indicator][data-indicator=poll-status][data-style=inactive]:before{content:var(--tw-content);-webkit-mask:url("data:image/svg+xml,%3csvg%20width='800'%20height='800'%20viewBox='0%200%20800%20800'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M571.418%20595.528C580.7%20609.514%20576.962%20628.288%20563.018%20637.696C533.911%20657.268%20510.181%20670.456%20491.868%20677.302C456.716%20690.382%20419.502%20697.054%20381.995%20697C354.694%20697%20328.234%20693.514%20302.949%20687.004L335.962%20629.8C396.485%20641.014%20459.864%20629.8%20513.289%20597.124L530.089%20586.708C536.769%20582.478%20544.84%20581.032%20552.573%20582.681C560.306%20584.329%20567.086%20588.941%20571.46%20595.528H571.418ZM509.803%2094.006C529.123%20102.574%20547.477%20113.074%20564.53%20125.212L250.869%20668.482C231.733%20659.714%20213.526%20649.048%20196.52%20636.646L509.761%2094.006H509.803ZM381.995%2067C409.295%2067%20435.839%2070.486%20461.082%2076.996L427.985%20134.284L422.063%20133.234C371.12%20125.021%20318.883%20132.645%20272.412%20155.075C225.941%20177.505%20187.476%20213.659%20162.214%20258.653C136.953%20303.647%20126.112%20355.311%20131.158%20406.664C136.204%20458.017%20156.893%20506.583%20190.43%20545.8L157.459%20602.92C113.918%20558.666%2084.4251%20502.532%2072.6843%20441.57C60.9436%20380.609%2067.4788%20317.537%2091.469%20260.277C115.459%20203.018%20155.835%20154.123%20207.524%20119.736C259.213%2085.349%20319.912%2067.0021%20381.995%2067ZM606.572%20161.08C664.623%20219.944%20697.117%20299.327%20697%20382C697.058%20427.158%20687.374%20471.797%20668.607%20512.872C664.536%20521.456%20660.05%20529.838%20655.167%20537.988C653.67%20540.539%20651.526%20542.649%20648.952%20544.106C646.378%20545.563%20643.465%20546.315%20640.508%20546.285C637.55%20546.255%20634.653%20545.445%20632.109%20543.936C629.564%20542.428%20627.464%20540.274%20626.019%20537.694L609.932%20508.714L553.357%20406.948C551.939%20404.39%20551.212%20401.505%20551.251%20398.581C551.289%20395.656%20552.09%20392.791%20553.575%20390.271C555.06%20387.751%20557.177%20385.662%20559.717%20384.212C562.258%20382.761%20565.132%20381.998%20568.058%20382H633.999C634.02%20321.959%20612.568%20263.891%20573.518%20218.284L606.572%20161.122V161.08Z'%20fill='%230F162B'/%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3csvg%20width='800'%20height='800'%20viewBox='0%200%20800%20800'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M571.418%20595.528C580.7%20609.514%20576.962%20628.288%20563.018%20637.696C533.911%20657.268%20510.181%20670.456%20491.868%20677.302C456.716%20690.382%20419.502%20697.054%20381.995%20697C354.694%20697%20328.234%20693.514%20302.949%20687.004L335.962%20629.8C396.485%20641.014%20459.864%20629.8%20513.289%20597.124L530.089%20586.708C536.769%20582.478%20544.84%20581.032%20552.573%20582.681C560.306%20584.329%20567.086%20588.941%20571.46%20595.528H571.418ZM509.803%2094.006C529.123%20102.574%20547.477%20113.074%20564.53%20125.212L250.869%20668.482C231.733%20659.714%20213.526%20649.048%20196.52%20636.646L509.761%2094.006H509.803ZM381.995%2067C409.295%2067%20435.839%2070.486%20461.082%2076.996L427.985%20134.284L422.063%20133.234C371.12%20125.021%20318.883%20132.645%20272.412%20155.075C225.941%20177.505%20187.476%20213.659%20162.214%20258.653C136.953%20303.647%20126.112%20355.311%20131.158%20406.664C136.204%20458.017%20156.893%20506.583%20190.43%20545.8L157.459%20602.92C113.918%20558.666%2084.4251%20502.532%2072.6843%20441.57C60.9436%20380.609%2067.4788%20317.537%2091.469%20260.277C115.459%20203.018%20155.835%20154.123%20207.524%20119.736C259.213%2085.349%20319.912%2067.0021%20381.995%2067ZM606.572%20161.08C664.623%20219.944%20697.117%20299.327%20697%20382C697.058%20427.158%20687.374%20471.797%20668.607%20512.872C664.536%20521.456%20660.05%20529.838%20655.167%20537.988C653.67%20540.539%20651.526%20542.649%20648.952%20544.106C646.378%20545.563%20643.465%20546.315%20640.508%20546.285C637.55%20546.255%20634.653%20545.445%20632.109%20543.936C629.564%20542.428%20627.464%20540.274%20626.019%20537.694L609.932%20508.714L553.357%20406.948C551.939%20404.39%20551.212%20401.505%20551.251%20398.581C551.289%20395.656%20552.09%20392.791%20553.575%20390.271C555.06%20387.751%20557.177%20385.662%20559.717%20384.212C562.258%20382.761%20565.132%20381.998%20568.058%20382H633.999C634.02%20321.959%20612.568%20263.891%20573.518%20218.284L606.572%20161.122V161.08Z'%20fill='%230F162B'/%3e%3c/svg%3e") 50%/cover no-repeat}header #indicators span[data-indicator][data-indicator=uci-changes]{position:relative}header #indicators span[data-indicator][data-indicator=uci-changes]:before{content:var(--tw-content);-webkit-mask:url("data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1758476543825'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='17352'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M439.594667%2085.333333h144.810666a70.4%2070.4%200%200%201%2070.101334%2060.970667l5.802666%2044.8a17.066667%2017.066667%200%200%200%208.192%2012.458667l38.058667%2022.528a17.066667%2017.066667%200%200%200%2015.146667%201.109333l46.848-19.2a71.082667%2071.082667%200%200%201%2088.021333%2029.226667l72.405333%20122.069333c18.218667%2030.72%2010.069333%2069.973333-18.688%2091.221333l-45.184%2033.408a17.066667%2017.066667%200%200%200-6.912%2013.696v28.757334a17.066667%2017.066667%200%200%200%206.912%2013.696l45.226667%2033.408c28.714667%2021.205333%2036.864%2060.458667%2018.645333%2091.221333l-72.405333%20122.026667a71.082667%2071.082667%200%200%201-88.021333%2029.226666l-46.848-19.2a17.066667%2017.066667%200%200%200-15.146667%201.152l-38.058667%2022.528a17.066667%2017.066667%200%200%200-8.192%2012.501334l-5.802666%2044.8A70.4%2070.4%200%200%201%20584.405333%20938.666667h-144.810666a70.4%2070.4%200%200%201-70.101334-60.970667l-5.802666-44.8a17.066667%2017.066667%200%200%200-8.192-12.458667l-38.058667-22.528a17.066667%2017.066667%200%200%200-15.146667-1.109333l-46.848%2019.2a71.082667%2071.082667%200%200%201-88.021333-29.226667l-72.405333-122.069333a69.290667%2069.290667%200%200%201%2018.688-91.221333l45.184-33.408a17.066667%2017.066667%200%200%200%206.912-13.696v-28.757334a17.066667%2017.066667%200%200%200-6.912-13.696l-45.226667-33.408a69.290667%2069.290667%200%200%201-18.645333-91.221333l72.405333-122.026667a71.082667%2071.082667%200%200%201%2088.021333-29.226666l46.848%2019.2a17.066667%2017.066667%200%200%200%2015.146667-1.152l38.058667-22.528a17.066667%2017.066667%200%200%200%208.192-12.501334l5.802666-44.8A70.4%2070.4%200%200%201%20439.594667%2085.333333z%20m1.024%20130.688a75.818667%2075.818667%200%200%201-36.821334%2055.466667l-51.712%2030.464a76.970667%2076.970667%200%200%201-67.925333%204.906667l-35.328-14.336a17.066667%2017.066667%200%200%200-21.077333%207.04L178.645333%20381.738667a17.066667%2017.066667%200%200%200%204.565334%2022.528l33.066666%2024.277333c19.541333%2014.293333%2031.018667%2036.906667%2031.018667%2061.013333v44.885334c0%2024.106667-11.52%2046.72-31.018667%2061.013333l-33.066666%2024.277333a17.066667%2017.066667%200%200%200-4.565334%2022.528l49.066667%2082.176a17.066667%2017.066667%200%200%200%2021.12%207.04l35.328-14.336a76.970667%2076.970667%200%200%201%2067.925333%204.906667l51.712%2030.421333c20.224%2011.946667%2033.792%2032.384%2036.821334%2055.509334l4.010666%2030.506666a17.066667%2017.066667%200%200%200%2016.896%2014.848h100.949334a17.066667%2017.066667%200%200%200%2016.896-14.848l4.010666-30.506666c2.986667-23.125333%2016.597333-43.605333%2036.821334-55.466667l51.712-30.464a76.970667%2076.970667%200%200%201%2067.925333-4.906667l35.328%2014.336a17.066667%2017.066667%200%200%200%2021.077333-7.04l49.109334-82.176a17.066667%2017.066667%200%200%200-4.565334-22.528l-33.066666-24.277333a75.648%2075.648%200%200%201-31.018667-61.013333v-44.885334c0-24.106667%2011.52-46.72%2031.018667-61.013333l33.066666-24.277333a17.066667%2017.066667%200%200%200%204.565334-22.528l-49.066667-82.176a17.066667%2017.066667%200%200%200-21.12-7.04l-35.328%2014.336c-22.186667%209.045333-47.317333%207.210667-67.925333-4.906667l-51.712-30.421333a75.818667%2075.818667%200%200%201-36.821334-55.509334l-4.010666-30.506666A17.066667%2017.066667%200%200%200%20562.474667%20170.666667h-100.949334a17.066667%2017.066667%200%200%200-16.896%2014.848l-4.010666%2030.506666zM682.666667%20512a42.666667%2042.666667%200%200%201-85.333334%200%2085.333333%2085.333333%200%201%200-85.333333%2085.333333%2042.666667%2042.666667%200%200%201%200%2085.333334%20170.666667%20170.666667%200%201%201%20170.666667-170.666667z'%20fill='%230f162b'%20p-id='17353'%3e%3c/path%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1758476543825'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='17352'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M439.594667%2085.333333h144.810666a70.4%2070.4%200%200%201%2070.101334%2060.970667l5.802666%2044.8a17.066667%2017.066667%200%200%200%208.192%2012.458667l38.058667%2022.528a17.066667%2017.066667%200%200%200%2015.146667%201.109333l46.848-19.2a71.082667%2071.082667%200%200%201%2088.021333%2029.226667l72.405333%20122.069333c18.218667%2030.72%2010.069333%2069.973333-18.688%2091.221333l-45.184%2033.408a17.066667%2017.066667%200%200%200-6.912%2013.696v28.757334a17.066667%2017.066667%200%200%200%206.912%2013.696l45.226667%2033.408c28.714667%2021.205333%2036.864%2060.458667%2018.645333%2091.221333l-72.405333%20122.026667a71.082667%2071.082667%200%200%201-88.021333%2029.226666l-46.848-19.2a17.066667%2017.066667%200%200%200-15.146667%201.152l-38.058667%2022.528a17.066667%2017.066667%200%200%200-8.192%2012.501334l-5.802666%2044.8A70.4%2070.4%200%200%201%20584.405333%20938.666667h-144.810666a70.4%2070.4%200%200%201-70.101334-60.970667l-5.802666-44.8a17.066667%2017.066667%200%200%200-8.192-12.458667l-38.058667-22.528a17.066667%2017.066667%200%200%200-15.146667-1.109333l-46.848%2019.2a71.082667%2071.082667%200%200%201-88.021333-29.226667l-72.405333-122.069333a69.290667%2069.290667%200%200%201%2018.688-91.221333l45.184-33.408a17.066667%2017.066667%200%200%200%206.912-13.696v-28.757334a17.066667%2017.066667%200%200%200-6.912-13.696l-45.226667-33.408a69.290667%2069.290667%200%200%201-18.645333-91.221333l72.405333-122.026667a71.082667%2071.082667%200%200%201%2088.021333-29.226666l46.848%2019.2a17.066667%2017.066667%200%200%200%2015.146667-1.152l38.058667-22.528a17.066667%2017.066667%200%200%200%208.192-12.501334l5.802666-44.8A70.4%2070.4%200%200%201%20439.594667%2085.333333z%20m1.024%20130.688a75.818667%2075.818667%200%200%201-36.821334%2055.466667l-51.712%2030.464a76.970667%2076.970667%200%200%201-67.925333%204.906667l-35.328-14.336a17.066667%2017.066667%200%200%200-21.077333%207.04L178.645333%20381.738667a17.066667%2017.066667%200%200%200%204.565334%2022.528l33.066666%2024.277333c19.541333%2014.293333%2031.018667%2036.906667%2031.018667%2061.013333v44.885334c0%2024.106667-11.52%2046.72-31.018667%2061.013333l-33.066666%2024.277333a17.066667%2017.066667%200%200%200-4.565334%2022.528l49.066667%2082.176a17.066667%2017.066667%200%200%200%2021.12%207.04l35.328-14.336a76.970667%2076.970667%200%200%201%2067.925333%204.906667l51.712%2030.421333c20.224%2011.946667%2033.792%2032.384%2036.821334%2055.509334l4.010666%2030.506666a17.066667%2017.066667%200%200%200%2016.896%2014.848h100.949334a17.066667%2017.066667%200%200%200%2016.896-14.848l4.010666-30.506666c2.986667-23.125333%2016.597333-43.605333%2036.821334-55.466667l51.712-30.464a76.970667%2076.970667%200%200%201%2067.925333-4.906667l35.328%2014.336a17.066667%2017.066667%200%200%200%2021.077333-7.04l49.109334-82.176a17.066667%2017.066667%200%200%200-4.565334-22.528l-33.066666-24.277333a75.648%2075.648%200%200%201-31.018667-61.013333v-44.885334c0-24.106667%2011.52-46.72%2031.018667-61.013333l33.066666-24.277333a17.066667%2017.066667%200%200%200%204.565334-22.528l-49.066667-82.176a17.066667%2017.066667%200%200%200-21.12-7.04l-35.328%2014.336c-22.186667%209.045333-47.317333%207.210667-67.925333-4.906667l-51.712-30.421333a75.818667%2075.818667%200%200%201-36.821334-55.509334l-4.010666-30.506666A17.066667%2017.066667%200%200%200%20562.474667%20170.666667h-100.949334a17.066667%2017.066667%200%200%200-16.896%2014.848l-4.010666%2030.506666zM682.666667%20512a42.666667%2042.666667%200%200%201-85.333334%200%2085.333333%2085.333333%200%201%200-85.333333%2085.333333%2042.666667%2042.666667%200%200%201%200%2085.333334%20170.666667%20170.666667%200%201%201%20170.666667-170.666667z'%20fill='%230f162b'%20p-id='17353'%3e%3c/path%3e%3c/svg%3e") 50%/cover no-repeat}header #indicators span[data-indicator][data-indicator=uci-changes][data-count]:not([data-count="0"]):after{content:var(--tw-content);content:var(--tw-content);top:calc(var(--spacing)*-.5);content:var(--tw-content);right:calc(var(--spacing)*-.5);content:var(--tw-content);z-index:10;content:var(--tw-content);content:var(--tw-content);min-height:calc(var(--spacing)*3);content:var(--tw-content);min-width:calc(var(--spacing)*3);content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);background-color:var(--danger);content:var(--tw-content);padding-inline:calc(var(--spacing)*.5);content:var(--tw-content);content:var(--tw-content);--tw-leading:1;content:var(--tw-content);--tw-font-weight:var(--font-weight-bold);font-size:8px;line-height:1;font-weight:var(--font-weight-bold);content:var(--tw-content);color:var(--on-brand);content:var(--tw-content);--tw-shadow:var(--app-shadow-sm);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-content:attr(data-count);content:var(--tw-content);border-radius:3.40282e38px;justify-content:center;align-items:center;display:flex;position:absolute}@media (min-width:48rem){body[data-nav-type=sidebar]{transition-property:grid-template-columns;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.25s;--tw-ease:var(--ease-out);transition-duration:.25s;transition-timing-function:var(--ease-out);grid-template-rows:auto minmax(0,1fr);grid-template-columns:17rem minmax(0,1fr);display:grid;overflow-x:clip}body[data-nav-type=sidebar].sidebar-collapsed{grid-template-columns:0 minmax(0,1fr)}body[data-nav-type=sidebar]>header{margin-bottom:calc(var(--spacing)*0);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--hairline);grid-column:1/-1;grid-row-start:1}body[data-nav-type=sidebar]>.sidebar-panel{grid-row-start:2;grid-column-start:1}body[data-nav-type=sidebar]>#maincontent{min-width:calc(var(--spacing)*0);padding-top:calc(var(--spacing)*2);grid-row-start:2;grid-column-start:2}}body[data-nav-type=sidebar] .header-crumb{margin-block:calc(var(--spacing)*0);margin-right:auto;margin-left:calc(var(--spacing)*6);min-width:calc(var(--spacing)*0);align-items:center;gap:calc(var(--spacing)*2);padding:calc(var(--spacing)*0);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--text-muted);list-style-type:none;display:none;overflow:hidden}@media (min-width:48rem){body[data-nav-type=sidebar] .header-crumb{display:flex}}body[data-nav-type=sidebar] .header-crumb li{margin:calc(var(--spacing)*0);white-space:nowrap;list-style-type:none}body[data-nav-type=sidebar] .header-crumb .crumb-sep{opacity:.5}body[data-nav-type=sidebar] .header-crumb .current{min-width:calc(var(--spacing)*0);text-overflow:ellipsis;white-space:nowrap;--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--text);overflow:hidden}body[data-nav-type=sidebar] .sidebar-panel{top:calc(var(--spacing)*14);border-right-style:var(--tw-border-style);border-right-width:1px;border-color:var(--hairline);width:100%;height:calc(100vh - 3.5rem);transition-property:visibility;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.25s;border-radius:0;transition-duration:.25s;display:none;position:sticky;overflow:hidden}@media (min-width:48rem){body[data-nav-type=sidebar] .sidebar-panel{display:block}}body[data-nav-type=sidebar].sidebar-collapsed .sidebar-panel{visibility:hidden}body[data-nav-type=sidebar] .sidebar-panel-inner{height:100%;width:calc(var(--spacing)*68);background-color:var(--bg);transition-property:translate,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.25s;flex-direction:column;transition-duration:.25s;display:flex;overflow:hidden}body[data-nav-type=sidebar].sidebar-collapsed .sidebar-panel-inner{--tw-translate-x:-100%;translate:var(--tw-translate-x)var(--tw-translate-y);opacity:0}body[data-nav-type=sidebar] .sidebar-list{margin:calc(var(--spacing)*0);flex:1;list-style-type:none}:where(body[data-nav-type=sidebar] .sidebar-list>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*.5)*calc(1 - var(--tw-space-y-reverse)))}body[data-nav-type=sidebar] .sidebar-list{padding:calc(var(--spacing)*3);overflow-y:auto}body[data-nav-type=sidebar] .sidebar-list li{margin:calc(var(--spacing)*0);list-style-type:none}body[data-nav-type=sidebar] .sidebar-list .navigation-direct{text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));overflow:hidden}body[data-nav-type=sidebar] .sidebar-submenu{margin:calc(var(--spacing)*0);min-height:calc(var(--spacing)*0);list-style-type:none}:where(body[data-nav-type=sidebar] .sidebar-submenu>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*.5)*calc(1 - var(--tw-space-y-reverse)))}body[data-nav-type=sidebar] .sidebar-submenu{padding:calc(var(--spacing)*0);padding-left:calc(var(--spacing)*4);overflow:hidden}body[data-nav-type=sidebar] .sidebar-submenu .navigation-sublink{padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*1.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}body[data-nav-type=sidebar] .sidebar-footer{border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--hairline);padding:calc(var(--spacing)*3);flex-shrink:0}body[data-nav-type=sidebar] .sidebar-footer .nav-link{color:var(--text-muted)}@media (hover:hover){body[data-nav-type=sidebar] .sidebar-footer .nav-link:hover{color:var(--danger)}}#maincontent{width:95.8333%;min-height:calc(100vh - 4rem);max-width:var(--container-max-width);padding-inline:calc(var(--spacing)*4);margin-inline:auto}@media not all and (min-width:48rem){#maincontent{width:100%;padding-inline:calc(var(--spacing)*3)}}#maincontent #view{margin-inline:calc(var(--spacing)*0);width:100%;padding:calc(var(--spacing)*0);--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);background-color:#0000}#maincontent #view:empty{display:none}@media (min-width:48rem){#maincontent #view{padding:calc(var(--spacing)*0)}}#maincontent #view .cbi-title-section{margin-bottom:calc(var(--spacing)*6);--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}@media not all and (min-width:48rem){#maincontent #view .cbi-title-section{margin-inline:calc(var(--spacing)*2);margin-bottom:calc(var(--spacing)*3)}}#maincontent #view .controls{margin:calc(var(--spacing)*2);align-items:center;gap:calc(var(--spacing)*3);flex-wrap:wrap;display:flex}@media not all and (min-width:48rem){#maincontent #view .controls{margin:calc(var(--spacing)*1);gap:calc(var(--spacing)*2)}}#maincontent #view .controls label input[type=radio],#maincontent #view .controls label input[type=checkbox]{margin-right:calc(var(--spacing)*1);vertical-align:middle}#maincontent #view #content_syslog{margin:calc(var(--spacing)*2)}@media not all and (min-width:48rem){#maincontent #view #content_syslog{margin:calc(var(--spacing)*1)}}#maincontent #view #content_syslog>div{align-items:baseline;column-gap:calc(var(--spacing)*2);flex-wrap:wrap;display:flex}@media not all and (min-width:48rem){#maincontent #view #content_syslog>div{column-gap:calc(var(--spacing)*1.5)}#maincontent #view #content_syslog>div>.cbi-input-select,#maincontent #view #content_syslog>div>.cbi-input-text{min-width:calc(var(--spacing)*45)}}#maincontent #view div[style]>svg:where([data-darkmode=true],[data-darkmode=true] *){background-color:var(--surface)!important}#maincontent #view div[style]>svg line[style]:where([data-darkmode=true],[data-darkmode=true] *){stroke:var(--text)!important}#maincontent .cbi-map-descr,#maincontent .cbi-section-descr{margin-bottom:calc(var(--spacing)*6);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed);color:var(--text-muted)}@media not all and (min-width:48rem){#maincontent .cbi-map-descr,#maincontent .cbi-section-descr{margin-inline:calc(var(--spacing)*2);margin-bottom:calc(var(--spacing)*3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}#maincontent .cbi-page-actions{margin-top:calc(var(--spacing)*6);justify-content:flex-end;align-items:center;gap:calc(var(--spacing)*3);border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--hairline);padding-top:calc(var(--spacing)*4);flex-wrap:wrap;display:flex}@media not all and (min-width:48rem){#maincontent .cbi-page-actions{margin-inline:calc(var(--spacing)*2);margin-top:calc(var(--spacing)*4);gap:calc(var(--spacing)*2);padding-top:calc(var(--spacing)*3)}}#maincontent .zone-forwards{align-items:stretch;gap:calc(var(--spacing)*2);--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed);flex-wrap:nowrap;display:flex}#maincontent .zone-forwards>span{flex-shrink:0;flex-basis:calc(var(--spacing)*8);color:var(--text-muted);justify-content:center;align-self:center;align-items:center;display:flex}#maincontent .zone-forwards .zone-src,#maincontent .zone-forwards .zone-dest{gap:calc(var(--spacing)*1.5);flex-direction:column;flex:1;display:flex}#maincontent #syslog,#maincontent #log_textarea{width:100%;font-family:var(--font-mono);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}#maincontent #syslog{border-radius:calc(var(--radius-base)*3);border-style:var(--tw-border-style);background-color:var(--surface-sunken);padding:calc(var(--spacing)*6);color:var(--text);--tw-shadow:var(--app-shadow-md);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-width:1px}@media not all and (min-width:48rem){#maincontent #syslog{padding:calc(var(--spacing)*3)}}footer{margin-top:calc(var(--spacing)*2);min-height:calc(var(--spacing)*16);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--text-muted);flex-wrap:wrap;justify-content:space-between;align-items:center;display:flex}footer a{color:var(--brand)}footer span{text-align:center;display:inline-block}footer .breadcrumb{align-items:center;gap:calc(var(--spacing)*1);background-color:var(--surface-overlay);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*1.5);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-shadow:var(--app-shadow-sm);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-backdrop-blur:blur(var(--blur-md));--tw-backdrop-saturate:saturate(150%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;border-radius:3.40282e38px;transition-duration:.15s;display:flex}@media (hover:hover){footer .breadcrumb:hover{background-color:var(--surface)}}footer .breadcrumb li{list-style-type:none}footer .breadcrumb li.active a{color:var(--text)}.control-group{margin-top:calc(var(--spacing)*1)}.control-group,.cbi-page-actions>div,.cbi-section-actions>div{align-items:center;gap:calc(var(--spacing)*2);flex-flow:row;display:flex}@media not all and (min-width:48rem){.control-group,.cbi-page-actions>div,.cbi-section-actions>div{gap:calc(var(--spacing)*1);flex-wrap:wrap}}.nav-link{border-radius:calc(var(--radius-base)*1.5);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*1.5);color:var(--text);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;text-decoration-line:none;transition-duration:.15s;display:block}@media (hover:hover){.nav-link:hover{background-color:var(--hover-faint)}}.navigation-direct{color:var(--text)}@media (hover:hover){.navigation-direct:hover{color:var(--text)}}.navigation-direct.is-active-page{background-color:var(--brand-subtle);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--brand)}@media (hover:hover){.navigation-direct.is-active-page:hover{color:var(--brand)}}.nav-category{cursor:pointer;appearance:none;align-items:center;gap:calc(var(--spacing)*2);border-radius:var(--radius-base);border-style:var(--tw-border-style);width:100%;padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);text-align:left;font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide);color:var(--text-muted);--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;-webkit-user-select:none;user-select:none;background-color:#0000;border-width:0;transition-duration:.15s;display:flex}@media (hover:hover){.nav-category:hover{color:var(--text)}}.nav-category:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--focus-ring);--tw-outline-style:none;outline-style:none}.navigation-group-toggle:after{content:var(--tw-content);width:calc(var(--spacing)*3.5);height:calc(var(--spacing)*3.5);content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);opacity:.55;content:var(--tw-content);transition-property:transform,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));content:var(--tw-content);--tw-duration:.25s;--tw-content:"";content:var(--tw-content);content:var(--tw-content);background-color:currentColor;flex-shrink:0;transition-duration:.25s;-webkit-mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20width='24'%20height='24'%20fill='%23000000'%20style='opacity:1;'%3e%3cpath%20fill-rule='evenodd'%20d='M8.22%205.22a.75.75%200%200%201%201.06%200l4.25%204.25a.75.75%200%200%201%200%201.06l-4.25%204.25a.75.75%200%200%201-1.06-1.06L11.94%2010L8.22%206.28a.75.75%200%200%201%200-1.06'%20clip-rule='evenodd'/%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20width='24'%20height='24'%20fill='%23000000'%20style='opacity:1;'%3e%3cpath%20fill-rule='evenodd'%20d='M8.22%205.22a.75.75%200%200%201%201.06%200l4.25%204.25a.75.75%200%200%201%200%201.06l-4.25%204.25a.75.75%200%200%201-1.06-1.06L11.94%2010L8.22%206.28a.75.75%200%200%201%200-1.06'%20clip-rule='evenodd'/%3e%3c/svg%3e") 50%/cover no-repeat}@media (hover:hover){.navigation-group-toggle:hover:after{content:var(--tw-content);opacity:1}}.nav-category-label{min-width:calc(var(--spacing)*0);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.navigation-group.is-expanded>.navigation-group-toggle{color:var(--brand)}.navigation-group.is-expanded>.navigation-group-toggle:after{content:var(--tw-content);rotate:90deg}.navigation-group.is-active-group>.navigation-group-toggle{color:var(--brand)}.navigation-group-region{opacity:0;transition-property:grid-template-rows,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.25s;--tw-ease:var(--ease-out);transition-duration:.25s;transition-timing-function:var(--ease-out);grid-template-rows:0fr;display:grid}.navigation-group.is-expanded>.navigation-group-region{opacity:1;grid-template-rows:1fr}.navigation-submenu-list{min-height:calc(var(--spacing)*0);list-style-type:none;overflow:hidden}.navigation-sublink{border-radius:var(--radius-base);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--text-muted);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;text-decoration-line:none;transition-duration:.15s;display:flex;position:relative}@media (hover:hover){.navigation-sublink:hover{background-color:var(--hover-faint);color:var(--text)}}.navigation-sublink.is-active-page{background-color:var(--brand-subtle);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--brand)}@media (hover:hover){.navigation-sublink.is-active-page:hover{color:var(--brand)}}.nav-category-preview{text-overflow:ellipsis;white-space:nowrap;padding-bottom:calc(var(--spacing)*1);color:var(--text-subtle);overflow:hidden}.nav-category-preview .nav-preview-current{color:var(--brand)}.desktop-nav-title[data-section=status]{--menu-icon:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M3%2012h4l3%208l4%20-16l3%208h4'%20/%3e%3c/svg%3e")}.desktop-nav-title[data-section=statistics]{--menu-icon:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M3%2013a1%201%200%200%201%201%20-1h4a1%201%200%200%201%201%201v6a1%201%200%200%201%20-1%201h-4a1%201%200%200%201%20-1%20-1l0%20-6'%20/%3e%3cpath%20d='M15%209a1%201%200%200%201%201%20-1h4a1%201%200%200%201%201%201v10a1%201%200%200%201%20-1%201h-4a1%201%200%200%201%20-1%20-1l0%20-10'%20/%3e%3cpath%20d='M9%205a1%201%200%200%201%201%20-1h4a1%201%200%200%201%201%201v14a1%201%200%200%201%20-1%201h-4a1%201%200%200%201%20-1%20-1l0%20-14'%20/%3e%3cpath%20d='M4%2020h14'%20/%3e%3c/svg%3e")}.desktop-nav-title[data-section=nlbw]{--menu-icon:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M3%2012a9%209%200%201%200%2018%200a9%209%200%201%200%20-18%200'%20/%3e%3cpath%20d='M11%2012a1%201%200%201%200%202%200a1%201%200%201%200%20-2%200'%20/%3e%3cpath%20d='M13.41%2010.59l2.59%20-2.59'%20/%3e%3cpath%20d='M7%2012a5%205%200%200%201%205%20-5'%20/%3e%3c/svg%3e")}.desktop-nav-title[data-section=system]{--menu-icon:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M10.325%204.317c.426%20-1.756%202.924%20-1.756%203.35%200a1.724%201.724%200%200%200%202.573%201.066c1.543%20-.94%203.31%20.826%202.37%202.37a1.724%201.724%200%200%200%201.065%202.572c1.756%20.426%201.756%202.924%200%203.35a1.724%201.724%200%200%200%20-1.066%202.573c.94%201.543%20-.826%203.31%20-2.37%202.37a1.724%201.724%200%200%200%20-2.572%201.065c-.426%201.756%20-2.924%201.756%20-3.35%200a1.724%201.724%200%200%200%20-2.573%20-1.066c-1.543%20.94%20-3.31%20-.826%20-2.37%20-2.37a1.724%201.724%200%200%200%20-1.065%20-2.572c-1.756%20-.426%20-1.756%20-2.924%200%20-3.35a1.724%201.724%200%200%200%201.066%20-2.573c-.94%20-1.543%20.826%20-3.31%202.37%20-2.37c1%20.608%202.296%20.07%202.572%20-1.065'%20/%3e%3cpath%20d='M9%2012a3%203%200%201%200%206%200a3%203%200%200%200%20-6%200'%20/%3e%3c/svg%3e")}.desktop-nav-title[data-section=services]{--menu-icon:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M4%205a1%201%200%200%201%201%20-1h4a1%201%200%200%201%201%201v4a1%201%200%200%201%20-1%201h-4a1%201%200%200%201%20-1%20-1l0%20-4'%20/%3e%3cpath%20d='M4%2015a1%201%200%200%201%201%20-1h4a1%201%200%200%201%201%201v4a1%201%200%200%201%20-1%201h-4a1%201%200%200%201%20-1%20-1l0%20-4'%20/%3e%3cpath%20d='M14%2015a1%201%200%200%201%201%20-1h4a1%201%200%200%201%201%201v4a1%201%200%200%201%20-1%201h-4a1%201%200%200%201%20-1%20-1l0%20-4'%20/%3e%3cpath%20d='M14%207l6%200'%20/%3e%3cpath%20d='M17%204l0%206'%20/%3e%3c/svg%3e")}.desktop-nav-title[data-section=nas]{--menu-icon:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M3%207a3%203%200%200%201%203%20-3h12a3%203%200%200%201%203%203v2a3%203%200%200%201%20-3%203h-12a3%203%200%200%201%20-3%20-3v-2'%20/%3e%3cpath%20d='M3%2015a3%203%200%200%201%203%20-3h12a3%203%200%200%201%203%203v2a3%203%200%200%201%20-3%203h-12a3%203%200%200%201%20-3%20-3l0%20-2'%20/%3e%3cpath%20d='M7%208l0%20.01'%20/%3e%3cpath%20d='M7%2016l0%20.01'%20/%3e%3cpath%20d='M11%208h6'%20/%3e%3cpath%20d='M11%2016h6'%20/%3e%3c/svg%3e")}.desktop-nav-title[data-section=control]{--menu-icon:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M4%2010a2%202%200%201%200%204%200a2%202%200%200%200%20-4%200'%20/%3e%3cpath%20d='M6%204v4'%20/%3e%3cpath%20d='M6%2012v8'%20/%3e%3cpath%20d='M10%2016a2%202%200%201%200%204%200a2%202%200%200%200%20-4%200'%20/%3e%3cpath%20d='M12%204v10'%20/%3e%3cpath%20d='M12%2018v2'%20/%3e%3cpath%20d='M16%207a2%202%200%201%200%204%200a2%202%200%200%200%20-4%200'%20/%3e%3cpath%20d='M18%204v1'%20/%3e%3cpath%20d='M18%209v11'%20/%3e%3c/svg%3e")}.desktop-nav-title[data-section=network]{--menu-icon:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M3%2012a9%209%200%201%200%2018%200a9%209%200%200%200%20-18%200'%20/%3e%3cpath%20d='M3.6%209h16.8'%20/%3e%3cpath%20d='M3.6%2015h16.8'%20/%3e%3cpath%20d='M11.5%203a17%2017%200%200%200%200%2018'%20/%3e%3cpath%20d='M12.5%203a17%2017%200%200%201%200%2018'%20/%3e%3c/svg%3e")}.desktop-nav-title[data-section=vpn]{--menu-icon:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M12%203a12%2012%200%200%200%208.5%203a12%2012%200%200%201%20-8.5%2015a12%2012%200%200%201%20-8.5%20-15a12%2012%200%200%200%208.5%20-3'%20/%3e%3c/svg%3e")}.desktop-nav-title[data-section=docker]{--menu-icon:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M12%203l8%204.5l0%209l-8%204.5l-8%20-4.5l0%20-9l8%20-4.5'%20/%3e%3cpath%20d='M12%2012l8%20-4.5'%20/%3e%3cpath%20d='M12%2012l0%209'%20/%3e%3cpath%20d='M12%2012l-8%20-4.5'%20/%3e%3c/svg%3e")}.desktop-nav-title[data-section=asterisk]{--menu-icon:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M5%204h4l2%205l-2.5%201.5a11%2011%200%200%200%205%205l1.5%20-2.5l5%202v4a2%202%200%200%201%20-2%202a16%2016%200%200%201%20-15%20-15a2%202%200%200%201%202%20-2'%20/%3e%3c/svg%3e")}.theme-switcher{align-items:center;gap:calc(var(--spacing)*0);background-color:var(--surface);--tw-shadow:var(--app-shadow-sm);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-backdrop-blur:blur(var(--blur-md));--tw-backdrop-saturate:saturate(150%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;border-radius:3.40282e38px;transition-duration:.15s;display:inline-flex;position:relative}@media not all and (min-width:48rem){.theme-switcher{padding-block:calc(var(--spacing)*.5)}}.theme-switcher{border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline)}.theme-switcher:before{content:var(--tw-content);content:var(--tw-content);top:calc(var(--spacing)*1);content:var(--tw-content);left:calc(var(--spacing)*1);content:var(--tw-content);z-index:0;content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);background-color:var(--hairline);content:var(--tw-content);--tw-shadow:var(--app-shadow-md);width:calc(33.333% - .5rem);height:calc(100% - .5rem);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);content:var(--tw-content);--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);content:var(--tw-content);--tw-ring-color:var(--hairline);content:var(--tw-content);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));content:var(--tw-content);--tw-duration:.25s;border-radius:3.40282e38px;transition-duration:.25s;position:absolute}@media not all and (min-width:48rem){footer .theme-switcher{display:none}}.theme-switcher .theme-option{z-index:10;cursor:pointer;justify-content:center;align-items:center;gap:calc(var(--spacing)*1.5);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*1.5);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;border-radius:3.40282e38px;transition-duration:.15s;display:flex;position:relative}@media (hover:hover){.theme-switcher .theme-option:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}}.theme-switcher .theme-option:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.theme-switcher .theme-option input[type=radio]{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.theme-switcher .theme-option .theme-icon{color:var(--text-muted);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;justify-content:center;align-items:center;transition-duration:.15s;display:flex}.theme-switcher .theme-option .theme-icon svg{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;transition-duration:.15s}.theme-switcher .theme-option .theme-label{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--text-muted);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;transition-duration:.15s;display:none}.theme-switcher .theme-option.active .theme-icon{color:var(--text)}.theme-switcher .theme-option.active .theme-icon svg{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.theme-switcher .theme-option.active .theme-label,.theme-switcher .theme-option:hover:not(.active) .theme-icon,.theme-switcher .theme-option:hover:not(.active) .theme-label{color:var(--text)}.theme-switcher:has(.theme-option[data-theme=device].active):before{content:var(--tw-content);--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.theme-switcher:has(.theme-option[data-theme=light].active):before{content:var(--tw-content);--tw-translate-x:calc(100% + .5rem);translate:var(--tw-translate-x)var(--tw-translate-y)}.theme-switcher:has(.theme-option[data-theme=dark].active):before{content:var(--tw-content);--tw-translate-x:calc(200% + 1rem);translate:var(--tw-translate-x)var(--tw-translate-y)}.floating-toolbar{right:calc(var(--spacing)*4);bottom:calc(var(--spacing)*4);z-index:40;flex-direction:column;align-items:center;display:flex;position:fixed}@media not all and (min-width:48rem){.floating-toolbar{right:calc(var(--spacing)*3);bottom:calc(var(--spacing)*3)}}.floating-toolbar .toolbar-list{visibility:visible;margin-bottom:calc(var(--spacing)*2);transform-origin:bottom;opacity:1;transition-property:grid-template-rows,transform,opacity,visibility;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.25s;--tw-ease:var(--ease-in-out);transition-duration:.25s;transition-timing-function:var(--ease-in-out);grid-template-rows:1fr;display:grid}@media not all and (min-width:48rem){.floating-toolbar .toolbar-list{margin-bottom:calc(var(--spacing)*1.5)}}.floating-toolbar .toolbar-list .toolbar-list-inner{min-height:calc(var(--spacing)*0);align-items:center;gap:calc(var(--spacing)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface-overlay);padding:calc(var(--spacing)*1);--tw-shadow:var(--app-shadow-sm);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-radius:3.40282e38px;flex-direction:column;display:flex;overflow:hidden}@media not all and (min-width:48rem){.floating-toolbar .toolbar-list .toolbar-list-inner{gap:calc(var(--spacing)*1.5);padding:calc(var(--spacing)*.5)}}.floating-toolbar .toolbar-btn{height:calc(var(--spacing)*10);width:calc(var(--spacing)*10);cursor:pointer;padding:calc(var(--spacing)*2);transition-property:background-color,transform,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;--tw-ease:var(--ease-in-out);transition-duration:.15s;transition-timing-function:var(--ease-in-out);border-radius:3.40282e38px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.floating-toolbar .toolbar-btn:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}@media not all and (min-width:48rem){.floating-toolbar .toolbar-btn{height:calc(var(--spacing)*9);width:calc(var(--spacing)*9);padding:calc(var(--spacing)*1.5)}}.floating-toolbar .toolbar-btn .icon{height:calc(var(--spacing)*5);width:calc(var(--spacing)*5);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;--tw-ease:var(--ease-in-out);transition-duration:.15s;transition-timing-function:var(--ease-in-out);flex-shrink:0}@media not all and (min-width:48rem){.floating-toolbar .toolbar-btn .icon{height:calc(var(--spacing)*4);width:calc(var(--spacing)*4)}}.floating-toolbar .toolbar-btn:not(.toggle){text-decoration-line:none}@media (hover:hover){.floating-toolbar .toolbar-btn:not(.toggle):hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y);background-color:var(--hover-faint)}}.floating-toolbar .toolbar-btn:not(.toggle) .icon{object-fit:contain}.floating-toolbar .toolbar-btn:not(.toggle) .icon:where([data-darkmode=true],[data-darkmode=true] *){--tw-invert:invert(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.floating-toolbar .toolbar-btn.toggle{border-style:var(--tw-border-style);background-color:var(--surface);--tw-shadow:var(--app-shadow-sm);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-width:0}.floating-toolbar .toolbar-btn.toggle .icon{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;--tw-ease:var(--ease-out);transition-duration:.15s;transition-timing-function:var(--ease-out)}.floating-toolbar.collapsed .toolbar-list{pointer-events:none;visibility:hidden;--tw-translate-y:calc(var(--spacing)*2);translate:var(--tw-translate-x)var(--tw-translate-y);--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x)var(--tw-scale-y);opacity:0;grid-template-rows:0fr}.floating-toolbar.collapsed .toolbar-btn:not(.toggle){--tw-scale-x:50%;--tw-scale-y:50%;--tw-scale-z:50%;scale:var(--tw-scale-x)var(--tw-scale-y);opacity:0}.floating-toolbar.collapsed .toolbar-btn.toggle .icon{rotate:45deg}button,input[type=button],input[type=submit],input[type=reset],.btn,.cbi-button{cursor:pointer;justify-content:center;align-items:center;gap:calc(var(--spacing)*1.5);border-radius:calc(var(--radius-base)*1.5);border-style:var(--tw-border-style);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*1.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition-property:background-color,border-color,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;border-width:1px;transition-duration:.15s;display:inline-flex}@media not all and (min-width:48rem){button,input[type=button],input[type=submit],input[type=reset],.btn,.cbi-button{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}}:is(button,input[type=button],input[type=submit],input[type=reset],.btn,.cbi-button)[disabled]{cursor:not-allowed;opacity:.4}:is(button,input[type=button],input[type=submit],input[type=reset],.btn,.cbi-button)[disabled]:where([data-darkmode=true],[data-darkmode=true] *){opacity:.3}.td :is(button,input[type=button],input[type=submit],input[type=reset],.btn,.cbi-button){white-space:nowrap;flex:none;width:auto;display:inline-flex}@media not all and (min-width:48rem){.td :is(button,input[type=button],input[type=submit],input[type=reset],.btn,.cbi-button){min-height:calc(var(--spacing)*9);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.btn,.cbi-button,.cbi-button-default,.cbi-button-download,.cbi-button-find,.cbi-button-link,.cbi-button-up,.cbi-button-down{border-color:var(--hairline);background-color:var(--surface-sunken);color:var(--text)}@media (hover:hover){:is(.btn,.cbi-button,.cbi-button-default,.cbi-button-download,.cbi-button-find,.cbi-button-link,.cbi-button-up,.cbi-button-down):hover{background-color:var(--hover-faint)}}.drag-handle{border-color:var(--hairline);background-color:var(--surface-sunken);color:var(--text-muted)}@media (hover:hover){.drag-handle:hover{background-color:var(--hover-faint)}}.btn.primary,.cbi-button-action,.cbi-button-apply,.cbi-button-reload,.cbi-button-add,.cbi-button-edit{border-color:var(--brand);background-color:var(--brand);color:var(--on-brand)}@media (hover:hover){:is(.btn.primary,.cbi-button-action,.cbi-button-apply,.cbi-button-reload,.cbi-button-add,.cbi-button-edit):hover{background-color:var(--brand-hover)}}.cbi-button-positive,.cbi-button-fieldadd,.cbi-button-save{background-color:var(--brand-subtle);color:var(--brand);border-color:#0000}@media (hover:hover){:is(.cbi-button-positive,.cbi-button-fieldadd,.cbi-button-save):hover{background-color:var(--brand-subtle-hover)}}.cbi-button-negative,.cbi-section-remove .cbi-button,.cbi-button-reset,.cbi-button-remove{background-color:var(--danger-surface);color:var(--danger);border-color:#0000}@media (hover:hover){:is(.cbi-button-negative,.cbi-section-remove .cbi-button,.cbi-button-reset,.cbi-button-remove):hover{background-color:var(--danger-surface-hover)}}input:disabled{cursor:not-allowed;opacity:.4}input:disabled:where([data-darkmode=true],[data-darkmode=true] *){opacity:.3}input[type=text],input[type=password],.cbi-input-text,.cbi-input{border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface-sunken);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*1.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal);color:var(--text);position:relative}:is(input[type=text],input[type=password],.cbi-input-text,.cbi-input)::placeholder{color:var(--text-muted)}input[type=text],input[type=password],.cbi-input-text,.cbi-input{--tw-shadow:var(--app-shadow-sm);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:border-color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;transition-duration:.15s}:is(input[type=text],input[type=password],.cbi-input-text,.cbi-input):focus{border-color:var(--brand);--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--focus-ring);--tw-outline-style:none;outline-style:none}.table.cbi-section-table :is(input[type=text],input[type=password],.cbi-input-text,.cbi-input){width:100%}.cbi-input-text{min-width:calc(var(--spacing)*20)}@media not all and (min-width:48rem){.cbi-input-text{min-width:calc(var(--spacing)*14)}}#localtime{min-width:calc(var(--spacing)*70)}input[type=radio],input[type=checkbox]{margin-right:calc(var(--spacing)*3);height:calc(var(--spacing)*4);width:calc(var(--spacing)*4);cursor:pointer;appearance:none;display:inline-block;position:relative}:is(input[type=radio],input[type=checkbox]):before{content:var(--tw-content);content:var(--tw-content);top:calc(var(--spacing)*0);content:var(--tw-content);left:calc(var(--spacing)*0);content:var(--tw-content);height:calc(var(--spacing)*4);content:var(--tw-content);width:calc(var(--spacing)*4);content:var(--tw-content);border-style:var(--tw-border-style);content:var(--tw-content);border-width:1px;border-color:var(--hairline);content:var(--tw-content);background-color:var(--surface-sunken);content:var(--tw-content);transition-property:background-color,border-color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));content:var(--tw-content);--tw-duration:.15s;transition-duration:.15s;position:absolute}:is(input[type=radio],input[type=checkbox]):after{content:var(--tw-content);content:var(--tw-content);top:calc(var(--spacing)*.5);content:var(--tw-content);left:calc(var(--spacing)*.5);content:var(--tw-content);height:calc(var(--spacing)*3);content:var(--tw-content);width:calc(var(--spacing)*3);content:var(--tw-content);background-color:var(--on-brand);content:var(--tw-content);opacity:0;content:var(--tw-content);transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));content:var(--tw-content);--tw-duration:.15s;transition-duration:.15s;position:absolute}:is(input[type=radio],input[type=checkbox]):checked:before{content:var(--tw-content);border-color:var(--brand);content:var(--tw-content);background-color:var(--brand)}:is(input[type=radio],input[type=checkbox]):checked:after{content:var(--tw-content);opacity:1}@media (hover:hover){:is(input[type=radio],input[type=checkbox]):hover:before{content:var(--tw-content);border-color:var(--hairline)}}:is(input[type=radio],input[type=checkbox]):focus:before{content:var(--tw-content);border-color:var(--brand);content:var(--tw-content);--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);content:var(--tw-content);--tw-ring-color:var(--focus-ring);content:var(--tw-content);--tw-outline-style:none;outline-style:none}:is(input[type=radio],input[type=checkbox]):disabled{cursor:not-allowed}input[type=radio]:before{content:var(--tw-content);border-radius:3.40282e38px}input[type=radio]:after{content:var(--tw-content);-webkit-mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='currentColor'%3e%3ccircle%20cx='12'%20cy='12'%20r='6'/%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='currentColor'%3e%3ccircle%20cx='12'%20cy='12'%20r='6'/%3e%3c/svg%3e") 50%/cover no-repeat}input[type=checkbox]:before{content:var(--tw-content);border-radius:calc(var(--radius-base)*.5)}input[type=checkbox]:after{content:var(--tw-content);-webkit-mask:url("data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1760890864667'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='18898'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M918.8%2083.7c-43.5-30.3-104-19.5-134.6%2024.1l-425.8%20606-127-135.7c-36.4-38.9-98.1-41.1-137-4.8-39%2036.2-41.1%2097.7-4.7%20136.6l206.5%20220.7c4.7%205%209.8%209.4%2015.1%2013.1%200.7%200.5%201.4%201%202.2%201.5%2043.5%2030.3%20104%2019.5%20134.6-24.1l494-703.2c30.7-43.5%2020.1-103.9-23.3-134.2z'%20fill='%230f162b'%20p-id='18899'%3e%3c/path%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1760890864667'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='18898'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M918.8%2083.7c-43.5-30.3-104-19.5-134.6%2024.1l-425.8%20606-127-135.7c-36.4-38.9-98.1-41.1-137-4.8-39%2036.2-41.1%2097.7-4.7%20136.6l206.5%20220.7c4.7%205%209.8%209.4%2015.1%2013.1%200.7%200.5%201.4%201%202.2%201.5%2043.5%2030.3%20104%2019.5%20134.6-24.1l494-703.2c30.7-43.5%2020.1-103.9-23.3-134.2z'%20fill='%230f162b'%20p-id='18899'%3e%3c/path%3e%3c/svg%3e") 50%/cover no-repeat}.cbi-checkbox{align-items:center;display:inline-flex;position:relative}textarea{min-height:calc(var(--spacing)*24);resize:vertical;border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface-sunken);width:100%;padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal);color:var(--text)}textarea::placeholder{color:var(--text-muted)}textarea{--tw-shadow:var(--app-shadow-sm);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:border-color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;transition-duration:.15s}textarea:focus{border-color:var(--brand);--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--focus-ring);--tw-outline-style:none;outline-style:none}textarea[disabled]{cursor:not-allowed;opacity:.4}textarea[disabled]:where([data-darkmode=true],[data-darkmode=true] *){opacity:.3}select{appearance:none;border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface-sunken);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*1.5);padding-right:calc(var(--spacing)*10);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal);color:var(--text);--tw-shadow:var(--app-shadow-sm);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:border-color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;transition-duration:.15s}select:focus{border-color:var(--brand);--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--focus-ring);--tw-outline-style:none;outline-style:none}select{background-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20width='24'%20height='24'%20fill='%23000000'%20style='opacity:1;'%3e%3cpath%20fill-rule='evenodd'%20d='M5.22%208.22a.75.75%200%200%201%201.06%200L10%2011.94l3.72-3.72a.75.75%200%201%201%201.06%201.06l-4.25%204.25a.75.75%200%200%201-1.06%200L5.22%209.28a.75.75%200%200%201%200-1.06'%20clip-rule='evenodd'/%3e%3c/svg%3e");background-position:right .75rem center;background-repeat:no-repeat;background-size:16px}select:where([data-darkmode=true],[data-darkmode=true] *){background-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20width='24'%20height='24'%20fill='%23ffffff'%20style='opacity:1;'%3e%3cpath%20fill-rule='evenodd'%20d='M5.22%208.22a.75.75%200%200%201%201.06%200L10%2011.94l3.72-3.72a.75.75%200%201%201%201.06%201.06l-4.25%204.25a.75.75%200%200%201-1.06%200L5.22%209.28a.75.75%200%200%201%200-1.06'%20clip-rule='evenodd'/%3e%3c/svg%3e")}select[disabled]{cursor:not-allowed;opacity:.4}select[disabled]:where([data-darkmode=true],[data-darkmode=true] *){opacity:.3}.cbi-dropdown{min-width:fit-content;max-width:100%;height:fit-content;padding:calc(var(--spacing)*0);white-space:nowrap;--tw-shadow:var(--app-shadow-sm);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);flex-shrink:0;align-items:center;display:inline-flex}.cbi-dropdown[disabled]{pointer-events:none;opacity:.4}.cbi-dropdown[disabled]:where([data-darkmode=true],[data-darkmode=true] *){opacity:.3}.cbi-dropdown:not(.btn):not(.cbi-button){border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface)}.cbi-dropdown:not(.btn):not(.cbi-button)>ul>li[placeholder]{display:none}.cbi-dropdown>ul{margin:calc(var(--spacing)*0);align-items:center;gap:calc(var(--spacing)*.5);flex-wrap:nowrap;flex:1;list-style-type:none;display:flex;overflow:hidden}@media not all and (min-width:48rem){.cbi-dropdown>ul{flex-wrap:wrap}}.cbi-dropdown>ul>li{margin:calc(var(--spacing)*0);align-items:center;gap:calc(var(--spacing)*1);padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*1.5);list-style-type:none;display:none;overflow:hidden}.cbi-dropdown>ul>li[display]{display:flex!important}.cbi-dropdown>ul>li .hide-open{display:block}.cbi-dropdown>ul>li .hide-close{display:none}.cbi-dropdown>ul>li>form{pointer-events:none;display:none}.cbi-dropdown>ul>li>label{align-items:center;gap:calc(var(--spacing)*2);display:flex}.cbi-dropdown>ul>li img{height:calc(var(--spacing)*5);width:calc(var(--spacing)*5);vertical-align:middle;flex:none}.cbi-dropdown>ul>li span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.cbi-dropdown>ul.dropdown{left:calc(var(--spacing)*0);z-index:50;border-radius:var(--radius-base);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface-overlay);--tw-shadow:var(--app-shadow-lg);width:fit-content;min-width:100%;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-backdrop-blur:blur(var(--blur-md));--tw-backdrop-saturate:saturate(150%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);position:absolute;overflow-y:auto}.cbi-dropdown>ul.dropdown>li{min-height:calc(var(--spacing)*9);cursor:pointer;width:100%;padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*1.5);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--text-muted)}@media (hover:hover){.cbi-dropdown>ul.dropdown>li:hover{background-color:var(--brand-subtle)}}.cbi-dropdown>ul.preview{display:none}.cbi-dropdown[empty]>ul{max-width:1px;max-height:1px}.cbi-dropdown[empty]>ul>li,.cbi-dropdown[optional][open]>ul.dropdown>li[placeholder]{display:block}.cbi-dropdown[open]{border-color:var(--brand);--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--focus-ring);position:relative}.cbi-dropdown[open]>ul.dropdown{width:auto;max-width:none;display:block}.cbi-dropdown[open]>ul.dropdown>li{display:flex}.cbi-dropdown[open]>ul.dropdown>li[selected]{background-color:var(--brand-subtle);color:var(--brand)}.cbi-dropdown[open]>ul.dropdown>li[unselectable]{opacity:.4}.cbi-dropdown[open]>ul.dropdown>li[unselectable]:where([data-darkmode=true],[data-darkmode=true] *){opacity:.3}.cbi-dropdown[open]>ul.dropdown>li .hide-open{display:none}.cbi-dropdown[open]>ul.dropdown>li .hide-close{display:block}.cbi-dropdown[open]>ul.preview{display:flex}:is(.cbi-dropdown[multiple][more],.cbi-dropdown[multiple][empty])>.more{padding-inline:calc(var(--spacing)*2.5);padding-block:calc(var(--spacing)*1.5);flex:none;display:flex}.cbi-dropdown[multiple][open]>ul.dropdown>li>form{align-items:center;display:flex}.cbi-dropdown[multiple]>ul>li>label{display:flex}.cbi-dropdown>.open{cursor:pointer;border-left-style:var(--tw-border-style);border-left-width:1px;border-color:var(--hairline);padding-inline:calc(var(--spacing)*2.5);padding-block:calc(var(--spacing)*.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:currentColor;flex:none;justify-content:center;align-items:center;display:flex}.cbi-dropdown>.more{display:none}.cbi-tooltip{z-index:110;max-width:var(--container-xs);--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y);border-radius:calc(var(--radius-base)*1.5);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface-overlay);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));overflow-wrap:normal;word-break:normal;white-space:normal;color:var(--text);opacity:0;--tw-shadow:var(--app-shadow-lg);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:visibility,opacity,scale;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;--tw-ease:var(--ease-out);transition-duration:.15s;transition-timing-function:var(--ease-out);position:absolute}.cbi-tooltip.error{border-color:var(--hairline);background-color:var(--danger-surface);color:var(--danger)}.cbi-tooltip.success{border-color:var(--hairline);background-color:var(--success-surface);color:var(--success)}.cbi-tooltip.info{border-color:var(--hairline);background-color:var(--info-surface);color:var(--info)}.cbi-tooltip.notice{border-color:var(--hairline);background-color:var(--warning-surface);color:var(--warning)}.cbi-tooltip-container,[data-tooltip]{cursor:help;white-space:nowrap;text-underline-offset:2px;text-decoration-line:underline;text-decoration-style:dotted;text-decoration-color:currentColor;display:inline-block;position:relative}:is(.cbi-tooltip-container,[data-tooltip]) .cbi-tooltip{visibility:hidden;--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y);opacity:0;transition-property:visibility,opacity,scale;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;--tw-ease:var(--ease-out);transition-duration:.15s;transition-timing-function:var(--ease-out)}:is(.cbi-tooltip-container,[data-tooltip]):hover .cbi-tooltip{visibility:visible;--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y);opacity:1}.alert-message{top:calc(var(--spacing)*14);z-index:30;margin-bottom:calc(var(--spacing)*4);border-radius:calc(var(--radius-base)*4);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface-sunken);padding:calc(var(--spacing)*6);color:var(--text);position:sticky}@media not all and (min-width:48rem){.alert-message{margin-inline:calc(var(--spacing)*0);margin-bottom:calc(var(--spacing)*3);border-radius:calc(var(--radius-base)*3);padding:calc(var(--spacing)*4)}}.alert-message.modal{position:static;top:auto}.modal .alert-message{margin-bottom:calc(var(--spacing)*0)}.login-shell .alert-message{margin-bottom:calc(var(--spacing)*0);border-radius:calc(var(--radius-base)*2);padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*2.5);text-align:center;font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}@media not all and (min-width:48rem){.login-shell .alert-message{padding-inline:calc(var(--spacing)*.5)}}.alert-message.success{border-color:var(--hairline);background-color:var(--success-surface);color:var(--success)}.alert-message.info{border-color:var(--hairline);background-color:var(--info-surface);color:var(--info)}.alert-message.warning,.alert-message.notice{border-color:var(--hairline);background-color:var(--warning-surface);color:var(--warning)}.alert-message.error,.alert-message.danger{border-color:var(--hairline);background-color:var(--danger-surface);color:var(--danger)}.alert-message h4,.alert-message h5,.alert-message pre,.alert-message ul,.alert-message li,.alert-message p{border-style:var(--tw-border-style);color:inherit;background-color:#0000;border-width:0}.alert-message h4{margin-bottom:calc(var(--spacing)*2);font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}@media not all and (min-width:48rem){.alert-message h4{margin-bottom:calc(var(--spacing)*1.5);font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}}.alert-message p{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}@media not all and (min-width:48rem){.alert-message p{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.alert-message .right{margin-top:calc(var(--spacing)*4)}@media not all and (min-width:48rem){.alert-message .right{margin-top:calc(var(--spacing)*3)}}.cbi-progressbar{height:calc(var(--spacing)*3.5);cursor:help;background-color:var(--surface-sunken);border-radius:3.40282e38px;width:100%;position:relative;overflow:hidden}.cbi-progressbar:before{content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);--tw-translate-x:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y);content:var(--tw-content);--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y);content:var(--tw-content);border-radius:calc(var(--radius-base)*2);content:var(--tw-content);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));content:var(--tw-content);white-space:nowrap;content:var(--tw-content);color:var(--text);--tw-content:attr(title);content:var(--tw-content);position:absolute;top:50%;left:50%}@media not all and (min-width:48rem){.cbi-progressbar{height:calc(var(--spacing)*4);border-radius:calc(var(--radius-base)*2)}.cbi-progressbar:before{content:var(--tw-content);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));content:var(--tw-content);--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}}@media not all and (min-width:40rem){[data-page=admin-system-package-manager] .cbi-progressbar:before{content:var(--tw-content);font-size:10px}}.cbi-progressbar>div{--tw-gradient-position:to right;height:100%}@supports (background-image:linear-gradient(in lab, red, red)){.cbi-progressbar>div{--tw-gradient-position:to right in oklab}}.cbi-progressbar>div{background-image:linear-gradient(var(--tw-gradient-stops));--tw-gradient-from:var(--progress-start);--tw-gradient-to:var(--progress-end);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position));transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.25s;transition-duration:.25s}.label{background-color:var(--surface-sunken);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*1);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold);color:var(--text);text-transform:uppercase;border-radius:3.40282e38px}.label.important{background-color:var(--info-surface);color:var(--info)}.label.warning{background-color:var(--danger-surface);color:var(--danger)}.label.success{background-color:var(--success-surface);color:var(--success)}.label.notice{background-color:var(--warning-surface);color:var(--warning)}.zonebadge{align-items:center;gap:calc(var(--spacing)*1.5);border-radius:var(--radius-base);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface-sunken);padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*1);vertical-align:middle;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:var(--leading-normal);line-height:var(--leading-normal);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--text);display:inline-flex;overflow:visible}@media not all and (min-width:48rem){.zonebadge{gap:calc(var(--spacing)*1);padding-inline:calc(var(--spacing)*1.5);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}.zonebadge[style*=--zone-color-rgb]{border-color:#0000;background-color:rgb(var(--zone-color-rgb),.7)!important}.zonebadge[style*=--zone-color-rgb] em{color:var(--text)}.zonebadge.zonebadge-empty{--tw-border-style:dashed;--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal);color:var(--text-muted);background-color:#0000;border-style:dashed;font-style:italic}.cbi-dropdown .zonebadge{padding-inline:calc(var(--spacing)*1.5);padding-block:calc(var(--spacing)*.5)}.ifacebadge{cursor:default;align-items:center;gap:calc(var(--spacing)*2);border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface-sunken);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal);color:var(--text);--tw-shadow:var(--app-shadow-sm);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:box-shadow,border-color,background-color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;flex-wrap:nowrap;transition-duration:.15s;display:inline-flex}@media (hover:hover){.ifacebadge:hover{border-color:var(--hairline);background-color:var(--surface-sunken);--tw-shadow:var(--app-shadow-md);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}@media not all and (min-width:48rem){.ifacebadge{gap:calc(var(--spacing)*1.5);padding-inline:calc(var(--spacing)*2.5);padding-block:calc(var(--spacing)*1.5);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}.zonebadge>.ifacebadge{border-radius:calc(var(--radius-base)*2);padding-inline:calc(var(--spacing)*1.5);padding-block:calc(var(--spacing)*0)}.zonebadge>.ifacebadge img{margin-right:calc(var(--spacing)*1);width:calc(var(--spacing)*4)}.cbi-dropdown .ifacebadge{gap:calc(var(--spacing)*1);border-radius:var(--radius-base);padding-inline:calc(var(--spacing)*1.5);padding-block:calc(var(--spacing)*.5);--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media (hover:hover){.cbi-dropdown .ifacebadge:hover{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.cbi-dropdown .ifacebadge img{margin-right:calc(var(--spacing)*1);width:calc(var(--spacing)*4)}.ifacebadge>img{width:calc(var(--spacing)*5);flex-shrink:0;align-self:center}@media not all and (min-width:48rem){.ifacebadge>img{width:calc(var(--spacing)*4)}}.ifacebadge>span>.nowrap{margin-bottom:calc(var(--spacing)*1.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));display:inline-block}@media not all and (min-width:48rem){.ifacebadge>span>.nowrap{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}.ifacebadge.ifacebadge-active{border-color:var(--brand);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.ifacebadge.large{min-width:200px;padding-inline:calc(var(--spacing)*4);padding-block:calc(var(--spacing)*3);flex:1}@media not all and (min-width:48rem){.ifacebadge.large{min-width:180px;padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2.5)}}.cbi-section{margin-bottom:calc(var(--spacing)*3);border-radius:calc(var(--radius-base)*2);padding:calc(var(--spacing)*5);overflow:visible}@media not all and (min-width:48rem){.cbi-section{padding:calc(var(--spacing)*3)}}.cbi-section[data-tab-title]{margin:calc(var(--spacing)*0);padding:calc(var(--spacing)*0)}.cbi-section[data-tab-active=true]{margin-bottom:calc(var(--spacing)*3);padding:calc(var(--spacing)*5)}@media not all and (min-width:48rem){.cbi-section[data-tab-active=true]{padding:calc(var(--spacing)*3)}}#maincontent .cbi-section{border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface);--tw-shadow:var(--app-shadow-sm);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.cbi-section>.cbi-title{justify-content:space-between;align-items:flex-start;display:flex}.cbi-section>.cbi-title>h3{flex:1}.cbi-section>.cbi-title>h3 .label[data-clickable]{background-color:var(--surface-sunken);color:var(--text);width:calc(var(--spacing)*7);height:calc(var(--spacing)*7);cursor:pointer;padding:calc(var(--spacing)*0);justify-content:center;align-items:center;display:inline-flex}.cbi-section>.cbi-title>h3 .label[data-clickable]:before{content:var(--tw-content);width:calc(var(--spacing)*4);height:calc(var(--spacing)*4);content:var(--tw-content);content:var(--tw-content);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));content:var(--tw-content);--tw-duration:.15s;background-color:currentColor;transition-duration:.15s}@media (hover:hover){.cbi-section>.cbi-title>h3 .label[data-clickable]:hover{--tw-shadow:var(--app-shadow-md);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.cbi-section>.cbi-title>h3 .label[data-clickable]:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}@media not all and (min-width:48rem){.cbi-section>.cbi-title>h3 .label[data-clickable]{width:calc(var(--spacing)*6);height:calc(var(--spacing)*6)}}.cbi-section>.cbi-title>h3 span[data-indicator=poll-status]{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5);cursor:pointer;font-size:0;position:relative}.cbi-section>.cbi-title>h3 span[data-indicator=poll-status]:before{content:var(--tw-content);content:var(--tw-content);width:calc(var(--spacing)*5);height:calc(var(--spacing)*5);content:var(--tw-content);content:var(--tw-content);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));content:var(--tw-content);--tw-duration:.15s;content:var(--tw-content);--tw-ease:var(--ease-out);transition-duration:.15s;transition-timing-function:var(--ease-out);background-color:currentColor;position:absolute}@media (hover:hover){.cbi-section>.cbi-title>h3 span[data-indicator=poll-status]:hover:before{content:var(--tw-content);--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}}.cbi-section>.cbi-title>h3 span[data-indicator=poll-status]:active:before{content:var(--tw-content);--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.cbi-section>.cbi-title>h3 span[data-indicator=poll-status][data-style=active]:before{content:var(--tw-content);content:var(--tw-content);rotate:none;-webkit-mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20width='24'%20height='24'%20fill='%23000000'%20style='opacity:1;'%3e%3cpath%20fill-rule='evenodd'%20d='M8.22%205.22a.75.75%200%200%201%201.06%200l4.25%204.25a.75.75%200%200%201%200%201.06l-4.25%204.25a.75.75%200%200%201-1.06-1.06L11.94%2010L8.22%206.28a.75.75%200%200%201%200-1.06'%20clip-rule='evenodd'/%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20width='24'%20height='24'%20fill='%23000000'%20style='opacity:1;'%3e%3cpath%20fill-rule='evenodd'%20d='M8.22%205.22a.75.75%200%200%201%201.06%200l4.25%204.25a.75.75%200%200%201%200%201.06l-4.25%204.25a.75.75%200%200%201-1.06-1.06L11.94%2010L8.22%206.28a.75.75%200%200%201%200-1.06'%20clip-rule='evenodd'/%3e%3c/svg%3e") 50%/cover no-repeat}.cbi-section>.cbi-title>h3 span[data-indicator=poll-status][data-style=inactive]:before{content:var(--tw-content);content:var(--tw-content);rotate:90deg;-webkit-mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20width='24'%20height='24'%20fill='%23000000'%20style='opacity:1;'%3e%3cpath%20fill-rule='evenodd'%20d='M8.22%205.22a.75.75%200%200%201%201.06%200l4.25%204.25a.75.75%200%200%201%200%201.06l-4.25%204.25a.75.75%200%200%201-1.06-1.06L11.94%2010L8.22%206.28a.75.75%200%200%201%200-1.06'%20clip-rule='evenodd'/%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20width='24'%20height='24'%20fill='%23000000'%20style='opacity:1;'%3e%3cpath%20fill-rule='evenodd'%20d='M8.22%205.22a.75.75%200%200%201%201.06%200l4.25%204.25a.75.75%200%200%201%200%201.06l-4.25%204.25a.75.75%200%200%201-1.06-1.06L11.94%2010L8.22%206.28a.75.75%200%200%201%200-1.06'%20clip-rule='evenodd'/%3e%3c/svg%3e") 50%/cover no-repeat}.cbi-section legend{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.cbi-section h3{border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--hairline);padding-bottom:calc(var(--spacing)*4);color:var(--text)}@media not all and (min-width:48rem){.cbi-section h3{margin-inline:calc(var(--spacing)*0);padding-bottom:calc(var(--spacing)*2)}.cbi-section div[style*=display\:grid]{gap:calc(var(--spacing)*3);grid-template-columns:repeat(2,minmax(0,1fr))!important}}.cbi-section .network-status-table{margin-bottom:calc(var(--spacing)*3);justify-content:space-around;gap:calc(var(--spacing)*4);flex-wrap:wrap;display:flex}@media not all and (min-width:48rem){.cbi-section .network-status-table{flex-direction:column}}.cbi-section .cbi-section-create{margin-top:calc(var(--spacing)*6);align-items:center;gap:calc(var(--spacing)*3);flex-wrap:wrap;display:flex}@media not all and (min-width:48rem){.cbi-section .cbi-section-create{margin-inline:calc(var(--spacing)*0);margin-top:calc(var(--spacing)*5);align-items:stretch;gap:calc(var(--spacing)*3);flex-direction:column}}.cbi-section .cbi-section-create>div{flex:none}@media not all and (min-width:48rem){.cbi-section .cbi-section-create>div{flex:1;width:100%}}.ifacebox{min-width:calc(var(--spacing)*40);border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface-overlay);text-align:center;font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));--tw-leading:calc(var(--spacing)*5);line-height:calc(var(--spacing)*5);--tw-shadow:var(--app-shadow-md);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);flex-direction:column;align-items:stretch;display:inline-flex;position:relative;overflow:visible}@media (hover:hover){.ifacebox:hover{border-color:var(--hairline);--tw-shadow:var(--app-shadow-lg);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}@media not all and (min-width:48rem){.ifacebox{min-width:calc(var(--spacing)*30);border-radius:calc(var(--radius-base)*3);border-color:var(--hairline);--tw-shadow:var(--app-shadow-sm);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);flex:1}td .ifacebox{flex-direction:row}}.ifacebox .ifacebox-head{border-top-left-radius:calc(var(--radius-base)*2);border-top-right-radius:calc(var(--radius-base)*2);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--hairline);background-color:var(--surface-sunken);width:100%;padding-inline:calc(var(--spacing)*4);padding-block:calc(var(--spacing)*3);text-align:center;--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight);color:var(--text);transition-property:background-color,border-color,color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;transition-duration:.15s}@media not all and (min-width:48rem){.ifacebox .ifacebox-head{border-top-left-radius:calc(var(--radius-base)*3);border-top-right-radius:calc(var(--radius-base)*3);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:calc(var(--spacing)*5);line-height:calc(var(--spacing)*5);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}}.ifacebox .ifacebox-head[style*=--zone-color-rgb]{background-color:rgb(var(--zone-color-rgb),.75)!important}@media not all and (min-width:48rem){td :is(.ifacebox .ifacebox-head){border-top-left-radius:calc(var(--radius-base)*3);border-bottom-left-radius:calc(var(--radius-base)*3);border-right-style:var(--tw-border-style);border-right-width:1px;border-bottom-style:var(--tw-border-style);border-bottom-width:0;border-top-right-radius:0;flex-shrink:0;justify-content:center;align-items:center;width:auto;display:flex}}.ifacebox .ifacebox-head.cbi-tooltip-container{background-color:#0000;position:static}.ifacebox .ifacebox-head.cbi-tooltip-container .cbi-tooltip{bottom:calc(var(--spacing)*0);left:calc(var(--spacing)*0)}.ifacebox .ifacebox-head.active{border-color:var(--brand);background-color:var(--brand);color:var(--on-brand)}.ifacebox .ifacebox-body{justify-content:center;align-items:stretch;gap:calc(var(--spacing)*1);border-bottom-right-radius:calc(var(--radius-base)*2);border-bottom-left-radius:calc(var(--radius-base)*2);width:100%;padding:calc(var(--spacing)*4);text-align:center;color:var(--text);flex-direction:column;flex:1;display:flex}@media not all and (min-width:48rem){.ifacebox .ifacebox-body{border-bottom-right-radius:calc(var(--radius-base)*3);border-bottom-left-radius:calc(var(--radius-base)*3)}td :is(.ifacebox .ifacebox-body){border-top-right-radius:calc(var(--radius-base)*3);border-bottom-right-radius:calc(var(--radius-base)*3);padding-block:calc(var(--spacing)*2);padding-right:calc(var(--spacing)*2);padding-left:calc(var(--spacing)*4);border-bottom-left-radius:0;flex-direction:row;align-items:center}}.ifacebox .ifacebox-body>img{margin-inline:auto}:where(.ifacebox .ifacebox-body>span>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1.5)*calc(1 - var(--tw-space-y-reverse)))}.ifacebox .ifacebox-body>span{color:var(--text)}@media not all and (min-width:48rem){:where(.ifacebox .ifacebox-body>span>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}.ifacebox .ifacebox-body>span{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:calc(var(--spacing)*5);line-height:calc(var(--spacing)*5)}}.network-status-table :is(.ifacebox .ifacebox-body>span){width:100%}.ifacebox .ifacebox-body>span .cbi-tooltip-container+.cbi-tooltip-container{margin-left:calc(var(--spacing)*2)}@media not all and (min-width:48rem){.ifacebox .ifacebox-body>span .cbi-tooltip-container+.cbi-tooltip-container{margin-left:calc(var(--spacing)*1.5)}}.ifacebox .ifacebox-body>span .cbi-tooltip{--tw-animation-delay:.2s;transition-delay:.2s;animation-delay:.2s}.ifacebox .ifacebox-body>span .nowrap{display:inline-block}.ifacebox .ifacebox-body>span>.nowrap:not(:last-child){margin-bottom:calc(var(--spacing)*4)}@media not all and (min-width:48rem){.ifacebox .ifacebox-body>span>.nowrap:not(:last-child){margin-bottom:calc(var(--spacing)*3)}}.ifacebox .ifacebox-body>span img{width:calc(var(--spacing)*6);flex-shrink:0}@media not all and (min-width:48rem){.ifacebox .ifacebox-body>span img{width:calc(var(--spacing)*5)}}.ifacebox .ifacebox-body>div{width:100%;display:block}:where(.ifacebox .ifacebox-body>div>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*0)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*0)*calc(1 - var(--tw-space-y-reverse)))}@media not all and (min-width:48rem){td :is(.ifacebox .ifacebox-body>div){flex:1;width:auto}:where(td :is(.ifacebox .ifacebox-body>div)>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}}.ifacebox .ifacebox-body .cbi-tooltip-container{cursor:help;color:var(--text);justify-content:center;align-items:center;display:inline-flex;position:static}.ifacebox .ifacebox-body .cbi-tooltip-container .cbi-tooltip{bottom:calc(var(--spacing)*0)}@media (min-width:48rem){.ifacebox .ifacebox-body .cbi-tooltip-container .cbi-tooltip{left:calc(var(--spacing)*0)}}.ifacebox .ifacebox-body .cbi-tooltip-container .cbi-tooltip .nowrap{white-space:nowrap}.ifacebox .ifacebox-body small{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-leading:calc(var(--spacing)*4);line-height:calc(var(--spacing)*4);display:block}@media not all and (min-width:48rem){td :is(.ifacebox .ifacebox-body small){margin-top:calc(var(--spacing)*0)}}.network-status-table .ifacebox-body{justify-content:space-around;align-items:center;gap:calc(var(--spacing)*2);flex-direction:column;flex:1;height:100%;display:flex}.network-status-table .ifacebox-body>div{flex-wrap:wrap;display:flex}.network-status-table .ifacebox-body .ifacebadge{flex:1}#modal_overlay{pointer-events:none;top:calc(var(--spacing)*0);bottom:calc(var(--spacing)*0);background-color:#0000;display:none;position:fixed;overflow:auto}.modal-overlay-active #modal_overlay{pointer-events:auto;inset:calc(var(--spacing)*0);right:calc(var(--spacing)*0);left:calc(var(--spacing)*0);z-index:100;background-color:var(--scrim);--tw-backdrop-blur:blur(var(--blur-md));--tw-backdrop-saturate:saturate(150%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);grid-template-columns:repeat(1,minmax(0,1fr));place-items:center;display:grid}#modal_overlay>.modal{width:var(--container-5xl);gap:calc(var(--spacing)*4);border-radius:calc(var(--radius-base)*3);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface-overlay);padding:calc(var(--spacing)*6);overflow-wrap:break-word;white-space:normal;--tw-shadow:var(--app-shadow-lg);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);flex-direction:column;display:flex;position:relative}@media not all and (min-width:48rem){#modal_overlay>.modal{gap:calc(var(--spacing)*3);width:100%;padding:calc(var(--spacing)*4)}}#modal_overlay>.modal h4{margin-bottom:calc(var(--spacing)*0);text-align:center}#modal_overlay>.modal h4 em{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--brand)}#modal_overlay>.modal h5{margin-block:calc(var(--spacing)*3);color:var(--text)}#modal_overlay>.modal p{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed);color:var(--text)}#modal_overlay>.modal>ul{border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);padding:calc(var(--spacing)*3);overflow:auto}#modal_overlay>.modal label.btn{border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface-sunken);color:var(--text)}@media (hover:hover){#modal_overlay>.modal label.btn:hover{border-color:var(--hairline)}}#modal_overlay>.modal pre{overflow:auto}#modal_overlay>.modal pre.errors{border-color:var(--hairline);background-color:var(--danger-surface);color:var(--danger)}#modal_overlay>.modal pre+pre{margin-top:calc(var(--spacing)*3)}#modal_overlay>.modal .button-row,#modal_overlay>.modal div.left,#modal_overlay>.modal div.right{gap:calc(var(--spacing)*3);border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--hairline);padding:calc(var(--spacing)*4);flex-shrink:0;display:flex}@media not all and (min-width:48rem){#modal_overlay>.modal .button-row,#modal_overlay>.modal div.left,#modal_overlay>.modal div.right{gap:calc(var(--spacing)*1.5);padding:calc(var(--spacing)*2.5)}}#modal_overlay>.modal div.left{justify-content:flex-start}#modal_overlay>.modal .button-row,#modal_overlay>.modal div.right{justify-content:flex-end}#modal_overlay>.modal.uci-dialog ins,#modal_overlay>.modal.uci-dialog del,#modal_overlay>.modal.uci-dialog var{font-family:var(--font-mono);--tw-shadow:var(--app-shadow-sm);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);font-style:normal;text-decoration-line:none}#modal_overlay>.modal.uci-dialog ins{border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--success-surface);color:var(--success)}#modal_overlay>.modal.uci-dialog del{border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--danger-surface);color:var(--danger)}#modal_overlay>.modal.uci-dialog var{border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--info-surface);color:var(--info)}#modal_overlay>.modal.uci-dialog .uci-change-legend{margin-top:calc(var(--spacing)*4);gap:calc(var(--spacing)*3);border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface-sunken);padding:calc(var(--spacing)*4);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}@media not all and (min-width:48rem){#modal_overlay>.modal.uci-dialog .uci-change-legend{gap:calc(var(--spacing)*2);padding:calc(var(--spacing)*3);grid-template-columns:repeat(1,minmax(0,1fr))}}#modal_overlay>.modal.uci-dialog .uci-change-legend .uci-change-legend-label{align-items:center;gap:calc(var(--spacing)*2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--text);display:flex}#modal_overlay>.modal.uci-dialog .uci-change-legend .uci-change-legend-label ins,#modal_overlay>.modal.uci-dialog .uci-change-legend .uci-change-legend-label del,#modal_overlay>.modal.uci-dialog .uci-change-legend .uci-change-legend-label var{height:calc(var(--spacing)*6);min-width:calc(var(--spacing)*6);border-radius:var(--radius-base);padding-inline:calc(var(--spacing)*2);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);justify-content:center;align-items:center;display:flex}#modal_overlay>.modal.uci-dialog .uci-change-legend .uci-change-legend-label var ins,#modal_overlay>.modal.uci-dialog .uci-change-legend .uci-change-legend-label var del{margin-left:calc(var(--spacing)*1);height:calc(var(--spacing)*4);min-width:calc(var(--spacing)*4);padding-inline:calc(var(--spacing)*1)}#modal_overlay>.modal.uci-dialog .uci-change-list{margin-top:calc(var(--spacing)*4)}:where(#modal_overlay>.modal.uci-dialog .uci-change-list>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}#modal_overlay>.modal.uci-dialog .uci-change-list h5{margin-top:calc(var(--spacing)*6);margin-bottom:calc(var(--spacing)*2);border-radius:calc(var(--radius-base)*1.5);background-color:var(--surface-sunken);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--text)}#modal_overlay>.modal.uci-dialog .uci-change-list h5:first-child{margin-top:calc(var(--spacing)*0)}#modal_overlay>.modal.uci-dialog .uci-change-list ins,#modal_overlay>.modal.uci-dialog .uci-change-list del{border-radius:calc(var(--radius-base)*1.5);padding-inline:calc(var(--spacing)*4);padding-block:calc(var(--spacing)*3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));display:block}:is(#modal_overlay>.modal.uci-dialog .uci-change-list ins,#modal_overlay>.modal.uci-dialog .uci-change-list del) strong{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}#modal_overlay>.modal.uci-dialog .uci-change-list var{border-radius:var(--radius-base);padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*1);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));display:inline-block}#modal_overlay>.modal.uci-dialog .uci-change-list var ins,#modal_overlay>.modal.uci-dialog .uci-change-list var del{margin-left:calc(var(--spacing)*1);padding-inline:calc(var(--spacing)*1.5);padding-block:calc(var(--spacing)*.5);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));display:inline-block}@media not all and (min-width:48rem){.mobile-menu-overlay{visibility:hidden;inset:calc(var(--spacing)*0);z-index:60;background-color:var(--mega-menu-bg);opacity:0;--tw-backdrop-blur:blur(var(--blur-lg));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);--tw-backdrop-saturate:saturate(150%);transition-property:visibility,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.25s;transition-duration:.25s;position:fixed}}@media (min-width:48rem){.mobile-menu-overlay{display:none}}@media not all and (min-width:48rem){.mobile-menu-overlay.mobile-menu-open{visibility:visible;opacity:1}.mobile-menu-overlay .mobile-nav{width:100%;height:100%;padding-top:calc(var(--spacing)*14);flex-direction:column;display:flex}.mobile-menu-overlay .mobile-nav .mobile-nav-body{min-height:calc(var(--spacing)*0);padding-inline:calc(var(--spacing)*5);padding-top:calc(var(--spacing)*6);flex-direction:column;flex:1;display:flex}.mobile-menu-overlay .mobile-nav .mobile-nav-body .mobile-nav-label{margin-bottom:calc(var(--spacing)*3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--text-muted)}.mobile-menu-overlay .mobile-nav .mobile-nav-list{margin:calc(var(--spacing)*0);min-height:calc(var(--spacing)*0);--tw-translate-y:calc(var(--spacing)*-2);translate:var(--tw-translate-x)var(--tw-translate-y);overscroll-behavior:contain;padding:calc(var(--spacing)*0);padding-bottom:calc(var(--spacing)*5);opacity:0;transition-property:translate,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.25s;--tw-ease:var(--ease-out);transition-duration:.25s;transition-timing-function:var(--ease-out);flex-direction:column;flex:1;list-style-type:none;display:flex;overflow-y:auto}.mobile-menu-overlay .mobile-nav .mobile-nav-list .mobile-nav-item{flex-shrink:0}.mobile-menu-overlay .mobile-nav .mobile-nav-list .mobile-nav-item .mobile-nav-link{min-height:calc(var(--spacing)*13);justify-content:space-between;align-items:center;gap:calc(var(--spacing)*4);border-style:var(--tw-border-style);width:100%;padding-inline:calc(var(--spacing)*0);padding-block:calc(var(--spacing)*2.5);text-align:left;font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height));--tw-leading:var(--leading-tight);line-height:var(--leading-tight);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight);--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);background-color:#0000;border-width:0;border-radius:0;text-decoration-line:none;display:flex}.mobile-menu-overlay .mobile-nav .mobile-nav-list .mobile-nav-item .mobile-nav-submenu .mobile-nav-submenu-list{margin-inline:calc(var(--spacing)*0);margin-top:calc(var(--spacing)*0);margin-bottom:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*1);padding-right:calc(var(--spacing)*0);padding-left:calc(var(--spacing)*4)}.mobile-menu-overlay .mobile-nav .mobile-nav-list .mobile-nav-item .mobile-nav-submenu .mobile-nav-subitem .mobile-nav-sublink{min-height:calc(var(--spacing)*10);width:100%;padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));align-items:center}.mobile-menu-overlay .mobile-nav .mobile-nav-footer{border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--hairline);padding-inline:calc(var(--spacing)*5);padding-top:calc(var(--spacing)*4);padding-bottom:max(1rem,env(safe-area-inset-bottom));flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.mobile-menu-overlay .mobile-nav .mobile-nav-footer .mobile-nav-footer-action{align-items:center;display:flex}.mobile-menu-overlay .mobile-nav .mobile-nav-footer .mobile-nav-logout{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--text);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;text-decoration-line:none;transition-duration:.15s}@media (hover:hover){.mobile-menu-overlay .mobile-nav .mobile-nav-footer .mobile-nav-logout:hover{color:var(--brand)}}.mobile-menu-overlay .mobile-nav .mobile-nav-footer .theme-switcher .theme-option{padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*1)}.mobile-menu-overlay.mobile-menu-open .mobile-nav-list{--tw-translate-y:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y);opacity:1}body.mobile-navigation-open>header{z-index:70;background-color:#0000}}[data-nav-type=mega-menu] .desktop-menu-overlay{pointer-events:none;visibility:hidden;inset:calc(var(--spacing)*0);z-index:60;background-color:var(--mega-menu-scrim);opacity:0;--tw-backdrop-blur:blur(var(--blur-lg));--tw-backdrop-saturate:saturate(150%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);transition-property:opacity,visibility;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.22s;--tw-ease:cubic-bezier(.4,0,.6,1);transition-duration:.22s;transition-timing-function:cubic-bezier(.4,0,.6,1);position:fixed}@media not all and (min-width:48rem){[data-nav-type=mega-menu] .desktop-menu-overlay{display:none}}[data-nav-type=mega-menu] .desktop-menu-overlay.active{pointer-events:auto;visibility:visible;opacity:1}table.table,.table{margin-bottom:calc(var(--spacing)*3);border-collapse:separate;--tw-border-spacing-x:calc(var(--spacing)*0);--tw-border-spacing-y:calc(var(--spacing)*0);width:100%;border-spacing:var(--tw-border-spacing-x)var(--tw-border-spacing-y);border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);overflow:visible}@media not all and (min-width:48rem){table.table,.table{margin-inline:calc(var(--spacing)*0);border-style:var(--tw-border-style);--tw-shadow:0 0 #0000;width:100%;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-width:0;border-radius:0;display:block;overflow:visible}}:is(table.table,.table)[width="100%"]{width:100%}:is(table.table,.table)[width="33%"]{width:33.3333%}:is(table.table,.table) .cbi-section-table-titles{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}:is(:is(table.table,.table) .cbi-section-table-titles.named,:is(table.table,.table) .cbi-section-table-descr.named,:is(table.table,.table) .cbi-section-table-row[data-title]):before{content:var(--tw-content);content:var(--tw-content);border-color:var(--hairline);content:var(--tw-content);padding-inline:calc(var(--spacing)*3);content:var(--tw-content);padding-block:calc(var(--spacing)*3);content:var(--tw-content);vertical-align:middle;content:var(--tw-content);font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));content:var(--tw-content);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-content:attr(data-title);content:var(--tw-content);content:var(--tw-content);display:table-cell}@media not all and (min-width:48rem){:is(:is(table.table,.table) .cbi-section-table-titles.named,:is(table.table,.table) .cbi-section-table-descr.named,:is(table.table,.table) .cbi-section-table-row[data-title]):before{padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));flex:0 0 100%;display:flex}}:is(:is(table.table,.table) .cbi-section-table-titles.named,:is(table.table,.table) .cbi-section-table-descr.named,:is(table.table,.table) .cbi-section-table-row[data-title]):before{content:var(--tw-content)}@media (min-width:48rem){:is(:is(table.table,.table) .cbi-section-table-titles.named,:is(table.table,.table) .cbi-section-table-descr.named,:is(table.table,.table) .cbi-section-table-row[data-title]):before{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}}:is(:is(:is(table.table,.table) .cbi-section-table-titles.named,:is(table.table,.table) .cbi-section-table-descr.named,:is(table.table,.table) .cbi-section-table-row[data-title]):not([data-title]),:is(:is(table.table,.table) .cbi-section-table-titles.named,:is(table.table,.table) .cbi-section-table-descr.named,:is(table.table,.table) .cbi-section-table-row[data-title]):has(td.cbi-section-table-titles)):before{content:var(--tw-content);--tw-content:none;content:none}:is(table.table,.table) .cbi-section-table-titles.named:before{content:var(--tw-content);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));content:var(--tw-content);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);content:var(--tw-content);--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider);content:var(--tw-content);color:var(--text-subtle);content:var(--tw-content);text-transform:uppercase}@media not all and (min-width:48rem){:is(table.table,.table) tbody,:is(table.table,.table) .tbody{display:block}:is(table.table,.table) tr,:is(table.table,.table) .tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--hairline);padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*2);flex-wrap:wrap;display:flex}:is(:is(table.table,.table) tr,:is(table.table,.table) .tr):has(.cbi-progressbar){justify-content:center;align-items:center;display:flex}:is(:is(table.table,.table) tr,:is(table.table,.table) .tr):last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}}:is(:is(table.table,.table) tr,:is(table.table,.table) .tr):last-child[data-title]:before{content:var(--tw-content);border-bottom-style:var(--tw-border-style);border-bottom-width:0}:is(:is(table.table,.table) tr,:is(table.table,.table) .tr):last-child .td{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr).table-titles,:is(:is(table.table,.table) tr,:is(table.table,.table) .tr).cbi-section-table-titles,:is(:is(table.table,.table) tr,:is(table.table,.table) .tr).cbi-section-table-descr{display:none}}:is(:is(table.table,.table) tr,:is(table.table,.table) .tr).cbi-rowstyle-1,:is(:is(table.table,.table) tr,:is(table.table,.table) .tr).cbi-rowstyle-2{background-color:#0000}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-1{flex:2rem}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-1{width:calc(var(--spacing)*20);max-width:calc(var(--spacing)*28)}}:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-2{white-space:normal}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-2{flex:2 2 4rem}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-2{width:calc(var(--spacing)*32);max-width:calc(var(--spacing)*40)}}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-3{flex:3 3 6rem}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-3{width:calc(var(--spacing)*44);max-width:calc(var(--spacing)*52)}}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-4{flex:4 4 8rem}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-4{width:calc(var(--spacing)*56);max-width:calc(var(--spacing)*64)}}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-5{flex:5 5 10rem}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-5{width:calc(var(--spacing)*68);max-width:calc(var(--spacing)*76)}}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-6{flex:6 6 12rem}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-6{width:calc(var(--spacing)*80);max-width:calc(var(--spacing)*88)}}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-7{flex:7 7 14rem}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-7{width:calc(var(--spacing)*92);max-width:calc(var(--spacing)*100)}}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-8{flex:8 8 16rem}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-8{width:calc(var(--spacing)*104);max-width:calc(var(--spacing)*112)}}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-9{flex:9 9 18rem}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-9{width:calc(var(--spacing)*116);max-width:calc(var(--spacing)*124)}}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-10{flex:0 0 100%;max-width:calc(100vw - 40px)}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-10{width:calc(var(--spacing)*128);max-width:calc(var(--spacing)*136)}}:is(table.table,.table) th,:is(table.table,.table) .th{border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--hairline);background-color:var(--surface-sunken);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*3);text-align:left;font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider);color:var(--text-subtle);text-transform:uppercase}:is(:is(table.table,.table) th,:is(table.table,.table) .th):first-child{border-top-left-radius:calc(var(--radius-base)*2)}:is(:is(table.table,.table) th,:is(table.table,.table) .th):last-child{border-top-right-radius:calc(var(--radius-base)*2)}@media not all and (min-width:48rem){:is(table.table,.table) th,:is(table.table,.table) .th{border-style:var(--tw-border-style);background-color:#0000;border-width:0;flex:50%}}#cbi-samba4 :is(:is(table.table,.table) th,:is(table.table,.table) .th){padding-inline:calc(var(--spacing)*.5);padding-block:calc(var(--spacing)*1.5)}:is(:is(table.table,.table) th,:is(table.table,.table) .th)[width="100%"]{width:100%}@media not all and (min-width:48rem){:is(:is(table.table,.table) th,:is(table.table,.table) .th)[width="100%"]{flex:0 0 100%}}:is(:is(table.table,.table) th,:is(table.table,.table) .th)[width="33%"]{width:33.3333%}@media not all and (min-width:48rem){:is(:is(table.table,.table) th,:is(table.table,.table) .th)[width="33%"]{flex:0 0 33.333%}}:is(:is(table.table,.table) th,:is(table.table,.table) .th)[data-sortable-row=true]{cursor:pointer;-webkit-user-select:none;user-select:none}:is(:is(table.table,.table) th,:is(table.table,.table) .th)[data-sortable-row=true]:after{content:var(--tw-content);margin-left:calc(var(--spacing)*.5);content:var(--tw-content);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}@media (hover:hover){:is(:is(table.table,.table) th,:is(table.table,.table) .th)[data-sortable-row=true]:hover{background-color:var(--hover-faint)}}:is(:is(table.table,.table) th,:is(table.table,.table) .th)[data-sortable-row=true][data-sort-direction=asc]:after{--tw-content:"▲";content:var(--tw-content)}:is(:is(table.table,.table) th,:is(table.table,.table) .th)[data-sortable-row=true][data-sort-direction=desc]:after{--tw-content:"▼";content:var(--tw-content)}:is(table.table,.table)[id*=status_leases] .td{max-width:calc(var(--spacing)*62)}@media not all and (min-width:48rem){:is(table.table,.table)[id*=status_leases] .td{max-width:100%}}:is(table.table,.table) td,:is(table.table,.table) .td{border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--hairline);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*3);vertical-align:middle;font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));overflow-wrap:break-word;white-space:normal;display:table-cell}@media not all and (min-width:48rem){:is(table.table,.table) td,:is(table.table,.table) .td{border-style:var(--tw-border-style);padding-inline:calc(var(--spacing)*1);padding-block:calc(var(--spacing)*1);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));border-width:0;flex:50%}}:is(:is(table.table,.table) td,:is(table.table,.table) .td):before{content:var(--tw-content);--tw-content:attr(data-title);content:var(--tw-content);content:var(--tw-content);display:none}@media not all and (min-width:48rem){:is(:is(table.table,.table) td,:is(table.table,.table) .td):before{margin-bottom:calc(var(--spacing)*1);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);display:block}}:is(:is(table.table,.table) td,:is(table.table,.table) .td):before{content:var(--tw-content)}@media not all and (min-width:48rem){:is(:is(table.table,.table) td,:is(table.table,.table) .td):before{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}}#cbi-samba4 :is(:is(table.table,.table) td,:is(table.table,.table) .td){padding-inline:calc(var(--spacing)*.5);padding-block:calc(var(--spacing)*1.5)}[data-page=admin-system-mounts] :is(:is(table.table,.table) td,:is(table.table,.table) .td){max-width:calc(var(--spacing)*104)}@media not all and (min-width:48rem){[data-page=admin-system-mounts] :is(:is(table.table,.table) td,:is(table.table,.table) .td){max-width:100%}#wifi_assoclist_table :is(:is(table.table,.table) td,:is(table.table,.table) .td){padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);flex:0 0 100%}}#wifi_assoclist_table :is(:is(table.table,.table) td,:is(table.table,.table) .td):before{content:var(--tw-content)}@media not all and (min-width:48rem){#wifi_assoclist_table :is(:is(table.table,.table) td,:is(table.table,.table) .td):before{margin-bottom:calc(var(--spacing)*1.5)}}:is(:is(table.table,.table) td,:is(table.table,.table) .td)>input[type=text],:is(:is(table.table,.table) td,:is(table.table,.table) .td)>input[type=password],:is(:is(table.table,.table) td,:is(table.table,.table) .td)>select,:is(:is(table.table,.table) td,:is(table.table,.table) .td)>.cbi-dropdown:not(.btn):not(.cbi-button){width:100%}:is(:is(table.table,.table) td,:is(table.table,.table) .td).cbi-value-field{word-break:break-all}@media not all and (min-width:48rem){:is(:is(table.table,.table) td,:is(table.table,.table) .td).cbi-section-actions{flex:0 0 100%}:is(:is(table.table,.table) td,:is(table.table,.table) .td).cbi-section-actions>div{width:100%}:is(:is(table.table,.table) td,:is(table.table,.table) .td).cbi-section-actions>div>.cbi-button{flex:1}:is(:is(table.table,.table) td,:is(table.table,.table) .td)>.cbi-button{width:100%}}:is(:is(table.table,.table) td,:is(table.table,.table) .td)[width="100%"]{width:100%}@media not all and (min-width:48rem){:is(:is(table.table,.table) td,:is(table.table,.table) .td)[width="100%"]{flex:0 0 100%}}:is(:is(table.table,.table) td,:is(table.table,.table) .td)[width="33%"]{width:33.3333%}@media not all and (min-width:48rem){:is(:is(table.table,.table) td,:is(table.table,.table) .td)[width="33%"]{flex:0 0 33.333%}[data-page=admin-network-network] :is(:is(table.table,.table) td,:is(table.table,.table) .td)[data-name=_ifacebox],[data-page=admin-network-network] :is(:is(table.table,.table) td,:is(table.table,.table) .td)[data-name=_ifacestat]{flex-basis:100%}}.cbi-section-table .cbi-section-table-titles .cbi-section-table-cell{width:auto!important}.cbi-input-invalid,.cbi-value-error{border-color:var(--danger)!important}:is(.cbi-input-invalid,.cbi-value-error):focus{--tw-ring-color:var(--danger)!important}.cbi-value{gap:calc(var(--spacing)*6);padding-block:calc(var(--spacing)*1.5);flex-flow:wrap;display:flex}@media not all and (min-width:48rem){.cbi-value{gap:calc(var(--spacing)*1.5);padding-block:calc(var(--spacing)*1);flex-direction:column}}.cbi-value.hidden{display:none}.cbi-value+.cbi-value{margin-top:calc(var(--spacing)*3)}@media not all and (min-width:48rem){.cbi-value+.cbi-value{margin-top:calc(var(--spacing)*2)}}.cbi-value>.cbi-value-title{padding-top:calc(var(--spacing)*1);text-align:right;--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}@media not all and (min-width:48rem){.cbi-value>.cbi-value-title{text-align:left;width:auto}}@media (min-width:48rem){.cbi-value>.cbi-value-title{flex:0 0 12rem}}.cbi-value>.cbi-value-field{flex:1;max-width:100%}.cbi-value>.cbi-value-field:has(>.cbi-dropdown[disabled]){cursor:not-allowed}.cbi-value>.cbi-value-field .cbi-value-description{margin-top:calc(var(--spacing)*1);padding-left:calc(var(--spacing)*4);--tw-leading:1;overflow-wrap:break-word;color:var(--text-muted);line-height:1;position:relative}.cbi-value>.cbi-value-field .cbi-value-description:not(:empty):before{content:var(--tw-content);content:var(--tw-content);left:calc(var(--spacing)*-.5);content:var(--tw-content);content:var(--tw-content);width:calc(var(--spacing)*4);height:calc(var(--spacing)*4);content:var(--tw-content);background-color:var(--info);content:var(--tw-content);display:inline-block;position:absolute;-webkit-mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2016%2016'%20width='24'%20height='24'%20fill='%23000000'%20style='opacity:1;'%3e%3cpath%20fill-rule='evenodd'%20d='M15%208A7%207%200%201%201%201%208a7%207%200%200%201%2014%200M9%205a1%201%200%201%201-2%200a1%201%200%200%201%202%200M6.75%208a.75.75%200%200%200%200%201.5h.75v1.75a.75.75%200%200%200%201.5%200v-2.5A.75.75%200%200%200%208.25%208z'%20clip-rule='evenodd'/%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2016%2016'%20width='24'%20height='24'%20fill='%23000000'%20style='opacity:1;'%3e%3cpath%20fill-rule='evenodd'%20d='M15%208A7%207%200%201%201%201%208a7%207%200%200%201%2014%200M9%205a1%201%200%201%201-2%200a1%201%200%200%201%202%200M6.75%208a.75.75%200%200%200%200%201.5h.75v1.75a.75.75%200%200%200%201.5%200v-2.5A.75.75%200%200%200%208.25%208z'%20clip-rule='evenodd'/%3e%3c/svg%3e") 50%/cover no-repeat}.cbi-value>.cbi-section,.cbi-value>.cbi-tblsection{width:100%}.cbi-dynlist{width:max-content;max-width:calc(var(--spacing)*120);align-items:flex-start;gap:calc(var(--spacing)*3);flex-direction:column;display:inline-flex}@media not all and (min-width:48rem){.cbi-dynlist{max-width:100%!important}}.cbi-dynlist .item{pointer-events:auto;cursor:move;align-items:flex-start;gap:calc(var(--spacing)*2);border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface);padding-block:calc(var(--spacing)*3);padding-right:calc(var(--spacing)*10);padding-left:calc(var(--spacing)*4);word-break:break-all;--tw-shadow:var(--app-shadow-sm);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:transform,box-shadow,opacity,border-color,background-color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;-webkit-user-select:text;user-select:text;flex-direction:column;align-self:stretch;transition-duration:.15s;display:inline-flex;position:relative;overflow:hidden}@media not all and (min-width:48rem){.cbi-dynlist .item{width:100%;padding-block:calc(var(--spacing)*2.5);padding-right:calc(var(--spacing)*8);padding-left:calc(var(--spacing)*3)}}.cbi-dynlist .item:after{content:var(--tw-content);content:var(--tw-content);top:calc(var(--spacing)*2.5);content:var(--tw-content);right:calc(var(--spacing)*2);content:var(--tw-content);content:var(--tw-content);height:calc(var(--spacing)*6);content:var(--tw-content);width:calc(var(--spacing)*6);content:var(--tw-content);content:var(--tw-content);cursor:pointer;content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);border-radius:calc(var(--radius-base)*1.5);content:var(--tw-content);background-color:var(--surface-sunken);content:var(--tw-content);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));content:var(--tw-content);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);content:var(--tw-content);color:var(--text-muted);--tw-content:"×";content:var(--tw-content);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex;position:absolute}.cbi-dynlist .item.dragging{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y);cursor:grabbing;opacity:.5;--tw-shadow:var(--app-shadow-lg);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.cbi-dynlist .item.drag-over{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y);border-color:var(--brand);background-color:var(--brand-subtle);--tw-shadow:var(--app-shadow-md);--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--brand-subtle)}.cbi-dynlist .item>span,.cbi-dynlist .item>code{pointer-events:none;border-radius:var(--radius-base);width:100%;font-family:var(--font-mono);--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.cbi-dynlist .placeholder{word-break:break-all}.cbi-dynlist .add-item{align-items:center;gap:calc(var(--spacing)*1.5);border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);--tw-border-style:dashed;border-style:dashed;border-width:1px;border-color:var(--hairline);padding-inline:calc(var(--spacing)*1);padding-block:calc(var(--spacing)*1);transition-property:border-color,background-color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;background-color:#0000;align-self:stretch;transition-duration:.15s;display:inline-flex}@media (hover:hover){.cbi-dynlist .add-item:hover{border-color:var(--hairline);background-color:var(--surface-sunken)}}.cbi-dynlist .add-item>input{min-width:calc(var(--spacing)*61);flex:1}.cbi-dynlist .add-item>.cbi-button{min-height:calc(var(--spacing)*6);min-width:calc(var(--spacing)*6);cursor:pointer;border-radius:calc(var(--radius-base)*1.5);padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*0);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.cbi-dynlist .add-item>.cbi-button:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.cbi-tabmenu{margin-bottom:calc(var(--spacing)*1);align-items:center;gap:calc(var(--spacing)*1);border-radius:calc(var(--radius-base)*4);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface-sunken);padding:calc(var(--spacing)*1);display:flex;overflow-x:auto}.cbi-tabmenu li{margin:calc(var(--spacing)*0);flex-shrink:0;min-width:fit-content;list-style-type:none;position:relative}.cbi-tabmenu li[data-errors]:after{content:var(--tw-content);content:var(--tw-content);top:calc(var(--spacing)*-.5);content:var(--tw-content);right:calc(var(--spacing)*-1.5);content:var(--tw-content);z-index:20;content:var(--tw-content);content:var(--tw-content);min-height:calc(var(--spacing)*4);content:var(--tw-content);min-width:calc(var(--spacing)*4);content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);background-color:var(--danger);content:var(--tw-content);padding-inline:calc(var(--spacing)*1.5);content:var(--tw-content);padding-block:calc(var(--spacing)*.5);content:var(--tw-content);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));content:var(--tw-content);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);content:var(--tw-content);color:var(--on-brand);--tw-content:attr(data-errors);content:var(--tw-content);border-radius:3.40282e38px;justify-content:center;align-items:center;display:inline-flex;position:absolute}.cbi-tabmenu li[data-errors]>a{border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline)}.cbi-tabmenu li>a{border-radius:calc(var(--radius-base)*4);padding-inline:calc(var(--spacing)*4);padding-block:calc(var(--spacing)*2);text-align:center;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);white-space:nowrap;color:var(--text-muted);text-decoration-line:none;display:block}@media (hover:hover){.cbi-tabmenu li>a:hover{color:var(--text)}}.cbi-tabmenu li.cbi-tab a{background-color:var(--text);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--surface);--tw-shadow:var(--app-shadow-sm);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}[data-tab-title]{visibility:hidden;height:calc(var(--spacing)*0);overflow:hidden}[data-tab-active=true]{visibility:visible;height:auto;overflow:visible}#tabmenu{margin-bottom:calc(var(--spacing)*8);width:100%}.tabs{align-items:center;gap:calc(var(--spacing)*0);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--hairline);display:flex;position:relative;overflow-x:auto}.tabs a{padding-inline:calc(var(--spacing)*8);padding-block:calc(var(--spacing)*4);text-align:center;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);white-space:nowrap;color:var(--text-muted);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;transition-duration:.15s;display:block}@media (hover:hover){.tabs a:hover{color:var(--text);text-decoration-line:none}}.tabs>li.active{border-bottom-style:var(--tw-border-style);border-bottom-width:2px;border-color:var(--text)}.tabs>li.active>a{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--text)}.cbi-section-node-tabbed{margin-top:calc(var(--spacing)*6)}.hidden{display:none!important}@media (min-width:48rem){.left{text-align:left!important}}.left:not(td){text-align:left!important}@media (min-width:48rem){.right{text-align:right!important}}.right:not(td){text-align:right!important}@media (min-width:48rem){.top{vertical-align:top!important}}.top:not(td){vertical-align:top!important}@media (min-width:48rem){.bottom{vertical-align:bottom!important}}.bottom:not(td){vertical-align:bottom!important}@media (min-width:48rem){.center{text-align:center!important}}.center:not(td){text-align:center!important}@media (min-width:48rem){.middle{vertical-align:middle!important}}.middle:not(td){vertical-align:middle!important}@media (min-width:48rem){.nowrap:not(span){white-space:nowrap}}.nowrap:not(span):not(td){white-space:nowrap}.fade-in{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none);--tw-duration:.25s;--tw-enter-opacity:0;--tw-animation-fill-mode:backwards;transition-duration:.25s;animation-fill-mode:backwards}.fade-out{pointer-events:none;opacity:0;transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.25s;transition-duration:.25s}.spinning{display:inline-block;position:relative;padding-left:calc(var(--spacing)*8)!important}.spinning:before{content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);width:calc(var(--spacing)*5);height:calc(var(--spacing)*5);content:var(--tw-content);--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y);content:var(--tw-content);animation:var(--animate-spin);content:var(--tw-content);content:var(--tw-content);background-color:currentColor;position:absolute;top:50%;left:6px;-webkit-mask:url("data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1758357645269'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='7610'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M512%2085.333333c235.648%200%20426.666667%20191.018667%20426.666667%20426.666667s-191.018667%20426.666667-426.666667%20426.666667S85.333333%20747.648%2085.333333%20512%20276.352%2085.333333%20512%2085.333333z%20m0%20128a298.666667%20298.666667%200%201%200%200%20597.333334%20298.666667%20298.666667%200%200%200%200-597.333334z'%20fill='%23000000'%20fill-opacity='.05'%20p-id='7611'%3e%3c/path%3e%3cpath%20d='M813.696%20813.696c166.613333-166.613333%20166.613333-436.778667%200-603.392-166.613333-166.613333-436.778667-166.613333-603.392%200A64%2064%200%200%200%20300.8%20300.8a298.666667%20298.666667%200%201%201%20422.4%20422.4%2064%2064%200%200%200%2090.496%2090.496z'%20fill='%23000000'%20p-id='7612'%3e%3c/path%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1758357645269'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='7610'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M512%2085.333333c235.648%200%20426.666667%20191.018667%20426.666667%20426.666667s-191.018667%20426.666667-426.666667%20426.666667S85.333333%20747.648%2085.333333%20512%20276.352%2085.333333%20512%2085.333333z%20m0%20128a298.666667%20298.666667%200%201%200%200%20597.333334%20298.666667%20298.666667%200%200%200%200-597.333334z'%20fill='%23000000'%20fill-opacity='.05'%20p-id='7611'%3e%3c/path%3e%3cpath%20d='M813.696%20813.696c166.613333-166.613333%20166.613333-436.778667%200-603.392-166.613333-166.613333-436.778667-166.613333-603.392%200A64%2064%200%200%200%20300.8%20300.8a298.666667%20298.666667%200%201%201%20422.4%20422.4%2064%2064%200%200%200%2090.496%2090.496z'%20fill='%23000000'%20p-id='7612'%3e%3c/path%3e%3c/svg%3e") 50%/cover no-repeat}#view>.spinning:first-child{min-height:calc(var(--spacing)*48);place-items:center;width:fit-content;margin-inline:auto;display:grid}@media not all and (min-width:48rem){#view>.spinning:first-child{min-height:calc(100dvh - 4rem)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-property:none!important;animation:none!important}.spinning:before{animation:var(--animate-spin)!important}}@media (prefers-reduced-transparency:reduce){*,:before,:after{-webkit-backdrop-filter:none!important;backdrop-filter:none!important}:root{--mega-menu-bg:var(--surface-overlay)}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-leading{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-border-spacing-x{syntax:"";inherits:false;initial-value:0}@property --tw-border-spacing-y{syntax:"";inherits:false;initial-value:0}@keyframes spin{to{transform:rotate(360deg)}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}
+@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-content:"";--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0;--tw-leading:initial;--tw-tracking:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-space-y-reverse:0;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-border-spacing-x:0;--tw-border-spacing-y:0}}:root,:host{--font-sans:var(--font-sans);--font-mono:var(--font-mono);--spacing:var(--spacing);--container-xs:20rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25/1.875);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-snug:1.375;--leading-normal:1.5;--leading-relaxed:1.625;--radius-sm:calc(var(--radius-base)*.25);--radius-md:calc(var(--radius-base)*.75);--radius-lg:var(--radius-base);--radius-xl:calc(var(--radius-base)*1.5);--radius-2xl:calc(var(--radius-base)*2);--radius-3xl:calc(var(--radius-base)*3);--radius-4xl:calc(var(--radius-base)*4);--shadow-sm:var(--app-shadow-sm);--shadow-md:var(--app-shadow-md);--shadow-lg:var(--app-shadow-md);--shadow-xl:var(--app-shadow-lg);--shadow-2xl:var(--app-shadow-lg);--ease-out:cubic-bezier(0,0,.2,1);--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--blur-md:12px;--blur-lg:16px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--radius:calc(var(--radius-base)*.5);--container-max-width:var(--container-max-width)}*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{scrollbar-color:initial;scrollbar-width:initial}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.static{position:static}.inset-x-0{inset-inline:calc(var(--spacing)*0)}.top-0{top:calc(var(--spacing)*0)}.top-14{top:calc(var(--spacing)*14)}.z-0{z-index:0}.z-10{z-index:10}.z-70{z-index:70}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.scrollbar::-webkit-scrollbar-track{background-color:var(--scrollbar-track);border-radius:var(--scrollbar-track-radius)}.scrollbar::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb);border-radius:var(--scrollbar-thumb-radius)}.scrollbar::-webkit-scrollbar-corner{background-color:var(--scrollbar-corner);border-radius:var(--scrollbar-corner-radius)}.scrollbar{scrollbar-width:auto;scrollbar-color:var(--scrollbar-thumb,initial)var(--scrollbar-track,initial)}.scrollbar::-webkit-scrollbar{width:var(--scrollbar-width,16px);height:var(--scrollbar-height,16px);display:block}.block{display:block}.grid{display:grid}.inline{display:inline}.table{display:table}.h-14{height:calc(var(--spacing)*14)}.h-\[calc\(var\(--mega-menu-height\,0px\)\+3\.5rem\)\]{height:calc(var(--mega-menu-height,0px) + 3.5rem)}.h-\[calc\(var\(--mega-menu-height\,0px\)\+3\.5rem\+3rem\)\]{height:calc(var(--mega-menu-height,0px) + 3.5rem + 3rem)}.max-h-\[calc\(100dvh-3\.5rem\)\]{max-height:calc(100dvh - 3.5rem)}.shrink{flex-shrink:1}.grow{flex-grow:1}.-translate-y-full{--tw-translate-y:-100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-full{--tw-translate-y:100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-in{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.resize{resize:both}.grid-rows-\[0fr\]{grid-template-rows:0fr}.grid-rows-\[1fr\]{grid-template-rows:1fr}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-clip{overflow:clip}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-y-auto{overflow-y:auto}.overscroll-contain{overscroll-behavior:contain}.rounded{border-radius:calc(var(--radius-base)*.5)}.rounded-2xl{border-radius:calc(var(--radius-base)*2)}.rounded-lg{border-radius:var(--radius-base)}.border{border-style:var(--tw-border-style);border-width:1px}.border-hairline{border-color:var(--hairline)}.bg-brand-subtle{background-color:var(--brand-subtle)}.bg-mega-menu-bg{background-color:var(--mega-menu-bg)}.bg-mega-menu-scrim{background-color:var(--mega-menu-scrim)}.bg-surface{background-color:var(--surface)}.bg-surface-sunken{background-color:var(--surface-sunken)}.px-3{padding-inline:calc(var(--spacing)*3)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.pl-4{padding-left:calc(var(--spacing)*4)}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-brand{color:var(--brand)}.text-text{color:var(--text)}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:var(--app-shadow-md);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-lg{--tw-backdrop-blur:blur(var(--blur-lg));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[grid-template-rows\,opacity\]{transition-property:grid-template-rows,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[translate\]{transition-property:translate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-\(--mega-menu-duration\,300ms\){--tw-duration:var(--mega-menu-duration,.3s);transition-duration:var(--mega-menu-duration,.3s)}.duration-\[220ms\]{--tw-duration:.22s;transition-duration:.22s}.duration-\[250ms\]{--tw-duration:.25s;transition-duration:.25s}.fade-in-0{--tw-enter-opacity:0}.fill-mode-backwards{--tw-animation-fill-mode:backwards;animation-fill-mode:backwards}.fill-mode-both{--tw-animation-fill-mode:both;animation-fill-mode:both}.slide-in-from-top-2{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.after\:rotate-90:after{content:var(--tw-content);rotate:90deg}.after\:transition-\[transform\,opacity\]:after{content:var(--tw-content);transition-property:transform,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.after\:duration-\[250ms\]:after{content:var(--tw-content);--tw-duration:.25s;transition-duration:.25s}@media (hover:hover){.hover\:bg-hover-faint:hover{background-color:var(--hover-faint)}.hover\:text-brand:hover{color:var(--brand)}.hover\:text-text:hover{color:var(--text)}}@media not all and (min-width:48rem){.max-md\:min-h-10{min-height:calc(var(--spacing)*10)}.max-md\:bg-mega-menu-bg{background-color:var(--mega-menu-bg)}.max-md\:bg-scrim{background-color:var(--scrim)}.max-md\:p-1{padding:calc(var(--spacing)*1)}.max-md\:px-3{padding-inline:calc(var(--spacing)*3)}.max-md\:py-2{padding-block:calc(var(--spacing)*2)}.max-md\:pl-4{padding-left:calc(var(--spacing)*4)}.max-md\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.max-md\:backdrop-blur-lg{--tw-backdrop-blur:blur(var(--blur-lg));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--bg:#f3f4f6;--surface:#fff;--text:#141822;--brand:#0085b7;--on-brand:#fff;--link:#ec6cff;--info:#1f5596;--warning:#582f02;--success:#003d2a;--danger:#6c1517;--text-muted:#5f636b;--text-subtle:#7e8188;--surface-sunken:#eff0f2;--surface-overlay:#f8f9fb;--hairline:#14182221;--hover-faint:#e6e7e9;--brand-hover:#0073a3;--brand-subtle:#dae7f0;--brand-subtle-hover:#cddae3;--focus-ring:#0085b799;--progress-start:#63acd2;--progress-end:#0085b7;--info-surface:#dbedff;--warning-surface:#ffe9d6;--success-surface:#cdf6e3;--danger-surface:#ffe2df;--danger-surface-hover:#fed2cd;--scrim:#0009;--mega-menu-bg:#f8f9fb;--mega-menu-scrim:#00000052;--app-shadow-sm:0 1px 3px #0000000f,0 1px 2px #0000000a;--app-shadow-md:0 4px 16px #00000014,0 1px 3px #0000000a;--app-shadow-lg:0 12px 32px #0000001f;--font-sans:"Lato",ui-sans-serif,system-ui,sans-serif;--font-mono:ui-monospace,"SF Mono",Menlo,Monaco,Consolas,monospace;--spacing:.25rem;--container-max-width:80rem;--radius-base:.5rem}@supports (color:lab(0% 0 0)){:root{--bg:lab(96.16% -.0918508 -1.13479);--surface:lab(100% 0 0);--text:lab(8.24713% -.0405461 -7.31381);--brand:lab(51.3503% -19.237 -40.2116);--on-brand:lab(100% 0 0);--link:lab(66.1178% 66.0652 -52.4733);--info:lab(35.3965% .70706 -41.3493);--warning:lab(24.2528% 17.0621 33.1082);--success:lab(22.3041% -31.6825 8.84454);--danger:lab(23.385% 37.9736 23.5817);--text-muted:lab(41.6736% -.316054 -5.05283);--text-subtle:lab(53.9698% -.291258 -4.20712);--surface-sunken:lab(94.768% -.0917614 -1.13479);--surface-overlay:lab(98.016% -.0918806 -1.13482);--hairline:lab(8.24713% -.0405461 -7.31381/.13);--hover-faint:lab(91.52% -.0917316 -1.13473);--brand-hover:lab(44.3401% -18.0233 -40.0589);--brand-subtle:lab(90.8302% -3.35431 -6.08345);--brand-subtle-hover:lab(86.19% -3.34981 -6.08118);--focus-ring:lab(51.3503% -19.237 -40.2116/.6);--progress-start:lab(66.6757% -15.4276 -27.0638);--progress-end:lab(51.3503% -19.237 -40.2116);--info-surface:lab(92.9035% -3.38969 -18.021);--warning-surface:lab(94.0827% 8.92592 17.0212);--success-surface:lab(93.7117% -16.5752 4.79031);--danger-surface:lab(92.5749% 15.3735 8.32583);--danger-surface-hover:lab(87.9346% 15.3784 8.33243);--scrim:lab(0% 0 0/.6);--mega-menu-bg:lab(98.016% -.0918806 -1.13482);--mega-menu-scrim:lab(0% 0 0/.32);--app-shadow-sm:0 1px 3px lab(0% 0 0/.06),0 1px 2px lab(0% 0 0/.04);--app-shadow-md:0 4px 16px lab(0% 0 0/.08),0 1px 3px lab(0% 0 0/.04);--app-shadow-lg:0 12px 32px lab(0% 0 0/.12)}}[data-darkmode=true]{--bg:#05070e;--surface:#141822;--text:#f9fafb;--brand:#00958e;--on-brand:#fff;--link:#3bd0a3;--info:#90c1ff;--warning:#f0ba59;--success:#51bd85;--danger:#f17070;--text-muted:#909297;--text-subtle:#5d6067;--surface-sunken:#0a0e17;--surface-overlay:#181d27;--hairline:#f9fafb1a;--hover-faint:#f9fafb0d;--brand-hover:#00837d;--brand-subtle:#061a20;--brand-subtle-hover:#0f242a;--focus-ring:#00958e99;--progress-start:#006261;--progress-end:#00958e;--info-surface:#21344c;--warning-surface:#45310b;--success-surface:#153524;--danger-surface:#541f20;--danger-surface-hover:#602a2a;--scrim:#0009;--mega-menu-bg:#0a0e17;--mega-menu-scrim:#00000080;--app-shadow-sm:0 4px 12px #0000004d;--app-shadow-md:0 10px 28px #0000006b;--app-shadow-lg:0 20px 48px #0000008c}@supports (color:lab(0% 0 0)){[data-darkmode=true]{--bg:lab(1.93894% .0855997 -3.22397);--surface:lab(8.24713% -.0405461 -7.31381);--text:lab(98.252% -.0618994 -.756907);--brand:lab(55.0978% -44.5567 -7.62978);--on-brand:lab(100% 0 0);--link:lab(75.1723% -48.4917 10.7875);--info:lab(76.3382% -4.43128 -38.7);--warning:lab(79.1996% 12.6808 55.9505);--success:lab(69.2339% -42.392 18.6731);--danger:lab(63.5705% 50.8105 25.3639);--text-muted:lab(60.5379% -.225931 -3.05105);--text-subtle:lab(40.6865% -.278354 -4.23647);--surface-sunken:lab(3.9802% .0812709 -5.64623);--surface-overlay:lab(10.5702% -.0939444 -7.33123);--hairline:lab(98.252% -.0618994 -.756907/.1);--hover-faint:lab(98.252% -.0618994 -.756907/.05);--brand-hover:lab(49.2976% -44.6964 -7.56882);--brand-subtle:lab(7.95734% -6.34954 -6.72844);--brand-subtle-hover:lab(12.602% -6.92477 -6.76408);--focus-ring:lab(55.0986% -44.5682 -7.59286/.6);--progress-start:lab(36.8833% -28.7182 -7.50749);--progress-end:lab(55.0978% -44.5567 -7.62978);--info-surface:lab(20.893% -1.69295 -17.5199);--warning-surface:lab(22.2973% 6.18184 26.7927);--success-surface:lab(19.4608% -16.2551 7.16286);--danger-surface:lab(20.3014% 25.4342 12.827);--danger-surface-hover:lab(24.9464% 25.3964 12.6412);--scrim:lab(0% 0 0/.6);--mega-menu-bg:lab(3.9802% .0812709 -5.64623);--mega-menu-scrim:lab(0% 0 0/.5);--app-shadow-sm:0 4px 12px lab(0% 0 0/.3);--app-shadow-md:0 10px 28px lab(0% 0 0/.42);--app-shadow-lg:0 20px 48px lab(0% 0 0/.55)}}html{background-color:var(--bg);min-height:100dvh;font-family:var(--font-sans)}html body{background-color:var(--bg);min-height:100dvh}:not(html)::-webkit-scrollbar-track{background-color:var(--scrollbar-track);border-radius:var(--scrollbar-track-radius)}:not(html)::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb);border-radius:var(--scrollbar-thumb-radius)}:not(html)::-webkit-scrollbar-corner{background-color:var(--scrollbar-corner);border-radius:var(--scrollbar-corner-radius)}:not(html){scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb,initial)var(--scrollbar-track,initial)}:not(html)::-webkit-scrollbar{width:8px;height:8px;display:block}:not(html){--scrollbar-thumb-radius:9999px;--scrollbar-thumb:var(--text-muted);--scrollbar-track:transparent}html::-webkit-scrollbar-track{background-color:var(--scrollbar-track);border-radius:var(--scrollbar-track-radius)}html::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb);border-radius:var(--scrollbar-thumb-radius)}html::-webkit-scrollbar-corner{background-color:var(--scrollbar-corner);border-radius:var(--scrollbar-corner-radius)}html{scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb,initial)var(--scrollbar-track,initial)}html::-webkit-scrollbar{width:8px;height:8px;display:block}html{--scrollbar-thumb-radius:9999px;--scrollbar-thumb:var(--text-muted);--scrollbar-track:var(--surface)}html body{min-height:100dvh;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed);--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal);color:var(--text);flex-direction:column;display:flex;position:relative}html body.modal-overlay-active{height:100vh;overflow:hidden}h1,h2,h3,h4,h5,h6{font-family:var(--font-sans);--tw-leading:var(--leading-tight);line-height:var(--leading-tight);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight);color:var(--text)}h1{margin-bottom:calc(var(--spacing)*4);padding-left:calc(var(--spacing)*6);font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}@media not all and (min-width:48rem){h1{padding-left:calc(var(--spacing)*4);font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}}h2{margin-bottom:calc(var(--spacing)*4);padding-left:calc(var(--spacing)*5);font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}@media not all and (min-width:48rem){h2{margin-bottom:calc(var(--spacing)*2);padding-left:calc(var(--spacing)*4);font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}}h3{margin-bottom:calc(var(--spacing)*4);font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}@media not all and (min-width:48rem){h3{margin-bottom:calc(var(--spacing)*2);font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}}h4{margin-bottom:calc(var(--spacing)*2);font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}@media not all and (min-width:48rem){h4{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}}h5{margin-bottom:calc(var(--spacing)*2);font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}@media not all and (min-width:48rem){h5{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}h6{margin-bottom:calc(var(--spacing)*2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}@media not all and (min-width:48rem){h6{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}hr{border-style:var(--tw-border-style);border-width:0}strong{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}abbr{cursor:help}p{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed);color:var(--text)}pre{border-radius:calc(var(--radius-base)*1.5);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface-sunken);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);font-family:var(--font-mono);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed);overflow-wrap:break-word;white-space:pre-wrap;color:var(--text-muted);display:block}code{border-radius:calc(var(--radius-base)*.5);background-color:var(--surface-sunken);padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*1);font-family:var(--font-mono);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--text-muted)}a{color:var(--link);text-decoration-line:none}@media (hover:hover){a:hover{text-decoration-line:underline}}var{font-family:var(--font-mono);color:var(--link)}small{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal);color:var(--text)}em{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--text-muted);font-style:italic}header{top:calc(var(--spacing)*0);z-index:40;margin-bottom:calc(var(--spacing)*2);background-color:var(--bg);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:var(--mega-menu-duration,.3s);transition-duration:var(--mega-menu-duration,.3s);--tw-ease:cubic-bezier(.4,0,.6,1);transition-timing-function:cubic-bezier(.4,0,.6,1);position:sticky}header .header-content{z-index:10;height:calc(var(--spacing)*14);padding-inline:calc(var(--spacing)*6);padding-block:calc(var(--spacing)*3);justify-content:space-between;align-items:center;display:flex;position:relative}@media not all and (min-width:48rem){header .header-content{padding-inline:calc(var(--spacing)*4);padding-block:calc(var(--spacing)*2)}}[data-nav-type=mega-menu] :is(header) .desktop-menu-container{pointer-events:none;visibility:hidden;inset-inline:calc(var(--spacing)*0);top:calc(var(--spacing)*0);z-index:0;height:calc(var(--mega-menu-height,0px) + 3.5rem + 3rem);width:100%;position:absolute;overflow:clip}@media not all and (min-width:48rem){[data-nav-type=mega-menu] :is(header) .desktop-menu-container{display:none}}[data-nav-type=mega-menu] :is(header) .desktop-menu-container.active,[data-nav-type=mega-menu] :is(header) .desktop-menu-container.closing{visibility:visible}[data-nav-type=mega-menu] :is(header) .desktop-menu-container.active{pointer-events:auto}[data-nav-type=mega-menu] :is(header) .desktop-menu-container.closing{opacity:0;transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.22s;--tw-ease:cubic-bezier(.4,0,.6,1);transition-duration:.22s;transition-timing-function:cubic-bezier(.4,0,.6,1)}@media (prefers-reduced-motion:reduce){[data-nav-type=mega-menu] :is(header) .desktop-menu-container.closing{transition-property:none}}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-menu-sheet{inset-inline:calc(var(--spacing)*0);top:calc(var(--spacing)*0);height:calc(var(--mega-menu-height,0px) + 3.5rem);--tw-translate-y:-100%;translate:var(--tw-translate-x)var(--tw-translate-y);background-color:var(--mega-menu-bg);transition-property:translate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:var(--mega-menu-duration,.3s);transition-duration:var(--mega-menu-duration,.3s);--tw-ease:cubic-bezier(.4,0,.6,1);transition-timing-function:cubic-bezier(.4,0,.6,1);position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-menu-sheet{transition-property:none}}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-menu-sheet:after{content:var(--tw-content);pointer-events:none;content:var(--tw-content);content:var(--tw-content);inset:calc(var(--spacing)*0);content:var(--tw-content);border-bottom-style:var(--tw-border-style);content:var(--tw-content);border-bottom-width:1px;border-color:var(--hairline);content:var(--tw-content);--tw-shadow:var(--app-shadow-lg);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);content:var(--tw-content);transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));content:var(--tw-content);--tw-duration:var(--mega-menu-duration,.3s);transition-duration:var(--mega-menu-duration,.3s);--tw-content:"";content:var(--tw-content);position:absolute}@media (prefers-reduced-motion:reduce){[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-menu-sheet:after{content:var(--tw-content);transition-property:none}}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-menu-canvas{inset:calc(var(--spacing)*0);--tw-translate-y:100%;translate:var(--tw-translate-x)var(--tw-translate-y);transition-property:translate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:var(--mega-menu-duration,.3s);transition-duration:var(--mega-menu-duration,.3s);--tw-ease:cubic-bezier(.4,0,.6,1);transition-timing-function:cubic-bezier(.4,0,.6,1);position:absolute}@media (prefers-reduced-motion:reduce){[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-menu-canvas{transition-property:none}}[data-nav-type=mega-menu] :is(header) .desktop-menu-container.active .desktop-menu-sheet,[data-nav-type=mega-menu] :is(header) .desktop-menu-container.active .desktop-menu-canvas{--tw-translate-y:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}[data-nav-type=mega-menu] :is(header) .desktop-menu-container.closing .desktop-menu-sheet:after{content:var(--tw-content);opacity:0}[data-nav-type=mega-menu] :is(header) .desktop-menu-container>.desktop-menu-board{display:none}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav{pointer-events:none;inset-inline:calc(var(--spacing)*0);top:calc(var(--spacing)*14);--tw-translate-y:calc(var(--spacing)*1.5);max-width:72rem;max-height:calc(100dvh - 3.5rem);translate:var(--tw-translate-x)var(--tw-translate-y);column-gap:calc(var(--spacing)*8);overscroll-behavior:contain;padding-inline:calc(var(--spacing)*10);padding-top:calc(var(--spacing)*13);padding-bottom:calc(var(--spacing)*8);opacity:0;transition-property:opacity,translate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.25s;--tw-ease:var(--ease-out);transition-duration:.25s;transition-timing-function:var(--ease-out);grid-template-columns:12rem minmax(0,1fr) 13rem;margin-inline:auto;display:grid;position:absolute;overflow-y:auto}@media not all and (min-width:64rem){[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav{max-width:44rem;padding-inline:calc(var(--spacing)*8);grid-template-columns:repeat(1,minmax(0,1fr))}}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav.active{pointer-events:auto;--tw-translate-y:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y);opacity:1}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav .desktop-nav-anchor{align-self:flex-start}@media not all and (min-width:64rem){[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav .desktop-nav-anchor{display:none}}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav .desktop-nav-anchor .desktop-nav-title{align-items:center;gap:calc(var(--spacing)*2.5);font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight);color:var(--text);display:flex}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav .desktop-nav-anchor .desktop-nav-title:before{width:calc(var(--spacing)*6);height:calc(var(--spacing)*6);--tw-content:"";content:var(--tw-content);-webkit-mask:var(--menu-icon,url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M4%204h6v6h-6l0%20-6'%20/%3e%3cpath%20d='M14%204h6v6h-6l0%20-6'%20/%3e%3cpath%20d='M4%2014h6v6h-6l0%20-6'%20/%3e%3cpath%20d='M14%2017a3%203%200%201%200%206%200a3%203%200%201%200%20-6%200'%20/%3e%3c/svg%3e"))center/contain no-repeat;-webkit-mask:var(--menu-icon,url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M4%204h6v6h-6l0%20-6'%20/%3e%3cpath%20d='M14%204h6v6h-6l0%20-6'%20/%3e%3cpath%20d='M4%2014h6v6h-6l0%20-6'%20/%3e%3cpath%20d='M14%2017a3%203%200%201%200%206%200a3%203%200%201%200%20-6%200'%20/%3e%3c/svg%3e"))center/contain no-repeat;-webkit-mask:var(--menu-icon,url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M4%204h6v6h-6l0%20-6'%20/%3e%3cpath%20d='M14%204h6v6h-6l0%20-6'%20/%3e%3cpath%20d='M4%2014h6v6h-6l0%20-6'%20/%3e%3cpath%20d='M14%2017a3%203%200%201%200%206%200a3%203%200%201%200%20-6%200'%20/%3e%3c/svg%3e"))center/contain no-repeat;mask:var(--menu-icon,url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M4%204h6v6h-6l0%20-6'%20/%3e%3cpath%20d='M14%204h6v6h-6l0%20-6'%20/%3e%3cpath%20d='M4%2014h6v6h-6l0%20-6'%20/%3e%3cpath%20d='M14%2017a3%203%200%201%200%206%200a3%203%200%201%200%20-6%200'%20/%3e%3c/svg%3e"))center/contain no-repeat;background-color:currentColor;flex-shrink:0}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav .desktop-nav-list{grid-auto-flow:column;grid-template-rows:repeat(var(--menu-rows,6),auto);place-content:flex-start;column-gap:calc(var(--spacing)*8);row-gap:calc(var(--spacing)*1);display:grid}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav .desktop-nav-list>li{margin:calc(var(--spacing)*0);list-style-type:none}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav .desktop-nav-list>li>a{border-radius:var(--radius-base);width:fit-content;padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));white-space:nowrap;color:var(--text);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;text-decoration-line:none;transition-duration:.15s;display:block}@media (hover:hover){[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav .desktop-nav-list>li>a:hover{background-color:var(--hover-faint)}}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav .desktop-nav-list>li>a.is-active-page{background-color:var(--brand-subtle);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--brand)}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav .desktop-menu-board{gap:calc(var(--spacing)*2);border-left-style:var(--tw-border-style);border-left-width:1px;border-color:var(--hairline);padding-left:calc(var(--spacing)*7);flex-direction:column;align-self:flex-start;display:flex}@media not all and (min-width:64rem){[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav .desktop-menu-board{display:none}}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav .desktop-menu-board .board-label{margin-bottom:calc(var(--spacing)*.5);--tw-font-weight:var(--font-weight-medium);font-size:11px;font-weight:var(--font-weight-medium);--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide);color:var(--text-subtle);text-transform:uppercase}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav .desktop-menu-board .board-line{align-items:flex-start;gap:calc(var(--spacing)*2.5);max-width:100%;font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--text-muted);display:flex}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav .desktop-menu-board .board-line:before{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4);--tw-content:"";content:var(--tw-content);background-color:currentColor;flex-shrink:0}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav .desktop-menu-board .board-line .board-text{min-width:calc(var(--spacing)*0);--tw-leading:calc(var(--spacing)*4);line-height:calc(var(--spacing)*4);overflow-wrap:anywhere}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav .desktop-menu-board .board-line-host:before{-webkit-mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M3%2015a2%202%200%200%201%202%20-2h14a2%202%200%200%201%202%202v4a2%202%200%200%201%20-2%202h-14a2%202%200%200%201%20-2%20-2l0%20-4'%20/%3e%3cpath%20d='M17%2017l0%20.01'%20/%3e%3cpath%20d='M13%2017l0%20.01'%20/%3e%3cpath%20d='M15%2013l0%20-2'%20/%3e%3cpath%20d='M11.75%208.75a4%204%200%200%201%206.5%200'%20/%3e%3cpath%20d='M8.5%206.5a8%208%200%200%201%2013%200'%20/%3e%3c/svg%3e") 50%/contain no-repeat;mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M3%2015a2%202%200%200%201%202%20-2h14a2%202%200%200%201%202%202v4a2%202%200%200%201%20-2%202h-14a2%202%200%200%201%20-2%20-2l0%20-4'%20/%3e%3cpath%20d='M17%2017l0%20.01'%20/%3e%3cpath%20d='M13%2017l0%20.01'%20/%3e%3cpath%20d='M15%2013l0%20-2'%20/%3e%3cpath%20d='M11.75%208.75a4%204%200%200%201%206.5%200'%20/%3e%3cpath%20d='M8.5%206.5a8%208%200%200%201%2013%200'%20/%3e%3c/svg%3e") 50%/contain no-repeat}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav .desktop-menu-board .board-line-model:before{-webkit-mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M5%206a1%201%200%200%201%201%20-1h12a1%201%200%200%201%201%201v12a1%201%200%200%201%20-1%201h-12a1%201%200%200%201%20-1%20-1l0%20-12'%20/%3e%3cpath%20d='M9%209h6v6h-6l0%20-6'%20/%3e%3cpath%20d='M3%2010h2'%20/%3e%3cpath%20d='M3%2014h2'%20/%3e%3cpath%20d='M10%203v2'%20/%3e%3cpath%20d='M14%203v2'%20/%3e%3cpath%20d='M21%2010h-2'%20/%3e%3cpath%20d='M21%2014h-2'%20/%3e%3cpath%20d='M14%2021v-2'%20/%3e%3cpath%20d='M10%2021v-2'%20/%3e%3c/svg%3e") 50%/contain no-repeat;mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M5%206a1%201%200%200%201%201%20-1h12a1%201%200%200%201%201%201v12a1%201%200%200%201%20-1%201h-12a1%201%200%200%201%20-1%20-1l0%20-12'%20/%3e%3cpath%20d='M9%209h6v6h-6l0%20-6'%20/%3e%3cpath%20d='M3%2010h2'%20/%3e%3cpath%20d='M3%2014h2'%20/%3e%3cpath%20d='M10%203v2'%20/%3e%3cpath%20d='M14%203v2'%20/%3e%3cpath%20d='M21%2010h-2'%20/%3e%3cpath%20d='M21%2014h-2'%20/%3e%3cpath%20d='M14%2021v-2'%20/%3e%3cpath%20d='M10%2021v-2'%20/%3e%3c/svg%3e") 50%/contain no-repeat}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav .desktop-menu-board .board-line-firmware:before{-webkit-mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M12%203l8%204.5l0%209l-8%204.5l-8%20-4.5l0%20-9l8%20-4.5'%20/%3e%3cpath%20d='M12%2012l8%20-4.5'%20/%3e%3cpath%20d='M12%2012l0%209'%20/%3e%3cpath%20d='M12%2012l-8%20-4.5'%20/%3e%3cpath%20d='M16%205.25l-8%204.5'%20/%3e%3c/svg%3e") 50%/contain no-repeat;mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M12%203l8%204.5l0%209l-8%204.5l-8%20-4.5l0%20-9l8%20-4.5'%20/%3e%3cpath%20d='M12%2012l8%20-4.5'%20/%3e%3cpath%20d='M12%2012l0%209'%20/%3e%3cpath%20d='M12%2012l-8%20-4.5'%20/%3e%3cpath%20d='M16%205.25l-8%204.5'%20/%3e%3c/svg%3e") 50%/contain no-repeat}[data-nav-type=mega-menu] :is(header) .desktop-menu-container .desktop-nav .desktop-menu-board .board-line-kernel:before{-webkit-mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M6.5%207.5a1%201%200%201%200%202%200a1%201%200%201%200%20-2%200'%20/%3e%3cpath%20d='M3%206v5.172a2%202%200%200%200%20.586%201.414l7.71%207.71a2.41%202.41%200%200%200%203.408%200l5.592%20-5.592a2.41%202.41%200%200%200%200%20-3.408l-7.71%20-7.71a2%202%200%200%200%20-1.414%20-.586h-5.172a3%203%200%200%200%20-3%203'%20/%3e%3c/svg%3e") 50%/contain no-repeat;mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M6.5%207.5a1%201%200%201%200%202%200a1%201%200%201%200%20-2%200'%20/%3e%3cpath%20d='M3%206v5.172a2%202%200%200%200%20.586%201.414l7.71%207.71a2.41%202.41%200%200%200%203.408%200l5.592%20-5.592a2.41%202.41%200%200%200%200%20-3.408l-7.71%20-7.71a2%202%200%200%200%20-1.414%20-.586h-5.172a3%203%200%200%200%20-3%203'%20/%3e%3c/svg%3e") 50%/contain no-repeat}[data-nav-type=mega-menu] :is(header):has(.desktop-menu-container:is(.active,.closing)){z-index:70}header .brand{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight);color:var(--text);transition-property:color,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;flex-shrink:0;text-decoration-line:none;transition-duration:.15s;display:inline-block}@media (hover:hover){header .brand:hover{--tw-translate-y:calc(var(--spacing)*-.5);translate:var(--tw-translate-x)var(--tw-translate-y);color:var(--brand)}}@media not all and (min-width:48rem){header .brand{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));flex:1}}header .nav{z-index:60;margin:calc(var(--spacing)*0);--tw-translate-x:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y);transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,);align-items:center;gap:calc(var(--spacing)*1);padding:calc(var(--spacing)*0);list-style-type:none;display:flex;position:absolute;left:50%}@media not all and (min-width:48rem){header .nav{display:none}}header .nav>li{position:relative}header .nav>li .menu{border-radius:calc(var(--radius-base)*1.5);padding-inline:calc(var(--spacing)*3.5);padding-block:calc(var(--spacing)*1.5);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--text);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;text-decoration-line:none;transition-duration:.15s;display:block}@media (hover:hover){header .nav>li .menu:hover{background-color:var(--hover-faint)}}header .nav>li .menu.menu-active{background-color:var(--brand-subtle);color:var(--brand)}header .nav>li .desktop-nav{pointer-events:none;left:calc(var(--spacing)*0);z-index:40;padding-inline:calc(var(--spacing)*0);padding-top:calc(var(--spacing)*0);opacity:0;transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;transition-duration:.15s}[data-nav-type=dropdown] :is(header .nav>li .desktop-nav){margin-top:calc(var(--spacing)*2);min-width:calc(var(--spacing)*48);position:absolute;top:100%}header .nav>li .desktop-nav.active{pointer-events:auto;opacity:1}[data-nav-type=dropdown] :is(header .nav>li .desktop-nav .desktop-nav-list){row-gap:calc(var(--spacing)*1);border-radius:calc(var(--radius-base)*3);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface-overlay);padding-block:calc(var(--spacing)*2);--tw-shadow:var(--app-shadow-md);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-backdrop-blur:blur(var(--blur-md));--tw-backdrop-saturate:saturate(150%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);flex-direction:column;display:flex}header .nav>li .desktop-nav .desktop-nav-list>li{margin:calc(var(--spacing)*0);list-style-type:none}header .nav>li .desktop-nav .desktop-nav-list>li>a{white-space:nowrap;color:var(--text);text-decoration-line:none;display:block}[data-nav-type=dropdown] :is(header .nav>li .desktop-nav .desktop-nav-list>li>a){margin-inline:calc(var(--spacing)*2);border-radius:calc(var(--radius-base)*1.5);padding-inline:calc(var(--spacing)*4);padding-block:calc(var(--spacing)*2);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;transition-duration:.15s}@media (hover:hover){[data-nav-type=dropdown] :is(header .nav>li .desktop-nav .desktop-nav-list>li>a):hover{background-color:var(--hover-faint)}}header .nav>li .desktop-nav .desktop-nav-list>li>a.is-active-page{background-color:var(--brand-subtle);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--brand)}header .navigation-controls{margin-right:calc(var(--spacing)*3);flex-shrink:0;align-items:center;display:flex}@media (min-width:48rem){header .navigation-controls{display:none}[data-nav-type=sidebar] :is(header .navigation-controls){display:flex}}header .navigation-controls .navigation-toggle{cursor:pointer;border-style:var(--tw-border-style);padding:calc(var(--spacing)*0);--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;background-color:#0000;border-width:0;border-radius:0;transition-duration:.15s}@media (hover:hover){header .navigation-controls .navigation-toggle:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}}header .navigation-controls .navigation-toggle:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}header .navigation-controls .navigation-toggle svg{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5);color:var(--text)}header .navigation-controls .navigation-toggle .navigation-toggle-line{transform-box:fill-box;transform-origin:50%;transition-property:transform,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;--tw-ease:var(--ease-in-out);transition-duration:.15s;transition-timing-function:var(--ease-in-out)}header .navigation-controls .navigation-toggle.is-expanded .navigation-toggle-line-top{transform:translateY(5px)rotate(45deg)}header .navigation-controls .navigation-toggle.is-expanded .navigation-toggle-line-middle{opacity:0;transform:scaleX(.35)}header .navigation-controls .navigation-toggle.is-expanded .navigation-toggle-line-bottom{transform:translate(3.75px,-5px)rotate(-45deg)scaleX(2)}header #indicators{gap:calc(var(--spacing)*5);flex-direction:row-reverse;flex-shrink:0;display:flex}@media (min-width:48rem){header #indicators{gap:calc(var(--spacing)*8)}}header #indicators span[data-indicator]{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5);cursor:pointer;font-size:0}header #indicators span[data-indicator]:before{content:var(--tw-content);content:var(--tw-content);width:calc(var(--spacing)*5);height:calc(var(--spacing)*5);content:var(--tw-content);content:var(--tw-content);color:var(--text);background-color:currentColor;position:absolute}header #indicators span[data-indicator][data-indicator=media_error]:before{content:var(--tw-content);-webkit-mask:url("data:image/svg+xml,%3csvg%20width='800'%20height='800'%20viewBox='0%200%20800%20800'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M99.5149%20622.549C93.2144%20633.653%2093.4349%20634%20107.075%20634H651.912C665.537%20634%20665.757%20633.622%20659.473%20622.549L385.196%20138.236C378.99%20127.258%20379.998%20127.258%20373.792%20138.236L99.5149%20622.534V622.549ZM440.01%20107.161L714.303%20591.475C744.577%20644.978%20713.373%20697%20651.912%20697H107.075C45.5668%20697%2014.4423%20644.946%2044.7005%20591.506L318.977%20107.192C349.314%2053.5947%20409.705%2053.6105%20440.026%20107.192L440.01%20107.161ZM379.494%20586.75C383.631%20586.75%20387.728%20585.936%20391.551%20584.353C395.373%20582.77%20398.847%20580.45%20401.773%20577.525C404.698%20574.6%20407.019%20571.127%20408.603%20567.305C410.186%20563.483%20411.001%20559.387%20411.001%20555.25C411.001%20551.112%20410.186%20547.016%20408.603%20543.194C407.019%20539.372%20404.698%20535.899%20401.773%20532.974C398.847%20530.049%20395.373%20527.729%20391.551%20526.146C387.728%20524.563%20383.631%20523.749%20379.494%20523.749C371.14%20523.751%20363.128%20527.07%20357.221%20532.977C351.314%20538.885%20347.996%20546.896%20347.996%20555.25C347.996%20563.603%20351.314%20571.614%20357.221%20577.522C363.128%20583.429%20371.14%20586.748%20379.494%20586.75ZM347.991%20303.249V460.749C347.991%20469.104%20351.31%20477.116%20357.218%20483.023C363.126%20488.931%20371.139%20492.249%20379.494%20492.249C387.849%20492.249%20395.862%20488.931%20401.769%20483.023C407.677%20477.116%20410.996%20469.104%20410.996%20460.749V303.249C410.996%20294.894%20407.677%20286.882%20401.769%20280.975C395.862%20275.067%20387.849%20271.749%20379.494%20271.749C371.139%20271.749%20363.126%20275.067%20357.218%20280.975C351.31%20286.882%20347.991%20294.894%20347.991%20303.249Z'%20fill='%230F162B'/%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3csvg%20width='800'%20height='800'%20viewBox='0%200%20800%20800'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M99.5149%20622.549C93.2144%20633.653%2093.4349%20634%20107.075%20634H651.912C665.537%20634%20665.757%20633.622%20659.473%20622.549L385.196%20138.236C378.99%20127.258%20379.998%20127.258%20373.792%20138.236L99.5149%20622.534V622.549ZM440.01%20107.161L714.303%20591.475C744.577%20644.978%20713.373%20697%20651.912%20697H107.075C45.5668%20697%2014.4423%20644.946%2044.7005%20591.506L318.977%20107.192C349.314%2053.5947%20409.705%2053.6105%20440.026%20107.192L440.01%20107.161ZM379.494%20586.75C383.631%20586.75%20387.728%20585.936%20391.551%20584.353C395.373%20582.77%20398.847%20580.45%20401.773%20577.525C404.698%20574.6%20407.019%20571.127%20408.603%20567.305C410.186%20563.483%20411.001%20559.387%20411.001%20555.25C411.001%20551.112%20410.186%20547.016%20408.603%20543.194C407.019%20539.372%20404.698%20535.899%20401.773%20532.974C398.847%20530.049%20395.373%20527.729%20391.551%20526.146C387.728%20524.563%20383.631%20523.749%20379.494%20523.749C371.14%20523.751%20363.128%20527.07%20357.221%20532.977C351.314%20538.885%20347.996%20546.896%20347.996%20555.25C347.996%20563.603%20351.314%20571.614%20357.221%20577.522C363.128%20583.429%20371.14%20586.748%20379.494%20586.75ZM347.991%20303.249V460.749C347.991%20469.104%20351.31%20477.116%20357.218%20483.023C363.126%20488.931%20371.139%20492.249%20379.494%20492.249C387.849%20492.249%20395.862%20488.931%20401.769%20483.023C407.677%20477.116%20410.996%20469.104%20410.996%20460.749V303.249C410.996%20294.894%20407.677%20286.882%20401.769%20280.975C395.862%20275.067%20387.849%20271.749%20379.494%20271.749C371.139%20271.749%20363.126%20275.067%20357.218%20280.975C351.31%20286.882%20347.991%20294.894%20347.991%20303.249Z'%20fill='%230F162B'/%3e%3c/svg%3e") 50%/cover no-repeat}header #indicators span[data-indicator][data-indicator=poll-status][data-style=active]:before{content:var(--tw-content);-webkit-mask:url("data:image/svg+xml,%3csvg%20width='800'%20height='800'%20viewBox='0%200%20800%20800'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M201.032%20123.921C202.67%20122.913%20204.182%20121.936%20205.537%20121.023C257.614%2085.7368%20319.094%2066.9154%20382%2067.0003C555.974%2067.0003%20697%20208.026%20697%20382C697.086%20440.93%20680.568%20498.691%20649.34%20548.666C648.405%20550.159%20647.097%20551.383%20645.545%20552.216C643.993%20553.05%20642.25%20553.465%20640.489%20553.42C638.728%20553.376%20637.009%20552.873%20635.501%20551.962C633.993%20551.051%20632.748%20549.763%20631.889%20548.225L552.509%20405.404C551.176%20403.007%20550.492%20400.303%20550.525%20397.56C550.558%20394.817%20551.307%20392.13%20552.698%20389.765C554.089%20387.401%20556.073%20385.44%20558.454%20384.078C560.836%20382.716%20563.531%20382%20566.275%20382H634C634.01%20335.412%20621.106%20289.734%20596.72%20250.038C572.334%20210.343%20537.422%20178.184%20495.861%20157.135C454.3%20136.085%20407.718%20126.968%20361.288%20130.797C314.858%20134.626%20270.398%20151.251%20232.847%20178.825C229.627%20181.188%20225.94%20182.839%20222.032%20183.668C218.124%20184.497%20214.085%20184.485%20210.182%20183.633C206.279%20182.781%20202.602%20181.108%20199.395%20178.726C196.189%20176.344%20193.525%20173.307%20191.582%20169.816L189.818%20166.666C185.825%20159.468%20184.763%20151.007%20186.852%20143.044C188.941%20135.082%20194.02%20128.232%20201.032%20123.921ZM558.715%20642.82C506.586%20678.213%20445.009%20697.092%20382%20697C208.025%20697%2067%20555.974%2067%20382C67%20322.969%2083.254%20267.718%20111.478%20220.5C112.696%20218.456%20114.432%20216.77%20116.509%20215.61C118.587%20214.45%20120.933%20213.858%20123.312%20213.893C125.691%20213.928%20128.019%20214.589%20130.061%20215.81C132.103%20217.03%20133.788%20218.768%20134.945%20220.846L211.49%20358.595C212.824%20360.993%20213.508%20363.697%20213.474%20366.44C213.441%20369.183%20212.692%20371.87%20211.302%20374.235C209.911%20376.599%20207.926%20378.56%20205.545%20379.922C203.164%20381.284%20200.468%20382%20197.725%20382H130C129.999%20428.603%20142.921%20474.294%20167.33%20513.993C191.739%20553.693%20226.679%20585.846%20268.265%20606.879C309.852%20627.913%20356.457%20637.002%20402.9%20633.137C449.342%20629.272%20493.803%20612.604%20531.341%20584.986C534.645%20582.52%20538.43%20580.775%20542.451%20579.865C546.472%20578.954%20550.64%20578.898%20554.684%20579.7C558.728%20580.501%20562.558%20582.143%20565.928%20584.519C569.297%20586.894%20572.131%20589.951%20574.244%20593.491C578.821%20601.138%20580.227%20610.272%20578.161%20618.941C576.095%20627.61%20570.721%20635.129%20563.188%20639.89C561.702%20640.833%20560.232%20641.799%20558.778%20642.788L558.715%20642.82Z'%20fill='%230F162B'/%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3csvg%20width='800'%20height='800'%20viewBox='0%200%20800%20800'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M201.032%20123.921C202.67%20122.913%20204.182%20121.936%20205.537%20121.023C257.614%2085.7368%20319.094%2066.9154%20382%2067.0003C555.974%2067.0003%20697%20208.026%20697%20382C697.086%20440.93%20680.568%20498.691%20649.34%20548.666C648.405%20550.159%20647.097%20551.383%20645.545%20552.216C643.993%20553.05%20642.25%20553.465%20640.489%20553.42C638.728%20553.376%20637.009%20552.873%20635.501%20551.962C633.993%20551.051%20632.748%20549.763%20631.889%20548.225L552.509%20405.404C551.176%20403.007%20550.492%20400.303%20550.525%20397.56C550.558%20394.817%20551.307%20392.13%20552.698%20389.765C554.089%20387.401%20556.073%20385.44%20558.454%20384.078C560.836%20382.716%20563.531%20382%20566.275%20382H634C634.01%20335.412%20621.106%20289.734%20596.72%20250.038C572.334%20210.343%20537.422%20178.184%20495.861%20157.135C454.3%20136.085%20407.718%20126.968%20361.288%20130.797C314.858%20134.626%20270.398%20151.251%20232.847%20178.825C229.627%20181.188%20225.94%20182.839%20222.032%20183.668C218.124%20184.497%20214.085%20184.485%20210.182%20183.633C206.279%20182.781%20202.602%20181.108%20199.395%20178.726C196.189%20176.344%20193.525%20173.307%20191.582%20169.816L189.818%20166.666C185.825%20159.468%20184.763%20151.007%20186.852%20143.044C188.941%20135.082%20194.02%20128.232%20201.032%20123.921ZM558.715%20642.82C506.586%20678.213%20445.009%20697.092%20382%20697C208.025%20697%2067%20555.974%2067%20382C67%20322.969%2083.254%20267.718%20111.478%20220.5C112.696%20218.456%20114.432%20216.77%20116.509%20215.61C118.587%20214.45%20120.933%20213.858%20123.312%20213.893C125.691%20213.928%20128.019%20214.589%20130.061%20215.81C132.103%20217.03%20133.788%20218.768%20134.945%20220.846L211.49%20358.595C212.824%20360.993%20213.508%20363.697%20213.474%20366.44C213.441%20369.183%20212.692%20371.87%20211.302%20374.235C209.911%20376.599%20207.926%20378.56%20205.545%20379.922C203.164%20381.284%20200.468%20382%20197.725%20382H130C129.999%20428.603%20142.921%20474.294%20167.33%20513.993C191.739%20553.693%20226.679%20585.846%20268.265%20606.879C309.852%20627.913%20356.457%20637.002%20402.9%20633.137C449.342%20629.272%20493.803%20612.604%20531.341%20584.986C534.645%20582.52%20538.43%20580.775%20542.451%20579.865C546.472%20578.954%20550.64%20578.898%20554.684%20579.7C558.728%20580.501%20562.558%20582.143%20565.928%20584.519C569.297%20586.894%20572.131%20589.951%20574.244%20593.491C578.821%20601.138%20580.227%20610.272%20578.161%20618.941C576.095%20627.61%20570.721%20635.129%20563.188%20639.89C561.702%20640.833%20560.232%20641.799%20558.778%20642.788L558.715%20642.82Z'%20fill='%230F162B'/%3e%3c/svg%3e") 50%/cover no-repeat}header #indicators span[data-indicator][data-indicator=poll-status][data-style=inactive]:before{content:var(--tw-content);-webkit-mask:url("data:image/svg+xml,%3csvg%20width='800'%20height='800'%20viewBox='0%200%20800%20800'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M571.418%20595.528C580.7%20609.514%20576.962%20628.288%20563.018%20637.696C533.911%20657.268%20510.181%20670.456%20491.868%20677.302C456.716%20690.382%20419.502%20697.054%20381.995%20697C354.694%20697%20328.234%20693.514%20302.949%20687.004L335.962%20629.8C396.485%20641.014%20459.864%20629.8%20513.289%20597.124L530.089%20586.708C536.769%20582.478%20544.84%20581.032%20552.573%20582.681C560.306%20584.329%20567.086%20588.941%20571.46%20595.528H571.418ZM509.803%2094.006C529.123%20102.574%20547.477%20113.074%20564.53%20125.212L250.869%20668.482C231.733%20659.714%20213.526%20649.048%20196.52%20636.646L509.761%2094.006H509.803ZM381.995%2067C409.295%2067%20435.839%2070.486%20461.082%2076.996L427.985%20134.284L422.063%20133.234C371.12%20125.021%20318.883%20132.645%20272.412%20155.075C225.941%20177.505%20187.476%20213.659%20162.214%20258.653C136.953%20303.647%20126.112%20355.311%20131.158%20406.664C136.204%20458.017%20156.893%20506.583%20190.43%20545.8L157.459%20602.92C113.918%20558.666%2084.4251%20502.532%2072.6843%20441.57C60.9436%20380.609%2067.4788%20317.537%2091.469%20260.277C115.459%20203.018%20155.835%20154.123%20207.524%20119.736C259.213%2085.349%20319.912%2067.0021%20381.995%2067ZM606.572%20161.08C664.623%20219.944%20697.117%20299.327%20697%20382C697.058%20427.158%20687.374%20471.797%20668.607%20512.872C664.536%20521.456%20660.05%20529.838%20655.167%20537.988C653.67%20540.539%20651.526%20542.649%20648.952%20544.106C646.378%20545.563%20643.465%20546.315%20640.508%20546.285C637.55%20546.255%20634.653%20545.445%20632.109%20543.936C629.564%20542.428%20627.464%20540.274%20626.019%20537.694L609.932%20508.714L553.357%20406.948C551.939%20404.39%20551.212%20401.505%20551.251%20398.581C551.289%20395.656%20552.09%20392.791%20553.575%20390.271C555.06%20387.751%20557.177%20385.662%20559.717%20384.212C562.258%20382.761%20565.132%20381.998%20568.058%20382H633.999C634.02%20321.959%20612.568%20263.891%20573.518%20218.284L606.572%20161.122V161.08Z'%20fill='%230F162B'/%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3csvg%20width='800'%20height='800'%20viewBox='0%200%20800%20800'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M571.418%20595.528C580.7%20609.514%20576.962%20628.288%20563.018%20637.696C533.911%20657.268%20510.181%20670.456%20491.868%20677.302C456.716%20690.382%20419.502%20697.054%20381.995%20697C354.694%20697%20328.234%20693.514%20302.949%20687.004L335.962%20629.8C396.485%20641.014%20459.864%20629.8%20513.289%20597.124L530.089%20586.708C536.769%20582.478%20544.84%20581.032%20552.573%20582.681C560.306%20584.329%20567.086%20588.941%20571.46%20595.528H571.418ZM509.803%2094.006C529.123%20102.574%20547.477%20113.074%20564.53%20125.212L250.869%20668.482C231.733%20659.714%20213.526%20649.048%20196.52%20636.646L509.761%2094.006H509.803ZM381.995%2067C409.295%2067%20435.839%2070.486%20461.082%2076.996L427.985%20134.284L422.063%20133.234C371.12%20125.021%20318.883%20132.645%20272.412%20155.075C225.941%20177.505%20187.476%20213.659%20162.214%20258.653C136.953%20303.647%20126.112%20355.311%20131.158%20406.664C136.204%20458.017%20156.893%20506.583%20190.43%20545.8L157.459%20602.92C113.918%20558.666%2084.4251%20502.532%2072.6843%20441.57C60.9436%20380.609%2067.4788%20317.537%2091.469%20260.277C115.459%20203.018%20155.835%20154.123%20207.524%20119.736C259.213%2085.349%20319.912%2067.0021%20381.995%2067ZM606.572%20161.08C664.623%20219.944%20697.117%20299.327%20697%20382C697.058%20427.158%20687.374%20471.797%20668.607%20512.872C664.536%20521.456%20660.05%20529.838%20655.167%20537.988C653.67%20540.539%20651.526%20542.649%20648.952%20544.106C646.378%20545.563%20643.465%20546.315%20640.508%20546.285C637.55%20546.255%20634.653%20545.445%20632.109%20543.936C629.564%20542.428%20627.464%20540.274%20626.019%20537.694L609.932%20508.714L553.357%20406.948C551.939%20404.39%20551.212%20401.505%20551.251%20398.581C551.289%20395.656%20552.09%20392.791%20553.575%20390.271C555.06%20387.751%20557.177%20385.662%20559.717%20384.212C562.258%20382.761%20565.132%20381.998%20568.058%20382H633.999C634.02%20321.959%20612.568%20263.891%20573.518%20218.284L606.572%20161.122V161.08Z'%20fill='%230F162B'/%3e%3c/svg%3e") 50%/cover no-repeat}header #indicators span[data-indicator][data-indicator=uci-changes]{position:relative}header #indicators span[data-indicator][data-indicator=uci-changes]:before{content:var(--tw-content);-webkit-mask:url("data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1758476543825'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='17352'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M439.594667%2085.333333h144.810666a70.4%2070.4%200%200%201%2070.101334%2060.970667l5.802666%2044.8a17.066667%2017.066667%200%200%200%208.192%2012.458667l38.058667%2022.528a17.066667%2017.066667%200%200%200%2015.146667%201.109333l46.848-19.2a71.082667%2071.082667%200%200%201%2088.021333%2029.226667l72.405333%20122.069333c18.218667%2030.72%2010.069333%2069.973333-18.688%2091.221333l-45.184%2033.408a17.066667%2017.066667%200%200%200-6.912%2013.696v28.757334a17.066667%2017.066667%200%200%200%206.912%2013.696l45.226667%2033.408c28.714667%2021.205333%2036.864%2060.458667%2018.645333%2091.221333l-72.405333%20122.026667a71.082667%2071.082667%200%200%201-88.021333%2029.226666l-46.848-19.2a17.066667%2017.066667%200%200%200-15.146667%201.152l-38.058667%2022.528a17.066667%2017.066667%200%200%200-8.192%2012.501334l-5.802666%2044.8A70.4%2070.4%200%200%201%20584.405333%20938.666667h-144.810666a70.4%2070.4%200%200%201-70.101334-60.970667l-5.802666-44.8a17.066667%2017.066667%200%200%200-8.192-12.458667l-38.058667-22.528a17.066667%2017.066667%200%200%200-15.146667-1.109333l-46.848%2019.2a71.082667%2071.082667%200%200%201-88.021333-29.226667l-72.405333-122.069333a69.290667%2069.290667%200%200%201%2018.688-91.221333l45.184-33.408a17.066667%2017.066667%200%200%200%206.912-13.696v-28.757334a17.066667%2017.066667%200%200%200-6.912-13.696l-45.226667-33.408a69.290667%2069.290667%200%200%201-18.645333-91.221333l72.405333-122.026667a71.082667%2071.082667%200%200%201%2088.021333-29.226666l46.848%2019.2a17.066667%2017.066667%200%200%200%2015.146667-1.152l38.058667-22.528a17.066667%2017.066667%200%200%200%208.192-12.501334l5.802666-44.8A70.4%2070.4%200%200%201%20439.594667%2085.333333z%20m1.024%20130.688a75.818667%2075.818667%200%200%201-36.821334%2055.466667l-51.712%2030.464a76.970667%2076.970667%200%200%201-67.925333%204.906667l-35.328-14.336a17.066667%2017.066667%200%200%200-21.077333%207.04L178.645333%20381.738667a17.066667%2017.066667%200%200%200%204.565334%2022.528l33.066666%2024.277333c19.541333%2014.293333%2031.018667%2036.906667%2031.018667%2061.013333v44.885334c0%2024.106667-11.52%2046.72-31.018667%2061.013333l-33.066666%2024.277333a17.066667%2017.066667%200%200%200-4.565334%2022.528l49.066667%2082.176a17.066667%2017.066667%200%200%200%2021.12%207.04l35.328-14.336a76.970667%2076.970667%200%200%201%2067.925333%204.906667l51.712%2030.421333c20.224%2011.946667%2033.792%2032.384%2036.821334%2055.509334l4.010666%2030.506666a17.066667%2017.066667%200%200%200%2016.896%2014.848h100.949334a17.066667%2017.066667%200%200%200%2016.896-14.848l4.010666-30.506666c2.986667-23.125333%2016.597333-43.605333%2036.821334-55.466667l51.712-30.464a76.970667%2076.970667%200%200%201%2067.925333-4.906667l35.328%2014.336a17.066667%2017.066667%200%200%200%2021.077333-7.04l49.109334-82.176a17.066667%2017.066667%200%200%200-4.565334-22.528l-33.066666-24.277333a75.648%2075.648%200%200%201-31.018667-61.013333v-44.885334c0-24.106667%2011.52-46.72%2031.018667-61.013333l33.066666-24.277333a17.066667%2017.066667%200%200%200%204.565334-22.528l-49.066667-82.176a17.066667%2017.066667%200%200%200-21.12-7.04l-35.328%2014.336c-22.186667%209.045333-47.317333%207.210667-67.925333-4.906667l-51.712-30.421333a75.818667%2075.818667%200%200%201-36.821334-55.509334l-4.010666-30.506666A17.066667%2017.066667%200%200%200%20562.474667%20170.666667h-100.949334a17.066667%2017.066667%200%200%200-16.896%2014.848l-4.010666%2030.506666zM682.666667%20512a42.666667%2042.666667%200%200%201-85.333334%200%2085.333333%2085.333333%200%201%200-85.333333%2085.333333%2042.666667%2042.666667%200%200%201%200%2085.333334%20170.666667%20170.666667%200%201%201%20170.666667-170.666667z'%20fill='%230f162b'%20p-id='17353'%3e%3c/path%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1758476543825'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='17352'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M439.594667%2085.333333h144.810666a70.4%2070.4%200%200%201%2070.101334%2060.970667l5.802666%2044.8a17.066667%2017.066667%200%200%200%208.192%2012.458667l38.058667%2022.528a17.066667%2017.066667%200%200%200%2015.146667%201.109333l46.848-19.2a71.082667%2071.082667%200%200%201%2088.021333%2029.226667l72.405333%20122.069333c18.218667%2030.72%2010.069333%2069.973333-18.688%2091.221333l-45.184%2033.408a17.066667%2017.066667%200%200%200-6.912%2013.696v28.757334a17.066667%2017.066667%200%200%200%206.912%2013.696l45.226667%2033.408c28.714667%2021.205333%2036.864%2060.458667%2018.645333%2091.221333l-72.405333%20122.026667a71.082667%2071.082667%200%200%201-88.021333%2029.226666l-46.848-19.2a17.066667%2017.066667%200%200%200-15.146667%201.152l-38.058667%2022.528a17.066667%2017.066667%200%200%200-8.192%2012.501334l-5.802666%2044.8A70.4%2070.4%200%200%201%20584.405333%20938.666667h-144.810666a70.4%2070.4%200%200%201-70.101334-60.970667l-5.802666-44.8a17.066667%2017.066667%200%200%200-8.192-12.458667l-38.058667-22.528a17.066667%2017.066667%200%200%200-15.146667-1.109333l-46.848%2019.2a71.082667%2071.082667%200%200%201-88.021333-29.226667l-72.405333-122.069333a69.290667%2069.290667%200%200%201%2018.688-91.221333l45.184-33.408a17.066667%2017.066667%200%200%200%206.912-13.696v-28.757334a17.066667%2017.066667%200%200%200-6.912-13.696l-45.226667-33.408a69.290667%2069.290667%200%200%201-18.645333-91.221333l72.405333-122.026667a71.082667%2071.082667%200%200%201%2088.021333-29.226666l46.848%2019.2a17.066667%2017.066667%200%200%200%2015.146667-1.152l38.058667-22.528a17.066667%2017.066667%200%200%200%208.192-12.501334l5.802666-44.8A70.4%2070.4%200%200%201%20439.594667%2085.333333z%20m1.024%20130.688a75.818667%2075.818667%200%200%201-36.821334%2055.466667l-51.712%2030.464a76.970667%2076.970667%200%200%201-67.925333%204.906667l-35.328-14.336a17.066667%2017.066667%200%200%200-21.077333%207.04L178.645333%20381.738667a17.066667%2017.066667%200%200%200%204.565334%2022.528l33.066666%2024.277333c19.541333%2014.293333%2031.018667%2036.906667%2031.018667%2061.013333v44.885334c0%2024.106667-11.52%2046.72-31.018667%2061.013333l-33.066666%2024.277333a17.066667%2017.066667%200%200%200-4.565334%2022.528l49.066667%2082.176a17.066667%2017.066667%200%200%200%2021.12%207.04l35.328-14.336a76.970667%2076.970667%200%200%201%2067.925333%204.906667l51.712%2030.421333c20.224%2011.946667%2033.792%2032.384%2036.821334%2055.509334l4.010666%2030.506666a17.066667%2017.066667%200%200%200%2016.896%2014.848h100.949334a17.066667%2017.066667%200%200%200%2016.896-14.848l4.010666-30.506666c2.986667-23.125333%2016.597333-43.605333%2036.821334-55.466667l51.712-30.464a76.970667%2076.970667%200%200%201%2067.925333-4.906667l35.328%2014.336a17.066667%2017.066667%200%200%200%2021.077333-7.04l49.109334-82.176a17.066667%2017.066667%200%200%200-4.565334-22.528l-33.066666-24.277333a75.648%2075.648%200%200%201-31.018667-61.013333v-44.885334c0-24.106667%2011.52-46.72%2031.018667-61.013333l33.066666-24.277333a17.066667%2017.066667%200%200%200%204.565334-22.528l-49.066667-82.176a17.066667%2017.066667%200%200%200-21.12-7.04l-35.328%2014.336c-22.186667%209.045333-47.317333%207.210667-67.925333-4.906667l-51.712-30.421333a75.818667%2075.818667%200%200%201-36.821334-55.509334l-4.010666-30.506666A17.066667%2017.066667%200%200%200%20562.474667%20170.666667h-100.949334a17.066667%2017.066667%200%200%200-16.896%2014.848l-4.010666%2030.506666zM682.666667%20512a42.666667%2042.666667%200%200%201-85.333334%200%2085.333333%2085.333333%200%201%200-85.333333%2085.333333%2042.666667%2042.666667%200%200%201%200%2085.333334%20170.666667%20170.666667%200%201%201%20170.666667-170.666667z'%20fill='%230f162b'%20p-id='17353'%3e%3c/path%3e%3c/svg%3e") 50%/cover no-repeat}header #indicators span[data-indicator][data-indicator=uci-changes][data-count]:not([data-count="0"]):after{content:var(--tw-content);content:var(--tw-content);top:calc(var(--spacing)*-.5);content:var(--tw-content);right:calc(var(--spacing)*-.5);content:var(--tw-content);z-index:10;content:var(--tw-content);content:var(--tw-content);min-height:calc(var(--spacing)*3);content:var(--tw-content);min-width:calc(var(--spacing)*3);content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);background-color:var(--danger);content:var(--tw-content);padding-inline:calc(var(--spacing)*.5);content:var(--tw-content);content:var(--tw-content);--tw-leading:1;content:var(--tw-content);--tw-font-weight:var(--font-weight-bold);font-size:8px;line-height:1;font-weight:var(--font-weight-bold);content:var(--tw-content);color:var(--on-brand);content:var(--tw-content);--tw-shadow:var(--app-shadow-sm);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-content:attr(data-count);content:var(--tw-content);border-radius:3.40282e38px;justify-content:center;align-items:center;display:flex;position:absolute}@media (min-width:48rem){body[data-nav-type=sidebar]{transition-property:grid-template-columns;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.25s;--tw-ease:var(--ease-out);transition-duration:.25s;transition-timing-function:var(--ease-out);grid-template-rows:auto minmax(0,1fr);grid-template-columns:17rem minmax(0,1fr);display:grid;overflow-x:clip}body[data-nav-type=sidebar].sidebar-collapsed{grid-template-columns:0 minmax(0,1fr)}body[data-nav-type=sidebar]>header{margin-bottom:calc(var(--spacing)*0);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--hairline);grid-column:1/-1;grid-row-start:1}body[data-nav-type=sidebar]>.sidebar-panel{grid-row-start:2;grid-column-start:1}body[data-nav-type=sidebar]>#maincontent{min-width:calc(var(--spacing)*0);padding-top:calc(var(--spacing)*2);grid-row-start:2;grid-column-start:2}}body[data-nav-type=sidebar] .header-crumb{margin-block:calc(var(--spacing)*0);margin-right:auto;margin-left:calc(var(--spacing)*6);min-width:calc(var(--spacing)*0);align-items:center;gap:calc(var(--spacing)*2);padding:calc(var(--spacing)*0);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--text-muted);list-style-type:none;display:none;overflow:hidden}@media (min-width:48rem){body[data-nav-type=sidebar] .header-crumb{display:flex}}body[data-nav-type=sidebar] .header-crumb li{margin:calc(var(--spacing)*0);white-space:nowrap;list-style-type:none}body[data-nav-type=sidebar] .header-crumb .crumb-sep{opacity:.5}body[data-nav-type=sidebar] .header-crumb .current{min-width:calc(var(--spacing)*0);text-overflow:ellipsis;white-space:nowrap;--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--text);overflow:hidden}body[data-nav-type=sidebar] .sidebar-panel{top:calc(var(--spacing)*14);border-right-style:var(--tw-border-style);border-right-width:1px;border-color:var(--hairline);width:100%;height:calc(100vh - 3.5rem);transition-property:visibility;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.25s;border-radius:0;transition-duration:.25s;display:none;position:sticky;overflow:hidden}@media (min-width:48rem){body[data-nav-type=sidebar] .sidebar-panel{display:block}}body[data-nav-type=sidebar].sidebar-collapsed .sidebar-panel{visibility:hidden}body[data-nav-type=sidebar] .sidebar-panel-inner{height:100%;width:calc(var(--spacing)*68);background-color:var(--bg);transition-property:translate,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.25s;flex-direction:column;transition-duration:.25s;display:flex;overflow:hidden}body[data-nav-type=sidebar].sidebar-collapsed .sidebar-panel-inner{--tw-translate-x:-100%;translate:var(--tw-translate-x)var(--tw-translate-y);opacity:0}body[data-nav-type=sidebar] .sidebar-list{margin:calc(var(--spacing)*0);flex:1;list-style-type:none}:where(body[data-nav-type=sidebar] .sidebar-list>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*.5)*calc(1 - var(--tw-space-y-reverse)))}body[data-nav-type=sidebar] .sidebar-list{padding:calc(var(--spacing)*3);overflow-y:auto}body[data-nav-type=sidebar] .sidebar-list li{margin:calc(var(--spacing)*0);list-style-type:none}body[data-nav-type=sidebar] .sidebar-list .navigation-direct{text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));overflow:hidden}body[data-nav-type=sidebar] .sidebar-submenu{margin:calc(var(--spacing)*0);min-height:calc(var(--spacing)*0);list-style-type:none}:where(body[data-nav-type=sidebar] .sidebar-submenu>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*.5)*calc(1 - var(--tw-space-y-reverse)))}body[data-nav-type=sidebar] .sidebar-submenu{padding:calc(var(--spacing)*0);padding-left:calc(var(--spacing)*4);overflow:hidden}body[data-nav-type=sidebar] .sidebar-submenu .navigation-sublink{padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*1.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}body[data-nav-type=sidebar] .sidebar-footer{border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--hairline);padding:calc(var(--spacing)*3);flex-shrink:0}body[data-nav-type=sidebar] .sidebar-footer .nav-link{color:var(--text-muted)}@media (hover:hover){body[data-nav-type=sidebar] .sidebar-footer .nav-link:hover{color:var(--danger)}}#maincontent{width:95.8333%;min-height:calc(100vh - 4rem);max-width:var(--container-max-width);padding-inline:calc(var(--spacing)*4);margin-inline:auto}@media not all and (min-width:48rem){#maincontent{width:100%;padding-inline:calc(var(--spacing)*3)}}#maincontent #view{margin-inline:calc(var(--spacing)*0);width:100%;padding:calc(var(--spacing)*0);--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);background-color:#0000}#maincontent #view:empty{display:none}@media (min-width:48rem){#maincontent #view{padding:calc(var(--spacing)*0)}}#maincontent #view .cbi-title-section{margin-bottom:calc(var(--spacing)*6);--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}@media not all and (min-width:48rem){#maincontent #view .cbi-title-section{margin-inline:calc(var(--spacing)*2);margin-bottom:calc(var(--spacing)*3)}}#maincontent #view .controls{margin:calc(var(--spacing)*2);align-items:center;gap:calc(var(--spacing)*3);flex-wrap:wrap;display:flex}@media not all and (min-width:48rem){#maincontent #view .controls{margin:calc(var(--spacing)*1);gap:calc(var(--spacing)*2)}}#maincontent #view .controls label input[type=radio],#maincontent #view .controls label input[type=checkbox]{margin-right:calc(var(--spacing)*1);vertical-align:middle}#maincontent #view #content_syslog{margin:calc(var(--spacing)*2)}@media not all and (min-width:48rem){#maincontent #view #content_syslog{margin:calc(var(--spacing)*1)}}#maincontent #view #content_syslog>div{align-items:baseline;column-gap:calc(var(--spacing)*2);flex-wrap:wrap;display:flex}@media not all and (min-width:48rem){#maincontent #view #content_syslog>div{column-gap:calc(var(--spacing)*1.5)}#maincontent #view #content_syslog>div>.cbi-input-select,#maincontent #view #content_syslog>div>.cbi-input-text{min-width:calc(var(--spacing)*45)}}#maincontent #view div[style]>svg:where([data-darkmode=true],[data-darkmode=true] *){background-color:var(--surface)!important}#maincontent #view div[style]>svg line[style]:where([data-darkmode=true],[data-darkmode=true] *){stroke:var(--text)!important}#maincontent .cbi-map-descr,#maincontent .cbi-section-descr{margin-bottom:calc(var(--spacing)*6);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed);color:var(--text-muted)}@media not all and (min-width:48rem){#maincontent .cbi-map-descr,#maincontent .cbi-section-descr{margin-inline:calc(var(--spacing)*2);margin-bottom:calc(var(--spacing)*3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}#maincontent .cbi-page-actions{margin-top:calc(var(--spacing)*6);justify-content:flex-end;align-items:center;gap:calc(var(--spacing)*3);border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--hairline);padding-top:calc(var(--spacing)*4);flex-wrap:wrap;display:flex}@media not all and (min-width:48rem){#maincontent .cbi-page-actions{margin-inline:calc(var(--spacing)*2);margin-top:calc(var(--spacing)*4);gap:calc(var(--spacing)*2);padding-top:calc(var(--spacing)*3)}}#maincontent .zone-forwards{align-items:stretch;gap:calc(var(--spacing)*2);--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed);flex-wrap:nowrap;display:flex}#maincontent .zone-forwards>span{flex-shrink:0;flex-basis:calc(var(--spacing)*8);color:var(--text-muted);justify-content:center;align-self:center;align-items:center;display:flex}#maincontent .zone-forwards .zone-src,#maincontent .zone-forwards .zone-dest{gap:calc(var(--spacing)*1.5);flex-direction:column;flex:1;display:flex}#maincontent #syslog,#maincontent #log_textarea{width:100%;font-family:var(--font-mono);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}#maincontent #syslog{border-radius:calc(var(--radius-base)*3);border-style:var(--tw-border-style);background-color:var(--surface-sunken);padding:calc(var(--spacing)*6);color:var(--text);--tw-shadow:var(--app-shadow-md);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-width:1px}@media not all and (min-width:48rem){#maincontent #syslog{padding:calc(var(--spacing)*3)}}footer{margin-top:calc(var(--spacing)*2);min-height:calc(var(--spacing)*16);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--text-muted);flex-wrap:wrap;justify-content:space-between;align-items:center;display:flex}footer a{color:var(--brand)}footer span{text-align:center;display:inline-block}footer .breadcrumb{align-items:center;gap:calc(var(--spacing)*1);background-color:var(--surface-overlay);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*1.5);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-shadow:var(--app-shadow-sm);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-backdrop-blur:blur(var(--blur-md));--tw-backdrop-saturate:saturate(150%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;border-radius:3.40282e38px;transition-duration:.15s;display:flex}@media (hover:hover){footer .breadcrumb:hover{background-color:var(--surface)}}footer .breadcrumb li{list-style-type:none}footer .breadcrumb li.active a{color:var(--text)}.control-group{margin-top:calc(var(--spacing)*1)}.control-group,.cbi-page-actions>div,.cbi-section-actions>div{align-items:center;gap:calc(var(--spacing)*2);flex-flow:row;display:flex}@media not all and (min-width:48rem){.control-group,.cbi-page-actions>div,.cbi-section-actions>div{gap:calc(var(--spacing)*1);flex-wrap:wrap}}.nav-link{border-radius:calc(var(--radius-base)*1.5);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*1.5);color:var(--text);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;text-decoration-line:none;transition-duration:.15s;display:block}@media (hover:hover){.nav-link:hover{background-color:var(--hover-faint)}}.navigation-direct{color:var(--text)}@media (hover:hover){.navigation-direct:hover{color:var(--text)}}.navigation-direct.is-active-page{background-color:var(--brand-subtle);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--brand)}@media (hover:hover){.navigation-direct.is-active-page:hover{color:var(--brand)}}.nav-category{cursor:pointer;appearance:none;align-items:center;gap:calc(var(--spacing)*2);border-radius:var(--radius-base);border-style:var(--tw-border-style);width:100%;padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);text-align:left;font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide);color:var(--text-muted);--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;-webkit-user-select:none;user-select:none;background-color:#0000;border-width:0;transition-duration:.15s;display:flex}@media (hover:hover){.nav-category:hover{color:var(--text)}}.nav-category:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--focus-ring);--tw-outline-style:none;outline-style:none}.navigation-group-toggle:after{content:var(--tw-content);width:calc(var(--spacing)*3.5);height:calc(var(--spacing)*3.5);content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);opacity:.55;content:var(--tw-content);transition-property:transform,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));content:var(--tw-content);--tw-duration:.25s;--tw-content:"";content:var(--tw-content);content:var(--tw-content);background-color:currentColor;flex-shrink:0;transition-duration:.25s;-webkit-mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20width='24'%20height='24'%20fill='%23000000'%20style='opacity:1;'%3e%3cpath%20fill-rule='evenodd'%20d='M8.22%205.22a.75.75%200%200%201%201.06%200l4.25%204.25a.75.75%200%200%201%200%201.06l-4.25%204.25a.75.75%200%200%201-1.06-1.06L11.94%2010L8.22%206.28a.75.75%200%200%201%200-1.06'%20clip-rule='evenodd'/%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20width='24'%20height='24'%20fill='%23000000'%20style='opacity:1;'%3e%3cpath%20fill-rule='evenodd'%20d='M8.22%205.22a.75.75%200%200%201%201.06%200l4.25%204.25a.75.75%200%200%201%200%201.06l-4.25%204.25a.75.75%200%200%201-1.06-1.06L11.94%2010L8.22%206.28a.75.75%200%200%201%200-1.06'%20clip-rule='evenodd'/%3e%3c/svg%3e") 50%/cover no-repeat}@media (hover:hover){.navigation-group-toggle:hover:after{content:var(--tw-content);opacity:1}}.nav-category-label{min-width:calc(var(--spacing)*0);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.navigation-group.is-expanded>.navigation-group-toggle{color:var(--brand)}.navigation-group.is-expanded>.navigation-group-toggle:after{content:var(--tw-content);rotate:90deg}.navigation-group.is-active-group>.navigation-group-toggle{color:var(--brand)}.navigation-group-region{opacity:0;transition-property:grid-template-rows,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.25s;--tw-ease:var(--ease-out);transition-duration:.25s;transition-timing-function:var(--ease-out);grid-template-rows:0fr;display:grid}.navigation-group.is-expanded>.navigation-group-region{opacity:1;grid-template-rows:1fr}.navigation-submenu-list{min-height:calc(var(--spacing)*0);list-style-type:none;overflow:hidden}.navigation-sublink{border-radius:var(--radius-base);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--text-muted);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;text-decoration-line:none;transition-duration:.15s;display:flex;position:relative}@media (hover:hover){.navigation-sublink:hover{background-color:var(--hover-faint);color:var(--text)}}.navigation-sublink.is-active-page{background-color:var(--brand-subtle);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--brand)}@media (hover:hover){.navigation-sublink.is-active-page:hover{color:var(--brand)}}.nav-category-preview{text-overflow:ellipsis;white-space:nowrap;padding-bottom:calc(var(--spacing)*1);color:var(--text-subtle);overflow:hidden}.nav-category-preview .nav-preview-current{color:var(--brand)}.desktop-nav-title[data-section=status]{--menu-icon:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M3%2012h4l3%208l4%20-16l3%208h4'%20/%3e%3c/svg%3e")}.desktop-nav-title[data-section=statistics]{--menu-icon:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M3%2013a1%201%200%200%201%201%20-1h4a1%201%200%200%201%201%201v6a1%201%200%200%201%20-1%201h-4a1%201%200%200%201%20-1%20-1l0%20-6'%20/%3e%3cpath%20d='M15%209a1%201%200%200%201%201%20-1h4a1%201%200%200%201%201%201v10a1%201%200%200%201%20-1%201h-4a1%201%200%200%201%20-1%20-1l0%20-10'%20/%3e%3cpath%20d='M9%205a1%201%200%200%201%201%20-1h4a1%201%200%200%201%201%201v14a1%201%200%200%201%20-1%201h-4a1%201%200%200%201%20-1%20-1l0%20-14'%20/%3e%3cpath%20d='M4%2020h14'%20/%3e%3c/svg%3e")}.desktop-nav-title[data-section=nlbw]{--menu-icon:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M3%2012a9%209%200%201%200%2018%200a9%209%200%201%200%20-18%200'%20/%3e%3cpath%20d='M11%2012a1%201%200%201%200%202%200a1%201%200%201%200%20-2%200'%20/%3e%3cpath%20d='M13.41%2010.59l2.59%20-2.59'%20/%3e%3cpath%20d='M7%2012a5%205%200%200%201%205%20-5'%20/%3e%3c/svg%3e")}.desktop-nav-title[data-section=system]{--menu-icon:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M10.325%204.317c.426%20-1.756%202.924%20-1.756%203.35%200a1.724%201.724%200%200%200%202.573%201.066c1.543%20-.94%203.31%20.826%202.37%202.37a1.724%201.724%200%200%200%201.065%202.572c1.756%20.426%201.756%202.924%200%203.35a1.724%201.724%200%200%200%20-1.066%202.573c.94%201.543%20-.826%203.31%20-2.37%202.37a1.724%201.724%200%200%200%20-2.572%201.065c-.426%201.756%20-2.924%201.756%20-3.35%200a1.724%201.724%200%200%200%20-2.573%20-1.066c-1.543%20.94%20-3.31%20-.826%20-2.37%20-2.37a1.724%201.724%200%200%200%20-1.065%20-2.572c-1.756%20-.426%20-1.756%20-2.924%200%20-3.35a1.724%201.724%200%200%200%201.066%20-2.573c-.94%20-1.543%20.826%20-3.31%202.37%20-2.37c1%20.608%202.296%20.07%202.572%20-1.065'%20/%3e%3cpath%20d='M9%2012a3%203%200%201%200%206%200a3%203%200%200%200%20-6%200'%20/%3e%3c/svg%3e")}.desktop-nav-title[data-section=services]{--menu-icon:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M4%205a1%201%200%200%201%201%20-1h4a1%201%200%200%201%201%201v4a1%201%200%200%201%20-1%201h-4a1%201%200%200%201%20-1%20-1l0%20-4'%20/%3e%3cpath%20d='M4%2015a1%201%200%200%201%201%20-1h4a1%201%200%200%201%201%201v4a1%201%200%200%201%20-1%201h-4a1%201%200%200%201%20-1%20-1l0%20-4'%20/%3e%3cpath%20d='M14%2015a1%201%200%200%201%201%20-1h4a1%201%200%200%201%201%201v4a1%201%200%200%201%20-1%201h-4a1%201%200%200%201%20-1%20-1l0%20-4'%20/%3e%3cpath%20d='M14%207l6%200'%20/%3e%3cpath%20d='M17%204l0%206'%20/%3e%3c/svg%3e")}.desktop-nav-title[data-section=nas]{--menu-icon:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M3%207a3%203%200%200%201%203%20-3h12a3%203%200%200%201%203%203v2a3%203%200%200%201%20-3%203h-12a3%203%200%200%201%20-3%20-3v-2'%20/%3e%3cpath%20d='M3%2015a3%203%200%200%201%203%20-3h12a3%203%200%200%201%203%203v2a3%203%200%200%201%20-3%203h-12a3%203%200%200%201%20-3%20-3l0%20-2'%20/%3e%3cpath%20d='M7%208l0%20.01'%20/%3e%3cpath%20d='M7%2016l0%20.01'%20/%3e%3cpath%20d='M11%208h6'%20/%3e%3cpath%20d='M11%2016h6'%20/%3e%3c/svg%3e")}.desktop-nav-title[data-section=control]{--menu-icon:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M4%2010a2%202%200%201%200%204%200a2%202%200%200%200%20-4%200'%20/%3e%3cpath%20d='M6%204v4'%20/%3e%3cpath%20d='M6%2012v8'%20/%3e%3cpath%20d='M10%2016a2%202%200%201%200%204%200a2%202%200%200%200%20-4%200'%20/%3e%3cpath%20d='M12%204v10'%20/%3e%3cpath%20d='M12%2018v2'%20/%3e%3cpath%20d='M16%207a2%202%200%201%200%204%200a2%202%200%200%200%20-4%200'%20/%3e%3cpath%20d='M18%204v1'%20/%3e%3cpath%20d='M18%209v11'%20/%3e%3c/svg%3e")}.desktop-nav-title[data-section=network]{--menu-icon:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M3%2012a9%209%200%201%200%2018%200a9%209%200%200%200%20-18%200'%20/%3e%3cpath%20d='M3.6%209h16.8'%20/%3e%3cpath%20d='M3.6%2015h16.8'%20/%3e%3cpath%20d='M11.5%203a17%2017%200%200%200%200%2018'%20/%3e%3cpath%20d='M12.5%203a17%2017%200%200%201%200%2018'%20/%3e%3c/svg%3e")}.desktop-nav-title[data-section=vpn]{--menu-icon:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M12%203a12%2012%200%200%200%208.5%203a12%2012%200%200%201%20-8.5%2015a12%2012%200%200%201%20-8.5%20-15a12%2012%200%200%200%208.5%20-3'%20/%3e%3c/svg%3e")}.desktop-nav-title[data-section=docker]{--menu-icon:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M12%203l8%204.5l0%209l-8%204.5l-8%20-4.5l0%20-9l8%20-4.5'%20/%3e%3cpath%20d='M12%2012l8%20-4.5'%20/%3e%3cpath%20d='M12%2012l0%209'%20/%3e%3cpath%20d='M12%2012l-8%20-4.5'%20/%3e%3c/svg%3e")}.desktop-nav-title[data-section=asterisk]{--menu-icon:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M5%204h4l2%205l-2.5%201.5a11%2011%200%200%200%205%205l1.5%20-2.5l5%202v4a2%202%200%200%201%20-2%202a16%2016%200%200%201%20-15%20-15a2%202%200%200%201%202%20-2'%20/%3e%3c/svg%3e")}.theme-switcher{align-items:center;gap:calc(var(--spacing)*0);background-color:var(--surface);--tw-shadow:var(--app-shadow-sm);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-backdrop-blur:blur(var(--blur-md));--tw-backdrop-saturate:saturate(150%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;border-radius:3.40282e38px;transition-duration:.15s;display:inline-flex;position:relative}@media not all and (min-width:48rem){.theme-switcher{padding-block:calc(var(--spacing)*.5)}}.theme-switcher{border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline)}.theme-switcher:before{content:var(--tw-content);content:var(--tw-content);top:calc(var(--spacing)*1);content:var(--tw-content);left:calc(var(--spacing)*1);content:var(--tw-content);z-index:0;content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);background-color:var(--hairline);content:var(--tw-content);--tw-shadow:var(--app-shadow-md);width:calc(33.333% - .5rem);height:calc(100% - .5rem);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);content:var(--tw-content);--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);content:var(--tw-content);--tw-ring-color:var(--hairline);content:var(--tw-content);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));content:var(--tw-content);--tw-duration:.25s;border-radius:3.40282e38px;transition-duration:.25s;position:absolute}@media not all and (min-width:48rem){footer .theme-switcher{display:none}}.theme-switcher .theme-option{z-index:10;cursor:pointer;justify-content:center;align-items:center;gap:calc(var(--spacing)*1.5);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*1.5);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;border-radius:3.40282e38px;transition-duration:.15s;display:flex;position:relative}@media (hover:hover){.theme-switcher .theme-option:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}}.theme-switcher .theme-option:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.theme-switcher .theme-option input[type=radio]{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.theme-switcher .theme-option .theme-icon{color:var(--text-muted);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;justify-content:center;align-items:center;transition-duration:.15s;display:flex}.theme-switcher .theme-option .theme-icon svg{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;transition-duration:.15s}.theme-switcher .theme-option .theme-label{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--text-muted);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;transition-duration:.15s;display:none}.theme-switcher .theme-option.active .theme-icon{color:var(--text)}.theme-switcher .theme-option.active .theme-icon svg{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.theme-switcher .theme-option.active .theme-label,.theme-switcher .theme-option:hover:not(.active) .theme-icon,.theme-switcher .theme-option:hover:not(.active) .theme-label{color:var(--text)}.theme-switcher:has(.theme-option[data-theme=device].active):before{content:var(--tw-content);--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.theme-switcher:has(.theme-option[data-theme=light].active):before{content:var(--tw-content);--tw-translate-x:calc(100% + .5rem);translate:var(--tw-translate-x)var(--tw-translate-y)}.theme-switcher:has(.theme-option[data-theme=dark].active):before{content:var(--tw-content);--tw-translate-x:calc(200% + 1rem);translate:var(--tw-translate-x)var(--tw-translate-y)}.floating-toolbar{right:calc(var(--spacing)*4);bottom:calc(var(--spacing)*4);z-index:40;flex-direction:column;align-items:center;display:flex;position:fixed}@media not all and (min-width:48rem){.floating-toolbar{right:calc(var(--spacing)*3);bottom:calc(var(--spacing)*3)}}.floating-toolbar .toolbar-list{visibility:visible;margin-bottom:calc(var(--spacing)*2);transform-origin:bottom;opacity:1;transition-property:grid-template-rows,transform,opacity,visibility;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.25s;--tw-ease:var(--ease-in-out);transition-duration:.25s;transition-timing-function:var(--ease-in-out);grid-template-rows:1fr;display:grid}@media not all and (min-width:48rem){.floating-toolbar .toolbar-list{margin-bottom:calc(var(--spacing)*1.5)}}.floating-toolbar .toolbar-list .toolbar-list-inner{min-height:calc(var(--spacing)*0);align-items:center;gap:calc(var(--spacing)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface-overlay);padding:calc(var(--spacing)*1);--tw-shadow:var(--app-shadow-sm);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-radius:3.40282e38px;flex-direction:column;display:flex;overflow:hidden}@media not all and (min-width:48rem){.floating-toolbar .toolbar-list .toolbar-list-inner{gap:calc(var(--spacing)*1.5);padding:calc(var(--spacing)*.5)}}.floating-toolbar .toolbar-btn{height:calc(var(--spacing)*10);width:calc(var(--spacing)*10);cursor:pointer;padding:calc(var(--spacing)*2);transition-property:background-color,transform,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;--tw-ease:var(--ease-in-out);transition-duration:.15s;transition-timing-function:var(--ease-in-out);border-radius:3.40282e38px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.floating-toolbar .toolbar-btn:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}@media not all and (min-width:48rem){.floating-toolbar .toolbar-btn{height:calc(var(--spacing)*9);width:calc(var(--spacing)*9);padding:calc(var(--spacing)*1.5)}}.floating-toolbar .toolbar-btn .icon{height:calc(var(--spacing)*5);width:calc(var(--spacing)*5);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;--tw-ease:var(--ease-in-out);transition-duration:.15s;transition-timing-function:var(--ease-in-out);flex-shrink:0}@media not all and (min-width:48rem){.floating-toolbar .toolbar-btn .icon{height:calc(var(--spacing)*4);width:calc(var(--spacing)*4)}}.floating-toolbar .toolbar-btn:not(.toggle){text-decoration-line:none}@media (hover:hover){.floating-toolbar .toolbar-btn:not(.toggle):hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y);background-color:var(--hover-faint)}}.floating-toolbar .toolbar-btn:not(.toggle) .icon{object-fit:contain}.floating-toolbar .toolbar-btn:not(.toggle) .icon:where([data-darkmode=true],[data-darkmode=true] *){--tw-invert:invert(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.floating-toolbar .toolbar-btn.toggle{border-style:var(--tw-border-style);background-color:var(--surface);--tw-shadow:var(--app-shadow-sm);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-width:0}.floating-toolbar .toolbar-btn.toggle .icon{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;--tw-ease:var(--ease-out);transition-duration:.15s;transition-timing-function:var(--ease-out)}.floating-toolbar.collapsed .toolbar-list{pointer-events:none;visibility:hidden;--tw-translate-y:calc(var(--spacing)*2);translate:var(--tw-translate-x)var(--tw-translate-y);--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x)var(--tw-scale-y);opacity:0;grid-template-rows:0fr}.floating-toolbar.collapsed .toolbar-btn:not(.toggle){--tw-scale-x:50%;--tw-scale-y:50%;--tw-scale-z:50%;scale:var(--tw-scale-x)var(--tw-scale-y);opacity:0}.floating-toolbar.collapsed .toolbar-btn.toggle .icon{rotate:45deg}button,input[type=button],input[type=submit],input[type=reset],.btn,.cbi-button{cursor:pointer;justify-content:center;align-items:center;gap:calc(var(--spacing)*1.5);border-radius:calc(var(--radius-base)*1.5);border-style:var(--tw-border-style);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*1.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition-property:background-color,border-color,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;border-width:1px;transition-duration:.15s;display:inline-flex}@media not all and (min-width:48rem){button,input[type=button],input[type=submit],input[type=reset],.btn,.cbi-button{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}}:is(button,input[type=button],input[type=submit],input[type=reset],.btn,.cbi-button)[disabled]{cursor:not-allowed;opacity:.4}:is(button,input[type=button],input[type=submit],input[type=reset],.btn,.cbi-button)[disabled]:where([data-darkmode=true],[data-darkmode=true] *){opacity:.3}.td :is(button,input[type=button],input[type=submit],input[type=reset],.btn,.cbi-button){white-space:nowrap;flex:none;width:auto;display:inline-flex}@media not all and (min-width:48rem){.td :is(button,input[type=button],input[type=submit],input[type=reset],.btn,.cbi-button){min-height:calc(var(--spacing)*9);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.btn,.cbi-button,.cbi-button-default,.cbi-button-download,.cbi-button-find,.cbi-button-link,.cbi-button-up,.cbi-button-down{border-color:var(--hairline);background-color:var(--surface-sunken);color:var(--text)}@media (hover:hover){:is(.btn,.cbi-button,.cbi-button-default,.cbi-button-download,.cbi-button-find,.cbi-button-link,.cbi-button-up,.cbi-button-down):hover{background-color:var(--hover-faint)}}.drag-handle{border-color:var(--hairline);background-color:var(--surface-sunken);color:var(--text-muted)}@media (hover:hover){.drag-handle:hover{background-color:var(--hover-faint)}}.btn.primary,.cbi-button-action,.cbi-button-apply,.cbi-button-reload,.cbi-button-add,.cbi-button-edit{border-color:var(--brand);background-color:var(--brand);color:var(--on-brand)}@media (hover:hover){:is(.btn.primary,.cbi-button-action,.cbi-button-apply,.cbi-button-reload,.cbi-button-add,.cbi-button-edit):hover{background-color:var(--brand-hover)}}.cbi-button-positive,.cbi-button-fieldadd,.cbi-button-save{background-color:var(--brand-subtle);color:var(--brand);border-color:#0000}@media (hover:hover){:is(.cbi-button-positive,.cbi-button-fieldadd,.cbi-button-save):hover{background-color:var(--brand-subtle-hover)}}.cbi-button-negative,.cbi-section-remove .cbi-button,.cbi-button-reset,.cbi-button-remove{background-color:var(--danger-surface);color:var(--danger);border-color:#0000}@media (hover:hover){:is(.cbi-button-negative,.cbi-section-remove .cbi-button,.cbi-button-reset,.cbi-button-remove):hover{background-color:var(--danger-surface-hover)}}input:disabled{cursor:not-allowed;opacity:.4}input:disabled:where([data-darkmode=true],[data-darkmode=true] *){opacity:.3}input[type=text],input[type=password],.cbi-input-text,.cbi-input{border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface-overlay);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*1.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal);color:var(--text);position:relative}:is(input[type=text],input[type=password],.cbi-input-text,.cbi-input)::placeholder{color:var(--text-muted)}input[type=text],input[type=password],.cbi-input-text,.cbi-input{--tw-shadow:var(--app-shadow-sm);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:border-color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;transition-duration:.15s}:is(input[type=text],input[type=password],.cbi-input-text,.cbi-input):focus{border-color:var(--brand);--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--focus-ring);--tw-outline-style:none;outline-style:none}:is(input[type=text],input[type=password],.cbi-input-text,.cbi-input):where([data-darkmode=true],[data-darkmode=true] *){background-color:var(--surface-sunken)}.table.cbi-section-table :is(input[type=text],input[type=password],.cbi-input-text,.cbi-input){width:100%}.cbi-input-text{min-width:calc(var(--spacing)*20)}@media not all and (min-width:48rem){.cbi-input-text{min-width:calc(var(--spacing)*14)}}#localtime{min-width:calc(var(--spacing)*70)}input[type=radio],input[type=checkbox]{margin-right:calc(var(--spacing)*3);height:calc(var(--spacing)*4);width:calc(var(--spacing)*4);cursor:pointer;appearance:none;display:inline-block;position:relative}:is(input[type=radio],input[type=checkbox]):before{content:var(--tw-content);content:var(--tw-content);top:calc(var(--spacing)*0);content:var(--tw-content);left:calc(var(--spacing)*0);content:var(--tw-content);height:calc(var(--spacing)*4);content:var(--tw-content);width:calc(var(--spacing)*4);content:var(--tw-content);border-style:var(--tw-border-style);content:var(--tw-content);border-width:1px;border-color:var(--hairline);content:var(--tw-content);background-color:var(--surface-overlay);content:var(--tw-content);transition-property:background-color,border-color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));content:var(--tw-content);--tw-duration:.15s;transition-duration:.15s;position:absolute}:is(input[type=radio],input[type=checkbox]):after{content:var(--tw-content);content:var(--tw-content);top:calc(var(--spacing)*.5);content:var(--tw-content);left:calc(var(--spacing)*.5);content:var(--tw-content);height:calc(var(--spacing)*3);content:var(--tw-content);width:calc(var(--spacing)*3);content:var(--tw-content);background-color:var(--on-brand);content:var(--tw-content);opacity:0;content:var(--tw-content);transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));content:var(--tw-content);--tw-duration:.15s;transition-duration:.15s;position:absolute}:is(input[type=radio],input[type=checkbox]):checked:before{content:var(--tw-content);border-color:var(--brand);content:var(--tw-content);background-color:var(--brand)}:is(input[type=radio],input[type=checkbox]):checked:after{content:var(--tw-content);opacity:1}@media (hover:hover){:is(input[type=radio],input[type=checkbox]):hover:before{content:var(--tw-content);border-color:var(--hairline)}}:is(input[type=radio],input[type=checkbox]):focus:before{content:var(--tw-content);border-color:var(--brand);content:var(--tw-content);--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);content:var(--tw-content);--tw-ring-color:var(--focus-ring);content:var(--tw-content);--tw-outline-style:none;outline-style:none}:is(input[type=radio],input[type=checkbox]):disabled{cursor:not-allowed}:is(input[type=radio],input[type=checkbox]):where([data-darkmode=true],[data-darkmode=true] *):before{content:var(--tw-content);background-color:var(--surface-sunken)}input[type=radio]:before{content:var(--tw-content);border-radius:3.40282e38px}input[type=radio]:after{content:var(--tw-content);-webkit-mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='currentColor'%3e%3ccircle%20cx='12'%20cy='12'%20r='6'/%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='currentColor'%3e%3ccircle%20cx='12'%20cy='12'%20r='6'/%3e%3c/svg%3e") 50%/cover no-repeat}input[type=checkbox]:before{content:var(--tw-content);border-radius:calc(var(--radius-base)*.5)}input[type=checkbox]:after{content:var(--tw-content);-webkit-mask:url("data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1760890864667'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='18898'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M918.8%2083.7c-43.5-30.3-104-19.5-134.6%2024.1l-425.8%20606-127-135.7c-36.4-38.9-98.1-41.1-137-4.8-39%2036.2-41.1%2097.7-4.7%20136.6l206.5%20220.7c4.7%205%209.8%209.4%2015.1%2013.1%200.7%200.5%201.4%201%202.2%201.5%2043.5%2030.3%20104%2019.5%20134.6-24.1l494-703.2c30.7-43.5%2020.1-103.9-23.3-134.2z'%20fill='%230f162b'%20p-id='18899'%3e%3c/path%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1760890864667'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='18898'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M918.8%2083.7c-43.5-30.3-104-19.5-134.6%2024.1l-425.8%20606-127-135.7c-36.4-38.9-98.1-41.1-137-4.8-39%2036.2-41.1%2097.7-4.7%20136.6l206.5%20220.7c4.7%205%209.8%209.4%2015.1%2013.1%200.7%200.5%201.4%201%202.2%201.5%2043.5%2030.3%20104%2019.5%20134.6-24.1l494-703.2c30.7-43.5%2020.1-103.9-23.3-134.2z'%20fill='%230f162b'%20p-id='18899'%3e%3c/path%3e%3c/svg%3e") 50%/cover no-repeat}.cbi-checkbox{align-items:center;display:inline-flex;position:relative}textarea{min-height:calc(var(--spacing)*24);resize:vertical;border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface-overlay);width:100%;padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal);color:var(--text)}textarea::placeholder{color:var(--text-muted)}textarea{--tw-shadow:var(--app-shadow-sm);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:border-color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;transition-duration:.15s}textarea:focus{border-color:var(--brand);--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--focus-ring);--tw-outline-style:none;outline-style:none}textarea:where([data-darkmode=true],[data-darkmode=true] *){background-color:var(--surface-sunken)}textarea[disabled]{cursor:not-allowed;opacity:.4}textarea[disabled]:where([data-darkmode=true],[data-darkmode=true] *){opacity:.3}select{appearance:none;border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface-overlay);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*1.5);padding-right:calc(var(--spacing)*10);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal);color:var(--text);--tw-shadow:var(--app-shadow-sm);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:border-color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;transition-duration:.15s}select:focus{border-color:var(--brand);--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--focus-ring);--tw-outline-style:none;outline-style:none}select:where([data-darkmode=true],[data-darkmode=true] *){background-color:var(--surface-sunken)}select{background-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20width='24'%20height='24'%20fill='%23000000'%20style='opacity:1;'%3e%3cpath%20fill-rule='evenodd'%20d='M5.22%208.22a.75.75%200%200%201%201.06%200L10%2011.94l3.72-3.72a.75.75%200%201%201%201.06%201.06l-4.25%204.25a.75.75%200%200%201-1.06%200L5.22%209.28a.75.75%200%200%201%200-1.06'%20clip-rule='evenodd'/%3e%3c/svg%3e");background-position:right .75rem center;background-repeat:no-repeat;background-size:16px}select:where([data-darkmode=true],[data-darkmode=true] *){background-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20width='24'%20height='24'%20fill='%23ffffff'%20style='opacity:1;'%3e%3cpath%20fill-rule='evenodd'%20d='M5.22%208.22a.75.75%200%200%201%201.06%200L10%2011.94l3.72-3.72a.75.75%200%201%201%201.06%201.06l-4.25%204.25a.75.75%200%200%201-1.06%200L5.22%209.28a.75.75%200%200%201%200-1.06'%20clip-rule='evenodd'/%3e%3c/svg%3e")}select[disabled]{cursor:not-allowed;opacity:.4}select[disabled]:where([data-darkmode=true],[data-darkmode=true] *){opacity:.3}.cbi-dropdown{min-width:fit-content;max-width:100%;height:fit-content;padding:calc(var(--spacing)*0);white-space:nowrap;--tw-shadow:var(--app-shadow-sm);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);flex-shrink:0;align-items:center;display:inline-flex}.cbi-dropdown[disabled]{pointer-events:none;opacity:.4}.cbi-dropdown[disabled]:where([data-darkmode=true],[data-darkmode=true] *){opacity:.3}.cbi-dropdown:not(.btn):not(.cbi-button){border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface)}.cbi-dropdown:not(.btn):not(.cbi-button)>ul>li[placeholder]{display:none}.cbi-dropdown>ul{margin:calc(var(--spacing)*0);align-items:center;gap:calc(var(--spacing)*.5);flex-wrap:nowrap;flex:1;list-style-type:none;display:flex;overflow:hidden}@media not all and (min-width:48rem){.cbi-dropdown>ul{flex-wrap:wrap}}.cbi-dropdown>ul>li{margin:calc(var(--spacing)*0);align-items:center;gap:calc(var(--spacing)*1);padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*1.5);list-style-type:none;display:none;overflow:hidden}.cbi-dropdown>ul>li[display]{display:flex!important}.cbi-dropdown>ul>li .hide-open{display:block}.cbi-dropdown>ul>li .hide-close{display:none}.cbi-dropdown>ul>li>form{pointer-events:none;display:none}.cbi-dropdown>ul>li>label{align-items:center;gap:calc(var(--spacing)*2);display:flex}.cbi-dropdown>ul>li img{height:calc(var(--spacing)*5);width:calc(var(--spacing)*5);vertical-align:middle;flex:none}.cbi-dropdown>ul>li span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.cbi-dropdown>ul.dropdown{left:calc(var(--spacing)*0);z-index:50;border-radius:var(--radius-base);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface-overlay);--tw-shadow:var(--app-shadow-lg);width:fit-content;min-width:100%;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-backdrop-blur:blur(var(--blur-md));--tw-backdrop-saturate:saturate(150%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);position:absolute;overflow-y:auto}.cbi-dropdown>ul.dropdown>li{min-height:calc(var(--spacing)*9);cursor:pointer;width:100%;padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*1.5);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--text-muted)}@media (hover:hover){.cbi-dropdown>ul.dropdown>li:hover{background-color:var(--brand-subtle)}}.cbi-dropdown>ul.preview{display:none}.cbi-dropdown[empty]>ul{max-width:1px;max-height:1px}.cbi-dropdown[empty]>ul>li,.cbi-dropdown[optional][open]>ul.dropdown>li[placeholder]{display:block}.cbi-dropdown[open]{border-color:var(--brand);--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--focus-ring);position:relative}.cbi-dropdown[open]>ul.dropdown{width:auto;max-width:none;display:block}.cbi-dropdown[open]>ul.dropdown>li{display:flex}.cbi-dropdown[open]>ul.dropdown>li[selected]{background-color:var(--brand-subtle);color:var(--brand)}.cbi-dropdown[open]>ul.dropdown>li[unselectable]{opacity:.4}.cbi-dropdown[open]>ul.dropdown>li[unselectable]:where([data-darkmode=true],[data-darkmode=true] *){opacity:.3}.cbi-dropdown[open]>ul.dropdown>li .hide-open{display:none}.cbi-dropdown[open]>ul.dropdown>li .hide-close{display:block}.cbi-dropdown[open]>ul.preview{display:flex}:is(.cbi-dropdown[multiple][more],.cbi-dropdown[multiple][empty])>.more{padding-inline:calc(var(--spacing)*2.5);padding-block:calc(var(--spacing)*1.5);flex:none;display:flex}.cbi-dropdown[multiple][open]>ul.dropdown>li>form{align-items:center;display:flex}.cbi-dropdown[multiple]>ul>li>label{display:flex}.cbi-dropdown>.open{cursor:pointer;border-left-style:var(--tw-border-style);border-left-width:1px;border-color:var(--hairline);padding-inline:calc(var(--spacing)*2.5);padding-block:calc(var(--spacing)*.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:currentColor;flex:none;justify-content:center;align-items:center;display:flex}.cbi-dropdown>.more{display:none}.cbi-tooltip{z-index:110;max-width:var(--container-xs);--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y);border-radius:calc(var(--radius-base)*1.5);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface-overlay);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));overflow-wrap:normal;word-break:normal;white-space:normal;color:var(--text);opacity:0;--tw-shadow:var(--app-shadow-lg);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:visibility,opacity,scale;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;--tw-ease:var(--ease-out);transition-duration:.15s;transition-timing-function:var(--ease-out);position:absolute}.cbi-tooltip.error{border-color:var(--hairline);background-color:var(--danger-surface);color:var(--danger)}.cbi-tooltip.success{border-color:var(--hairline);background-color:var(--success-surface);color:var(--success)}.cbi-tooltip.info{border-color:var(--hairline);background-color:var(--info-surface);color:var(--info)}.cbi-tooltip.notice{border-color:var(--hairline);background-color:var(--warning-surface);color:var(--warning)}.cbi-tooltip-container,[data-tooltip]{cursor:help;white-space:nowrap;text-underline-offset:2px;text-decoration-line:underline;text-decoration-style:dotted;text-decoration-color:currentColor;display:inline-block;position:relative}:is(.cbi-tooltip-container,[data-tooltip]) .cbi-tooltip{visibility:hidden;--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y);opacity:0;transition-property:visibility,opacity,scale;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;--tw-ease:var(--ease-out);transition-duration:.15s;transition-timing-function:var(--ease-out)}:is(.cbi-tooltip-container,[data-tooltip]):hover .cbi-tooltip{visibility:visible;--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y);opacity:1}.alert-message{top:calc(var(--spacing)*14);z-index:30;margin-bottom:calc(var(--spacing)*4);border-radius:calc(var(--radius-base)*4);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface-sunken);padding:calc(var(--spacing)*6);color:var(--text);position:sticky}@media not all and (min-width:48rem){.alert-message{margin-inline:calc(var(--spacing)*0);margin-bottom:calc(var(--spacing)*3);border-radius:calc(var(--radius-base)*3);padding:calc(var(--spacing)*4)}}.alert-message.modal{position:static;top:auto}.modal .alert-message{margin-bottom:calc(var(--spacing)*0)}.login-shell .alert-message{margin-bottom:calc(var(--spacing)*0);border-radius:calc(var(--radius-base)*2);padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*2.5);text-align:center;font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}@media not all and (min-width:48rem){.login-shell .alert-message{padding-inline:calc(var(--spacing)*.5)}}.alert-message.success{border-color:var(--hairline);background-color:var(--success-surface);color:var(--success)}.alert-message.info{border-color:var(--hairline);background-color:var(--info-surface);color:var(--info)}.alert-message.warning,.alert-message.notice{border-color:var(--hairline);background-color:var(--warning-surface);color:var(--warning)}.alert-message.error,.alert-message.danger{border-color:var(--hairline);background-color:var(--danger-surface);color:var(--danger)}.alert-message h4,.alert-message h5,.alert-message pre,.alert-message ul,.alert-message li,.alert-message p{border-style:var(--tw-border-style);color:inherit;background-color:#0000;border-width:0}.alert-message h4{margin-bottom:calc(var(--spacing)*2);font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}@media not all and (min-width:48rem){.alert-message h4{margin-bottom:calc(var(--spacing)*1.5);font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}}.alert-message p{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}@media not all and (min-width:48rem){.alert-message p{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.alert-message .right{margin-top:calc(var(--spacing)*4)}@media not all and (min-width:48rem){.alert-message .right{margin-top:calc(var(--spacing)*3)}}.cbi-progressbar{height:calc(var(--spacing)*3.5);cursor:help;background-color:var(--surface-sunken);border-radius:3.40282e38px;width:100%;position:relative;overflow:hidden}.cbi-progressbar:before{content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);--tw-translate-x:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y);content:var(--tw-content);--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y);content:var(--tw-content);border-radius:calc(var(--radius-base)*2);content:var(--tw-content);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));content:var(--tw-content);white-space:nowrap;content:var(--tw-content);color:var(--text);--tw-content:attr(title);content:var(--tw-content);position:absolute;top:50%;left:50%}@media not all and (min-width:48rem){.cbi-progressbar{height:calc(var(--spacing)*4);border-radius:calc(var(--radius-base)*2)}.cbi-progressbar:before{content:var(--tw-content);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));content:var(--tw-content);--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}}@media not all and (min-width:40rem){[data-page=admin-system-package-manager] .cbi-progressbar:before{content:var(--tw-content);font-size:10px}}.cbi-progressbar>div{--tw-gradient-position:to right;height:100%}@supports (background-image:linear-gradient(in lab, red, red)){.cbi-progressbar>div{--tw-gradient-position:to right in oklab}}.cbi-progressbar>div{background-image:linear-gradient(var(--tw-gradient-stops));--tw-gradient-from:var(--progress-start);--tw-gradient-to:var(--progress-end);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position));transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.25s;transition-duration:.25s}.label{background-color:var(--surface-sunken);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*1);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold);color:var(--text);text-transform:uppercase;border-radius:3.40282e38px}.label.important{background-color:var(--info-surface);color:var(--info)}.label.warning{background-color:var(--danger-surface);color:var(--danger)}.label.success{background-color:var(--success-surface);color:var(--success)}.label.notice{background-color:var(--warning-surface);color:var(--warning)}.zonebadge{align-items:center;gap:calc(var(--spacing)*1.5);border-radius:var(--radius-base);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface-sunken);padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*1);vertical-align:middle;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:var(--leading-normal);line-height:var(--leading-normal);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--text);display:inline-flex;overflow:visible}@media not all and (min-width:48rem){.zonebadge{gap:calc(var(--spacing)*1);padding-inline:calc(var(--spacing)*1.5);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}.zonebadge[style*=--zone-color-rgb]{border-color:#0000;background-color:rgb(var(--zone-color-rgb),.7)!important}.zonebadge[style*=--zone-color-rgb] em{color:var(--text)}.zonebadge.zonebadge-empty{--tw-border-style:dashed;--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal);color:var(--text-muted);background-color:#0000;border-style:dashed;font-style:italic}.cbi-dropdown .zonebadge{padding-inline:calc(var(--spacing)*1.5);padding-block:calc(var(--spacing)*.5)}.ifacebadge{cursor:default;align-items:center;gap:calc(var(--spacing)*2);border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface-sunken);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal);color:var(--text);--tw-shadow:var(--app-shadow-sm);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:box-shadow,border-color,background-color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;flex-wrap:nowrap;transition-duration:.15s;display:inline-flex}@media (hover:hover){.ifacebadge:hover{border-color:var(--hairline);background-color:var(--surface-sunken);--tw-shadow:var(--app-shadow-md);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}@media not all and (min-width:48rem){.ifacebadge{gap:calc(var(--spacing)*1.5);padding-inline:calc(var(--spacing)*2.5);padding-block:calc(var(--spacing)*1.5);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}.zonebadge>.ifacebadge{border-radius:calc(var(--radius-base)*2);padding-inline:calc(var(--spacing)*1.5);padding-block:calc(var(--spacing)*0)}.zonebadge>.ifacebadge img{margin-right:calc(var(--spacing)*1);width:calc(var(--spacing)*4)}.cbi-dropdown .ifacebadge{gap:calc(var(--spacing)*1);border-radius:var(--radius-base);padding-inline:calc(var(--spacing)*1.5);padding-block:calc(var(--spacing)*.5);--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media (hover:hover){.cbi-dropdown .ifacebadge:hover{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.cbi-dropdown .ifacebadge img{margin-right:calc(var(--spacing)*1);width:calc(var(--spacing)*4)}.ifacebadge>img{width:calc(var(--spacing)*5);flex-shrink:0;align-self:center}@media not all and (min-width:48rem){.ifacebadge>img{width:calc(var(--spacing)*4)}}.ifacebadge>span>.nowrap{margin-bottom:calc(var(--spacing)*1.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));display:inline-block}@media not all and (min-width:48rem){.ifacebadge>span>.nowrap{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}.ifacebadge.ifacebadge-active{border-color:var(--brand);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.ifacebadge.large{min-width:200px;padding-inline:calc(var(--spacing)*4);padding-block:calc(var(--spacing)*3);flex:1}@media not all and (min-width:48rem){.ifacebadge.large{min-width:180px;padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2.5)}}.cbi-section{margin-bottom:calc(var(--spacing)*3);border-radius:calc(var(--radius-base)*2);padding:calc(var(--spacing)*5);overflow:visible}@media not all and (min-width:48rem){.cbi-section{padding:calc(var(--spacing)*3)}}.cbi-section[data-tab-title]{margin:calc(var(--spacing)*0);padding:calc(var(--spacing)*0)}.cbi-section[data-tab-active=true]{margin-bottom:calc(var(--spacing)*3);padding:calc(var(--spacing)*5)}@media not all and (min-width:48rem){.cbi-section[data-tab-active=true]{padding:calc(var(--spacing)*3)}}#maincontent .cbi-section{border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface);--tw-shadow:var(--app-shadow-sm);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.cbi-section>.cbi-title{justify-content:space-between;align-items:flex-start;display:flex}.cbi-section>.cbi-title>h3{flex:1}.cbi-section>.cbi-title>h3 .label[data-clickable]{background-color:var(--surface-sunken);color:var(--text);width:calc(var(--spacing)*7);height:calc(var(--spacing)*7);cursor:pointer;padding:calc(var(--spacing)*0);justify-content:center;align-items:center;display:inline-flex}.cbi-section>.cbi-title>h3 .label[data-clickable]:before{content:var(--tw-content);width:calc(var(--spacing)*4);height:calc(var(--spacing)*4);content:var(--tw-content);content:var(--tw-content);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));content:var(--tw-content);--tw-duration:.15s;background-color:currentColor;transition-duration:.15s}@media (hover:hover){.cbi-section>.cbi-title>h3 .label[data-clickable]:hover{--tw-shadow:var(--app-shadow-md);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.cbi-section>.cbi-title>h3 .label[data-clickable]:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}@media not all and (min-width:48rem){.cbi-section>.cbi-title>h3 .label[data-clickable]{width:calc(var(--spacing)*6);height:calc(var(--spacing)*6)}}.cbi-section>.cbi-title>h3 span[data-indicator=poll-status]{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5);cursor:pointer;font-size:0;position:relative}.cbi-section>.cbi-title>h3 span[data-indicator=poll-status]:before{content:var(--tw-content);content:var(--tw-content);width:calc(var(--spacing)*5);height:calc(var(--spacing)*5);content:var(--tw-content);content:var(--tw-content);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));content:var(--tw-content);--tw-duration:.15s;content:var(--tw-content);--tw-ease:var(--ease-out);transition-duration:.15s;transition-timing-function:var(--ease-out);background-color:currentColor;position:absolute}@media (hover:hover){.cbi-section>.cbi-title>h3 span[data-indicator=poll-status]:hover:before{content:var(--tw-content);--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}}.cbi-section>.cbi-title>h3 span[data-indicator=poll-status]:active:before{content:var(--tw-content);--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.cbi-section>.cbi-title>h3 span[data-indicator=poll-status][data-style=active]:before{content:var(--tw-content);content:var(--tw-content);rotate:none;-webkit-mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20width='24'%20height='24'%20fill='%23000000'%20style='opacity:1;'%3e%3cpath%20fill-rule='evenodd'%20d='M8.22%205.22a.75.75%200%200%201%201.06%200l4.25%204.25a.75.75%200%200%201%200%201.06l-4.25%204.25a.75.75%200%200%201-1.06-1.06L11.94%2010L8.22%206.28a.75.75%200%200%201%200-1.06'%20clip-rule='evenodd'/%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20width='24'%20height='24'%20fill='%23000000'%20style='opacity:1;'%3e%3cpath%20fill-rule='evenodd'%20d='M8.22%205.22a.75.75%200%200%201%201.06%200l4.25%204.25a.75.75%200%200%201%200%201.06l-4.25%204.25a.75.75%200%200%201-1.06-1.06L11.94%2010L8.22%206.28a.75.75%200%200%201%200-1.06'%20clip-rule='evenodd'/%3e%3c/svg%3e") 50%/cover no-repeat}.cbi-section>.cbi-title>h3 span[data-indicator=poll-status][data-style=inactive]:before{content:var(--tw-content);content:var(--tw-content);rotate:90deg;-webkit-mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20width='24'%20height='24'%20fill='%23000000'%20style='opacity:1;'%3e%3cpath%20fill-rule='evenodd'%20d='M8.22%205.22a.75.75%200%200%201%201.06%200l4.25%204.25a.75.75%200%200%201%200%201.06l-4.25%204.25a.75.75%200%200%201-1.06-1.06L11.94%2010L8.22%206.28a.75.75%200%200%201%200-1.06'%20clip-rule='evenodd'/%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2020'%20width='24'%20height='24'%20fill='%23000000'%20style='opacity:1;'%3e%3cpath%20fill-rule='evenodd'%20d='M8.22%205.22a.75.75%200%200%201%201.06%200l4.25%204.25a.75.75%200%200%201%200%201.06l-4.25%204.25a.75.75%200%200%201-1.06-1.06L11.94%2010L8.22%206.28a.75.75%200%200%201%200-1.06'%20clip-rule='evenodd'/%3e%3c/svg%3e") 50%/cover no-repeat}.cbi-section legend{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.cbi-section h3{border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--hairline);padding-bottom:calc(var(--spacing)*4);color:var(--text)}@media not all and (min-width:48rem){.cbi-section h3{margin-inline:calc(var(--spacing)*0);padding-bottom:calc(var(--spacing)*2)}.cbi-section div[style*=display\:grid]{gap:calc(var(--spacing)*3);grid-template-columns:repeat(2,minmax(0,1fr))!important}}.cbi-section .network-status-table{margin-bottom:calc(var(--spacing)*3);justify-content:space-around;gap:calc(var(--spacing)*4);flex-wrap:wrap;display:flex}@media not all and (min-width:48rem){.cbi-section .network-status-table{flex-direction:column}}.cbi-section .cbi-section-create{margin-top:calc(var(--spacing)*6);align-items:center;gap:calc(var(--spacing)*3);flex-wrap:wrap;display:flex}@media not all and (min-width:48rem){.cbi-section .cbi-section-create{margin-inline:calc(var(--spacing)*0);margin-top:calc(var(--spacing)*5);align-items:stretch;gap:calc(var(--spacing)*3);flex-direction:column}}.cbi-section .cbi-section-create>div{flex:none}@media not all and (min-width:48rem){.cbi-section .cbi-section-create>div{flex:1;width:100%}}.ifacebox{min-width:calc(var(--spacing)*40);border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface-overlay);text-align:center;font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));--tw-leading:calc(var(--spacing)*5);line-height:calc(var(--spacing)*5);--tw-shadow:var(--app-shadow-md);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);flex-direction:column;align-items:stretch;display:inline-flex;position:relative;overflow:visible}@media (hover:hover){.ifacebox:hover{border-color:var(--hairline);--tw-shadow:var(--app-shadow-lg);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}@media not all and (min-width:48rem){.ifacebox{min-width:calc(var(--spacing)*30);border-radius:calc(var(--radius-base)*3);border-color:var(--hairline);--tw-shadow:var(--app-shadow-sm);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);flex:1}td .ifacebox{flex-direction:row}}.ifacebox .ifacebox-head{border-top-left-radius:calc(var(--radius-base)*2);border-top-right-radius:calc(var(--radius-base)*2);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--hairline);background-color:var(--surface-sunken);width:100%;padding-inline:calc(var(--spacing)*4);padding-block:calc(var(--spacing)*3);text-align:center;--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight);color:var(--text);transition-property:background-color,border-color,color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;transition-duration:.15s}@media not all and (min-width:48rem){.ifacebox .ifacebox-head{border-top-left-radius:calc(var(--radius-base)*3);border-top-right-radius:calc(var(--radius-base)*3);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:calc(var(--spacing)*5);line-height:calc(var(--spacing)*5);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}}.ifacebox .ifacebox-head[style*=--zone-color-rgb]{background-color:rgb(var(--zone-color-rgb),.75)!important}@media not all and (min-width:48rem){td :is(.ifacebox .ifacebox-head){border-top-left-radius:calc(var(--radius-base)*3);border-bottom-left-radius:calc(var(--radius-base)*3);border-right-style:var(--tw-border-style);border-right-width:1px;border-bottom-style:var(--tw-border-style);border-bottom-width:0;border-top-right-radius:0;flex-shrink:0;justify-content:center;align-items:center;width:auto;display:flex}}.ifacebox .ifacebox-head.cbi-tooltip-container{background-color:#0000;position:static}.ifacebox .ifacebox-head.cbi-tooltip-container .cbi-tooltip{bottom:calc(var(--spacing)*0);left:calc(var(--spacing)*0)}.ifacebox .ifacebox-head.active{border-color:var(--brand);background-color:var(--brand);color:var(--on-brand)}.ifacebox .ifacebox-body{justify-content:center;align-items:stretch;gap:calc(var(--spacing)*1);border-bottom-right-radius:calc(var(--radius-base)*2);border-bottom-left-radius:calc(var(--radius-base)*2);width:100%;padding:calc(var(--spacing)*4);text-align:center;color:var(--text);flex-direction:column;flex:1;display:flex}@media not all and (min-width:48rem){.ifacebox .ifacebox-body{border-bottom-right-radius:calc(var(--radius-base)*3);border-bottom-left-radius:calc(var(--radius-base)*3)}td :is(.ifacebox .ifacebox-body){border-top-right-radius:calc(var(--radius-base)*3);border-bottom-right-radius:calc(var(--radius-base)*3);padding-block:calc(var(--spacing)*2);padding-right:calc(var(--spacing)*2);padding-left:calc(var(--spacing)*4);border-bottom-left-radius:0;flex-direction:row;align-items:center}}.ifacebox .ifacebox-body>img{margin-inline:auto}:where(.ifacebox .ifacebox-body>span>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1.5)*calc(1 - var(--tw-space-y-reverse)))}.ifacebox .ifacebox-body>span{color:var(--text)}@media not all and (min-width:48rem){:where(.ifacebox .ifacebox-body>span>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}.ifacebox .ifacebox-body>span{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:calc(var(--spacing)*5);line-height:calc(var(--spacing)*5)}}.network-status-table :is(.ifacebox .ifacebox-body>span){width:100%}.ifacebox .ifacebox-body>span .cbi-tooltip-container+.cbi-tooltip-container{margin-left:calc(var(--spacing)*2)}@media not all and (min-width:48rem){.ifacebox .ifacebox-body>span .cbi-tooltip-container+.cbi-tooltip-container{margin-left:calc(var(--spacing)*1.5)}}.ifacebox .ifacebox-body>span .cbi-tooltip{--tw-animation-delay:.2s;transition-delay:.2s;animation-delay:.2s}.ifacebox .ifacebox-body>span .nowrap{display:inline-block}.ifacebox .ifacebox-body>span>.nowrap:not(:last-child){margin-bottom:calc(var(--spacing)*4)}@media not all and (min-width:48rem){.ifacebox .ifacebox-body>span>.nowrap:not(:last-child){margin-bottom:calc(var(--spacing)*3)}}.ifacebox .ifacebox-body>span img{width:calc(var(--spacing)*6);flex-shrink:0}@media not all and (min-width:48rem){.ifacebox .ifacebox-body>span img{width:calc(var(--spacing)*5)}}.ifacebox .ifacebox-body>div{width:100%;display:block}:where(.ifacebox .ifacebox-body>div>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*0)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*0)*calc(1 - var(--tw-space-y-reverse)))}@media not all and (min-width:48rem){td :is(.ifacebox .ifacebox-body>div){flex:1;width:auto}:where(td :is(.ifacebox .ifacebox-body>div)>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}}.ifacebox .ifacebox-body .cbi-tooltip-container{cursor:help;color:var(--text);justify-content:center;align-items:center;display:inline-flex;position:static}.ifacebox .ifacebox-body .cbi-tooltip-container .cbi-tooltip{bottom:calc(var(--spacing)*0)}@media (min-width:48rem){.ifacebox .ifacebox-body .cbi-tooltip-container .cbi-tooltip{left:calc(var(--spacing)*0)}}.ifacebox .ifacebox-body .cbi-tooltip-container .cbi-tooltip .nowrap{white-space:nowrap}.ifacebox .ifacebox-body small{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-leading:calc(var(--spacing)*4);line-height:calc(var(--spacing)*4);display:block}@media not all and (min-width:48rem){td :is(.ifacebox .ifacebox-body small){margin-top:calc(var(--spacing)*0)}}.network-status-table .ifacebox-body{justify-content:space-around;align-items:center;gap:calc(var(--spacing)*2);flex-direction:column;flex:1;height:100%;display:flex}.network-status-table .ifacebox-body>div{flex-wrap:wrap;display:flex}.network-status-table .ifacebox-body .ifacebadge{flex:1}#modal_overlay{pointer-events:none;top:calc(var(--spacing)*0);bottom:calc(var(--spacing)*0);background-color:#0000;display:none;position:fixed;overflow:auto}.modal-overlay-active #modal_overlay{pointer-events:auto;inset:calc(var(--spacing)*0);right:calc(var(--spacing)*0);left:calc(var(--spacing)*0);z-index:100;background-color:var(--scrim);--tw-backdrop-blur:blur(var(--blur-md));--tw-backdrop-saturate:saturate(150%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);grid-template-columns:repeat(1,minmax(0,1fr));place-items:center;display:grid}#modal_overlay>.modal{width:var(--container-5xl);gap:calc(var(--spacing)*4);border-radius:calc(var(--radius-base)*3);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface-overlay);padding:calc(var(--spacing)*6);overflow-wrap:break-word;white-space:normal;--tw-shadow:var(--app-shadow-lg);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);flex-direction:column;display:flex;position:relative}@media not all and (min-width:48rem){#modal_overlay>.modal{gap:calc(var(--spacing)*3);width:100%;padding:calc(var(--spacing)*4)}}#modal_overlay>.modal h4{margin-bottom:calc(var(--spacing)*0);text-align:center}#modal_overlay>.modal h4 em{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--brand)}#modal_overlay>.modal h5{margin-block:calc(var(--spacing)*3);color:var(--text)}#modal_overlay>.modal p{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed);color:var(--text)}#modal_overlay>.modal>ul{border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);padding:calc(var(--spacing)*3);overflow:auto}#modal_overlay>.modal label.btn{border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface-sunken);color:var(--text)}@media (hover:hover){#modal_overlay>.modal label.btn:hover{border-color:var(--hairline)}}#modal_overlay>.modal pre{overflow:auto}#modal_overlay>.modal pre.errors{border-color:var(--hairline);background-color:var(--danger-surface);color:var(--danger)}#modal_overlay>.modal pre+pre{margin-top:calc(var(--spacing)*3)}#modal_overlay>.modal .button-row,#modal_overlay>.modal div.left,#modal_overlay>.modal div.right{gap:calc(var(--spacing)*3);border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--hairline);padding:calc(var(--spacing)*4);flex-shrink:0;display:flex}@media not all and (min-width:48rem){#modal_overlay>.modal .button-row,#modal_overlay>.modal div.left,#modal_overlay>.modal div.right{gap:calc(var(--spacing)*1.5);padding:calc(var(--spacing)*2.5)}}#modal_overlay>.modal div.left{justify-content:flex-start}#modal_overlay>.modal .button-row,#modal_overlay>.modal div.right{justify-content:flex-end}#modal_overlay>.modal.uci-dialog ins,#modal_overlay>.modal.uci-dialog del,#modal_overlay>.modal.uci-dialog var{font-family:var(--font-mono);--tw-shadow:var(--app-shadow-sm);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);font-style:normal;text-decoration-line:none}#modal_overlay>.modal.uci-dialog ins{border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--success-surface);color:var(--success)}#modal_overlay>.modal.uci-dialog del{border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--danger-surface);color:var(--danger)}#modal_overlay>.modal.uci-dialog var{border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--info-surface);color:var(--info)}#modal_overlay>.modal.uci-dialog .uci-change-legend{margin-top:calc(var(--spacing)*4);gap:calc(var(--spacing)*3);border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface-sunken);padding:calc(var(--spacing)*4);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}@media not all and (min-width:48rem){#modal_overlay>.modal.uci-dialog .uci-change-legend{gap:calc(var(--spacing)*2);padding:calc(var(--spacing)*3);grid-template-columns:repeat(1,minmax(0,1fr))}}#modal_overlay>.modal.uci-dialog .uci-change-legend .uci-change-legend-label{align-items:center;gap:calc(var(--spacing)*2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--text);display:flex}#modal_overlay>.modal.uci-dialog .uci-change-legend .uci-change-legend-label ins,#modal_overlay>.modal.uci-dialog .uci-change-legend .uci-change-legend-label del,#modal_overlay>.modal.uci-dialog .uci-change-legend .uci-change-legend-label var{height:calc(var(--spacing)*6);min-width:calc(var(--spacing)*6);border-radius:var(--radius-base);padding-inline:calc(var(--spacing)*2);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);justify-content:center;align-items:center;display:flex}#modal_overlay>.modal.uci-dialog .uci-change-legend .uci-change-legend-label var ins,#modal_overlay>.modal.uci-dialog .uci-change-legend .uci-change-legend-label var del{margin-left:calc(var(--spacing)*1);height:calc(var(--spacing)*4);min-width:calc(var(--spacing)*4);padding-inline:calc(var(--spacing)*1)}#modal_overlay>.modal.uci-dialog .uci-change-list{margin-top:calc(var(--spacing)*4)}:where(#modal_overlay>.modal.uci-dialog .uci-change-list>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}#modal_overlay>.modal.uci-dialog .uci-change-list h5{margin-top:calc(var(--spacing)*6);margin-bottom:calc(var(--spacing)*2);border-radius:calc(var(--radius-base)*1.5);background-color:var(--surface-sunken);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--text)}#modal_overlay>.modal.uci-dialog .uci-change-list h5:first-child{margin-top:calc(var(--spacing)*0)}#modal_overlay>.modal.uci-dialog .uci-change-list ins,#modal_overlay>.modal.uci-dialog .uci-change-list del{border-radius:calc(var(--radius-base)*1.5);padding-inline:calc(var(--spacing)*4);padding-block:calc(var(--spacing)*3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));display:block}:is(#modal_overlay>.modal.uci-dialog .uci-change-list ins,#modal_overlay>.modal.uci-dialog .uci-change-list del) strong{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}#modal_overlay>.modal.uci-dialog .uci-change-list var{border-radius:var(--radius-base);padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*1);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));display:inline-block}#modal_overlay>.modal.uci-dialog .uci-change-list var ins,#modal_overlay>.modal.uci-dialog .uci-change-list var del{margin-left:calc(var(--spacing)*1);padding-inline:calc(var(--spacing)*1.5);padding-block:calc(var(--spacing)*.5);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));display:inline-block}@media not all and (min-width:48rem){.mobile-menu-overlay{visibility:hidden;inset:calc(var(--spacing)*0);z-index:60;background-color:var(--mega-menu-bg);opacity:0;--tw-backdrop-blur:blur(var(--blur-lg));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);--tw-backdrop-saturate:saturate(150%);transition-property:visibility,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.25s;transition-duration:.25s;position:fixed}}@media (min-width:48rem){.mobile-menu-overlay{display:none}}@media not all and (min-width:48rem){.mobile-menu-overlay.mobile-menu-open{visibility:visible;opacity:1}.mobile-menu-overlay .mobile-nav{width:100%;height:100%;padding-top:calc(var(--spacing)*14);flex-direction:column;display:flex}.mobile-menu-overlay .mobile-nav .mobile-nav-body{min-height:calc(var(--spacing)*0);padding-inline:calc(var(--spacing)*5);padding-top:calc(var(--spacing)*6);flex-direction:column;flex:1;display:flex}.mobile-menu-overlay .mobile-nav .mobile-nav-body .mobile-nav-label{margin-bottom:calc(var(--spacing)*3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--text-muted)}.mobile-menu-overlay .mobile-nav .mobile-nav-list{margin:calc(var(--spacing)*0);min-height:calc(var(--spacing)*0);--tw-translate-y:calc(var(--spacing)*-2);translate:var(--tw-translate-x)var(--tw-translate-y);overscroll-behavior:contain;padding:calc(var(--spacing)*0);padding-bottom:calc(var(--spacing)*5);opacity:0;transition-property:translate,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.25s;--tw-ease:var(--ease-out);transition-duration:.25s;transition-timing-function:var(--ease-out);flex-direction:column;flex:1;list-style-type:none;display:flex;overflow-y:auto}.mobile-menu-overlay .mobile-nav .mobile-nav-list .mobile-nav-item{flex-shrink:0}.mobile-menu-overlay .mobile-nav .mobile-nav-list .mobile-nav-item .mobile-nav-link{min-height:calc(var(--spacing)*13);justify-content:space-between;align-items:center;gap:calc(var(--spacing)*4);border-style:var(--tw-border-style);width:100%;padding-inline:calc(var(--spacing)*0);padding-block:calc(var(--spacing)*2.5);text-align:left;font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height));--tw-leading:var(--leading-tight);line-height:var(--leading-tight);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight);--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);background-color:#0000;border-width:0;border-radius:0;text-decoration-line:none;display:flex}.mobile-menu-overlay .mobile-nav .mobile-nav-list .mobile-nav-item .mobile-nav-submenu .mobile-nav-submenu-list{margin-inline:calc(var(--spacing)*0);margin-top:calc(var(--spacing)*0);margin-bottom:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*1);padding-right:calc(var(--spacing)*0);padding-left:calc(var(--spacing)*4)}.mobile-menu-overlay .mobile-nav .mobile-nav-list .mobile-nav-item .mobile-nav-submenu .mobile-nav-subitem .mobile-nav-sublink{min-height:calc(var(--spacing)*10);width:100%;padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));align-items:center}.mobile-menu-overlay .mobile-nav .mobile-nav-footer{border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--hairline);padding-inline:calc(var(--spacing)*5);padding-top:calc(var(--spacing)*4);padding-bottom:max(1rem,env(safe-area-inset-bottom));flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.mobile-menu-overlay .mobile-nav .mobile-nav-footer .mobile-nav-footer-action{align-items:center;display:flex}.mobile-menu-overlay .mobile-nav .mobile-nav-footer .mobile-nav-logout{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--text);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;text-decoration-line:none;transition-duration:.15s}@media (hover:hover){.mobile-menu-overlay .mobile-nav .mobile-nav-footer .mobile-nav-logout:hover{color:var(--brand)}}.mobile-menu-overlay .mobile-nav .mobile-nav-footer .theme-switcher .theme-option{padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*1)}.mobile-menu-overlay.mobile-menu-open .mobile-nav-list{--tw-translate-y:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y);opacity:1}body.mobile-navigation-open>header{z-index:70;background-color:#0000}}[data-nav-type=mega-menu] .desktop-menu-overlay{pointer-events:none;visibility:hidden;inset:calc(var(--spacing)*0);z-index:60;background-color:var(--mega-menu-scrim);opacity:0;--tw-backdrop-blur:blur(var(--blur-lg));--tw-backdrop-saturate:saturate(150%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);transition-property:opacity,visibility;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.22s;--tw-ease:cubic-bezier(.4,0,.6,1);transition-duration:.22s;transition-timing-function:cubic-bezier(.4,0,.6,1);position:fixed}@media not all and (min-width:48rem){[data-nav-type=mega-menu] .desktop-menu-overlay{display:none}}[data-nav-type=mega-menu] .desktop-menu-overlay.active{pointer-events:auto;visibility:visible;opacity:1}table.table,.table{margin-bottom:calc(var(--spacing)*3);border-collapse:separate;--tw-border-spacing-x:calc(var(--spacing)*0);--tw-border-spacing-y:calc(var(--spacing)*0);width:100%;border-spacing:var(--tw-border-spacing-x)var(--tw-border-spacing-y);border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);overflow:visible}@media not all and (min-width:48rem){table.table,.table{margin-inline:calc(var(--spacing)*0);border-style:var(--tw-border-style);--tw-shadow:0 0 #0000;width:100%;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-width:0;border-radius:0;display:block;overflow:visible}}:is(table.table,.table)[width="100%"]{width:100%}:is(table.table,.table)[width="33%"]{width:33.3333%}:is(table.table,.table) .cbi-section-table-titles{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}:is(:is(table.table,.table) .cbi-section-table-titles.named,:is(table.table,.table) .cbi-section-table-descr.named,:is(table.table,.table) .cbi-section-table-row[data-title]):before{content:var(--tw-content);content:var(--tw-content);border-color:var(--hairline);content:var(--tw-content);padding-inline:calc(var(--spacing)*3);content:var(--tw-content);padding-block:calc(var(--spacing)*3);content:var(--tw-content);vertical-align:middle;content:var(--tw-content);font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));content:var(--tw-content);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-content:attr(data-title);content:var(--tw-content);content:var(--tw-content);display:table-cell}@media not all and (min-width:48rem){:is(:is(table.table,.table) .cbi-section-table-titles.named,:is(table.table,.table) .cbi-section-table-descr.named,:is(table.table,.table) .cbi-section-table-row[data-title]):before{padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));flex:0 0 100%;display:flex}}:is(:is(table.table,.table) .cbi-section-table-titles.named,:is(table.table,.table) .cbi-section-table-descr.named,:is(table.table,.table) .cbi-section-table-row[data-title]):before{content:var(--tw-content)}@media (min-width:48rem){:is(:is(table.table,.table) .cbi-section-table-titles.named,:is(table.table,.table) .cbi-section-table-descr.named,:is(table.table,.table) .cbi-section-table-row[data-title]):before{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}}:is(:is(:is(table.table,.table) .cbi-section-table-titles.named,:is(table.table,.table) .cbi-section-table-descr.named,:is(table.table,.table) .cbi-section-table-row[data-title]):not([data-title]),:is(:is(table.table,.table) .cbi-section-table-titles.named,:is(table.table,.table) .cbi-section-table-descr.named,:is(table.table,.table) .cbi-section-table-row[data-title]):has(td.cbi-section-table-titles)):before{content:var(--tw-content);--tw-content:none;content:none}:is(table.table,.table) .cbi-section-table-titles.named:before{content:var(--tw-content);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));content:var(--tw-content);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);content:var(--tw-content);--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider);content:var(--tw-content);color:var(--text-subtle);content:var(--tw-content);text-transform:uppercase}@media not all and (min-width:48rem){:is(table.table,.table) tbody,:is(table.table,.table) .tbody{display:block}:is(table.table,.table) tr,:is(table.table,.table) .tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--hairline);padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*2);flex-wrap:wrap;display:flex}:is(:is(table.table,.table) tr,:is(table.table,.table) .tr):has(.cbi-progressbar){justify-content:center;align-items:center;display:flex}:is(:is(table.table,.table) tr,:is(table.table,.table) .tr):last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}}:is(:is(table.table,.table) tr,:is(table.table,.table) .tr):last-child[data-title]:before{content:var(--tw-content);border-bottom-style:var(--tw-border-style);border-bottom-width:0}:is(:is(table.table,.table) tr,:is(table.table,.table) .tr):last-child .td{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr).table-titles,:is(:is(table.table,.table) tr,:is(table.table,.table) .tr).cbi-section-table-titles,:is(:is(table.table,.table) tr,:is(table.table,.table) .tr).cbi-section-table-descr{display:none}}:is(:is(table.table,.table) tr,:is(table.table,.table) .tr).cbi-rowstyle-1,:is(:is(table.table,.table) tr,:is(table.table,.table) .tr).cbi-rowstyle-2{background-color:#0000}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-1{flex:2rem}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-1{width:calc(var(--spacing)*20);max-width:calc(var(--spacing)*28)}}:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-2{white-space:normal}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-2{flex:2 2 4rem}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-2{width:calc(var(--spacing)*32);max-width:calc(var(--spacing)*40)}}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-3{flex:3 3 6rem}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-3{width:calc(var(--spacing)*44);max-width:calc(var(--spacing)*52)}}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-4{flex:4 4 8rem}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-4{width:calc(var(--spacing)*56);max-width:calc(var(--spacing)*64)}}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-5{flex:5 5 10rem}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-5{width:calc(var(--spacing)*68);max-width:calc(var(--spacing)*76)}}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-6{flex:6 6 12rem}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-6{width:calc(var(--spacing)*80);max-width:calc(var(--spacing)*88)}}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-7{flex:7 7 14rem}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-7{width:calc(var(--spacing)*92);max-width:calc(var(--spacing)*100)}}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-8{flex:8 8 16rem}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-8{width:calc(var(--spacing)*104);max-width:calc(var(--spacing)*112)}}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-9{flex:9 9 18rem}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-9{width:calc(var(--spacing)*116);max-width:calc(var(--spacing)*124)}}@media not all and (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-10{flex:0 0 100%;max-width:calc(100vw - 40px)}}@media (min-width:48rem){:is(:is(table.table,.table) tr,:is(table.table,.table) .tr)>.col-10{width:calc(var(--spacing)*128);max-width:calc(var(--spacing)*136)}}:is(table.table,.table) th,:is(table.table,.table) .th{border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--hairline);background-color:var(--surface-sunken);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*3);text-align:left;font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider);color:var(--text-subtle);text-transform:uppercase}:is(:is(table.table,.table) th,:is(table.table,.table) .th):first-child{border-top-left-radius:calc(var(--radius-base)*2)}:is(:is(table.table,.table) th,:is(table.table,.table) .th):last-child{border-top-right-radius:calc(var(--radius-base)*2)}@media not all and (min-width:48rem){:is(table.table,.table) th,:is(table.table,.table) .th{border-style:var(--tw-border-style);background-color:#0000;border-width:0;flex:50%}}#cbi-samba4 :is(:is(table.table,.table) th,:is(table.table,.table) .th){padding-inline:calc(var(--spacing)*.5);padding-block:calc(var(--spacing)*1.5)}:is(:is(table.table,.table) th,:is(table.table,.table) .th)[width="100%"]{width:100%}@media not all and (min-width:48rem){:is(:is(table.table,.table) th,:is(table.table,.table) .th)[width="100%"]{flex:0 0 100%}}:is(:is(table.table,.table) th,:is(table.table,.table) .th)[width="33%"]{width:33.3333%}@media not all and (min-width:48rem){:is(:is(table.table,.table) th,:is(table.table,.table) .th)[width="33%"]{flex:0 0 33.333%}}:is(:is(table.table,.table) th,:is(table.table,.table) .th)[data-sortable-row=true]{cursor:pointer;-webkit-user-select:none;user-select:none}:is(:is(table.table,.table) th,:is(table.table,.table) .th)[data-sortable-row=true]:after{content:var(--tw-content);margin-left:calc(var(--spacing)*.5);content:var(--tw-content);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}@media (hover:hover){:is(:is(table.table,.table) th,:is(table.table,.table) .th)[data-sortable-row=true]:hover{background-color:var(--hover-faint)}}:is(:is(table.table,.table) th,:is(table.table,.table) .th)[data-sortable-row=true][data-sort-direction=asc]:after{--tw-content:"▲";content:var(--tw-content)}:is(:is(table.table,.table) th,:is(table.table,.table) .th)[data-sortable-row=true][data-sort-direction=desc]:after{--tw-content:"▼";content:var(--tw-content)}:is(table.table,.table)[id*=status_leases] .td{max-width:calc(var(--spacing)*62)}@media not all and (min-width:48rem){:is(table.table,.table)[id*=status_leases] .td{max-width:100%}}:is(table.table,.table) td,:is(table.table,.table) .td{border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--hairline);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*3);vertical-align:middle;font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));overflow-wrap:break-word;white-space:normal;display:table-cell}@media not all and (min-width:48rem){:is(table.table,.table) td,:is(table.table,.table) .td{border-style:var(--tw-border-style);padding-inline:calc(var(--spacing)*1);padding-block:calc(var(--spacing)*1);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));border-width:0;flex:50%}}:is(:is(table.table,.table) td,:is(table.table,.table) .td):before{content:var(--tw-content);--tw-content:attr(data-title);content:var(--tw-content);content:var(--tw-content);display:none}@media not all and (min-width:48rem){:is(:is(table.table,.table) td,:is(table.table,.table) .td):before{margin-bottom:calc(var(--spacing)*1);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);display:block}}:is(:is(table.table,.table) td,:is(table.table,.table) .td):before{content:var(--tw-content)}@media not all and (min-width:48rem){:is(:is(table.table,.table) td,:is(table.table,.table) .td):before{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}}#cbi-samba4 :is(:is(table.table,.table) td,:is(table.table,.table) .td){padding-inline:calc(var(--spacing)*.5);padding-block:calc(var(--spacing)*1.5)}[data-page=admin-system-mounts] :is(:is(table.table,.table) td,:is(table.table,.table) .td){max-width:calc(var(--spacing)*104)}@media not all and (min-width:48rem){[data-page=admin-system-mounts] :is(:is(table.table,.table) td,:is(table.table,.table) .td){max-width:100%}#wifi_assoclist_table :is(:is(table.table,.table) td,:is(table.table,.table) .td){padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);flex:0 0 100%}}#wifi_assoclist_table :is(:is(table.table,.table) td,:is(table.table,.table) .td):before{content:var(--tw-content)}@media not all and (min-width:48rem){#wifi_assoclist_table :is(:is(table.table,.table) td,:is(table.table,.table) .td):before{margin-bottom:calc(var(--spacing)*1.5)}}:is(:is(table.table,.table) td,:is(table.table,.table) .td)>input[type=text],:is(:is(table.table,.table) td,:is(table.table,.table) .td)>input[type=password],:is(:is(table.table,.table) td,:is(table.table,.table) .td)>select,:is(:is(table.table,.table) td,:is(table.table,.table) .td)>.cbi-dropdown:not(.btn):not(.cbi-button){width:100%}:is(:is(table.table,.table) td,:is(table.table,.table) .td).cbi-value-field{word-break:break-all}@media not all and (min-width:48rem){:is(:is(table.table,.table) td,:is(table.table,.table) .td).cbi-section-actions{flex:0 0 100%}:is(:is(table.table,.table) td,:is(table.table,.table) .td).cbi-section-actions>div{width:100%}:is(:is(table.table,.table) td,:is(table.table,.table) .td).cbi-section-actions>div>.cbi-button{flex:1}:is(:is(table.table,.table) td,:is(table.table,.table) .td)>.cbi-button{width:100%}}:is(:is(table.table,.table) td,:is(table.table,.table) .td)[width="100%"]{width:100%}@media not all and (min-width:48rem){:is(:is(table.table,.table) td,:is(table.table,.table) .td)[width="100%"]{flex:0 0 100%}}:is(:is(table.table,.table) td,:is(table.table,.table) .td)[width="33%"]{width:33.3333%}@media not all and (min-width:48rem){:is(:is(table.table,.table) td,:is(table.table,.table) .td)[width="33%"]{flex:0 0 33.333%}[data-page=admin-network-network] :is(:is(table.table,.table) td,:is(table.table,.table) .td)[data-name=_ifacebox],[data-page=admin-network-network] :is(:is(table.table,.table) td,:is(table.table,.table) .td)[data-name=_ifacestat]{flex-basis:100%}}.cbi-section-table .cbi-section-table-titles .cbi-section-table-cell{width:auto!important}.cbi-input-invalid,.cbi-value-error{border-color:var(--danger)!important}:is(.cbi-input-invalid,.cbi-value-error):focus{--tw-ring-color:var(--danger)!important}.cbi-value{gap:calc(var(--spacing)*6);padding-block:calc(var(--spacing)*1.5);flex-flow:wrap;display:flex}@media not all and (min-width:48rem){.cbi-value{gap:calc(var(--spacing)*1.5);padding-block:calc(var(--spacing)*1);flex-direction:column}}.cbi-value.hidden{display:none}.cbi-value+.cbi-value{margin-top:calc(var(--spacing)*3)}@media not all and (min-width:48rem){.cbi-value+.cbi-value{margin-top:calc(var(--spacing)*2)}}.cbi-value>.cbi-value-title{padding-top:calc(var(--spacing)*1);text-align:right;--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}@media not all and (min-width:48rem){.cbi-value>.cbi-value-title{text-align:left;width:auto}}@media (min-width:48rem){.cbi-value>.cbi-value-title{flex:0 0 12rem}}.cbi-value>.cbi-value-field{flex:1;max-width:100%}.cbi-value>.cbi-value-field:has(>.cbi-dropdown[disabled]){cursor:not-allowed}.cbi-value>.cbi-value-field .cbi-value-description{margin-top:calc(var(--spacing)*1);padding-left:calc(var(--spacing)*4);--tw-leading:1;overflow-wrap:break-word;color:var(--text-muted);line-height:1;position:relative}.cbi-value>.cbi-value-field .cbi-value-description:not(:empty):before{content:var(--tw-content);content:var(--tw-content);left:calc(var(--spacing)*-.5);content:var(--tw-content);content:var(--tw-content);width:calc(var(--spacing)*4);height:calc(var(--spacing)*4);content:var(--tw-content);background-color:var(--info);content:var(--tw-content);display:inline-block;position:absolute;-webkit-mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2016%2016'%20width='24'%20height='24'%20fill='%23000000'%20style='opacity:1;'%3e%3cpath%20fill-rule='evenodd'%20d='M15%208A7%207%200%201%201%201%208a7%207%200%200%201%2014%200M9%205a1%201%200%201%201-2%200a1%201%200%200%201%202%200M6.75%208a.75.75%200%200%200%200%201.5h.75v1.75a.75.75%200%200%200%201.5%200v-2.5A.75.75%200%200%200%208.25%208z'%20clip-rule='evenodd'/%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2016%2016'%20width='24'%20height='24'%20fill='%23000000'%20style='opacity:1;'%3e%3cpath%20fill-rule='evenodd'%20d='M15%208A7%207%200%201%201%201%208a7%207%200%200%201%2014%200M9%205a1%201%200%201%201-2%200a1%201%200%200%201%202%200M6.75%208a.75.75%200%200%200%200%201.5h.75v1.75a.75.75%200%200%200%201.5%200v-2.5A.75.75%200%200%200%208.25%208z'%20clip-rule='evenodd'/%3e%3c/svg%3e") 50%/cover no-repeat}.cbi-value>.cbi-section,.cbi-value>.cbi-tblsection{width:100%}.cbi-dynlist{width:max-content;max-width:calc(var(--spacing)*120);align-items:flex-start;gap:calc(var(--spacing)*3);flex-direction:column;display:inline-flex}@media not all and (min-width:48rem){.cbi-dynlist{max-width:100%!important}}.cbi-dynlist .item{pointer-events:auto;cursor:move;align-items:flex-start;gap:calc(var(--spacing)*2);border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface);padding-block:calc(var(--spacing)*3);padding-right:calc(var(--spacing)*10);padding-left:calc(var(--spacing)*4);word-break:break-all;--tw-shadow:var(--app-shadow-sm);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:transform,box-shadow,opacity,border-color,background-color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;-webkit-user-select:text;user-select:text;flex-direction:column;align-self:stretch;transition-duration:.15s;display:inline-flex;position:relative;overflow:hidden}@media not all and (min-width:48rem){.cbi-dynlist .item{width:100%;padding-block:calc(var(--spacing)*2.5);padding-right:calc(var(--spacing)*8);padding-left:calc(var(--spacing)*3)}}.cbi-dynlist .item:after{content:var(--tw-content);content:var(--tw-content);top:calc(var(--spacing)*2.5);content:var(--tw-content);right:calc(var(--spacing)*2);content:var(--tw-content);content:var(--tw-content);height:calc(var(--spacing)*6);content:var(--tw-content);width:calc(var(--spacing)*6);content:var(--tw-content);content:var(--tw-content);cursor:pointer;content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);border-radius:calc(var(--radius-base)*1.5);content:var(--tw-content);background-color:var(--surface-sunken);content:var(--tw-content);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));content:var(--tw-content);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);content:var(--tw-content);color:var(--text-muted);--tw-content:"×";content:var(--tw-content);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex;position:absolute}.cbi-dynlist .item.dragging{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y);cursor:grabbing;opacity:.5;--tw-shadow:var(--app-shadow-lg);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.cbi-dynlist .item.drag-over{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y);border-color:var(--brand);background-color:var(--brand-subtle);--tw-shadow:var(--app-shadow-md);--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--brand-subtle)}.cbi-dynlist .item>span,.cbi-dynlist .item>code{pointer-events:none;border-radius:var(--radius-base);width:100%;font-family:var(--font-mono);--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.cbi-dynlist .placeholder{word-break:break-all}.cbi-dynlist .add-item{align-items:center;gap:calc(var(--spacing)*1.5);border-radius:calc(var(--radius-base)*2);border-style:var(--tw-border-style);--tw-border-style:dashed;border-style:dashed;border-width:1px;border-color:var(--hairline);padding-inline:calc(var(--spacing)*1);padding-block:calc(var(--spacing)*1);transition-property:border-color,background-color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;background-color:#0000;align-self:stretch;transition-duration:.15s;display:inline-flex}@media (hover:hover){.cbi-dynlist .add-item:hover{border-color:var(--hairline);background-color:var(--surface-sunken)}}.cbi-dynlist .add-item>input{min-width:calc(var(--spacing)*61);flex:1}.cbi-dynlist .add-item>.cbi-button{min-height:calc(var(--spacing)*6);min-width:calc(var(--spacing)*6);cursor:pointer;border-radius:calc(var(--radius-base)*1.5);padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*0);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.cbi-dynlist .add-item>.cbi-button:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.cbi-tabmenu{margin-bottom:calc(var(--spacing)*1);align-items:center;gap:calc(var(--spacing)*1);border-radius:calc(var(--radius-base)*4);border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline);background-color:var(--surface-sunken);padding:calc(var(--spacing)*1);display:flex;overflow-x:auto}.cbi-tabmenu li{margin:calc(var(--spacing)*0);flex-shrink:0;min-width:fit-content;list-style-type:none;position:relative}.cbi-tabmenu li[data-errors]:after{content:var(--tw-content);content:var(--tw-content);top:calc(var(--spacing)*-.5);content:var(--tw-content);right:calc(var(--spacing)*-1.5);content:var(--tw-content);z-index:20;content:var(--tw-content);content:var(--tw-content);min-height:calc(var(--spacing)*4);content:var(--tw-content);min-width:calc(var(--spacing)*4);content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);background-color:var(--danger);content:var(--tw-content);padding-inline:calc(var(--spacing)*1.5);content:var(--tw-content);padding-block:calc(var(--spacing)*.5);content:var(--tw-content);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));content:var(--tw-content);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);content:var(--tw-content);color:var(--on-brand);--tw-content:attr(data-errors);content:var(--tw-content);border-radius:3.40282e38px;justify-content:center;align-items:center;display:inline-flex;position:absolute}.cbi-tabmenu li[data-errors]>a{border-style:var(--tw-border-style);border-width:1px;border-color:var(--hairline)}.cbi-tabmenu li>a{border-radius:calc(var(--radius-base)*4);padding-inline:calc(var(--spacing)*4);padding-block:calc(var(--spacing)*2);text-align:center;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);white-space:nowrap;color:var(--text-muted);text-decoration-line:none;display:block}@media (hover:hover){.cbi-tabmenu li>a:hover{color:var(--text)}}.cbi-tabmenu li.cbi-tab a{background-color:var(--text);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--surface);--tw-shadow:var(--app-shadow-sm);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}[data-tab-title]{visibility:hidden;height:calc(var(--spacing)*0);overflow:hidden}[data-tab-active=true]{visibility:visible;height:auto;overflow:visible}#tabmenu{margin-bottom:calc(var(--spacing)*8);width:100%}.tabs{align-items:center;gap:calc(var(--spacing)*0);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--hairline);display:flex;position:relative;overflow-x:auto}.tabs a{padding-inline:calc(var(--spacing)*8);padding-block:calc(var(--spacing)*4);text-align:center;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);white-space:nowrap;color:var(--text-muted);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;transition-duration:.15s;display:block}@media (hover:hover){.tabs a:hover{color:var(--text);text-decoration-line:none}}.tabs>li.active{border-bottom-style:var(--tw-border-style);border-bottom-width:2px;border-color:var(--text)}.tabs>li.active>a{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--text)}.cbi-section-node-tabbed{margin-top:calc(var(--spacing)*6)}.hidden{display:none!important}@media (min-width:48rem){.left{text-align:left!important}}.left:not(td){text-align:left!important}@media (min-width:48rem){.right{text-align:right!important}}.right:not(td){text-align:right!important}@media (min-width:48rem){.top{vertical-align:top!important}}.top:not(td){vertical-align:top!important}@media (min-width:48rem){.bottom{vertical-align:bottom!important}}.bottom:not(td){vertical-align:bottom!important}@media (min-width:48rem){.center{text-align:center!important}}.center:not(td){text-align:center!important}@media (min-width:48rem){.middle{vertical-align:middle!important}}.middle:not(td){vertical-align:middle!important}@media (min-width:48rem){.nowrap:not(span){white-space:nowrap}}.nowrap:not(span):not(td){white-space:nowrap}.fade-in{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none);--tw-duration:.25s;--tw-enter-opacity:0;--tw-animation-fill-mode:backwards;transition-duration:.25s;animation-fill-mode:backwards}.fade-out{pointer-events:none;opacity:0;transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.25s;transition-duration:.25s}.spinning{display:inline-block;position:relative;padding-left:calc(var(--spacing)*8)!important}.spinning:before{content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);content:var(--tw-content);width:calc(var(--spacing)*5);height:calc(var(--spacing)*5);content:var(--tw-content);--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y);content:var(--tw-content);animation:var(--animate-spin);content:var(--tw-content);content:var(--tw-content);background-color:currentColor;position:absolute;top:50%;left:6px;-webkit-mask:url("data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1758357645269'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='7610'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M512%2085.333333c235.648%200%20426.666667%20191.018667%20426.666667%20426.666667s-191.018667%20426.666667-426.666667%20426.666667S85.333333%20747.648%2085.333333%20512%20276.352%2085.333333%20512%2085.333333z%20m0%20128a298.666667%20298.666667%200%201%200%200%20597.333334%20298.666667%20298.666667%200%200%200%200-597.333334z'%20fill='%23000000'%20fill-opacity='.05'%20p-id='7611'%3e%3c/path%3e%3cpath%20d='M813.696%20813.696c166.613333-166.613333%20166.613333-436.778667%200-603.392-166.613333-166.613333-436.778667-166.613333-603.392%200A64%2064%200%200%200%20300.8%20300.8a298.666667%20298.666667%200%201%201%20422.4%20422.4%2064%2064%200%200%200%2090.496%2090.496z'%20fill='%23000000'%20p-id='7612'%3e%3c/path%3e%3c/svg%3e") 50%/cover no-repeat;mask:url("data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1758357645269'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='7610'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M512%2085.333333c235.648%200%20426.666667%20191.018667%20426.666667%20426.666667s-191.018667%20426.666667-426.666667%20426.666667S85.333333%20747.648%2085.333333%20512%20276.352%2085.333333%20512%2085.333333z%20m0%20128a298.666667%20298.666667%200%201%200%200%20597.333334%20298.666667%20298.666667%200%200%200%200-597.333334z'%20fill='%23000000'%20fill-opacity='.05'%20p-id='7611'%3e%3c/path%3e%3cpath%20d='M813.696%20813.696c166.613333-166.613333%20166.613333-436.778667%200-603.392-166.613333-166.613333-436.778667-166.613333-603.392%200A64%2064%200%200%200%20300.8%20300.8a298.666667%20298.666667%200%201%201%20422.4%20422.4%2064%2064%200%200%200%2090.496%2090.496z'%20fill='%23000000'%20p-id='7612'%3e%3c/path%3e%3c/svg%3e") 50%/cover no-repeat}#view>.spinning:first-child{min-height:calc(var(--spacing)*48);place-items:center;width:fit-content;margin-inline:auto;display:grid}@media not all and (min-width:48rem){#view>.spinning:first-child{min-height:calc(100dvh - 4rem)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-property:none!important;animation:none!important}.spinning:before{animation:var(--animate-spin)!important}}@media (prefers-reduced-transparency:reduce){*,:before,:after{-webkit-backdrop-filter:none!important;backdrop-filter:none!important}:root{--mega-menu-bg:var(--surface-overlay)}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-leading{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-border-spacing-x{syntax:"";inherits:false;initial-value:0}@property --tw-border-spacing-y{syntax:"";inherits:false;initial-value:0}@keyframes spin{to{transform:rotate(360deg)}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}
diff --git a/natflow/Makefile b/natflow/Makefile
index ee172b74..e9f7262b 100644
--- a/natflow/Makefile
+++ b/natflow/Makefile
@@ -10,12 +10,12 @@ include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=natflow
PKG_VERSION:=20260531
-PKG_RELEASE:=33
+PKG_RELEASE:=34
PKG_SOURCE:=$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://github.com/ptpt52/natflow.git
PKG_SOURCE_PROTO:=git
-PKG_SOURCE_VERSION:=0a039fc3e686237efa6f89cd593731a039965b14
+PKG_SOURCE_VERSION:=50b9d608a30193f71f8831ee0d6a1a17a3aac456
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_MAINTAINER:=Chen Minqiang
PKG_LICENSE:=GPL-2.0
diff --git a/nps/Makefile b/nps/Makefile
index 4ee012f2..5635bc69 100644
--- a/nps/Makefile
+++ b/nps/Makefile
@@ -5,8 +5,8 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=nps
-PKG_VERSION:=0.26.34
-PKG_RELEASE:=9
+PKG_VERSION:=0.26.35
+PKG_RELEASE:=10
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/yisier/nps/tar.gz/v$(PKG_VERSION)?
diff --git a/quectel_MHI/Makefile b/quectel_MHI/Makefile
old mode 100644
new mode 100755
index ba458d6a..3d52a97a
--- a/quectel_MHI/Makefile
+++ b/quectel_MHI/Makefile
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=pcie_mhi
PKG_VERSION:=1.3.8
-PKG_RELEASE:=33
+PKG_RELEASE:=34
include $(INCLUDE_DIR)/kernel.mk
include $(INCLUDE_DIR)/package.mk