diff --git a/.github/update.log b/.github/update.log
index a2939766ef..ffc6553d22 100644
--- a/.github/update.log
+++ b/.github/update.log
@@ -675,3 +675,4 @@ Update On Thu Jun 13 20:31:26 CEST 2024
Update On Fri Jun 14 20:32:58 CEST 2024
Update On Sat Jun 15 20:30:01 CEST 2024
Update On Sun Jun 16 20:31:07 CEST 2024
+Update On Mon Jun 17 20:31:27 CEST 2024
diff --git a/clash-meta/common/utils/callback.go b/clash-meta/common/utils/callback.go
new file mode 100644
index 0000000000..df950d3a81
--- /dev/null
+++ b/clash-meta/common/utils/callback.go
@@ -0,0 +1,50 @@
+package utils
+
+import (
+ "io"
+ "sync"
+
+ list "github.com/bahlo/generic-list-go"
+)
+
+type Callback[T any] struct {
+ list list.List[func(T)]
+ mutex sync.RWMutex
+}
+
+func NewCallback[T any]() *Callback[T] {
+ return &Callback[T]{}
+}
+
+func (c *Callback[T]) Register(item func(T)) io.Closer {
+ c.mutex.RLock()
+ defer c.mutex.RUnlock()
+ element := c.list.PushBack(item)
+ return &callbackCloser[T]{
+ element: element,
+ callback: c,
+ }
+}
+
+func (c *Callback[T]) Emit(item T) {
+ c.mutex.RLock()
+ defer c.mutex.RUnlock()
+ for element := c.list.Front(); element != nil; element = element.Next() {
+ go element.Value(item)
+ }
+}
+
+type callbackCloser[T any] struct {
+ element *list.Element[func(T)]
+ callback *Callback[T]
+ once sync.Once
+}
+
+func (c *callbackCloser[T]) Close() error {
+ c.once.Do(func() {
+ c.callback.mutex.Lock()
+ defer c.callback.mutex.Unlock()
+ c.callback.list.Remove(c.element)
+ })
+ return nil
+}
diff --git a/clash-meta/component/cidr/ipcidr_set.go b/clash-meta/component/cidr/ipcidr_set.go
index 0cb55e3647..521fabab13 100644
--- a/clash-meta/component/cidr/ipcidr_set.go
+++ b/clash-meta/component/cidr/ipcidr_set.go
@@ -43,12 +43,12 @@ func (set *IpCidrSet) IsContainForString(ipString string) bool {
}
func (set *IpCidrSet) IsContain(ip netip.Addr) bool {
- return set.toIPSet().Contains(ip.WithZone(""))
+ return set.ToIPSet().Contains(ip.WithZone(""))
}
func (set *IpCidrSet) Merge() error {
var b netipx.IPSetBuilder
- b.AddSet(set.toIPSet())
+ b.AddSet(set.ToIPSet())
i, err := b.IPSet()
if err != nil {
return err
@@ -57,7 +57,9 @@ func (set *IpCidrSet) Merge() error {
return nil
}
-func (set *IpCidrSet) toIPSet() *netipx.IPSet {
+// ToIPSet not safe convert to *netipx.IPSet
+// be careful, must be used after Merge
+func (set *IpCidrSet) ToIPSet() *netipx.IPSet {
return (*netipx.IPSet)(unsafe.Pointer(set))
}
diff --git a/clash-meta/component/iface/iface.go b/clash-meta/component/iface/iface.go
index d543725a3d..272ee7377a 100644
--- a/clash-meta/component/iface/iface.go
+++ b/clash-meta/component/iface/iface.go
@@ -11,8 +11,9 @@ import (
type Interface struct {
Index int
+ MTU int
Name string
- Addrs []netip.Prefix
+ Addresses []netip.Prefix
HardwareAddr net.HardwareAddr
}
@@ -61,8 +62,9 @@ func Interfaces() (map[string]*Interface, error) {
r[iface.Name] = &Interface{
Index: iface.Index,
+ MTU: iface.MTU,
Name: iface.Name,
- Addrs: ipNets,
+ Addresses: ipNets,
HardwareAddr: iface.HardwareAddr,
}
}
@@ -92,7 +94,7 @@ func IsLocalIp(ip netip.Addr) (bool, error) {
return false, err
}
for _, iface := range ifaces {
- for _, addr := range iface.Addrs {
+ for _, addr := range iface.Addresses {
if addr.Contains(ip) {
return true, nil
}
@@ -120,7 +122,7 @@ func (iface *Interface) PickIPv6Addr(destination netip.Addr) (netip.Prefix, erro
func (iface *Interface) pickIPAddr(destination netip.Addr, accept func(addr netip.Prefix) bool) (netip.Prefix, error) {
var fallback netip.Prefix
- for _, addr := range iface.Addrs {
+ for _, addr := range iface.Addresses {
if !accept(addr) {
continue
}
diff --git a/clash-meta/config/config.go b/clash-meta/config/config.go
index fd12d2dbd5..2166b87d70 100644
--- a/clash-meta/config/config.go
+++ b/clash-meta/config/config.go
@@ -246,31 +246,39 @@ type RawTun struct {
DNSHijack []string `yaml:"dns-hijack" json:"dns-hijack"`
AutoRoute bool `yaml:"auto-route" json:"auto-route"`
AutoDetectInterface bool `yaml:"auto-detect-interface"`
- RedirectToTun []string `yaml:"-" json:"-"`
MTU uint32 `yaml:"mtu" json:"mtu,omitempty"`
GSO bool `yaml:"gso" json:"gso,omitempty"`
GSOMaxSize uint32 `yaml:"gso-max-size" json:"gso-max-size,omitempty"`
//Inet4Address []netip.Prefix `yaml:"inet4-address" json:"inet4_address,omitempty"`
- Inet6Address []netip.Prefix `yaml:"inet6-address" json:"inet6_address,omitempty"`
- StrictRoute bool `yaml:"strict-route" json:"strict_route,omitempty"`
+ Inet6Address []netip.Prefix `yaml:"inet6-address" json:"inet6_address,omitempty"`
+ IPRoute2TableIndex int `yaml:"iproute2-table-index" json:"iproute2_table_index,omitempty"`
+ IPRoute2RuleIndex int `yaml:"iproute2-rule-index" json:"iproute2_rule_index,omitempty"`
+ AutoRedirect bool `yaml:"auto-redirect" json:"auto_redirect,omitempty"`
+ AutoRedirectInputMark uint32 `yaml:"auto-redirect-input-mark" json:"auto_redirect_input_mark,omitempty"`
+ AutoRedirectOutputMark uint32 `yaml:"auto-redirect-output-mark" json:"auto_redirect_output_mark,omitempty"`
+ StrictRoute bool `yaml:"strict-route" json:"strict_route,omitempty"`
+ RouteAddress []netip.Prefix `yaml:"route-address" json:"route_address,omitempty"`
+ RouteAddressSet []string `yaml:"route-address-set" json:"route_address_set,omitempty"`
+ RouteExcludeAddress []netip.Prefix `yaml:"route-exclude-address" json:"route_exclude_address,omitempty"`
+ RouteExcludeAddressSet []string `yaml:"route-exclude-address-set" json:"route_exclude_address_set,omitempty"`
+ IncludeInterface []string `yaml:"include-interface" json:"include-interface,omitempty"`
+ ExcludeInterface []string `yaml:"exclude-interface" json:"exclude-interface,omitempty"`
+ IncludeUID []uint32 `yaml:"include-uid" json:"include_uid,omitempty"`
+ IncludeUIDRange []string `yaml:"include-uid-range" json:"include_uid_range,omitempty"`
+ ExcludeUID []uint32 `yaml:"exclude-uid" json:"exclude_uid,omitempty"`
+ ExcludeUIDRange []string `yaml:"exclude-uid-range" json:"exclude_uid_range,omitempty"`
+ IncludeAndroidUser []int `yaml:"include-android-user" json:"include_android_user,omitempty"`
+ IncludePackage []string `yaml:"include-package" json:"include_package,omitempty"`
+ ExcludePackage []string `yaml:"exclude-package" json:"exclude_package,omitempty"`
+ EndpointIndependentNat bool `yaml:"endpoint-independent-nat" json:"endpoint_independent_nat,omitempty"`
+ UDPTimeout int64 `yaml:"udp-timeout" json:"udp_timeout,omitempty"`
+ FileDescriptor int `yaml:"file-descriptor" json:"file-descriptor"`
+
Inet4RouteAddress []netip.Prefix `yaml:"inet4-route-address" json:"inet4_route_address,omitempty"`
Inet6RouteAddress []netip.Prefix `yaml:"inet6-route-address" json:"inet6_route_address,omitempty"`
Inet4RouteExcludeAddress []netip.Prefix `yaml:"inet4-route-exclude-address" json:"inet4_route_exclude_address,omitempty"`
Inet6RouteExcludeAddress []netip.Prefix `yaml:"inet6-route-exclude-address" json:"inet6_route_exclude_address,omitempty"`
- IncludeInterface []string `yaml:"include-interface" json:"include-interface,omitempty"`
- ExcludeInterface []string `yaml:"exclude-interface" json:"exclude-interface,omitempty"`
- IncludeUID []uint32 `yaml:"include-uid" json:"include_uid,omitempty"`
- IncludeUIDRange []string `yaml:"include-uid-range" json:"include_uid_range,omitempty"`
- ExcludeUID []uint32 `yaml:"exclude-uid" json:"exclude_uid,omitempty"`
- ExcludeUIDRange []string `yaml:"exclude-uid-range" json:"exclude_uid_range,omitempty"`
- IncludeAndroidUser []int `yaml:"include-android-user" json:"include_android_user,omitempty"`
- IncludePackage []string `yaml:"include-package" json:"include_package,omitempty"`
- ExcludePackage []string `yaml:"exclude-package" json:"exclude_package,omitempty"`
- EndpointIndependentNat bool `yaml:"endpoint-independent-nat" json:"endpoint_independent_nat,omitempty"`
- UDPTimeout int64 `yaml:"udp-timeout" json:"udp_timeout,omitempty"`
- FileDescriptor int `yaml:"file-descriptor" json:"file-descriptor"`
- TableIndex int `yaml:"table-index" json:"table-index"`
}
type RawTuicServer struct {
@@ -564,13 +572,13 @@ func ParseRawConfig(rawCfg *RawConfig) (*Config, error) {
}
config.RuleProviders = ruleProviders
- subRules, err := parseSubRules(rawCfg, proxies)
+ subRules, err := parseSubRules(rawCfg, proxies, ruleProviders)
if err != nil {
return nil, err
}
config.SubRules = subRules
- rules, err := parseRules(rawCfg.Rule, proxies, subRules, "rules")
+ rules, err := parseRules(rawCfg.Rule, proxies, ruleProviders, subRules, "rules")
if err != nil {
return nil, err
}
@@ -666,7 +674,6 @@ func parseGeneral(cfg *RawConfig) (*General, error) {
updater.ExternalUIURL = cfg.ExternalUIURL
}
- cfg.Tun.RedirectToTun = cfg.EBpf.RedirectToTun
return &General{
Inbound: Inbound{
Port: cfg.Port,
@@ -845,6 +852,7 @@ func parseListeners(cfg *RawConfig) (listeners map[string]C.InboundListener, err
}
func parseRuleProviders(cfg *RawConfig) (ruleProviders map[string]providerTypes.RuleProvider, err error) {
+ RP.SetTunnel(T.Tunnel)
ruleProviders = map[string]providerTypes.RuleProvider{}
// parse rule provider
for name, mapping := range cfg.RuleProvider {
@@ -854,12 +862,11 @@ func parseRuleProviders(cfg *RawConfig) (ruleProviders map[string]providerTypes.
}
ruleProviders[name] = rp
- RP.SetRuleProvider(rp)
}
return
}
-func parseSubRules(cfg *RawConfig, proxies map[string]C.Proxy) (subRules map[string][]C.Rule, err error) {
+func parseSubRules(cfg *RawConfig, proxies map[string]C.Proxy, ruleProviders map[string]providerTypes.RuleProvider) (subRules map[string][]C.Rule, err error) {
subRules = map[string][]C.Rule{}
for name := range cfg.SubRules {
subRules[name] = make([]C.Rule, 0)
@@ -869,7 +876,7 @@ func parseSubRules(cfg *RawConfig, proxies map[string]C.Proxy) (subRules map[str
return nil, fmt.Errorf("sub-rule name is empty")
}
var rules []C.Rule
- rules, err = parseRules(rawRules, proxies, subRules, fmt.Sprintf("sub-rules[%s]", name))
+ rules, err = parseRules(rawRules, proxies, ruleProviders, subRules, fmt.Sprintf("sub-rules[%s]", name))
if err != nil {
return nil, err
}
@@ -922,7 +929,7 @@ func verifySubRuleCircularReferences(n string, subRules map[string][]C.Rule, arr
return nil
}
-func parseRules(rulesConfig []string, proxies map[string]C.Proxy, subRules map[string][]C.Rule, format string) ([]C.Rule, error) {
+func parseRules(rulesConfig []string, proxies map[string]C.Proxy, ruleProviders map[string]providerTypes.RuleProvider, subRules map[string][]C.Rule, format string) ([]C.Rule, error) {
var rules []C.Rule
// parse rules
@@ -971,6 +978,12 @@ func parseRules(rulesConfig []string, proxies map[string]C.Proxy, subRules map[s
return nil, fmt.Errorf("%s[%d] [%s] error: %s", format, idx, line, parseErr.Error())
}
+ for _, name := range parsed.ProviderNames() {
+ if _, ok := ruleProviders[name]; !ok {
+ return nil, fmt.Errorf("%s[%d] [%s] error: rule set [%s] not found", format, idx, line, name)
+ }
+ }
+
rules = append(rules, parsed)
}
@@ -1455,31 +1468,39 @@ func parseTun(rawTun RawTun, general *General) error {
DNSHijack: rawTun.DNSHijack,
AutoRoute: rawTun.AutoRoute,
AutoDetectInterface: rawTun.AutoDetectInterface,
- RedirectToTun: rawTun.RedirectToTun,
- MTU: rawTun.MTU,
- GSO: rawTun.GSO,
- GSOMaxSize: rawTun.GSOMaxSize,
- Inet4Address: []netip.Prefix{tunAddressPrefix},
- Inet6Address: rawTun.Inet6Address,
- StrictRoute: rawTun.StrictRoute,
+ MTU: rawTun.MTU,
+ GSO: rawTun.GSO,
+ GSOMaxSize: rawTun.GSOMaxSize,
+ Inet4Address: []netip.Prefix{tunAddressPrefix},
+ Inet6Address: rawTun.Inet6Address,
+ IPRoute2TableIndex: rawTun.IPRoute2TableIndex,
+ IPRoute2RuleIndex: rawTun.IPRoute2RuleIndex,
+ AutoRedirect: rawTun.AutoRedirect,
+ AutoRedirectInputMark: rawTun.AutoRedirectInputMark,
+ AutoRedirectOutputMark: rawTun.AutoRedirectOutputMark,
+ StrictRoute: rawTun.StrictRoute,
+ RouteAddress: rawTun.RouteAddress,
+ RouteAddressSet: rawTun.RouteAddressSet,
+ RouteExcludeAddress: rawTun.RouteExcludeAddress,
+ RouteExcludeAddressSet: rawTun.RouteExcludeAddressSet,
+ IncludeInterface: rawTun.IncludeInterface,
+ ExcludeInterface: rawTun.ExcludeInterface,
+ IncludeUID: rawTun.IncludeUID,
+ IncludeUIDRange: rawTun.IncludeUIDRange,
+ ExcludeUID: rawTun.ExcludeUID,
+ ExcludeUIDRange: rawTun.ExcludeUIDRange,
+ IncludeAndroidUser: rawTun.IncludeAndroidUser,
+ IncludePackage: rawTun.IncludePackage,
+ ExcludePackage: rawTun.ExcludePackage,
+ EndpointIndependentNat: rawTun.EndpointIndependentNat,
+ UDPTimeout: rawTun.UDPTimeout,
+ FileDescriptor: rawTun.FileDescriptor,
+
Inet4RouteAddress: rawTun.Inet4RouteAddress,
Inet6RouteAddress: rawTun.Inet6RouteAddress,
Inet4RouteExcludeAddress: rawTun.Inet4RouteExcludeAddress,
Inet6RouteExcludeAddress: rawTun.Inet6RouteExcludeAddress,
- IncludeInterface: rawTun.IncludeInterface,
- ExcludeInterface: rawTun.ExcludeInterface,
- IncludeUID: rawTun.IncludeUID,
- IncludeUIDRange: rawTun.IncludeUIDRange,
- ExcludeUID: rawTun.ExcludeUID,
- ExcludeUIDRange: rawTun.ExcludeUIDRange,
- IncludeAndroidUser: rawTun.IncludeAndroidUser,
- IncludePackage: rawTun.IncludePackage,
- ExcludePackage: rawTun.ExcludePackage,
- EndpointIndependentNat: rawTun.EndpointIndependentNat,
- UDPTimeout: rawTun.UDPTimeout,
- FileDescriptor: rawTun.FileDescriptor,
- TableIndex: rawTun.TableIndex,
}
return nil
diff --git a/clash-meta/constant/provider/interface.go b/clash-meta/constant/provider/interface.go
index bb73d1bce2..f7dfc9cc60 100644
--- a/clash-meta/constant/provider/interface.go
+++ b/clash-meta/constant/provider/interface.go
@@ -84,7 +84,7 @@ type RuleProvider interface {
Match(*constant.Metadata) bool
ShouldResolveIP() bool
ShouldFindProcess() bool
- AsRule(adaptor string) constant.Rule
+ Strategy() any
}
// Rule Behavior
@@ -127,3 +127,9 @@ func (rf RuleFormat) String() string {
return "Unknown"
}
}
+
+type Tunnel interface {
+ Providers() map[string]ProxyProvider
+ RuleProviders() map[string]RuleProvider
+ RuleUpdateCallback() *utils.Callback[RuleProvider]
+}
diff --git a/clash-meta/constant/rule.go b/clash-meta/constant/rule.go
index 161c200a60..a91ee6cb07 100644
--- a/clash-meta/constant/rule.go
+++ b/clash-meta/constant/rule.go
@@ -116,4 +116,5 @@ type Rule interface {
Payload() string
ShouldResolveIP() bool
ShouldFindProcess() bool
+ ProviderNames() []string
}
diff --git a/clash-meta/dns/policy.go b/clash-meta/dns/policy.go
index a58123e3dc..fc60401b01 100644
--- a/clash-meta/dns/policy.go
+++ b/clash-meta/dns/policy.go
@@ -37,14 +37,17 @@ func (p geositePolicy) Match(domain string) []dnsClient {
}
type domainSetPolicy struct {
- domainSetProvider provider.RuleProvider
- dnsClients []dnsClient
+ tunnel provider.Tunnel
+ name string
+ dnsClients []dnsClient
}
func (p domainSetPolicy) Match(domain string) []dnsClient {
- metadata := &C.Metadata{Host: domain}
- if ok := p.domainSetProvider.Match(metadata); ok {
- return p.dnsClients
+ if ruleProvider, ok := p.tunnel.RuleProviders()[p.name]; ok {
+ metadata := &C.Metadata{Host: domain}
+ if ok := ruleProvider.Match(metadata); ok {
+ return p.dnsClients
+ }
}
return nil
}
diff --git a/clash-meta/dns/resolver.go b/clash-meta/dns/resolver.go
index 08de69adff..28ffec6f15 100644
--- a/clash-meta/dns/resolver.go
+++ b/clash-meta/dns/resolver.go
@@ -414,7 +414,7 @@ type Config struct {
Pool *fakeip.Pool
Hosts *trie.DomainTrie[resolver.HostValue]
Policy *orderedmap.OrderedMap[string, []NameServer]
- RuleProviders map[string]provider.RuleProvider
+ Tunnel provider.Tunnel
CacheAlgorithm string
}
@@ -502,11 +502,12 @@ func NewResolver(config Config) *Resolver {
key := temp[1]
switch prefix {
case "rule-set":
- if p, ok := config.RuleProviders[key]; ok {
+ if _, ok := config.Tunnel.RuleProviders()[key]; ok {
log.Debugln("Adding rule-set policy: %s ", key)
insertPolicy(domainSetPolicy{
- domainSetProvider: p,
- dnsClients: cacheTransform(nameserver),
+ tunnel: config.Tunnel,
+ name: key,
+ dnsClients: cacheTransform(nameserver),
})
continue
} else {
diff --git a/clash-meta/docs/config.yaml b/clash-meta/docs/config.yaml
index 462b3a44e1..9c51bc10b3 100644
--- a/clash-meta/docs/config.yaml
+++ b/clash-meta/docs/config.yaml
@@ -116,13 +116,25 @@ tun:
# mtu: 9000 # 最大传输单元
# gso: false # 启用通用分段卸载,仅支持 Linux
# gso-max-size: 65536 # 通用分段卸载包的最大大小
+ auto-redirect: false # 自动配置 iptables 以重定向 TCP 连接。仅支持 Linux。带有 auto-redirect 的 auto-route 现在可以在路由器上按预期工作,无需干预。
# strict-route: true # 将所有连接路由到 tun 来防止泄漏,但你的设备将无法其他设备被访问
- inet4-route-address: # 启用 auto-route 时使用自定义路由而不是默认路由
+ route-address-set: # 将指定规则集中的目标 IP CIDR 规则添加到防火墙, 不匹配的流量将绕过路由, 仅支持 Linux,且需要 nftables,`auto-route` 和 `auto-redirect` 已启用。
+ - ruleset-1
+ - ruleset-2
+ route-exclude-address-set: # 将指定规则集中的目标 IP CIDR 规则添加到防火墙, 匹配的流量将绕过路由, 仅支持 Linux,且需要 nftables,`auto-route` 和 `auto-redirect` 已启用。
+ - ruleset-3
+ - ruleset-4
+ route-address: # 启用 auto-route 时使用自定义路由而不是默认路由
- 0.0.0.0/1
- 128.0.0.0/1
- inet6-route-address: # 启用 auto-route 时使用自定义路由而不是默认路由
- "::/1"
- "8000::/1"
+ # inet4-route-address: # 启用 auto-route 时使用自定义路由而不是默认路由(旧写法)
+ # - 0.0.0.0/1
+ # - 128.0.0.0/1
+ # inet6-route-address: # 启用 auto-route 时使用自定义路由而不是默认路由(旧写法)
+ # - "::/1"
+ # - "8000::/1"
# endpoint-independent-nat: false # 启用独立于端点的 NAT
# include-interface: # 限制被路由的接口。默认不限制,与 `exclude-interface` 冲突
# - "lan0"
diff --git a/clash-meta/go.mod b/clash-meta/go.mod
index 5d109d8de6..ee0eeeb42a 100644
--- a/clash-meta/go.mod
+++ b/clash-meta/go.mod
@@ -24,7 +24,7 @@ require (
github.com/metacubex/sing-quic v0.0.0-20240518034124-7696d3f7da72
github.com/metacubex/sing-shadowsocks v0.2.6
github.com/metacubex/sing-shadowsocks2 v0.2.0
- github.com/metacubex/sing-tun v0.2.7-0.20240521155100-e8316a45a414
+ github.com/metacubex/sing-tun v0.2.7-0.20240617013029-d05cf9df9cfe
github.com/metacubex/sing-vmess v0.1.9-0.20231207122118-72303677451f
github.com/metacubex/sing-wireguard v0.0.0-20240321042214-224f96122a63
github.com/metacubex/tfo-go v0.0.0-20240228025757-be1269474a66
@@ -35,8 +35,8 @@ require (
github.com/oschwald/maxminddb-golang v1.12.0
github.com/puzpuzpuz/xsync/v3 v3.1.0
github.com/sagernet/bbolt v0.0.0-20231014093535-ea5cb2fe9f0a
- github.com/sagernet/netlink v0.0.0-20220905062125-8043b4a9aa97
- github.com/sagernet/sing v0.3.8
+ github.com/sagernet/netlink v0.0.0-20240612041022-b9a21c07ac6a
+ github.com/sagernet/sing v0.5.0-alpha.10
github.com/sagernet/sing-mux v0.2.1-0.20240124034317-9bfb33698bb6
github.com/sagernet/sing-shadowtls v0.1.4
github.com/sagernet/wireguard-go v0.0.0-20231209092712-9a439356a62e
@@ -47,11 +47,11 @@ require (
github.com/wk8/go-ordered-map/v2 v2.1.8
go.uber.org/automaxprocs v1.5.3
go4.org/netipx v0.0.0-20231129151722-fdeea329fbba
- golang.org/x/crypto v0.23.0
- golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842
- golang.org/x/net v0.25.0
+ golang.org/x/crypto v0.24.0
+ golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8
+ golang.org/x/net v0.26.0
golang.org/x/sync v0.7.0
- golang.org/x/sys v0.20.0
+ golang.org/x/sys v0.21.0
google.golang.org/protobuf v1.34.1
gopkg.in/yaml.v3 v3.0.1
lukechampine.com/blake3 v1.3.0
@@ -92,6 +92,7 @@ require (
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect
github.com/quic-go/qpack v0.4.0 // indirect
github.com/quic-go/qtls-go1-20 v0.4.1 // indirect
+ github.com/sagernet/nftables v0.3.0-beta.4 // indirect
github.com/sagernet/smux v0.0.0-20231208180855-7041f6ea79e7 // indirect
github.com/shoenig/go-m1cpu v0.1.6 // indirect
github.com/sina-ghaderi/poly1305 v0.0.0-20220724002748-c5926b03988b // indirect
@@ -100,14 +101,14 @@ require (
github.com/tklauser/go-sysconf v0.3.12 // indirect
github.com/tklauser/numcpus v0.6.1 // indirect
github.com/u-root/uio v0.0.0-20230220225925-ffce2a382923 // indirect
- github.com/vishvananda/netns v0.0.0-20211101163701-50045581ed74 // indirect
+ github.com/vishvananda/netns v0.0.4 // indirect
github.com/yusufpapurcu/wmi v1.2.4 // indirect
gitlab.com/yawning/bsaes.git v0.0.0-20190805113838-0a714cd429ec // indirect
go.uber.org/mock v0.4.0 // indirect
- golang.org/x/mod v0.17.0 // indirect
- golang.org/x/text v0.15.0 // indirect
+ golang.org/x/mod v0.18.0 // indirect
+ golang.org/x/text v0.16.0 // indirect
golang.org/x/time v0.5.0 // indirect
- golang.org/x/tools v0.21.0 // indirect
+ golang.org/x/tools v0.22.0 // indirect
)
-replace github.com/sagernet/sing => github.com/metacubex/sing v0.0.0-20240518125217-e63d65a914d1
+replace github.com/sagernet/sing => github.com/metacubex/sing v0.0.0-20240617013425-3e3bd9dab6a2
diff --git a/clash-meta/go.sum b/clash-meta/go.sum
index 5c8219c2bb..a1d0cf5afe 100644
--- a/clash-meta/go.sum
+++ b/clash-meta/go.sum
@@ -108,16 +108,16 @@ github.com/metacubex/quic-go v0.45.1-0.20240610004319-163fee60637e h1:bLYn3GuRvW
github.com/metacubex/quic-go v0.45.1-0.20240610004319-163fee60637e/go.mod h1:Yza2H7Ax1rxWPUcJx0vW+oAt9EsPuSiyQFhFabUPzwU=
github.com/metacubex/randv2 v0.2.0 h1:uP38uBvV2SxYfLj53kuvAjbND4RUDfFJjwr4UigMiLs=
github.com/metacubex/randv2 v0.2.0/go.mod h1:kFi2SzrQ5WuneuoLLCMkABtiBu6VRrMrWFqSPyj2cxY=
-github.com/metacubex/sing v0.0.0-20240518125217-e63d65a914d1 h1:7hDHLTmjgtRoAp59STwPQpe5Pinwi4cWex+FB3Ohvco=
-github.com/metacubex/sing v0.0.0-20240518125217-e63d65a914d1/go.mod h1:+60H3Cm91RnL9dpVGWDPHt0zTQImO9Vfqt9a4rSambI=
+github.com/metacubex/sing v0.0.0-20240617013425-3e3bd9dab6a2 h1:N5tidgg/FRmkgPw/AjRwhLUinKDx/ODCSbvv9xqRoLM=
+github.com/metacubex/sing v0.0.0-20240617013425-3e3bd9dab6a2/go.mod h1:ARkL0gM13/Iv5VCZmci/NuoOlePoIsW0m7BWfln/Hak=
github.com/metacubex/sing-quic v0.0.0-20240518034124-7696d3f7da72 h1:Wr4g1HCb5Z/QIFwFiVNjO2qL+dRu25+Mdn9xtAZZ+ew=
github.com/metacubex/sing-quic v0.0.0-20240518034124-7696d3f7da72/go.mod h1:g7Mxj7b7zm7YVqD975mk/hSmrb0A0G4bVvIMr2MMzn8=
github.com/metacubex/sing-shadowsocks v0.2.6 h1:6oEB3QcsFYnNiFeoevcXrCwJ3sAablwVSgtE9R3QeFQ=
github.com/metacubex/sing-shadowsocks v0.2.6/go.mod h1:zIkMeSnb8Mbf4hdqhw0pjzkn1d99YJ3JQm/VBg5WMTg=
github.com/metacubex/sing-shadowsocks2 v0.2.0 h1:hqwT/AfI5d5UdPefIzR6onGHJfDXs5zgOM5QSgaM/9A=
github.com/metacubex/sing-shadowsocks2 v0.2.0/go.mod h1:LCKF6j1P94zN8ZS+LXRK1gmYTVGB3squivBSXAFnOg8=
-github.com/metacubex/sing-tun v0.2.7-0.20240521155100-e8316a45a414 h1:IPxTZgQV6fVUBS8tozLMSFPHV3imYc/NbuGfp0bLQq0=
-github.com/metacubex/sing-tun v0.2.7-0.20240521155100-e8316a45a414/go.mod h1:4VsMwZH1IlgPGFK1ZbBomZ/B2MYkTgs2+gnBAr5GOIo=
+github.com/metacubex/sing-tun v0.2.7-0.20240617013029-d05cf9df9cfe h1:NrWjVEkRmEkdREVSpohMgEBoznS0PrRfJDr6iCV4348=
+github.com/metacubex/sing-tun v0.2.7-0.20240617013029-d05cf9df9cfe/go.mod h1:WwJGbCx7bQcBzuQXiDOJvZH27R0kIjKNNlISIWsL6kM=
github.com/metacubex/sing-vmess v0.1.9-0.20231207122118-72303677451f h1:QjXrHKbTMBip/C+R79bvbfr42xH1gZl3uFb0RELdZiQ=
github.com/metacubex/sing-vmess v0.1.9-0.20231207122118-72303677451f/go.mod h1:olVkD4FChQ5gKMHG4ZzuD7+fMkJY1G8vwOKpRehjrmY=
github.com/metacubex/sing-wireguard v0.0.0-20240321042214-224f96122a63 h1:AGyIB55UfQm/0ZH0HtQO9u3l//yjtHUpjeRjjPGfGRI=
@@ -159,8 +159,10 @@ github.com/quic-go/qtls-go1-20 v0.4.1/go.mod h1:X9Nh97ZL80Z+bX/gUXMbipO6OxdiDi58
github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
github.com/sagernet/bbolt v0.0.0-20231014093535-ea5cb2fe9f0a h1:+NkI2670SQpQWvkkD2QgdTuzQG263YZ+2emfpeyGqW0=
github.com/sagernet/bbolt v0.0.0-20231014093535-ea5cb2fe9f0a/go.mod h1:63s7jpZqcDAIpj8oI/1v4Izok+npJOHACFCU6+huCkM=
-github.com/sagernet/netlink v0.0.0-20220905062125-8043b4a9aa97 h1:iL5gZI3uFp0X6EslacyapiRz7LLSJyr4RajF/BhMVyE=
-github.com/sagernet/netlink v0.0.0-20220905062125-8043b4a9aa97/go.mod h1:xLnfdiJbSp8rNqYEdIW/6eDO4mVoogml14Bh2hSiFpM=
+github.com/sagernet/netlink v0.0.0-20240612041022-b9a21c07ac6a h1:ObwtHN2VpqE0ZNjr6sGeT00J8uU7JF4cNUdb44/Duis=
+github.com/sagernet/netlink v0.0.0-20240612041022-b9a21c07ac6a/go.mod h1:xLnfdiJbSp8rNqYEdIW/6eDO4mVoogml14Bh2hSiFpM=
+github.com/sagernet/nftables v0.3.0-beta.4 h1:kbULlAwAC3jvdGAC1P5Fa3GSxVwQJibNenDW2zaXr8I=
+github.com/sagernet/nftables v0.3.0-beta.4/go.mod h1:OQXAjvjNGGFxaTgVCSTRIhYB5/llyVDeapVoENYBDS8=
github.com/sagernet/sing-mux v0.2.1-0.20240124034317-9bfb33698bb6 h1:5bCAkvDDzSMITiHFjolBwpdqYsvycdTu71FsMEFXQ14=
github.com/sagernet/sing-mux v0.2.1-0.20240124034317-9bfb33698bb6/go.mod h1:khzr9AOPocLa+g53dBplwNDz4gdsyx/YM3swtAhlkHQ=
github.com/sagernet/sing-shadowtls v0.1.4 h1:aTgBSJEgnumzFenPvc+kbD9/W0PywzWevnVpEx6Tw3k=
@@ -206,8 +208,8 @@ github.com/u-root/uio v0.0.0-20230220225925-ffce2a382923/go.mod h1:eLL9Nub3yfAho
github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE=
github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU=
github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0=
-github.com/vishvananda/netns v0.0.0-20211101163701-50045581ed74 h1:gga7acRE695APm9hlsSMoOoE65U4/TcqNj90mc69Rlg=
-github.com/vishvananda/netns v0.0.0-20211101163701-50045581ed74/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0=
+github.com/vishvananda/netns v0.0.4 h1:Oeaw1EM2JMxD51g9uhtC0D7erkIjgmj8+JZc26m1YX8=
+github.com/vishvananda/netns v0.0.4/go.mod h1:SpkAiCQRtJ6TvvxPnOSyH3BMl6unz3xZlaprSwhNNJM=
github.com/wk8/go-ordered-map/v2 v2.1.8 h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/fJgbpc=
github.com/wk8/go-ordered-map/v2 v2.1.8/go.mod h1:5nJHM5DyteebpVlHnWMV0rPz6Zp7+xBAnxjb1X5vnTw=
github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0=
@@ -222,18 +224,18 @@ go4.org/netipx v0.0.0-20231129151722-fdeea329fbba h1:0b9z3AuHCjxk0x/opv64kcgZLBs
go4.org/netipx v0.0.0-20231129151722-fdeea329fbba/go.mod h1:PLyyIXexvUFg3Owu6p/WfdlivPbZJsZdgWZlrGope/Y=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI=
-golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
-golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 h1:vr/HnozRka3pE4EsMEg1lgkXJkTFJCVUX+S/ZT6wYzM=
-golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc=
+golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI=
+golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM=
+golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 h1:yixxcjnhBmY0nkL253HFVIm0JsFHwrHdT3Yh6szTnfY=
+golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI=
golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
-golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA=
-golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
+golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0=
+golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac=
-golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
+golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ=
+golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
@@ -252,19 +254,18 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y=
-golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw=
+golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws=
+golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk=
-golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
+golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4=
+golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.21.0 h1:qc0xYgIbsSDt9EyWz05J5wfa7LOVW0YTLOXrqdLAWIw=
-golang.org/x/tools v0.21.0/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
+golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA=
+golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg=
diff --git a/clash-meta/hub/executor/executor.go b/clash-meta/hub/executor/executor.go
index 56e716326b..55c40b6d90 100644
--- a/clash-meta/hub/executor/executor.go
+++ b/clash-meta/hub/executor/executor.go
@@ -97,7 +97,7 @@ func ApplyConfig(cfg *config.Config, force bool) {
updateHosts(cfg.Hosts)
updateGeneral(cfg.General)
updateNTP(cfg.NTP)
- updateDNS(cfg.DNS, cfg.RuleProviders, cfg.General.IPv6)
+ updateDNS(cfg.DNS, cfg.General.IPv6)
updateListeners(cfg.General, cfg.Listeners, force)
updateIPTables(cfg)
updateTun(cfg.General)
@@ -211,7 +211,7 @@ func updateNTP(c *config.NTP) {
}
}
-func updateDNS(c *config.DNS, ruleProvider map[string]provider.RuleProvider, generalIPv6 bool) {
+func updateDNS(c *config.DNS, generalIPv6 bool) {
if !c.Enable {
resolver.DefaultResolver = nil
resolver.DefaultHostMapper = nil
@@ -237,7 +237,7 @@ func updateDNS(c *config.DNS, ruleProvider map[string]provider.RuleProvider, gen
Default: c.DefaultNameserver,
Policy: c.NameServerPolicy,
ProxyServer: c.ProxyServerNameserver,
- RuleProviders: ruleProvider,
+ Tunnel: tunnel.Tunnel,
CacheAlgorithm: c.CacheAlgorithm,
}
@@ -355,7 +355,7 @@ func updateTun(general *config.General) {
return
}
listener.ReCreateTun(general.Tun, tunnel.Tunnel)
- listener.ReCreateRedirToTun(general.Tun.RedirectToTun)
+ listener.ReCreateRedirToTun(general.EBpf.RedirectToTun)
}
func updateSniffer(sniffer *config.Sniffer) {
@@ -507,9 +507,7 @@ func updateIPTables(cfg *config.Config) {
inboundInterface = iptables.InboundInterface
}
- if dialer.DefaultRoutingMark.Load() == 0 {
- dialer.DefaultRoutingMark.Store(2158)
- }
+ dialer.DefaultRoutingMark.CompareAndSwap(0, 2158)
err = tproxy.SetTProxyIPTables(inboundInterface, bypass, uint16(tProxyPort), DnsRedirect, dnsPort.Port())
if err != nil {
diff --git a/clash-meta/hub/route/configs.go b/clash-meta/hub/route/configs.go
index f2cf298ad3..17d858d47f 100644
--- a/clash-meta/hub/route/configs.go
+++ b/clash-meta/hub/route/configs.go
@@ -68,25 +68,34 @@ type tunSchema struct {
GSO *bool `yaml:"gso" json:"gso,omitempty"`
GSOMaxSize *uint32 `yaml:"gso-max-size" json:"gso-max-size,omitempty"`
//Inet4Address *[]netip.Prefix `yaml:"inet4-address" json:"inet4-address,omitempty"`
- Inet6Address *[]netip.Prefix `yaml:"inet6-address" json:"inet6-address,omitempty"`
- StrictRoute *bool `yaml:"strict-route" json:"strict-route,omitempty"`
+ Inet6Address *[]netip.Prefix `yaml:"inet6-address" json:"inet6-address,omitempty"`
+ IPRoute2TableIndex *int `yaml:"iproute2-table-index" json:"iproute2_table_index,omitempty"`
+ IPRoute2RuleIndex *int `yaml:"iproute2-rule-index" json:"iproute2_rule_index,omitempty"`
+ AutoRedirect *bool `yaml:"auto-redirect" json:"auto_redirect,omitempty"`
+ AutoRedirectInputMark *uint32 `yaml:"auto-redirect-input-mark" json:"auto_redirect_input_mark,omitempty"`
+ AutoRedirectOutputMark *uint32 `yaml:"auto-redirect-output-mark" json:"auto_redirect_output_mark,omitempty"`
+ StrictRoute *bool `yaml:"strict-route" json:"strict-route,omitempty"`
+ RouteAddress *[]netip.Prefix `yaml:"route-address" json:"route_address,omitempty"`
+ RouteAddressSet *[]string `yaml:"route-address-set" json:"route_address_set,omitempty"`
+ RouteExcludeAddress *[]netip.Prefix `yaml:"route-exclude-address" json:"route_exclude_address,omitempty"`
+ RouteExcludeAddressSet *[]string `yaml:"route-exclude-address-set" json:"route_exclude_address_set,omitempty"`
+ IncludeInterface *[]string `yaml:"include-interface" json:"include-interface,omitempty"`
+ ExcludeInterface *[]string `yaml:"exclude-interface" json:"exclude-interface,omitempty"`
+ IncludeUID *[]uint32 `yaml:"include-uid" json:"include-uid,omitempty"`
+ IncludeUIDRange *[]string `yaml:"include-uid-range" json:"include-uid-range,omitempty"`
+ ExcludeUID *[]uint32 `yaml:"exclude-uid" json:"exclude-uid,omitempty"`
+ ExcludeUIDRange *[]string `yaml:"exclude-uid-range" json:"exclude-uid-range,omitempty"`
+ IncludeAndroidUser *[]int `yaml:"include-android-user" json:"include-android-user,omitempty"`
+ IncludePackage *[]string `yaml:"include-package" json:"include-package,omitempty"`
+ ExcludePackage *[]string `yaml:"exclude-package" json:"exclude-package,omitempty"`
+ EndpointIndependentNat *bool `yaml:"endpoint-independent-nat" json:"endpoint-independent-nat,omitempty"`
+ UDPTimeout *int64 `yaml:"udp-timeout" json:"udp-timeout,omitempty"`
+ FileDescriptor *int `yaml:"file-descriptor" json:"file-descriptor"`
+
Inet4RouteAddress *[]netip.Prefix `yaml:"inet4-route-address" json:"inet4-route-address,omitempty"`
Inet6RouteAddress *[]netip.Prefix `yaml:"inet6-route-address" json:"inet6-route-address,omitempty"`
Inet4RouteExcludeAddress *[]netip.Prefix `yaml:"inet4-route-exclude-address" json:"inet4-route-exclude-address,omitempty"`
Inet6RouteExcludeAddress *[]netip.Prefix `yaml:"inet6-route-exclude-address" json:"inet6-route-exclude-address,omitempty"`
- IncludeInterface *[]string `yaml:"include-interface" json:"include-interface,omitempty"`
- ExcludeInterface *[]string `yaml:"exclude-interface" json:"exclude-interface,omitempty"`
- IncludeUID *[]uint32 `yaml:"include-uid" json:"include-uid,omitempty"`
- IncludeUIDRange *[]string `yaml:"include-uid-range" json:"include-uid-range,omitempty"`
- ExcludeUID *[]uint32 `yaml:"exclude-uid" json:"exclude-uid,omitempty"`
- ExcludeUIDRange *[]string `yaml:"exclude-uid-range" json:"exclude-uid-range,omitempty"`
- IncludeAndroidUser *[]int `yaml:"include-android-user" json:"include-android-user,omitempty"`
- IncludePackage *[]string `yaml:"include-package" json:"include-package,omitempty"`
- ExcludePackage *[]string `yaml:"exclude-package" json:"exclude-package,omitempty"`
- EndpointIndependentNat *bool `yaml:"endpoint-independent-nat" json:"endpoint-independent-nat,omitempty"`
- UDPTimeout *int64 `yaml:"udp-timeout" json:"udp-timeout,omitempty"`
- FileDescriptor *int `yaml:"file-descriptor" json:"file-descriptor"`
- TableIndex *int `yaml:"table-index" json:"table-index"`
}
type tuicServerSchema struct {
@@ -157,6 +166,36 @@ func pointerOrDefaultTun(p *tunSchema, def LC.Tun) LC.Tun {
if p.Inet6Address != nil {
def.Inet6Address = *p.Inet6Address
}
+ if p.IPRoute2TableIndex != nil {
+ def.IPRoute2TableIndex = *p.IPRoute2TableIndex
+ }
+ if p.IPRoute2RuleIndex != nil {
+ def.IPRoute2RuleIndex = *p.IPRoute2RuleIndex
+ }
+ if p.AutoRedirect != nil {
+ def.AutoRedirect = *p.AutoRedirect
+ }
+ if p.AutoRedirectInputMark != nil {
+ def.AutoRedirectInputMark = *p.AutoRedirectInputMark
+ }
+ if p.AutoRedirectOutputMark != nil {
+ def.AutoRedirectOutputMark = *p.AutoRedirectOutputMark
+ }
+ if p.StrictRoute != nil {
+ def.StrictRoute = *p.StrictRoute
+ }
+ if p.RouteAddress != nil {
+ def.RouteAddress = *p.RouteAddress
+ }
+ if p.RouteAddressSet != nil {
+ def.RouteAddressSet = *p.RouteAddressSet
+ }
+ if p.RouteExcludeAddress != nil {
+ def.RouteExcludeAddress = *p.RouteExcludeAddress
+ }
+ if p.RouteExcludeAddressSet != nil {
+ def.RouteExcludeAddressSet = *p.RouteExcludeAddressSet
+ }
if p.Inet4RouteAddress != nil {
def.Inet4RouteAddress = *p.Inet4RouteAddress
}
@@ -205,9 +244,6 @@ func pointerOrDefaultTun(p *tunSchema, def LC.Tun) LC.Tun {
if p.FileDescriptor != nil {
def.FileDescriptor = *p.FileDescriptor
}
- if p.TableIndex != nil {
- def.TableIndex = *p.TableIndex
- }
}
return def
}
diff --git a/clash-meta/listener/config/tun.go b/clash-meta/listener/config/tun.go
index 7467e4a6a7..cea22bfdc8 100644
--- a/clash-meta/listener/config/tun.go
+++ b/clash-meta/listener/config/tun.go
@@ -27,27 +27,36 @@ type Tun struct {
AutoDetectInterface bool `yaml:"auto-detect-interface" json:"auto-detect-interface"`
RedirectToTun []string `yaml:"-" json:"-"`
- MTU uint32 `yaml:"mtu" json:"mtu,omitempty"`
- GSO bool `yaml:"gso" json:"gso,omitempty"`
- GSOMaxSize uint32 `yaml:"gso-max-size" json:"gso-max-size,omitempty"`
- Inet4Address []netip.Prefix `yaml:"inet4-address" json:"inet4-address,omitempty"`
- Inet6Address []netip.Prefix `yaml:"inet6-address" json:"inet6-address,omitempty"`
- StrictRoute bool `yaml:"strict-route" json:"strict-route,omitempty"`
+ MTU uint32 `yaml:"mtu" json:"mtu,omitempty"`
+ GSO bool `yaml:"gso" json:"gso,omitempty"`
+ GSOMaxSize uint32 `yaml:"gso-max-size" json:"gso-max-size,omitempty"`
+ Inet4Address []netip.Prefix `yaml:"inet4-address" json:"inet4-address,omitempty"`
+ Inet6Address []netip.Prefix `yaml:"inet6-address" json:"inet6-address,omitempty"`
+ IPRoute2TableIndex int `yaml:"iproute2-table-index" json:"iproute2_table_index,omitempty"`
+ IPRoute2RuleIndex int `yaml:"iproute2-rule-index" json:"iproute2_rule_index,omitempty"`
+ AutoRedirect bool `yaml:"auto-redirect" json:"auto_redirect,omitempty"`
+ AutoRedirectInputMark uint32 `yaml:"auto-redirect-input-mark" json:"auto_redirect_input_mark,omitempty"`
+ AutoRedirectOutputMark uint32 `yaml:"auto-redirect-output-mark" json:"auto_redirect_output_mark,omitempty"`
+ StrictRoute bool `yaml:"strict-route" json:"strict-route,omitempty"`
+ RouteAddress []netip.Prefix `yaml:"route-address" json:"route_address,omitempty"`
+ RouteAddressSet []string `yaml:"route-address-set" json:"route_address_set,omitempty"`
+ RouteExcludeAddress []netip.Prefix `yaml:"route-exclude-address" json:"route_exclude_address,omitempty"`
+ RouteExcludeAddressSet []string `yaml:"route-exclude-address-set" json:"route_exclude_address_set,omitempty"`
+ IncludeInterface []string `yaml:"include-interface" json:"include-interface,omitempty"`
+ ExcludeInterface []string `yaml:"exclude-interface" json:"exclude-interface,omitempty"`
+ IncludeUID []uint32 `yaml:"include-uid" json:"include-uid,omitempty"`
+ IncludeUIDRange []string `yaml:"include-uid-range" json:"include-uid-range,omitempty"`
+ ExcludeUID []uint32 `yaml:"exclude-uid" json:"exclude-uid,omitempty"`
+ ExcludeUIDRange []string `yaml:"exclude-uid-range" json:"exclude-uid-range,omitempty"`
+ IncludeAndroidUser []int `yaml:"include-android-user" json:"include-android-user,omitempty"`
+ IncludePackage []string `yaml:"include-package" json:"include-package,omitempty"`
+ ExcludePackage []string `yaml:"exclude-package" json:"exclude-package,omitempty"`
+ EndpointIndependentNat bool `yaml:"endpoint-independent-nat" json:"endpoint-independent-nat,omitempty"`
+ UDPTimeout int64 `yaml:"udp-timeout" json:"udp-timeout,omitempty"`
+ FileDescriptor int `yaml:"file-descriptor" json:"file-descriptor"`
+
Inet4RouteAddress []netip.Prefix `yaml:"inet4-route-address" json:"inet4-route-address,omitempty"`
Inet6RouteAddress []netip.Prefix `yaml:"inet6-route-address" json:"inet6-route-address,omitempty"`
Inet4RouteExcludeAddress []netip.Prefix `yaml:"inet4-route-exclude-address" json:"inet4-route-exclude-address,omitempty"`
Inet6RouteExcludeAddress []netip.Prefix `yaml:"inet6-route-exclude-address" json:"inet6-route-exclude-address,omitempty"`
- IncludeInterface []string `yaml:"include-interface" json:"include-interface,omitempty"`
- ExcludeInterface []string `yaml:"exclude-interface" json:"exclude-interface,omitempty"`
- IncludeUID []uint32 `yaml:"include-uid" json:"include-uid,omitempty"`
- IncludeUIDRange []string `yaml:"include-uid-range" json:"include-uid-range,omitempty"`
- ExcludeUID []uint32 `yaml:"exclude-uid" json:"exclude-uid,omitempty"`
- ExcludeUIDRange []string `yaml:"exclude-uid-range" json:"exclude-uid-range,omitempty"`
- IncludeAndroidUser []int `yaml:"include-android-user" json:"include-android-user,omitempty"`
- IncludePackage []string `yaml:"include-package" json:"include-package,omitempty"`
- ExcludePackage []string `yaml:"exclude-package" json:"exclude-package,omitempty"`
- EndpointIndependentNat bool `yaml:"endpoint-independent-nat" json:"endpoint-independent-nat,omitempty"`
- UDPTimeout int64 `yaml:"udp-timeout" json:"udp-timeout,omitempty"`
- FileDescriptor int `yaml:"file-descriptor" json:"file-descriptor"`
- TableIndex int `yaml:"table-index" json:"table-index"`
}
diff --git a/clash-meta/listener/inbound/tun.go b/clash-meta/listener/inbound/tun.go
index 51747c4629..a950f80db2 100644
--- a/clash-meta/listener/inbound/tun.go
+++ b/clash-meta/listener/inbound/tun.go
@@ -18,29 +18,38 @@ type TunOption struct {
AutoRoute bool `inbound:"auto-route,omitempty"`
AutoDetectInterface bool `inbound:"auto-detect-interface,omitempty"`
- MTU uint32 `inbound:"mtu,omitempty"`
- GSO bool `inbound:"gso,omitempty"`
- GSOMaxSize uint32 `inbound:"gso-max-size,omitempty"`
- Inet4Address []string `inbound:"inet4_address,omitempty"`
- Inet6Address []string `inbound:"inet6_address,omitempty"`
- StrictRoute bool `inbound:"strict_route,omitempty"`
+ MTU uint32 `inbound:"mtu,omitempty"`
+ GSO bool `inbound:"gso,omitempty"`
+ GSOMaxSize uint32 `inbound:"gso-max-size,omitempty"`
+ Inet4Address []string `inbound:"inet4_address,omitempty"`
+ Inet6Address []string `inbound:"inet6_address,omitempty"`
+ IPRoute2TableIndex int `inbound:"iproute2-table-index"`
+ IPRoute2RuleIndex int `inbound:"iproute2-rule-index"`
+ AutoRedirect bool `inbound:"auto-redirect"`
+ AutoRedirectInputMark uint32 `inbound:"auto-redirect-input-mark"`
+ AutoRedirectOutputMark uint32 `inbound:"auto-redirect-output-mark"`
+ StrictRoute bool `inbound:"strict_route,omitempty"`
+ RouteAddress []string `inbound:"route-address"`
+ RouteAddressSet []string `inbound:"route-address-set"`
+ RouteExcludeAddress []string `inbound:"route-exclude-address"`
+ RouteExcludeAddressSet []string `inbound:"route-exclude-address-set"`
+ IncludeInterface []string `inbound:"include-interface,omitempty"`
+ ExcludeInterface []string `inbound:"exclude-interface"`
+ IncludeUID []uint32 `inbound:"include_uid,omitempty"`
+ IncludeUIDRange []string `inbound:"include_uid_range,omitempty"`
+ ExcludeUID []uint32 `inbound:"exclude_uid,omitempty"`
+ ExcludeUIDRange []string `inbound:"exclude_uid_range,omitempty"`
+ IncludeAndroidUser []int `inbound:"include_android_user,omitempty"`
+ IncludePackage []string `inbound:"include_package,omitempty"`
+ ExcludePackage []string `inbound:"exclude_package,omitempty"`
+ EndpointIndependentNat bool `inbound:"endpoint_independent_nat,omitempty"`
+ UDPTimeout int64 `inbound:"udp_timeout,omitempty"`
+ FileDescriptor int `inbound:"file-descriptor,omitempty"`
+
Inet4RouteAddress []string `inbound:"inet4_route_address,omitempty"`
Inet6RouteAddress []string `inbound:"inet6_route_address,omitempty"`
Inet4RouteExcludeAddress []string `inbound:"inet4_route_exclude_address,omitempty"`
Inet6RouteExcludeAddress []string `inbound:"inet6_route_exclude_address,omitempty"`
- IncludeInterface []string `inbound:"include-interface,omitempty"`
- ExcludeInterface []string `inbound:"exclude-interface" json:"exclude-interface,omitempty"`
- IncludeUID []uint32 `inbound:"include_uid,omitempty"`
- IncludeUIDRange []string `inbound:"include_uid_range,omitempty"`
- ExcludeUID []uint32 `inbound:"exclude_uid,omitempty"`
- ExcludeUIDRange []string `inbound:"exclude_uid_range,omitempty"`
- IncludeAndroidUser []int `inbound:"include_android_user,omitempty"`
- IncludePackage []string `inbound:"include_package,omitempty"`
- ExcludePackage []string `inbound:"exclude_package,omitempty"`
- EndpointIndependentNat bool `inbound:"endpoint_independent_nat,omitempty"`
- UDPTimeout int64 `inbound:"udp_timeout,omitempty"`
- FileDescriptor int `inbound:"file-descriptor,omitempty"`
- TableIndex int `inbound:"table-index,omitempty"`
}
func (o TunOption) Equal(config C.InboundConfig) bool {
@@ -63,6 +72,16 @@ func NewTun(options *TunOption) (*Tun, error) {
if !exist {
return nil, errors.New("invalid tun stack")
}
+
+ routeAddress, err := LC.StringSliceToNetipPrefixSlice(options.RouteAddress)
+ if err != nil {
+ return nil, err
+ }
+ routeExcludeAddress, err := LC.StringSliceToNetipPrefixSlice(options.RouteExcludeAddress)
+ if err != nil {
+ return nil, err
+ }
+
inet4Address, err := LC.StringSliceToNetipPrefixSlice(options.Inet4Address)
if err != nil {
return nil, err
@@ -91,35 +110,44 @@ func NewTun(options *TunOption) (*Tun, error) {
Base: base,
config: options,
tun: LC.Tun{
- Enable: true,
- Device: options.Device,
- Stack: stack,
- DNSHijack: options.DNSHijack,
- AutoRoute: options.AutoRoute,
- AutoDetectInterface: options.AutoDetectInterface,
- MTU: options.MTU,
- GSO: options.GSO,
- GSOMaxSize: options.GSOMaxSize,
- Inet4Address: inet4Address,
- Inet6Address: inet6Address,
- StrictRoute: options.StrictRoute,
+ Enable: true,
+ Device: options.Device,
+ Stack: stack,
+ DNSHijack: options.DNSHijack,
+ AutoRoute: options.AutoRoute,
+ AutoDetectInterface: options.AutoDetectInterface,
+ MTU: options.MTU,
+ GSO: options.GSO,
+ GSOMaxSize: options.GSOMaxSize,
+ Inet4Address: inet4Address,
+ Inet6Address: inet6Address,
+ IPRoute2TableIndex: options.IPRoute2TableIndex,
+ IPRoute2RuleIndex: options.IPRoute2RuleIndex,
+ AutoRedirect: options.AutoRedirect,
+ AutoRedirectInputMark: options.AutoRedirectInputMark,
+ AutoRedirectOutputMark: options.AutoRedirectOutputMark,
+ StrictRoute: options.StrictRoute,
+ RouteAddress: routeAddress,
+ RouteAddressSet: options.RouteAddressSet,
+ RouteExcludeAddress: routeExcludeAddress,
+ RouteExcludeAddressSet: options.RouteExcludeAddressSet,
+ IncludeInterface: options.IncludeInterface,
+ ExcludeInterface: options.ExcludeInterface,
+ IncludeUID: options.IncludeUID,
+ IncludeUIDRange: options.IncludeUIDRange,
+ ExcludeUID: options.ExcludeUID,
+ ExcludeUIDRange: options.ExcludeUIDRange,
+ IncludeAndroidUser: options.IncludeAndroidUser,
+ IncludePackage: options.IncludePackage,
+ ExcludePackage: options.ExcludePackage,
+ EndpointIndependentNat: options.EndpointIndependentNat,
+ UDPTimeout: options.UDPTimeout,
+ FileDescriptor: options.FileDescriptor,
+
Inet4RouteAddress: inet4RouteAddress,
Inet6RouteAddress: inet6RouteAddress,
Inet4RouteExcludeAddress: inet4RouteExcludeAddress,
Inet6RouteExcludeAddress: inet6RouteExcludeAddress,
- IncludeInterface: options.IncludeInterface,
- ExcludeInterface: options.ExcludeInterface,
- IncludeUID: options.IncludeUID,
- IncludeUIDRange: options.IncludeUIDRange,
- ExcludeUID: options.ExcludeUID,
- ExcludeUIDRange: options.ExcludeUIDRange,
- IncludeAndroidUser: options.IncludeAndroidUser,
- IncludePackage: options.IncludePackage,
- ExcludePackage: options.ExcludePackage,
- EndpointIndependentNat: options.EndpointIndependentNat,
- UDPTimeout: options.UDPTimeout,
- FileDescriptor: options.FileDescriptor,
- TableIndex: options.TableIndex,
},
}, nil
}
diff --git a/clash-meta/listener/listener.go b/clash-meta/listener/listener.go
index e35061882d..76860e0d43 100644
--- a/clash-meta/listener/listener.go
+++ b/clash-meta/listener/listener.go
@@ -820,11 +820,15 @@ func hasTunConfigChange(tunConf *LC.Tun) bool {
LastTunConf.MTU != tunConf.MTU ||
LastTunConf.GSO != tunConf.GSO ||
LastTunConf.GSOMaxSize != tunConf.GSOMaxSize ||
+ LastTunConf.IPRoute2TableIndex != tunConf.IPRoute2TableIndex ||
+ LastTunConf.IPRoute2RuleIndex != tunConf.IPRoute2RuleIndex ||
+ LastTunConf.AutoRedirect != tunConf.AutoRedirect ||
+ LastTunConf.AutoRedirectInputMark != tunConf.AutoRedirectInputMark ||
+ LastTunConf.AutoRedirectOutputMark != tunConf.AutoRedirectOutputMark ||
LastTunConf.StrictRoute != tunConf.StrictRoute ||
LastTunConf.EndpointIndependentNat != tunConf.EndpointIndependentNat ||
LastTunConf.UDPTimeout != tunConf.UDPTimeout ||
- LastTunConf.FileDescriptor != tunConf.FileDescriptor ||
- LastTunConf.TableIndex != tunConf.TableIndex {
+ LastTunConf.FileDescriptor != tunConf.FileDescriptor {
return true
}
@@ -836,6 +840,22 @@ func hasTunConfigChange(tunConf *LC.Tun) bool {
return tunConf.DNSHijack[i] < tunConf.DNSHijack[j]
})
+ sort.Slice(tunConf.RouteAddress, func(i, j int) bool {
+ return tunConf.RouteAddress[i].String() < tunConf.RouteAddress[j].String()
+ })
+
+ sort.Slice(tunConf.RouteAddressSet, func(i, j int) bool {
+ return tunConf.RouteAddressSet[i] < tunConf.RouteAddressSet[j]
+ })
+
+ sort.Slice(tunConf.RouteExcludeAddress, func(i, j int) bool {
+ return tunConf.RouteExcludeAddress[i].String() < tunConf.RouteExcludeAddress[j].String()
+ })
+
+ sort.Slice(tunConf.RouteExcludeAddressSet, func(i, j int) bool {
+ return tunConf.RouteExcludeAddressSet[i] < tunConf.RouteExcludeAddressSet[j]
+ })
+
sort.Slice(tunConf.Inet4Address, func(i, j int) bool {
return tunConf.Inet4Address[i].String() < tunConf.Inet4Address[j].String()
})
@@ -897,6 +917,10 @@ func hasTunConfigChange(tunConf *LC.Tun) bool {
})
if !slices.Equal(tunConf.DNSHijack, LastTunConf.DNSHijack) ||
+ !slices.Equal(tunConf.RouteAddress, LastTunConf.RouteAddress) ||
+ !slices.Equal(tunConf.RouteAddressSet, LastTunConf.RouteAddressSet) ||
+ !slices.Equal(tunConf.RouteExcludeAddress, LastTunConf.RouteExcludeAddress) ||
+ !slices.Equal(tunConf.RouteExcludeAddressSet, LastTunConf.RouteExcludeAddressSet) ||
!slices.Equal(tunConf.Inet4Address, LastTunConf.Inet4Address) ||
!slices.Equal(tunConf.Inet6Address, LastTunConf.Inet6Address) ||
!slices.Equal(tunConf.Inet4RouteAddress, LastTunConf.Inet4RouteAddress) ||
diff --git a/clash-meta/listener/sing/sing.go b/clash-meta/listener/sing/sing.go
index 4e31faeb78..10390e7326 100644
--- a/clash-meta/listener/sing/sing.go
+++ b/clash-meta/listener/sing/sing.go
@@ -198,6 +198,12 @@ func (h *ListenerHandler) NewError(ctx context.Context, err error) {
log.Warnln("%s listener get error: %+v", h.Type.String(), err)
}
+func (h *ListenerHandler) TypeMutation(typ C.Type) *ListenerHandler {
+ handler := *h
+ handler.Type = typ
+ return &handler
+}
+
func ShouldIgnorePacketError(err error) bool {
// ignore simple error
if E.IsTimeout(err) || E.IsClosed(err) || E.IsCanceled(err) {
diff --git a/clash-meta/listener/sing_tun/dns.go b/clash-meta/listener/sing_tun/dns.go
index 42926732f4..505f16acc9 100644
--- a/clash-meta/listener/sing_tun/dns.go
+++ b/clash-meta/listener/sing_tun/dns.go
@@ -8,6 +8,7 @@ import (
"time"
"github.com/metacubex/mihomo/component/resolver"
+ C "github.com/metacubex/mihomo/constant"
"github.com/metacubex/mihomo/listener/sing"
"github.com/metacubex/mihomo/log"
@@ -124,3 +125,9 @@ func (h *ListenerHandler) NewPacketConnection(ctx context.Context, conn network.
}
return h.ListenerHandler.NewPacketConnection(ctx, conn, metadata)
}
+
+func (h *ListenerHandler) TypeMutation(typ C.Type) *ListenerHandler {
+ handle := *h
+ handle.ListenerHandler = h.ListenerHandler.TypeMutation(typ)
+ return &handle
+}
diff --git a/clash-meta/listener/sing_tun/iface.go b/clash-meta/listener/sing_tun/iface.go
new file mode 100644
index 0000000000..cc14207824
--- /dev/null
+++ b/clash-meta/listener/sing_tun/iface.go
@@ -0,0 +1,70 @@
+package sing_tun
+
+import (
+ "errors"
+ "net/netip"
+
+ "github.com/metacubex/mihomo/component/iface"
+
+ "github.com/sagernet/sing/common/control"
+)
+
+type defaultInterfaceFinder struct{}
+
+var DefaultInterfaceFinder control.InterfaceFinder = (*defaultInterfaceFinder)(nil)
+
+func (f *defaultInterfaceFinder) Interfaces() []control.Interface {
+ ifaces, err := iface.Interfaces()
+ if err != nil {
+ return nil
+ }
+ interfaces := make([]control.Interface, 0, len(ifaces))
+ for _, _interface := range ifaces {
+ interfaces = append(interfaces, control.Interface(*_interface))
+ }
+
+ return interfaces
+}
+
+var errNoSuchInterface = errors.New("no such network interface")
+
+func (f *defaultInterfaceFinder) InterfaceIndexByName(name string) (int, error) {
+ ifaces, err := iface.Interfaces()
+ if err != nil {
+ return 0, err
+ }
+ for _, netInterface := range ifaces {
+ if netInterface.Name == name {
+ return netInterface.Index, nil
+ }
+ }
+ return 0, errNoSuchInterface
+}
+
+func (f *defaultInterfaceFinder) InterfaceNameByIndex(index int) (string, error) {
+ ifaces, err := iface.Interfaces()
+ if err != nil {
+ return "", err
+ }
+ for _, netInterface := range ifaces {
+ if netInterface.Index == index {
+ return netInterface.Name, nil
+ }
+ }
+ return "", errNoSuchInterface
+}
+
+func (f *defaultInterfaceFinder) InterfaceByAddr(addr netip.Addr) (*control.Interface, error) {
+ ifaces, err := iface.Interfaces()
+ if err != nil {
+ return nil, err
+ }
+ for _, netInterface := range ifaces {
+ for _, prefix := range netInterface.Addresses {
+ if prefix.Contains(addr) {
+ return (*control.Interface)(netInterface), nil
+ }
+ }
+ }
+ return nil, errNoSuchInterface
+}
diff --git a/clash-meta/listener/sing_tun/server.go b/clash-meta/listener/sing_tun/server.go
index a5edb77f63..53b885280a 100644
--- a/clash-meta/listener/sing_tun/server.go
+++ b/clash-meta/listener/sing_tun/server.go
@@ -3,27 +3,33 @@ package sing_tun
import (
"context"
"fmt"
+ "io"
"net"
"net/netip"
+ "os"
"runtime"
"strconv"
"strings"
+ "sync"
"github.com/metacubex/mihomo/adapter/inbound"
"github.com/metacubex/mihomo/component/dialer"
"github.com/metacubex/mihomo/component/iface"
"github.com/metacubex/mihomo/component/resolver"
C "github.com/metacubex/mihomo/constant"
+ "github.com/metacubex/mihomo/constant/provider"
LC "github.com/metacubex/mihomo/listener/config"
"github.com/metacubex/mihomo/listener/sing"
"github.com/metacubex/mihomo/log"
tun "github.com/metacubex/sing-tun"
"github.com/sagernet/sing/common"
- "github.com/sagernet/sing/common/control"
E "github.com/sagernet/sing/common/exceptions"
F "github.com/sagernet/sing/common/format"
"github.com/sagernet/sing/common/ranges"
+
+ "go4.org/netipx"
+ "golang.org/x/exp/maps"
"golang.org/x/exp/slices"
)
@@ -43,10 +49,21 @@ type Listener struct {
networkUpdateMonitor tun.NetworkUpdateMonitor
defaultInterfaceMonitor tun.DefaultInterfaceMonitor
packageManager tun.PackageManager
+ autoRedirect tun.AutoRedirect
+ autoRedirectOutputMark int32
+
+ ruleUpdateCallbackCloser io.Closer
+ ruleUpdateMutex sync.Mutex
+ routeAddressMap map[string]*netipx.IPSet
+ routeExcludeAddressMap map[string]*netipx.IPSet
+ routeAddressSet []*netipx.IPSet
+ routeExcludeAddressSet []*netipx.IPSet
dnsServerIp []string
}
+var emptyAddressSet = []*netipx.IPSet{{}}
+
func CalculateInterfaceName(name string) (tunName string) {
if runtime.GOOS == "darwin" {
tunName = "utun"
@@ -110,14 +127,45 @@ func New(options LC.Tun, tunnel C.Tunnel, additions ...inbound.Addition) (l *Lis
inbound.WithSpecialRules(""),
}
}
+ ctx := context.TODO()
+ rpTunnel := tunnel.(provider.Tunnel)
if options.GSOMaxSize == 0 {
options.GSOMaxSize = 65536
}
+ if runtime.GOOS != "linux" {
+ options.AutoRedirect = false
+ }
tunName := options.Device
if tunName == "" || !checkTunName(tunName) {
tunName = CalculateInterfaceName(InterfaceName)
options.Device = tunName
}
+ routeAddress := options.RouteAddress
+ if len(options.Inet4RouteAddress) > 0 {
+ routeAddress = append(routeAddress, options.Inet4RouteAddress...)
+ }
+ if len(options.Inet6RouteAddress) > 0 {
+ routeAddress = append(routeAddress, options.Inet6RouteAddress...)
+ }
+ inet4RouteAddress := common.Filter(routeAddress, func(it netip.Prefix) bool {
+ return it.Addr().Is4()
+ })
+ inet6RouteAddress := common.Filter(routeAddress, func(it netip.Prefix) bool {
+ return it.Addr().Is6()
+ })
+ routeExcludeAddress := options.RouteExcludeAddress
+ if len(options.Inet4RouteExcludeAddress) > 0 {
+ routeExcludeAddress = append(routeExcludeAddress, options.Inet4RouteExcludeAddress...)
+ }
+ if len(options.Inet6RouteExcludeAddress) > 0 {
+ routeExcludeAddress = append(routeExcludeAddress, options.Inet6RouteExcludeAddress...)
+ }
+ inet4RouteExcludeAddress := common.Filter(routeExcludeAddress, func(it netip.Prefix) bool {
+ return it.Addr().Is4()
+ })
+ inet6RouteExcludeAddress := common.Filter(routeExcludeAddress, func(it netip.Prefix) bool {
+ return it.Addr().Is6()
+ })
tunMTU := options.MTU
if tunMTU == 0 {
tunMTU = 9000
@@ -128,9 +176,21 @@ func New(options LC.Tun, tunnel C.Tunnel, additions ...inbound.Addition) (l *Lis
} else {
udpTimeout = int64(sing.UDPTimeout.Seconds())
}
- tableIndex := options.TableIndex
+ tableIndex := options.IPRoute2TableIndex
if tableIndex == 0 {
- tableIndex = 2022
+ tableIndex = tun.DefaultIPRoute2TableIndex
+ }
+ ruleIndex := options.IPRoute2RuleIndex
+ if ruleIndex == 0 {
+ ruleIndex = tun.DefaultIPRoute2RuleIndex
+ }
+ inputMark := options.AutoRedirectInputMark
+ if inputMark == 0 {
+ inputMark = tun.DefaultAutoRedirectInputMark
+ }
+ outputMark := options.AutoRedirectOutputMark
+ if outputMark == 0 {
+ outputMark = tun.DefaultAutoRedirectOutputMark
}
includeUID := uidToRange(options.IncludeUID)
if len(options.IncludeUIDRange) > 0 {
@@ -202,6 +262,8 @@ func New(options LC.Tun, tunnel C.Tunnel, additions ...inbound.Addition) (l *Lis
}
}()
+ interfaceFinder := DefaultInterfaceFinder
+
networkUpdateMonitor, err := tun.NewNetworkUpdateMonitor(log.SingLogger)
if err != nil {
err = E.Cause(err, "create NetworkUpdateMonitor")
@@ -236,11 +298,15 @@ func New(options LC.Tun, tunnel C.Tunnel, additions ...inbound.Addition) (l *Lis
Inet4Address: options.Inet4Address,
Inet6Address: options.Inet6Address,
AutoRoute: options.AutoRoute,
+ IPRoute2TableIndex: tableIndex,
+ IPRoute2RuleIndex: ruleIndex,
+ AutoRedirectInputMark: inputMark,
+ AutoRedirectOutputMark: outputMark,
StrictRoute: options.StrictRoute,
- Inet4RouteAddress: options.Inet4RouteAddress,
- Inet6RouteAddress: options.Inet6RouteAddress,
- Inet4RouteExcludeAddress: options.Inet4RouteExcludeAddress,
- Inet6RouteExcludeAddress: options.Inet6RouteExcludeAddress,
+ Inet4RouteAddress: inet4RouteAddress,
+ Inet6RouteAddress: inet6RouteAddress,
+ Inet4RouteExcludeAddress: inet4RouteExcludeAddress,
+ Inet6RouteExcludeAddress: inet6RouteExcludeAddress,
IncludeInterface: options.IncludeInterface,
ExcludeInterface: options.ExcludeInterface,
IncludeUID: includeUID,
@@ -250,7 +316,56 @@ func New(options LC.Tun, tunnel C.Tunnel, additions ...inbound.Addition) (l *Lis
ExcludePackage: options.ExcludePackage,
FileDescriptor: options.FileDescriptor,
InterfaceMonitor: defaultInterfaceMonitor,
- TableIndex: tableIndex,
+ }
+
+ if options.AutoRedirect {
+ l.routeAddressMap = make(map[string]*netipx.IPSet)
+ l.routeExcludeAddressMap = make(map[string]*netipx.IPSet)
+
+ if !options.AutoRoute {
+ return nil, E.New("`auto-route` is required by `auto-redirect`")
+ }
+ disableNFTables, dErr := strconv.ParseBool(os.Getenv("DISABLE_NFTABLES"))
+ l.autoRedirect, err = tun.NewAutoRedirect(tun.AutoRedirectOptions{
+ TunOptions: &tunOptions,
+ Context: ctx,
+ Handler: handler.TypeMutation(C.REDIR),
+ Logger: log.SingLogger,
+ NetworkMonitor: networkUpdateMonitor,
+ InterfaceFinder: interfaceFinder,
+ TableName: "mihomo",
+ DisableNFTables: dErr == nil && disableNFTables,
+ RouteAddressSet: &l.routeAddressSet,
+ RouteExcludeAddressSet: &l.routeExcludeAddressSet,
+ })
+ if err != nil {
+ err = E.Cause(err, "initialize auto redirect")
+ return
+ }
+
+ var markMode bool
+ for _, routeAddressSet := range options.RouteAddressSet {
+ rp, loaded := rpTunnel.RuleProviders()[routeAddressSet]
+ if !loaded {
+ err = E.New("parse route-address-set: rule-set not found: ", routeAddressSet)
+ return
+ }
+ l.updateRule(rp, false, false)
+ markMode = true
+ }
+ for _, routeExcludeAddressSet := range options.RouteExcludeAddressSet {
+ rp, loaded := rpTunnel.RuleProviders()[routeExcludeAddressSet]
+ if !loaded {
+ err = E.New("parse route-exclude_address-set: rule-set not found: ", routeExcludeAddressSet)
+ return
+ }
+ l.updateRule(rp, true, false)
+ markMode = true
+ }
+ if markMode {
+ tunOptions.AutoRedirectMarkMode = true
+ }
+
}
err = l.buildAndroidRules(&tunOptions)
@@ -269,14 +384,14 @@ func New(options LC.Tun, tunnel C.Tunnel, additions ...inbound.Addition) (l *Lis
resolver.AddSystemDnsBlacklist(dnsServerIp...)
stackOptions := tun.StackOptions{
- Context: context.TODO(),
+ Context: ctx,
Tun: tunIf,
TunOptions: tunOptions,
EndpointIndependentNat: options.EndpointIndependentNat,
UDPTimeout: udpTimeout,
Handler: handler,
Logger: log.SingLogger,
- InterfaceFinder: control.DefaultInterfaceFinder(),
+ InterfaceFinder: interfaceFinder,
EnforceBindInterface: EnforceBindInterface,
}
@@ -299,13 +414,76 @@ func New(options LC.Tun, tunnel C.Tunnel, additions ...inbound.Addition) (l *Lis
}
l.tunStack = tunStack
+ if l.autoRedirect != nil {
+ if len(l.options.RouteAddressSet) > 0 && len(l.routeAddressSet) == 0 {
+ l.routeAddressSet = emptyAddressSet // without this we can't call UpdateRouteAddressSet after Start
+ }
+ if len(l.options.RouteExcludeAddressSet) > 0 && len(l.routeExcludeAddressSet) == 0 {
+ l.routeExcludeAddressSet = emptyAddressSet // without this we can't call UpdateRouteAddressSet after Start
+ }
+ err = l.autoRedirect.Start()
+ if err != nil {
+ err = E.Cause(err, "auto redirect")
+ return
+ }
+ if tunOptions.AutoRedirectMarkMode {
+ l.autoRedirectOutputMark = int32(outputMark)
+ dialer.DefaultRoutingMark.Store(l.autoRedirectOutputMark)
+ l.autoRedirect.UpdateRouteAddressSet()
+ l.ruleUpdateCallbackCloser = rpTunnel.RuleUpdateCallback().Register(l.ruleUpdateCallback)
+ }
+ }
+
//l.openAndroidHotspot(tunOptions)
- l.addrStr = fmt.Sprintf("%s(%s,%s), mtu: %d, auto route: %v, ip stack: %s",
- tunName, tunOptions.Inet4Address, tunOptions.Inet6Address, tunMTU, options.AutoRoute, options.Stack)
+ l.addrStr = fmt.Sprintf("%s(%s,%s), mtu: %d, auto route: %v, auto redir: %v, ip stack: %s",
+ tunName, tunOptions.Inet4Address, tunOptions.Inet6Address, tunMTU, options.AutoRoute, options.AutoRedirect, options.Stack)
return
}
+func (l *Listener) ruleUpdateCallback(ruleProvider provider.RuleProvider) {
+ name := ruleProvider.Name()
+ if slices.Contains(l.options.RouteAddressSet, name) {
+ l.updateRule(ruleProvider, false, true)
+ return
+ }
+ if slices.Contains(l.options.RouteExcludeAddressSet, name) {
+ l.updateRule(ruleProvider, true, true)
+ return
+ }
+}
+
+func (l *Listener) updateRule(ruleProvider provider.RuleProvider, exclude bool, update bool) {
+ l.ruleUpdateMutex.Lock()
+ defer l.ruleUpdateMutex.Unlock()
+ name := ruleProvider.Name()
+ switch rp := ruleProvider.Strategy().(type) {
+ case interface{ ToIpCidr() *netipx.IPSet }:
+ if !exclude {
+ ipCidr := rp.ToIpCidr()
+ if ipCidr != nil {
+ l.routeAddressMap[name] = ipCidr
+ } else {
+ delete(l.routeAddressMap, name)
+ }
+ l.routeAddressSet = maps.Values(l.routeAddressMap)
+ } else {
+ ipCidr := rp.ToIpCidr()
+ if ipCidr != nil {
+ l.routeExcludeAddressMap[name] = ipCidr
+ } else {
+ delete(l.routeExcludeAddressMap, name)
+ }
+ l.routeExcludeAddressSet = maps.Values(l.routeExcludeAddressMap)
+ }
+ default:
+ return
+ }
+ if update && l.autoRedirect != nil {
+ l.autoRedirect.UpdateRouteAddressSet()
+ }
+}
+
func (l *Listener) FlushDefaultInterface() {
if l.options.AutoDetectInterface {
for _, destination := range []netip.Addr{netip.IPv4Unspecified(), netip.IPv6Unspecified(), netip.MustParseAddr("1.1.1.1")} {
@@ -347,11 +525,11 @@ func parseRange(uidRanges []ranges.Range[uint32], rangeList []string) ([]ranges.
}
var start, end uint64
var err error
- start, err = strconv.ParseUint(uidRange[:subIndex], 10, 32)
+ start, err = strconv.ParseUint(uidRange[:subIndex], 0, 32)
if err != nil {
return nil, E.Cause(err, "parse range start")
}
- end, err = strconv.ParseUint(uidRange[subIndex+1:], 10, 32)
+ end, err = strconv.ParseUint(uidRange[subIndex+1:], 0, 32)
if err != nil {
return nil, E.Cause(err, "parse range end")
}
@@ -363,9 +541,14 @@ func parseRange(uidRanges []ranges.Range[uint32], rangeList []string) ([]ranges.
func (l *Listener) Close() error {
l.closed = true
resolver.RemoveSystemDnsBlacklist(l.dnsServerIp...)
+ if l.autoRedirectOutputMark != 0 {
+ dialer.DefaultRoutingMark.CompareAndSwap(l.autoRedirectOutputMark, 0)
+ }
return common.Close(
+ l.ruleUpdateCallbackCloser,
l.tunStack,
l.tunIf,
+ l.autoRedirect,
l.defaultInterfaceMonitor,
l.networkUpdateMonitor,
l.packageManager,
diff --git a/clash-meta/listener/tproxy/tproxy_iptables.go b/clash-meta/listener/tproxy/tproxy_iptables.go
index 6c6e2cc81f..bc26b125fd 100644
--- a/clash-meta/listener/tproxy/tproxy_iptables.go
+++ b/clash-meta/listener/tproxy/tproxy_iptables.go
@@ -119,9 +119,7 @@ func CleanupTProxyIPTables() {
log.Warnln("Cleanup tproxy linux iptables")
- if int(dialer.DefaultRoutingMark.Load()) == 2158 {
- dialer.DefaultRoutingMark.Store(0)
- }
+ dialer.DefaultRoutingMark.CompareAndSwap(2158, 0)
if _, err := cmd.ExecCmd("iptables -t mangle -L mihomo_divert"); err != nil {
return
diff --git a/clash-meta/rules/common/base.go b/clash-meta/rules/common/base.go
index d912107c2e..670df1d969 100644
--- a/clash-meta/rules/common/base.go
+++ b/clash-meta/rules/common/base.go
@@ -20,6 +20,8 @@ func (b *Base) ShouldResolveIP() bool {
return false
}
+func (b *Base) ProviderNames() []string { return nil }
+
func HasNoResolve(params []string) bool {
for _, p := range params {
if p == noResolve {
diff --git a/clash-meta/rules/logic/logic.go b/clash-meta/rules/logic/logic.go
index af8c31a4bf..397a16b722 100644
--- a/clash-meta/rules/logic/logic.go
+++ b/clash-meta/rules/logic/logic.go
@@ -298,3 +298,10 @@ func (logic *Logic) ShouldResolveIP() bool {
func (logic *Logic) ShouldFindProcess() bool {
return logic.needProcess
}
+
+func (logic *Logic) ProviderNames() (names []string) {
+ for _, rule := range logic.rules {
+ names = append(names, rule.ProviderNames()...)
+ }
+ return
+}
diff --git a/clash-meta/rules/provider/ipcidr_strategy.go b/clash-meta/rules/provider/ipcidr_strategy.go
index c93facd95e..d0545c7cc2 100644
--- a/clash-meta/rules/provider/ipcidr_strategy.go
+++ b/clash-meta/rules/provider/ipcidr_strategy.go
@@ -4,6 +4,8 @@ import (
"github.com/metacubex/mihomo/component/cidr"
C "github.com/metacubex/mihomo/constant"
"github.com/metacubex/mihomo/log"
+
+ "go4.org/netipx"
)
type ipcidrStrategy struct {
@@ -52,6 +54,10 @@ func (i *ipcidrStrategy) FinishInsert() {
i.cidrSet.Merge()
}
+func (i *ipcidrStrategy) ToIpCidr() *netipx.IPSet {
+ return i.cidrSet.ToIPSet()
+}
+
func NewIPCidrStrategy() *ipcidrStrategy {
return &ipcidrStrategy{}
}
diff --git a/clash-meta/rules/provider/patch_android.go b/clash-meta/rules/provider/patch_android.go
index 2bd5ffc874..7ef1df1b59 100644
--- a/clash-meta/rules/provider/patch_android.go
+++ b/clash-meta/rules/provider/patch_android.go
@@ -12,8 +12,8 @@ type UpdatableProvider interface {
UpdatedAt() time.Time
}
-func (f *ruleSetProvider) UpdatedAt() time.Time {
- return f.Fetcher.UpdatedAt
+func (rp *ruleSetProvider) UpdatedAt() time.Time {
+ return rp.Fetcher.UpdatedAt
}
func (rp *ruleSetProvider) Close() error {
diff --git a/clash-meta/rules/provider/provider.go b/clash-meta/rules/provider/provider.go
index adc2e44a29..7616290f74 100644
--- a/clash-meta/rules/provider/provider.go
+++ b/clash-meta/rules/provider/provider.go
@@ -15,12 +15,14 @@ import (
P "github.com/metacubex/mihomo/constant/provider"
)
-var (
- ruleProviders = map[string]P.RuleProvider{}
-)
+var tunnel P.Tunnel
+
+func SetTunnel(t P.Tunnel) {
+ tunnel = t
+}
type ruleSetProvider struct {
- *resource.Fetcher[any]
+ *resource.Fetcher[ruleStrategy]
behavior P.RuleBehavior
format P.RuleFormat
strategy ruleStrategy
@@ -49,16 +51,6 @@ type ruleStrategy interface {
FinishInsert()
}
-func RuleProviders() map[string]P.RuleProvider {
- return ruleProviders
-}
-
-func SetRuleProvider(ruleProvider P.RuleProvider) {
- if ruleProvider != nil {
- ruleProviders[(ruleProvider).Name()] = ruleProvider
- }
-}
-
func (rp *ruleSetProvider) Type() P.ProviderType {
return P.Rule
}
@@ -99,8 +91,8 @@ func (rp *ruleSetProvider) ShouldFindProcess() bool {
return rp.strategy.ShouldFindProcess()
}
-func (rp *ruleSetProvider) AsRule(adaptor string) C.Rule {
- panic("implement me")
+func (rp *ruleSetProvider) Strategy() any {
+ return rp.strategy
}
func (rp *ruleSetProvider) MarshalJSON() ([]byte, error) {
@@ -123,13 +115,15 @@ func NewRuleSetProvider(name string, behavior P.RuleBehavior, format P.RuleForma
format: format,
}
- onUpdate := func(elm interface{}) {
- strategy := elm.(ruleStrategy)
+ onUpdate := func(strategy ruleStrategy) {
rp.strategy = strategy
+ tunnel.RuleUpdateCallback().Emit(rp)
}
rp.strategy = newStrategy(behavior, parse)
- rp.Fetcher = resource.NewFetcher(name, interval, vehicle, func(bytes []byte) (any, error) { return rulesParse(bytes, newStrategy(behavior, parse), format) }, onUpdate)
+ rp.Fetcher = resource.NewFetcher(name, interval, vehicle, func(bytes []byte) (ruleStrategy, error) {
+ return rulesParse(bytes, newStrategy(behavior, parse), format)
+ }, onUpdate)
wrapper := &RuleSetProvider{
rp,
@@ -158,7 +152,7 @@ func newStrategy(behavior P.RuleBehavior, parse func(tp, payload, target string,
var ErrNoPayload = errors.New("file must have a `payload` field")
-func rulesParse(buf []byte, strategy ruleStrategy, format P.RuleFormat) (any, error) {
+func rulesParse(buf []byte, strategy ruleStrategy, format P.RuleFormat) (ruleStrategy, error) {
strategy.Reset()
schema := &RulePayload{}
diff --git a/clash-meta/rules/provider/rule_set.go b/clash-meta/rules/provider/rule_set.go
index 1d94018868..d85db80558 100644
--- a/clash-meta/rules/provider/rule_set.go
+++ b/clash-meta/rules/provider/rule_set.go
@@ -1,7 +1,6 @@
package provider
import (
- "fmt"
C "github.com/metacubex/mihomo/constant"
P "github.com/metacubex/mihomo/constant/provider"
"github.com/metacubex/mihomo/rules/common"
@@ -11,13 +10,18 @@ type RuleSet struct {
*common.Base
ruleProviderName string
adapter string
- ruleProvider P.RuleProvider
noResolveIP bool
shouldFindProcess bool
}
func (rs *RuleSet) ShouldFindProcess() bool {
- return rs.shouldFindProcess || rs.getProviders().ShouldFindProcess()
+ if rs.shouldFindProcess {
+ return true
+ }
+ if provider, ok := rs.getProvider(); ok {
+ return provider.ShouldFindProcess()
+ }
+ return false
}
func (rs *RuleSet) RuleType() C.RuleType {
@@ -25,7 +29,10 @@ func (rs *RuleSet) RuleType() C.RuleType {
}
func (rs *RuleSet) Match(metadata *C.Metadata) (bool, string) {
- return rs.getProviders().Match(metadata), rs.adapter
+ if provider, ok := rs.getProvider(); ok {
+ return provider.Match(metadata), rs.adapter
+ }
+ return false, ""
}
func (rs *RuleSet) Adapter() string {
@@ -33,31 +40,37 @@ func (rs *RuleSet) Adapter() string {
}
func (rs *RuleSet) Payload() string {
- return rs.getProviders().Name()
+ if provider, ok := rs.getProvider(); ok {
+ return provider.Name()
+ }
+ return ""
}
func (rs *RuleSet) ShouldResolveIP() bool {
- return !rs.noResolveIP && rs.getProviders().ShouldResolveIP()
-}
-func (rs *RuleSet) getProviders() P.RuleProvider {
- if rs.ruleProvider == nil {
- rp := RuleProviders()[rs.ruleProviderName]
- rs.ruleProvider = rp
+ if rs.noResolveIP {
+ return false
}
+ if provider, ok := rs.getProvider(); ok {
+ return provider.ShouldResolveIP()
+ }
+ return false
+}
- return rs.ruleProvider
+func (rs *RuleSet) ProviderNames() []string {
+ return []string{rs.ruleProviderName}
+}
+
+func (rs *RuleSet) getProvider() (P.RuleProvider, bool) {
+ pp, ok := tunnel.RuleProviders()[rs.ruleProviderName]
+ return pp, ok
}
func NewRuleSet(ruleProviderName string, adapter string, noResolveIP bool) (*RuleSet, error) {
- rp, ok := RuleProviders()[ruleProviderName]
- if !ok {
- return nil, fmt.Errorf("rule set %s not found", ruleProviderName)
- }
- return &RuleSet{
+ rs := &RuleSet{
Base: &common.Base{},
ruleProviderName: ruleProviderName,
adapter: adapter,
- ruleProvider: rp,
noResolveIP: noResolveIP,
- }, nil
+ }
+ return rs, nil
}
diff --git a/clash-meta/tunnel/tunnel.go b/clash-meta/tunnel/tunnel.go
index 2c1b894f9d..1a6f104dc9 100644
--- a/clash-meta/tunnel/tunnel.go
+++ b/clash-meta/tunnel/tunnel.go
@@ -13,6 +13,7 @@ import (
"time"
N "github.com/metacubex/mihomo/common/net"
+ "github.com/metacubex/mihomo/common/utils"
"github.com/metacubex/mihomo/component/loopback"
"github.com/metacubex/mihomo/component/nat"
P "github.com/metacubex/mihomo/component/process"
@@ -50,11 +51,15 @@ var (
findProcessMode P.FindProcessMode
fakeIPRange netip.Prefix
+
+ ruleUpdateCallback = utils.NewCallback[provider.RuleProvider]()
)
type tunnel struct{}
-var Tunnel C.Tunnel = tunnel{}
+var Tunnel = tunnel{}
+var _ C.Tunnel = Tunnel
+var _ provider.Tunnel = Tunnel
func (t tunnel) HandleTCPConn(conn net.Conn, metadata *C.Metadata) {
connCtx := icontext.NewConnContext(conn, metadata)
@@ -73,6 +78,18 @@ func (t tunnel) NatTable() C.NatTable {
return natTable
}
+func (t tunnel) Providers() map[string]provider.ProxyProvider {
+ return providers
+}
+
+func (t tunnel) RuleProviders() map[string]provider.RuleProvider {
+ return ruleProviders
+}
+
+func (t tunnel) RuleUpdateCallback() *utils.Callback[provider.RuleProvider] {
+ return ruleUpdateCallback
+}
+
func OnSuspend() {
status.Store(Suspend)
}
diff --git a/clash-nyanpasu/backend/tauri/src/utils/resolve.rs b/clash-nyanpasu/backend/tauri/src/utils/resolve.rs
index 693918cadb..fe90206959 100644
--- a/clash-nyanpasu/backend/tauri/src/utils/resolve.rs
+++ b/clash-nyanpasu/backend/tauri/src/utils/resolve.rs
@@ -120,7 +120,7 @@ pub fn create_window(app_handle: &AppHandle) {
let mut builder = tauri::window::WindowBuilder::new(
app_handle,
"main".to_string(),
- tauri::WindowUrl::App("/proxies".into()),
+ tauri::WindowUrl::App("/dashboard".into()),
)
.title("Clash Nyanpasu")
.fullscreen(false)
diff --git a/clash-nyanpasu/frontend/interface/ipc/useClashWS.ts b/clash-nyanpasu/frontend/interface/ipc/useClashWS.ts
index cbfb740b68..d260171422 100644
--- a/clash-nyanpasu/frontend/interface/ipc/useClashWS.ts
+++ b/clash-nyanpasu/frontend/interface/ipc/useClashWS.ts
@@ -22,6 +22,8 @@ export const useClashWS = () => {
return {
connections: resolveUrl("connections"),
logs: resolveUrl("logs"),
+ traffic: resolveUrl("traffic"),
+ memory: resolveUrl("memory"),
};
}
}, [getClashInfo.data]);
@@ -30,8 +32,14 @@ export const useClashWS = () => {
const logs = useWebSocket(url?.logs ?? "");
+ const traffic = useWebSocket(url?.traffic ?? "");
+
+ const memory = useWebSocket(url?.memory ?? "");
+
return {
connections,
logs,
+ traffic,
+ memory,
};
};
diff --git a/clash-nyanpasu/frontend/interface/service/types.ts b/clash-nyanpasu/frontend/interface/service/types.ts
index a3bcf2b7cd..45db58cf58 100644
--- a/clash-nyanpasu/frontend/interface/service/types.ts
+++ b/clash-nyanpasu/frontend/interface/service/types.ts
@@ -189,3 +189,13 @@ export interface ProviderItem {
updatedAt: string;
vehicleType: string;
}
+
+export interface Traffic {
+ up: number;
+ down: number;
+}
+
+export interface Memory {
+ inuse: number;
+ oslimit: number;
+}
diff --git a/clash-nyanpasu/frontend/nyanpasu/package.json b/clash-nyanpasu/frontend/nyanpasu/package.json
index e5e917dac6..117cf9f962 100644
--- a/clash-nyanpasu/frontend/nyanpasu/package.json
+++ b/clash-nyanpasu/frontend/nyanpasu/package.json
@@ -56,9 +56,10 @@
"@typescript-eslint/eslint-plugin": "7.13.0",
"@typescript-eslint/parser": "7.13.0",
"@vitejs/plugin-react": "4.3.1",
- "@vitejs/plugin-react-swc": "^3.7.0",
+ "@vitejs/plugin-react-swc": "3.7.0",
"sass": "1.77.5",
- "shiki": "1.6.5",
+ "shiki": "1.7.0",
+ "tailwindcss-textshadow": "2.1.3",
"vite": "5.3.1",
"vite-plugin-monaco-editor": "1.1.3",
"vite-plugin-sass-dts": "1.3.22",
diff --git a/clash-nyanpasu/frontend/nyanpasu/src/components/app/app-drawer.tsx b/clash-nyanpasu/frontend/nyanpasu/src/components/app/app-drawer.tsx
index 3fe76b515c..1be22bb28f 100644
--- a/clash-nyanpasu/frontend/nyanpasu/src/components/app/app-drawer.tsx
+++ b/clash-nyanpasu/frontend/nyanpasu/src/components/app/app-drawer.tsx
@@ -34,13 +34,29 @@ export const AppDrawer = ({ isDrawer }: { isDrawer?: boolean }) => {
data-windrag
>
-
+
+
+ {isDrawer && (
+
+ Clash Nyanpasu
+
+ )}
-
+
{Object.entries(routes).map(([name, { path, icon }]) => {
return (
diff --git a/clash-nyanpasu/frontend/nyanpasu/src/components/app/modules/route-list-item.tsx b/clash-nyanpasu/frontend/nyanpasu/src/components/app/modules/route-list-item.tsx
index dad1e3cdac..2758082c99 100644
--- a/clash-nyanpasu/frontend/nyanpasu/src/components/app/modules/route-list-item.tsx
+++ b/clash-nyanpasu/frontend/nyanpasu/src/components/app/modules/route-list-item.tsx
@@ -23,7 +23,7 @@ export const RouteListItem = ({
return (
{t(`label_${name}`)}
diff --git a/clash-nyanpasu/frontend/nyanpasu/src/components/connections/connections-table.tsx b/clash-nyanpasu/frontend/nyanpasu/src/components/connections/connections-table.tsx
index de11f9f116..f11a935079 100644
--- a/clash-nyanpasu/frontend/nyanpasu/src/components/connections/connections-table.tsx
+++ b/clash-nyanpasu/frontend/nyanpasu/src/components/connections/connections-table.tsx
@@ -45,9 +45,14 @@ export const ConnectionsTable = () => {
? connection.upload - previousConnection.upload
: 0;
+ const host = String(
+ connection.metadata.host || connection.metadata.destinationIP,
+ );
+
updatedConnections.push({
...connection,
...connection.metadata,
+ host,
downloadSpeed,
uploadSpeed,
});
diff --git a/clash-nyanpasu/frontend/nyanpasu/src/components/dashboard/data-panel.tsx b/clash-nyanpasu/frontend/nyanpasu/src/components/dashboard/data-panel.tsx
new file mode 100644
index 0000000000..eb14486b64
--- /dev/null
+++ b/clash-nyanpasu/frontend/nyanpasu/src/components/dashboard/data-panel.tsx
@@ -0,0 +1,134 @@
+import Dataline, { DatalineProps } from "@/components/dashboard/dataline";
+import {
+ Connection,
+ Memory,
+ Traffic,
+ useClashWS,
+ useNyanpasu,
+} from "@nyanpasu/interface";
+import { useInterval } from "ahooks";
+import { useState } from "react";
+import {
+ ArrowDownward,
+ ArrowUpward,
+ MemoryOutlined,
+ SettingsEthernet,
+} from "@mui/icons-material";
+import Grid from "@mui/material/Unstable_Grid2";
+import { useTranslation } from "react-i18next";
+
+export const DataPanel = () => {
+ const { t } = useTranslation();
+
+ const [traffic, setTraffice] = useState
(
+ new Array(16).fill({ up: 0, down: 0 }),
+ );
+
+ const [memory, setMemory] = useState(
+ new Array(16).fill({ inuse: 0 }),
+ );
+
+ const [connection, setConnection] = useState<
+ {
+ downloadTotal: number;
+ uploadTotal: number;
+ connections: number;
+ }[]
+ >(
+ new Array(16).fill({
+ downloadTotal: 0,
+ uploadTotal: 0,
+ connections: 0,
+ }),
+ );
+
+ const {
+ traffic: { latestMessage: latestTraffic },
+ memory: { latestMessage: latestMemory },
+ connections: { latestMessage: latestConnections },
+ } = useClashWS();
+
+ useInterval(() => {
+ const trafficData = latestTraffic?.data
+ ? (JSON.parse(latestTraffic.data) as Traffic)
+ : { up: 0, down: 0 };
+
+ setTraffice((prevData) => [...prevData.slice(1), trafficData]);
+
+ const meomryData = latestMemory?.data
+ ? (JSON.parse(latestMemory.data) as Memory)
+ : { inuse: 0, oslimit: 0 };
+
+ setMemory((prevData) => [...prevData.slice(1), meomryData]);
+
+ const connectionsData = latestConnections?.data
+ ? (JSON.parse(latestConnections.data) as Connection.Response)
+ : {
+ downloadTotal: 0,
+ uploadTotal: 0,
+ };
+
+ setConnection((prevData) => [
+ ...prevData.slice(1),
+ {
+ downloadTotal: connectionsData.downloadTotal,
+ uploadTotal: connectionsData.uploadTotal,
+ connections: connectionsData.connections?.length ?? 0,
+ },
+ ]);
+ }, 1000);
+
+ const { nyanpasuConfig } = useNyanpasu();
+
+ const supportMemory =
+ nyanpasuConfig?.clash_core &&
+ ["mihomo", "mihomo-alpha"].includes(nyanpasuConfig?.clash_core);
+
+ const Datalines: DatalineProps[] = [
+ {
+ data: traffic.map((item) => item.up),
+ icon: ArrowUpward,
+ title: t("Upload Traffic"),
+ total: connection.at(-1)?.uploadTotal,
+ type: "speed",
+ },
+ {
+ data: traffic.map((item) => item.down),
+ icon: ArrowDownward,
+ title: t("Download Traffic"),
+ total: connection.at(-1)?.downloadTotal,
+ type: "speed",
+ },
+ {
+ data: connection.map((item) => item.connections),
+ icon: SettingsEthernet,
+ title: t("Active Connections"),
+ type: "raw",
+ },
+ ];
+
+ if (supportMemory) {
+ Datalines.splice(2, 0, {
+ data: memory.map((item) => item.inuse),
+ icon: MemoryOutlined,
+ title: t("Memory"),
+ });
+ }
+
+ const gridLayout = {
+ sm: 12,
+ md: 6,
+ lg: supportMemory ? 3 : 4,
+ xl: supportMemory ? 3 : 4,
+ };
+
+ return Datalines.map((props, index) => {
+ return (
+
+
+
+ );
+ });
+};
+
+export default DataPanel;
diff --git a/clash-nyanpasu/frontend/nyanpasu/src/components/dashboard/dataline.tsx b/clash-nyanpasu/frontend/nyanpasu/src/components/dashboard/dataline.tsx
new file mode 100644
index 0000000000..712979c35d
--- /dev/null
+++ b/clash-nyanpasu/frontend/nyanpasu/src/components/dashboard/dataline.tsx
@@ -0,0 +1,53 @@
+import parseTraffic from "@/utils/parse-traffic";
+import { SvgIconComponent } from "@mui/icons-material";
+import { Paper } from "@mui/material";
+import { Sparkline } from "@nyanpasu/ui";
+import { FC, cloneElement } from "react";
+import { useTranslation } from "react-i18next";
+
+export interface DatalineProps {
+ data: number[];
+ icon: SvgIconComponent;
+ title: string;
+ total?: number;
+ type?: "speed" | "raw";
+}
+
+export const Dataline: FC = ({
+ data,
+ icon,
+ title,
+ total,
+ type,
+}) => {
+ const { t } = useTranslation();
+
+ return (
+
+
+
+
+
+ {cloneElement(icon)}
+
+
{title}
+
+
+
+ {type === "raw" ? data.at(-1) : parseTraffic(data.at(-1)).join(" ")}
+ {type === "speed" && "/s"}
+
+
+
+ {total && (
+
+ {t("Total")}: {parseTraffic(total).join(" ")}
+
+ )}
+
+
+
+ );
+};
+
+export default Dataline;
diff --git a/clash-nyanpasu/frontend/nyanpasu/src/locales/en.json b/clash-nyanpasu/frontend/nyanpasu/src/locales/en.json
index db4338f997..f32510d792 100644
--- a/clash-nyanpasu/frontend/nyanpasu/src/locales/en.json
+++ b/clash-nyanpasu/frontend/nyanpasu/src/locales/en.json
@@ -1,4 +1,5 @@
{
+ "label_dashboard": "Dashboard",
"label_proxies": "Proxies",
"label_profiles": "Profiles",
"label_connections": "Connections",
@@ -7,8 +8,10 @@
"label_settings": "Settings",
"label_providers": "Providers",
"Connections": "Connections",
- "Upload Total": "Upload Total",
- "Download Total": "Download Total",
+ "Upload Traffic": "Upload",
+ "Download Traffic": "Download",
+ "Total": "Total",
+ "Memory": "Memory",
"Active Connections": "Active Connections",
"Logs": "Logs",
"Clear": "Clear",
@@ -18,6 +21,7 @@
"global": "global",
"direct": "direct",
"script": "script",
+ "Dashboard": "Dashboard",
"Profiles": "Profiles",
"Profile URL": "Profile URL",
"Import": "Import",
@@ -116,7 +120,6 @@
"Retain 30 Days": "Retain 30 Days",
"Retain 90 Days": "Retain 90 Days",
"Max Log Files": "Max Log Files",
-
"Collect Logs": "Collect Logs",
"Back": "Back",
"Save": "Save",
diff --git a/clash-nyanpasu/frontend/nyanpasu/src/locales/zh.json b/clash-nyanpasu/frontend/nyanpasu/src/locales/zh.json
index 13539fce76..9496b15bdd 100644
--- a/clash-nyanpasu/frontend/nyanpasu/src/locales/zh.json
+++ b/clash-nyanpasu/frontend/nyanpasu/src/locales/zh.json
@@ -1,4 +1,5 @@
{
+ "label_dashboard": "概 览",
"label_proxies": "代 理",
"label_profiles": "配 置",
"label_connections": "连 接",
@@ -6,10 +7,13 @@
"label_rules": "规 则",
"label_settings": "设 置",
"label_providers": "资 源",
-
"Connections": "连接",
"Upload Total": "上传总量",
"Download Total": "下载总量",
+ "Upload Traffic": "上传流量",
+ "Download Traffic": "下载流量",
+ "Total": "总量",
+ "Memory": "内存占用",
"Active Connections": "活动连接",
"Logs": "日志",
"Clear": "清除",
@@ -19,7 +23,7 @@
"global": "全局",
"direct": "直连",
"script": "脚本",
-
+ "Dashboard": "概览",
"Profiles": "配置",
"Profile URL": "配置文件链接",
"Import": "导入",
@@ -42,7 +46,6 @@
"Update All Profiles": "更新所有配置",
"View Runtime Config": "查看运行时配置",
"Reactivate Profiles": "重新激活配置",
-
"Location": "当前节点",
"Delay check": "延迟测试",
"Sort by default": "默认排序",
@@ -53,7 +56,6 @@
"Filter": "过滤节点",
"Filter conditions": "过滤条件",
"Refresh profiles": "刷新配置",
-
"Type": "类型",
"Name": "名称",
"Descriptions": "描述",
@@ -61,7 +63,6 @@
"Update Interval": "更新间隔",
"Use System Proxy": "使用系统代理更新",
"Use Clash Proxy": "使用Clash代理更新",
-
"Settings": "设置",
"Clash Setting": "Clash 设置",
"System Setting": "系统设置",
@@ -113,7 +114,6 @@
"ReadOnly": "只读",
"Check Updates": "检查更新",
"Restart": "重启内核",
-
"Tasks": "定期任务",
"Auto Log Clean": "自动清理日志",
"Never Clean": "不清理",
@@ -122,16 +122,13 @@
"Retain 30 Days": "保留30天",
"Retain 90 Days": "保留90天",
"Max Log Files": "最大日志文件数",
-
"Collect Logs": "收集日志",
"Back": "返回",
"Save": "保存",
"Cancel": "取消",
-
"Default": "默认",
"Download Speed": "下载速度",
"Upload Speed": "上传速度",
-
"open_or_close_dashboard": "打开/关闭面板",
"clash_mode_rule": "规则模式",
"clash_mode_global": "全局模式",
@@ -143,26 +140,21 @@
"toggle_tun_mode": "切换Tun模式",
"enable_tun_mode": "开启Tun模式",
"disable_tun_mode": "关闭Tun模式",
-
"App Log Level": "App日志等级",
"Auto Close Connections": "自动关闭连接",
"Enable Clash Fields Filter": "开启Clash字段过滤",
"Enable Builtin Enhanced": "开启内建增强功能",
"Proxy Layout Column": "代理页布局列数",
"Default Latency Test": "默认测试链接",
-
"Error": "错误",
"Success": "成功",
-
"Providers": "资源",
"Rules Providers": "规则集",
"Update Rules Providers All": "全部更新",
"Rule Set rules": "{{rule}} 条规则",
"Last Update": "{{fromNow}}更新",
"Update Rules Providers Success": "更新规则集成功",
-
"Portable Update Error": "便携版无法自动更新,请到 Github 下载最新版本",
-
"Enable Tray Proxies Selector": "开启托盘代理选择",
"Proxy Set proxies": "{{rule}} 个节点",
"Update Proxies Providers All": "全部更新",
diff --git a/clash-nyanpasu/frontend/nyanpasu/src/pages/dashboard.tsx b/clash-nyanpasu/frontend/nyanpasu/src/pages/dashboard.tsx
new file mode 100644
index 0000000000..89f9be23aa
--- /dev/null
+++ b/clash-nyanpasu/frontend/nyanpasu/src/pages/dashboard.tsx
@@ -0,0 +1,18 @@
+import { BasePage } from "@nyanpasu/ui";
+import Grid from "@mui/material/Unstable_Grid2";
+import DataPanel from "@/components/dashboard/data-panel";
+import { useTranslation } from "react-i18next";
+
+export const Dashboard = () => {
+ const { t } = useTranslation();
+
+ return (
+
+
+
+
+
+ );
+};
+
+export default Dashboard;
diff --git a/clash-nyanpasu/frontend/nyanpasu/src/router.ts b/clash-nyanpasu/frontend/nyanpasu/src/router.ts
index d5e7461ebb..ca3f0d47d1 100644
--- a/clash-nyanpasu/frontend/nyanpasu/src/router.ts
+++ b/clash-nyanpasu/frontend/nyanpasu/src/router.ts
@@ -1,23 +1,26 @@
// Generouted, changes to this file will be overriden
/* eslint-disable */
-import { components, hooks, utils } from '@generouted/react-router/client'
+import { components, hooks, utils } from "@generouted/react-router/client";
export type Path =
| `/connections`
+ | `/dashboard`
| `/logs`
| `/profiles`
| `/providers`
| `/proxies`
| `/rules`
- | `/settings`
+ | `/settings`;
-export type Params = {
-
-}
+export type Params = {};
-export type ModalPath = never
+export type ModalPath = never;
-export const { Link, Navigate } = components()
-export const { useModals, useNavigate, useParams } = hooks()
-export const { redirect } = utils()
+export const { Link, Navigate } = components();
+export const { useModals, useNavigate, useParams } = hooks<
+ Path,
+ Params,
+ ModalPath
+>();
+export const { redirect } = utils();
diff --git a/clash-nyanpasu/frontend/nyanpasu/src/utils/routes-utils.ts b/clash-nyanpasu/frontend/nyanpasu/src/utils/routes-utils.ts
index bef788c1e8..22b07e868c 100644
--- a/clash-nyanpasu/frontend/nyanpasu/src/utils/routes-utils.ts
+++ b/clash-nyanpasu/frontend/nyanpasu/src/utils/routes-utils.ts
@@ -1,5 +1,6 @@
import {
Apps,
+ Dashboard,
DesignServices,
GridView,
Public,
@@ -10,6 +11,7 @@ import {
} from "@mui/icons-material";
const routes: { [key: string]: SvgIconComponent } = {
+ dashboard: Dashboard,
proxies: Public,
profiles: GridView,
connections: SettingsEthernet,
diff --git a/clash-nyanpasu/frontend/nyanpasu/tailwind.config.js b/clash-nyanpasu/frontend/nyanpasu/tailwind.config.js
index 43a0227238..bbc1ec5181 100644
--- a/clash-nyanpasu/frontend/nyanpasu/tailwind.config.js
+++ b/clash-nyanpasu/frontend/nyanpasu/tailwind.config.js
@@ -1,8 +1,24 @@
+/* eslint-disable @typescript-eslint/no-var-requires */
+const plugin = require("tailwindcss/plugin");
+
/** @type {import('tailwindcss').Config} */
export default {
content: ["./src/**/*.{tsx,ts}"],
theme: {
- extend: {},
+ extend: {
+ maxHeight: {
+ "1/8": "calc(100vh / 8)",
+ },
+ },
},
- plugins: [],
+ plugins: [
+ require("tailwindcss-textshadow"),
+ plugin(({ addBase }) => {
+ addBase({
+ ".scrollbar-hidden::-webkit-scrollbar": {
+ width: "0px",
+ },
+ });
+ }),
+ ],
};
diff --git a/clash-nyanpasu/frontend/nyanpasu/tsconfig.json b/clash-nyanpasu/frontend/nyanpasu/tsconfig.json
index f95206fd63..059307d1e6 100644
--- a/clash-nyanpasu/frontend/nyanpasu/tsconfig.json
+++ b/clash-nyanpasu/frontend/nyanpasu/tsconfig.json
@@ -20,6 +20,7 @@
"@/*": ["src/*"],
"~/*": ["./*"],
},
+ "jsxImportSource": "@emotion/react",
},
"include": ["./src"],
"references": [{ "path": "../interface/tsconfig.json" }],
diff --git a/clash-nyanpasu/frontend/nyanpasu/vite.config.ts b/clash-nyanpasu/frontend/nyanpasu/vite.config.ts
index 320a221835..b07cff7c91 100644
--- a/clash-nyanpasu/frontend/nyanpasu/vite.config.ts
+++ b/clash-nyanpasu/frontend/nyanpasu/vite.config.ts
@@ -46,7 +46,6 @@ export default defineConfig(({ command }) => {
tsconfigPaths(),
svgr(),
react({
- jsxImportSource: "@emotion/react",
// babel: {
// plugins: ["@emotion/babel-plugin"],
// },
@@ -57,12 +56,7 @@ export default defineConfig(({ command }) => {
isDev && devtools(),
],
optimizeDeps: {
- include: [
- "@emotion/react",
- "@emotion/styled",
- "@mui/lab/*",
- "@mui/material/*",
- ],
+ include: ["@emotion/styled", "@mui/lab/*", "@mui/material/*"],
},
esbuild: {
drop: isDev ? undefined : ["console", "debugger"],
diff --git a/clash-nyanpasu/frontend/ui/chart/index.ts b/clash-nyanpasu/frontend/ui/chart/index.ts
new file mode 100644
index 0000000000..b46dbb53ef
--- /dev/null
+++ b/clash-nyanpasu/frontend/ui/chart/index.ts
@@ -0,0 +1 @@
+export * from "./sparkline";
diff --git a/clash-nyanpasu/frontend/ui/chart/sparkline.tsx b/clash-nyanpasu/frontend/ui/chart/sparkline.tsx
new file mode 100644
index 0000000000..056d04e667
--- /dev/null
+++ b/clash-nyanpasu/frontend/ui/chart/sparkline.tsx
@@ -0,0 +1,100 @@
+import { CSSProperties, FC, useEffect, useRef } from "react";
+import * as d3 from "d3";
+import { alpha, useTheme } from "@mui/material";
+
+interface SparklineProps {
+ data: number[];
+ className?: string;
+ style?: CSSProperties;
+}
+
+export const Sparkline: FC = ({ data, className, style }) => {
+ const { palette } = useTheme();
+
+ const svgRef = useRef(null);
+
+ useEffect(() => {
+ if (!svgRef.current) return;
+
+ const svg = d3.select(svgRef.current);
+
+ const { width, height } = svg.node()?.getBoundingClientRect() ?? {
+ width: 0,
+ height: 0,
+ };
+
+ const maxHeight = () => {
+ const dataRange = d3.max(data)! - d3.min(data)!;
+
+ if (dataRange / d3.max(data)! < 0.1) {
+ return height * 0.65;
+ }
+
+ if (d3.max(data)) {
+ return height * 0.35;
+ } else {
+ return height;
+ }
+ };
+
+ const xScale = d3
+ .scaleLinear()
+ .domain([0, data.length - 1])
+ .range([0, width]);
+
+ const yScale = d3
+ .scaleLinear()
+ .domain([0, d3.max(data) ?? 0])
+ .range([height, maxHeight()]);
+
+ const line = d3
+ .line()
+ .x((d, i) => xScale(i))
+ .y((d) => yScale(d))
+ .curve(d3.curveCatmullRom.alpha(0.5));
+
+ const area = d3
+ .area()
+ .x((d, i) => xScale(i))
+ .y0(height)
+ .y1((d) => yScale(d))
+ .curve(d3.curveCatmullRom.alpha(0.5));
+
+ svg.selectAll("*").remove();
+
+ svg
+ .append("path")
+ .datum(data)
+ .attr("class", "area")
+ .attr("fill", alpha(palette.primary.main, 0.1))
+ .attr("d", area);
+
+ svg
+ .append("path")
+ .datum(data)
+ .attr("class", "line")
+ .attr("fill", "none")
+ .attr("stroke", alpha(palette.primary.main, 0.7))
+ .attr("stroke-width", 2)
+ .attr("d", line);
+
+ const updateChart = () => {
+ xScale.domain([0, data.length - 1]);
+ yScale.domain([0, d3.max(data) ?? 0]);
+
+ svg.select(".area").datum(data).attr("d", area);
+
+ svg.select(".line").datum(data).attr("d", line);
+ };
+
+ updateChart();
+ }, [data]);
+
+ return (
+
+ );
+};
diff --git a/clash-nyanpasu/frontend/ui/hooks/use-breakpoint.ts b/clash-nyanpasu/frontend/ui/hooks/use-breakpoint.ts
index 10620bfb6e..7b689d4f21 100644
--- a/clash-nyanpasu/frontend/ui/hooks/use-breakpoint.ts
+++ b/clash-nyanpasu/frontend/ui/hooks/use-breakpoint.ts
@@ -1,5 +1,6 @@
import { useTheme } from "@mui/material";
-import { useSetState } from "ahooks";
+import { appWindow } from "@tauri-apps/api/window";
+import { useDebounceFn, useSetState } from "ahooks";
import { useEffect, useCallback, useMemo } from "react";
export const useBreakpoint = (
@@ -23,7 +24,13 @@ export const useBreakpoint = (
}, [breakpoints.values]);
const getBreakpoint = useCallback(
- (width: number) => {
+ async (width: number) => {
+ const isMinimized = await appWindow.isMinimized();
+
+ if (isMinimized) {
+ return;
+ }
+
for (const [key, value] of breakpointsValues) {
if (value >= width) {
if (key !== breakpoint.key) {
@@ -46,21 +53,25 @@ export const useBreakpoint = (
[breakpointsValues, columnMapping, breakpoint.key, setBreakpoint],
);
- useEffect(() => {
- const observer = new ResizeObserver((entries) => {
- if (!Array.isArray(entries) || !entries.length) return;
-
- const { width } = entries[0].contentRect;
-
+ const { run: triggerBreakpoint } = useDebounceFn(
+ () => {
+ const width = document.body.clientWidth;
getBreakpoint(width);
- });
+ },
+ {
+ wait: 100,
+ },
+ );
+
+ useEffect(() => {
+ const observer = new ResizeObserver(triggerBreakpoint);
observer.observe(document.body);
return () => {
observer.disconnect();
};
- }, [getBreakpoint]);
+ }, [triggerBreakpoint]);
return breakpoint;
};
diff --git a/clash-nyanpasu/frontend/ui/index.ts b/clash-nyanpasu/frontend/ui/index.ts
index 3d25ab36c5..687c91742c 100644
--- a/clash-nyanpasu/frontend/ui/index.ts
+++ b/clash-nyanpasu/frontend/ui/index.ts
@@ -1,2 +1,3 @@
export * from "./materialYou";
export * from "./hooks";
+export * from "./chart";
diff --git a/clash-nyanpasu/frontend/ui/package.json b/clash-nyanpasu/frontend/ui/package.json
index a5d9122ea2..1f10b9b869 100644
--- a/clash-nyanpasu/frontend/ui/package.json
+++ b/clash-nyanpasu/frontend/ui/package.json
@@ -8,8 +8,11 @@
"@mui/icons-material": "5.15.20",
"@mui/lab": "5.0.0-alpha.170",
"@mui/material": "5.15.20",
+ "@tauri-apps/api": "1.5.6",
+ "@types/d3": "7.4.3",
"@types/react": "18.3.3",
"ahooks": "3.8.0",
+ "d3": "7.9.0",
"framer-motion": "11.2.10",
"react": "18.3.1",
"react-error-boundary": "4.0.13",
diff --git a/clash-nyanpasu/manifest/version.json b/clash-nyanpasu/manifest/version.json
index cd88865afa..155942a885 100644
--- a/clash-nyanpasu/manifest/version.json
+++ b/clash-nyanpasu/manifest/version.json
@@ -2,7 +2,7 @@
"manifest_version": 1,
"latest": {
"mihomo": "v1.18.5",
- "mihomo_alpha": "alpha-40f40f6",
+ "mihomo_alpha": "alpha-0738e18",
"clash_rs": "v0.1.18",
"clash_premium": "2023-09-05-gdcc8d87"
},
@@ -36,5 +36,5 @@
"darwin-x64": "clash-darwin-amd64-n{}.gz"
}
},
- "updated_at": "2024-06-15T22:19:49.581Z"
+ "updated_at": "2024-06-16T22:20:26.121Z"
}
diff --git a/clash-nyanpasu/package.json b/clash-nyanpasu/package.json
index f57ca83bf6..0c7c2b09e9 100644
--- a/clash-nyanpasu/package.json
+++ b/clash-nyanpasu/package.json
@@ -106,7 +106,7 @@
"stylelint-order": "6.0.4",
"stylelint-scss": "6.3.1",
"tailwindcss": "3.4.4",
- "tsx": "4.15.5",
+ "tsx": "4.15.6",
"typescript": "5.4.5"
},
"packageManager": "pnpm@9.3.0",
diff --git a/clash-nyanpasu/pnpm-lock.yaml b/clash-nyanpasu/pnpm-lock.yaml
index 307fa7f72a..4a479ac08b 100644
--- a/clash-nyanpasu/pnpm-lock.yaml
+++ b/clash-nyanpasu/pnpm-lock.yaml
@@ -134,8 +134,8 @@ importers:
specifier: 3.4.4
version: 3.4.4
tsx:
- specifier: 4.15.5
- version: 4.15.5
+ specifier: 4.15.6
+ version: 4.15.6
typescript:
specifier: 5.4.5
version: 5.4.5
@@ -147,38 +147,38 @@ importers:
version: 1.5.6
ahooks:
specifier: 3.8.0
- version: 3.8.0(react@19.0.0-rc-9d4fba0788-20240530)
+ version: 3.8.0(react@19.0.0-rc-fb9a90fa48-20240614)
ofetch:
specifier: 1.3.4
version: 1.3.4
react:
specifier: npm:react@rc
- version: 19.0.0-rc-9d4fba0788-20240530
+ version: 19.0.0-rc-fb9a90fa48-20240614
swr:
specifier: 2.2.5
- version: 2.2.5(react@19.0.0-rc-9d4fba0788-20240530)
+ version: 2.2.5(react@19.0.0-rc-fb9a90fa48-20240614)
devDependencies:
'@types/react':
specifier: npm:types-react@rc
- version: types-react@19.0.0-rc.0
+ version: types-react@19.0.0-rc.1
frontend/nyanpasu:
dependencies:
'@dnd-kit/core':
specifier: 6.1.0
- version: 6.1.0(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)
+ version: 6.1.0(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)
'@dnd-kit/sortable':
specifier: 8.0.0
- version: 8.0.0(@dnd-kit/core@6.1.0(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)
+ version: 8.0.0(@dnd-kit/core@6.1.0(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)
'@dnd-kit/utilities':
specifier: 3.2.2
- version: 3.2.2(react@19.0.0-rc-9d4fba0788-20240530)
+ version: 3.2.2(react@19.0.0-rc-fb9a90fa48-20240614)
'@emotion/styled':
specifier: 11.11.5
- version: 11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
+ version: 11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
'@generouted/react-router':
specifier: 1.19.5
- version: 1.19.5(react-router-dom@6.23.1(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)(vite@5.3.1(@types/node@20.14.2)(less@4.2.0)(sass@1.77.5)(stylus@0.62.0))
+ version: 1.19.5(react-router-dom@6.23.1(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)(vite@5.3.1(@types/node@20.14.2)(less@4.2.0)(sass@1.77.5)(stylus@0.62.0))
'@juggle/resize-observer':
specifier: 3.4.0
version: 3.4.0
@@ -187,16 +187,16 @@ importers:
version: 0.2.7
'@mui/icons-material':
specifier: 5.15.20
- version: 5.15.20(@mui/material@5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
+ version: 5.15.20(@mui/material@5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
'@mui/lab':
specifier: 5.0.0-alpha.170
- version: 5.0.0-alpha.170(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@mui/material@5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
+ version: 5.0.0-alpha.170(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@mui/material@5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
'@mui/material':
specifier: 5.15.20
- version: 5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
+ version: 5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
'@mui/x-data-grid':
specifier: 7.7.0
- version: 7.7.0(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@mui/material@5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
+ version: 7.7.0(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@mui/material@5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
'@nyanpasu/interface':
specifier: workspace:^
version: link:../interface
@@ -208,10 +208,10 @@ importers:
version: 1.5.6
ahooks:
specifier: 3.8.0
- version: 3.8.0(react@19.0.0-rc-9d4fba0788-20240530)
+ version: 3.8.0(react@19.0.0-rc-fb9a90fa48-20240614)
allotment:
specifier: 1.20.2
- version: 1.20.2(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)
+ version: 1.20.2(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)
axios:
specifier: 1.7.2
version: 1.7.2
@@ -220,74 +220,74 @@ importers:
version: 1.11.11
framer-motion:
specifier: 11.2.10
- version: 11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)
+ version: 11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)
i18next:
specifier: 23.11.5
version: 23.11.5
jotai:
specifier: 2.8.3
- version: 2.8.3(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
+ version: 2.8.3(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
monaco-editor:
specifier: 0.49.0
version: 0.49.0
mui-color-input:
specifier: 2.0.3
- version: 2.0.3(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@mui/material@5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
+ version: 2.0.3(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@mui/material@5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
react:
specifier: npm:react@rc
- version: 19.0.0-rc-9d4fba0788-20240530
+ version: 19.0.0-rc-fb9a90fa48-20240614
react-dom:
specifier: npm:react-dom@rc
- version: 19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530)
+ version: 19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614)
react-error-boundary:
specifier: 4.0.13
- version: 4.0.13(react@19.0.0-rc-9d4fba0788-20240530)
+ version: 4.0.13(react@19.0.0-rc-fb9a90fa48-20240614)
react-fast-marquee:
specifier: 1.6.4
- version: 1.6.4(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)
+ version: 1.6.4(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)
react-hook-form:
specifier: 7.52.0
- version: 7.52.0(react@19.0.0-rc-9d4fba0788-20240530)
+ version: 7.52.0(react@19.0.0-rc-fb9a90fa48-20240614)
react-hook-form-mui:
specifier: 7.0.0
- version: 7.0.0(n2wpefg76qqlnn3amngg4fapru)
+ version: 7.0.0(2dzipru5rzzwe2tvrvu2mntgfa)
react-i18next:
specifier: 14.1.2
- version: 14.1.2(i18next@23.11.5)(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)
+ version: 14.1.2(i18next@23.11.5)(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)
react-markdown:
specifier: 9.0.1
- version: 9.0.1(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
+ version: 9.0.1(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
react-router-dom:
specifier: 6.23.1
- version: 6.23.1(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)
+ version: 6.23.1(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)
react-transition-group:
specifier: 4.4.5
- version: 4.4.5(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)
+ version: 4.4.5(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)
react-virtuoso:
specifier: 4.7.10
- version: 4.7.10(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)
+ version: 4.7.10(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)
swr:
specifier: 2.2.5
- version: 2.2.5(react@19.0.0-rc-9d4fba0788-20240530)
+ version: 2.2.5(react@19.0.0-rc-fb9a90fa48-20240614)
virtua:
specifier: 0.31.0
- version: 0.31.0(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)
+ version: 0.31.0(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)
devDependencies:
'@emotion/babel-plugin':
specifier: 11.11.0
version: 11.11.0
'@emotion/react':
specifier: 11.11.4
- version: 11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
+ version: 11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
'@types/js-cookie':
specifier: 3.0.6
version: 3.0.6
'@types/react':
specifier: npm:types-react@rc
- version: types-react@19.0.0-rc.0
+ version: types-react@19.0.0-rc.1
'@types/react-dom':
specifier: npm:types-react-dom@rc
- version: types-react-dom@19.0.0-rc.0
+ version: types-react-dom@19.0.0-rc.1
'@types/react-transition-group':
specifier: 4.4.10
version: 4.4.10
@@ -301,14 +301,17 @@ importers:
specifier: 4.3.1
version: 4.3.1(vite@5.3.1(@types/node@20.14.2)(less@4.2.0)(sass@1.77.5)(stylus@0.62.0))
'@vitejs/plugin-react-swc':
- specifier: ^3.7.0
+ specifier: 3.7.0
version: 3.7.0(vite@5.3.1(@types/node@20.14.2)(less@4.2.0)(sass@1.77.5)(stylus@0.62.0))
sass:
specifier: 1.77.5
version: 1.77.5
shiki:
- specifier: 1.6.5
- version: 1.6.5
+ specifier: 1.7.0
+ version: 1.7.0
+ tailwindcss-textshadow:
+ specifier: 2.1.3
+ version: 2.1.3
vite:
specifier: 5.3.1
version: 5.3.1(@types/node@20.14.2)(less@4.2.0)(sass@1.77.5)(stylus@0.62.0)
@@ -332,31 +335,40 @@ importers:
version: 0.2.7
'@mui/icons-material':
specifier: 5.15.20
- version: 5.15.20(@mui/material@5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
+ version: 5.15.20(@mui/material@5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
'@mui/lab':
specifier: 5.0.0-alpha.170
- version: 5.0.0-alpha.170(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@mui/material@5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
+ version: 5.0.0-alpha.170(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@mui/material@5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
'@mui/material':
specifier: 5.15.20
- version: 5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
+ version: 5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
+ '@tauri-apps/api':
+ specifier: 1.5.6
+ version: 1.5.6
+ '@types/d3':
+ specifier: 7.4.3
+ version: 7.4.3
'@types/react':
specifier: npm:types-react@rc
- version: types-react@19.0.0-rc.0
+ version: types-react@19.0.0-rc.1
ahooks:
specifier: 3.8.0
- version: 3.8.0(react@19.0.0-rc-9d4fba0788-20240530)
+ version: 3.8.0(react@19.0.0-rc-fb9a90fa48-20240614)
+ d3:
+ specifier: 7.9.0
+ version: 7.9.0
framer-motion:
specifier: 11.2.10
- version: 11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)
+ version: 11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)
react:
specifier: npm:react@rc
- version: 19.0.0-rc-9d4fba0788-20240530
+ version: 19.0.0-rc-fb9a90fa48-20240614
react-error-boundary:
specifier: 4.0.13
- version: 4.0.13(react@19.0.0-rc-9d4fba0788-20240530)
+ version: 4.0.13(react@19.0.0-rc-fb9a90fa48-20240614)
react-i18next:
specifier: 14.1.2
- version: 14.1.2(i18next@23.11.5)(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)
+ version: 14.1.2(i18next@23.11.5)(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)
devDependencies:
sass:
specifier: 1.77.5
@@ -1040,6 +1052,9 @@ packages:
'@floating-ui/utils@0.2.2':
resolution: {integrity: sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==}
+ '@fullhuman/postcss-purgecss@2.3.0':
+ resolution: {integrity: sha512-qnKm5dIOyPGJ70kPZ5jiz0I9foVOic0j+cOzNDoo8KoCf6HjicIZ99UfO2OmE7vCYSKAAepEwJtNzpiiZAh9xw==}
+
'@generouted/react-router@1.19.5':
resolution: {integrity: sha512-9m42I+F12VcpAWSYAAZco6qS1WLzvwLJ3L4EKy8swXsnebPbPDA2BFUHlWMohyx7pwC8CuxfJjewfUk3qTpYxQ==}
peerDependencies:
@@ -1514,8 +1529,8 @@ packages:
cpu: [x64]
os: [win32]
- '@shikijs/core@1.6.5':
- resolution: {integrity: sha512-XcQYt6e4L61ruAxHiL3Xg1DL/XkWWjzDdeckB/DtN8jAxoAU+bcxsV6DetC8NafHpL4YpGhxy9iXF0ND/u6HmA==}
+ '@shikijs/core@1.7.0':
+ resolution: {integrity: sha512-O6j27b7dGmJbR3mjwh/aHH8Ld+GQvA0OQsNO43wKWnqbAae3AYXrhFyScHGX8hXZD6vX2ngjzDFkZY5srtIJbQ==}
'@sindresorhus/is@4.6.0':
resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==}
@@ -1767,6 +1782,99 @@ packages:
'@types/conventional-commits-parser@5.0.0':
resolution: {integrity: sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==}
+ '@types/d3-array@3.2.1':
+ resolution: {integrity: sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==}
+
+ '@types/d3-axis@3.0.6':
+ resolution: {integrity: sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==}
+
+ '@types/d3-brush@3.0.6':
+ resolution: {integrity: sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==}
+
+ '@types/d3-chord@3.0.6':
+ resolution: {integrity: sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==}
+
+ '@types/d3-color@3.1.3':
+ resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==}
+
+ '@types/d3-contour@3.0.6':
+ resolution: {integrity: sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==}
+
+ '@types/d3-delaunay@6.0.4':
+ resolution: {integrity: sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==}
+
+ '@types/d3-dispatch@3.0.6':
+ resolution: {integrity: sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==}
+
+ '@types/d3-drag@3.0.7':
+ resolution: {integrity: sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==}
+
+ '@types/d3-dsv@3.0.7':
+ resolution: {integrity: sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==}
+
+ '@types/d3-ease@3.0.2':
+ resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==}
+
+ '@types/d3-fetch@3.0.7':
+ resolution: {integrity: sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==}
+
+ '@types/d3-force@3.0.9':
+ resolution: {integrity: sha512-IKtvyFdb4Q0LWna6ymywQsEYjK/94SGhPrMfEr1TIc5OBeziTi+1jcCvttts8e0UWZIxpasjnQk9MNk/3iS+kA==}
+
+ '@types/d3-format@3.0.4':
+ resolution: {integrity: sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==}
+
+ '@types/d3-geo@3.1.0':
+ resolution: {integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==}
+
+ '@types/d3-hierarchy@3.1.7':
+ resolution: {integrity: sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==}
+
+ '@types/d3-interpolate@3.0.4':
+ resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==}
+
+ '@types/d3-path@3.1.0':
+ resolution: {integrity: sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==}
+
+ '@types/d3-polygon@3.0.2':
+ resolution: {integrity: sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==}
+
+ '@types/d3-quadtree@3.0.6':
+ resolution: {integrity: sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==}
+
+ '@types/d3-random@3.0.3':
+ resolution: {integrity: sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==}
+
+ '@types/d3-scale-chromatic@3.0.3':
+ resolution: {integrity: sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==}
+
+ '@types/d3-scale@4.0.8':
+ resolution: {integrity: sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==}
+
+ '@types/d3-selection@3.0.10':
+ resolution: {integrity: sha512-cuHoUgS/V3hLdjJOLTT691+G2QoqAjCVLmr4kJXR4ha56w1Zdu8UUQ5TxLRqudgNjwXeQxKMq4j+lyf9sWuslg==}
+
+ '@types/d3-shape@3.1.6':
+ resolution: {integrity: sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==}
+
+ '@types/d3-time-format@4.0.3':
+ resolution: {integrity: sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==}
+
+ '@types/d3-time@3.0.3':
+ resolution: {integrity: sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==}
+
+ '@types/d3-timer@3.0.2':
+ resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==}
+
+ '@types/d3-transition@3.0.8':
+ resolution: {integrity: sha512-ew63aJfQ/ms7QQ4X7pk5NxQ9fZH/z+i24ZfJ6tJSfqxJMrYLiK01EAs2/Rtw/JreGUsS3pLPNV644qXFGnoZNQ==}
+
+ '@types/d3-zoom@3.0.8':
+ resolution: {integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==}
+
+ '@types/d3@7.4.3':
+ resolution: {integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==}
+
'@types/debug@4.1.12':
resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
@@ -1782,6 +1890,9 @@ packages:
'@types/fs-extra@11.0.4':
resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==}
+ '@types/geojson@7946.0.14':
+ resolution: {integrity: sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==}
+
'@types/hast@3.0.4':
resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==}
@@ -1929,6 +2040,18 @@ packages:
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
+ acorn-node@1.8.2:
+ resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==}
+
+ acorn-walk@7.2.0:
+ resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==}
+ engines: {node: '>=0.4.0'}
+
+ acorn@7.4.1:
+ resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+
acorn@8.11.3:
resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==}
engines: {node: '>=0.4.0'}
@@ -2066,6 +2189,10 @@ packages:
peerDependencies:
postcss: ^8.1.0
+ autoprefixer@9.8.8:
+ resolution: {integrity: sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==}
+ hasBin: true
+
available-typed-arrays@1.0.7:
resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
engines: {node: '>= 0.4'}
@@ -2145,6 +2272,10 @@ packages:
builtins@5.1.0:
resolution: {integrity: sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==}
+ bytes@3.1.2:
+ resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
+ engines: {node: '>= 0.8'}
+
cacheable-lookup@5.0.4:
resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==}
engines: {node: '>=10.6.0'}
@@ -2260,6 +2391,12 @@ packages:
color-name@1.1.4:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+ color-string@1.9.1:
+ resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
+
+ color@3.2.1:
+ resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==}
+
colord@2.9.3:
resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==}
@@ -2284,6 +2421,14 @@ packages:
resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
engines: {node: '>= 6'}
+ commander@5.1.0:
+ resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==}
+ engines: {node: '>= 6'}
+
+ commander@7.2.0:
+ resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
+ engines: {node: '>= 10'}
+
compare-func@2.0.0:
resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==}
@@ -2382,6 +2527,9 @@ packages:
resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==}
engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
+ css-unit-converter@1.1.2:
+ resolution: {integrity: sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==}
+
cssesc@3.0.0:
resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
engines: {node: '>=4'}
@@ -2390,6 +2538,133 @@ packages:
csstype@3.1.3:
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
+ d3-array@3.2.4:
+ resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==}
+ engines: {node: '>=12'}
+
+ d3-axis@3.0.0:
+ resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==}
+ engines: {node: '>=12'}
+
+ d3-brush@3.0.0:
+ resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==}
+ engines: {node: '>=12'}
+
+ d3-chord@3.0.1:
+ resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==}
+ engines: {node: '>=12'}
+
+ d3-color@3.1.0:
+ resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==}
+ engines: {node: '>=12'}
+
+ d3-contour@4.0.2:
+ resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==}
+ engines: {node: '>=12'}
+
+ d3-delaunay@6.0.4:
+ resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==}
+ engines: {node: '>=12'}
+
+ d3-dispatch@3.0.1:
+ resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==}
+ engines: {node: '>=12'}
+
+ d3-drag@3.0.0:
+ resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==}
+ engines: {node: '>=12'}
+
+ d3-dsv@3.0.1:
+ resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==}
+ engines: {node: '>=12'}
+ hasBin: true
+
+ d3-ease@3.0.1:
+ resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==}
+ engines: {node: '>=12'}
+
+ d3-fetch@3.0.1:
+ resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==}
+ engines: {node: '>=12'}
+
+ d3-force@3.0.0:
+ resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==}
+ engines: {node: '>=12'}
+
+ d3-format@3.1.0:
+ resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==}
+ engines: {node: '>=12'}
+
+ d3-geo@3.1.1:
+ resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==}
+ engines: {node: '>=12'}
+
+ d3-hierarchy@3.1.2:
+ resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==}
+ engines: {node: '>=12'}
+
+ d3-interpolate@3.0.1:
+ resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==}
+ engines: {node: '>=12'}
+
+ d3-path@3.1.0:
+ resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==}
+ engines: {node: '>=12'}
+
+ d3-polygon@3.0.1:
+ resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==}
+ engines: {node: '>=12'}
+
+ d3-quadtree@3.0.1:
+ resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==}
+ engines: {node: '>=12'}
+
+ d3-random@3.0.1:
+ resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==}
+ engines: {node: '>=12'}
+
+ d3-scale-chromatic@3.1.0:
+ resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==}
+ engines: {node: '>=12'}
+
+ d3-scale@4.0.2:
+ resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==}
+ engines: {node: '>=12'}
+
+ d3-selection@3.0.0:
+ resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==}
+ engines: {node: '>=12'}
+
+ d3-shape@3.2.0:
+ resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==}
+ engines: {node: '>=12'}
+
+ d3-time-format@4.1.0:
+ resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==}
+ engines: {node: '>=12'}
+
+ d3-time@3.1.0:
+ resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==}
+ engines: {node: '>=12'}
+
+ d3-timer@3.0.1:
+ resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==}
+ engines: {node: '>=12'}
+
+ d3-transition@3.0.1:
+ resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==}
+ engines: {node: '>=12'}
+ peerDependencies:
+ d3-selection: 2 - 3
+
+ d3-zoom@3.0.0:
+ resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==}
+ engines: {node: '>=12'}
+
+ d3@7.9.0:
+ resolution: {integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==}
+ engines: {node: '>=12'}
+
d@1.0.2:
resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==}
engines: {node: '>=0.12'}
@@ -2476,6 +2751,12 @@ packages:
resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
engines: {node: '>= 0.4'}
+ defined@1.0.1:
+ resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==}
+
+ delaunator@5.0.1:
+ resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==}
+
delayed-stream@1.0.0:
resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
engines: {node: '>=0.4.0'}
@@ -2493,6 +2774,11 @@ packages:
detect-node@2.1.0:
resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==}
+ detective@5.2.1:
+ resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==}
+ engines: {node: '>=0.8.0'}
+ hasBin: true
+
devlop@1.1.0:
resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
@@ -3247,6 +3533,10 @@ packages:
resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==}
engines: {node: '>= 0.4'}
+ internmap@2.0.3:
+ resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==}
+ engines: {node: '>=12'}
+
intersection-observer@0.12.2:
resolution: {integrity: sha512-7m1vEcPCxXYI8HqnL8CKI6siDyD+eIWSwgB3DZA+ZTogxk9I4CDnj4wilt9x/+/QbHI4YG5YZNmC6458/e9Ktg==}
@@ -3270,6 +3560,9 @@ packages:
is-arrayish@0.2.1:
resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
+ is-arrayish@0.3.2:
+ resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
+
is-async-function@2.0.0:
resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==}
engines: {node: '>= 0.4'}
@@ -3908,6 +4201,9 @@ packages:
resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==}
engines: {node: '>=10.5.0'}
+ node-emoji@1.11.0:
+ resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==}
+
node-fetch-native@1.6.4:
resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==}
@@ -3938,6 +4234,9 @@ packages:
resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==}
engines: {node: '>=10'}
+ normalize.css@8.0.1:
+ resolution: {integrity: sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==}
+
npm-normalize-package-bin@3.0.1:
resolution: {integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==}
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
@@ -3955,10 +4254,17 @@ packages:
resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ num2fraction@1.2.2:
+ resolution: {integrity: sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==}
+
object-assign@4.1.1:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
engines: {node: '>=0.10.0'}
+ object-hash@2.2.0:
+ resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==}
+ engines: {node: '>= 6'}
+
object-hash@3.0.0:
resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
engines: {node: '>= 6'}
@@ -4106,6 +4412,9 @@ packages:
pend@1.2.0:
resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==}
+ picocolors@0.2.1:
+ resolution: {integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==}
+
picocolors@1.0.1:
resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==}
@@ -4138,6 +4447,9 @@ packages:
resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==}
engines: {node: '>= 0.4'}
+ postcss-functions@3.0.0:
+ resolution: {integrity: sha512-N5yWXWKA+uhpLQ9ZhBRl2bIAdM6oVJYpDojuI1nF2SzXBimJcdjFwiAouBVbO5VuOF3qA6BSFWFc3wXbbj72XQ==}
+
postcss-html@1.7.0:
resolution: {integrity: sha512-MfcMpSUIaR/nNgeVS8AyvyDugXlADjN9AcV7e5rDfrF1wduIAGSkL4q2+wgrZgA3sHVAHLDO9FuauHhZYW2nBw==}
engines: {node: ^12 || >=14}
@@ -4154,6 +4466,9 @@ packages:
peerDependencies:
postcss: ^8.0.0
+ postcss-js@2.0.3:
+ resolution: {integrity: sha512-zS59pAk3deu6dVHyrGqmC3oDXBdNdajk4k1RyxeVXCrcEDBUBHoIhE4QTsmhxgzXxsaqFDAkUZfmMa5f/N/79w==}
+
postcss-js@4.0.1:
resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
engines: {node: ^12 || ^14 || >= 16}
@@ -4205,6 +4520,9 @@ packages:
peerDependencies:
postcss: ^8.1.0
+ postcss-nested@4.2.3:
+ resolution: {integrity: sha512-rOv0W1HquRCamWy2kFl3QazJMMe1ku6rCFoAAH+9AcxdbpDeBr6k968MLWuLjvjMcGEip01ak09hKOEgpK9hvw==}
+
postcss-nested@6.0.1:
resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==}
engines: {node: '>=12.0'}
@@ -4245,9 +4563,24 @@ packages:
peerDependencies:
postcss: ^8.4.20
+ postcss-value-parser@3.3.1:
+ resolution: {integrity: sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==}
+
postcss-value-parser@4.2.0:
resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
+ postcss@6.0.23:
+ resolution: {integrity: sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==}
+ engines: {node: '>=4.0.0'}
+
+ postcss@7.0.32:
+ resolution: {integrity: sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==}
+ engines: {node: '>=6.0.0'}
+
+ postcss@7.0.39:
+ resolution: {integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==}
+ engines: {node: '>=6.0.0'}
+
postcss@8.4.38:
resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==}
engines: {node: ^10 || ^12 || >=14}
@@ -4275,6 +4608,10 @@ packages:
engines: {node: '>=14'}
hasBin: true
+ pretty-hrtime@1.0.3:
+ resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==}
+ engines: {node: '>= 0.8'}
+
progress@2.0.3:
resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==}
engines: {node: '>=0.4.0'}
@@ -4301,6 +4638,10 @@ packages:
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
engines: {node: '>=6'}
+ purgecss@2.3.0:
+ resolution: {integrity: sha512-BE5CROfVGsx2XIhxGuZAT7rTH9lLeQx/6M0P7DTXQH4IUc3BBzs9JUzt4yzGf3JrH9enkeq6YJBe9CTtkm1WmQ==}
+ hasBin: true
+
queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
@@ -4319,8 +4660,8 @@ packages:
resolution: {integrity: sha512-QdVc0OYS8wh19x0J6ZRDHivuTMnoN+i4MziDiRLk5LID3hkraPR3157MybVdYgYVsKg86PCVjTHLZVUyB13ztg==}
hasBin: true
- react-dom@19.0.0-rc-9d4fba0788-20240530:
- resolution: {integrity: sha512-Kgw4vSnJXWkELbQFBWKm/WECPMPA/iWZ+1xeboKeh8KqpB2dG4bAP7WF01Jx6lONp5pagHKKD6UPpyTrp0P5Ew==}
+ react-dom@19.0.0-rc-fb9a90fa48-20240614:
+ resolution: {integrity: sha512-PoEsPe32F7KPLYOBvZfjylEI1B67N44PwY3lyvpmBkhlluLnLz0jH8q2Wg9YidAi6z0k3iUnNRm5x10wurzt9Q==}
peerDependencies:
react: npm:react@rc
@@ -4414,8 +4755,8 @@ packages:
react: npm:react@rc
react-dom: npm:react-dom@rc
- react@19.0.0-rc-9d4fba0788-20240530:
- resolution: {integrity: sha512-GVIQ8C7A/dMbyyq33VPzsx+08f/5KBvbw1dBjXtI89PoEUfFZqOIM3E8ljJt2FquM14/Ty93NsHfbA9os9aJag==}
+ react@19.0.0-rc-fb9a90fa48-20240614:
+ resolution: {integrity: sha512-nvE3Gy+IOIfH/DXhkyxFVQSrITarFcQz4+shzC/McxQXEUSonpw2oDy/Wi9hdDtV3hlP12VYuDL95iiBREedNQ==}
engines: {node: '>=0.10.0'}
read-cache@1.0.0:
@@ -4432,6 +4773,9 @@ packages:
real-cancellable-promise@1.2.0:
resolution: {integrity: sha512-FYhmx1FVSgoPRjneoTjh+EKZcNb8ijl/dyatTzase5eujYhVrLNDOiIY6AgQq7GU1kOoLgEd9jLVbhFg8k8dOQ==}
+ reduce-css-calc@2.1.8:
+ resolution: {integrity: sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg==}
+
reflect.getprototypeof@1.0.6:
resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==}
engines: {node: '>= 0.4'}
@@ -4518,6 +4862,9 @@ packages:
resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==}
engines: {node: '>=8.0'}
+ robust-predicates@3.0.2:
+ resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==}
+
rollup@4.17.2:
resolution: {integrity: sha512-/9ClTJPByC0U4zNLowV1tMBe8yMEAxewtR3cUNX5BoEpGH3dQEWpJLr6CLp0fPdYRF/fzVOgvDb1zXuakwF5kQ==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
@@ -4526,6 +4873,9 @@ packages:
run-parallel@1.2.0:
resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+ rw@1.3.3:
+ resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==}
+
safe-array-concat@1.1.2:
resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==}
engines: {node: '>=0.4'}
@@ -4548,8 +4898,8 @@ packages:
sax@1.3.0:
resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==}
- scheduler@0.25.0-rc-9d4fba0788-20240530:
- resolution: {integrity: sha512-FgnludCfIyBWBUApENx+tMalmqphFZ8MDj74iS7vlj2oaL75R4Ws+XdfSIQ5RFXFTD/zfyXVh5wtKHrs6iBkcQ==}
+ scheduler@0.25.0-rc-fb9a90fa48-20240614:
+ resolution: {integrity: sha512-HHqQ/SqbeiDfXXVKgNxTpbQTD4n7IUb4hZATvHjp03jr3TF7igehCyHdOjeYTrzIseLO93cTTfSb5f4qWcirMQ==}
screenfull@5.2.0:
resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==}
@@ -4606,8 +4956,8 @@ packages:
shell-quote@1.8.1:
resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==}
- shiki@1.6.5:
- resolution: {integrity: sha512-iFzypldJG0zeyRHKAhaSGCf+YWXpMMyUyOrCVFBFKGGdF5vrB6jbd66/SQljxV20aSrVZEAQwUto/hhuNi/CIg==}
+ shiki@1.7.0:
+ resolution: {integrity: sha512-H5pMn4JA7ayx8H0qOz1k2qANq6mZVCMl1gKLK6kWIrv1s2Ial4EmD4s4jE8QB5Dw03d/oCQUxc24sotuyR5byA==}
side-channel@1.0.6:
resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==}
@@ -4620,6 +4970,9 @@ packages:
resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
engines: {node: '>=14'}
+ simple-swizzle@0.2.2:
+ resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
+
slash@3.0.0:
resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
engines: {node: '>=8'}
@@ -4818,6 +5171,10 @@ packages:
resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
engines: {node: '>=4'}
+ supports-color@6.1.0:
+ resolution: {integrity: sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==}
+ engines: {node: '>=6'}
+
supports-color@7.2.0:
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
engines: {node: '>=8'}
@@ -4849,6 +5206,14 @@ packages:
resolution: {integrity: sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==}
engines: {node: '>=10.0.0'}
+ tailwindcss-textshadow@2.1.3:
+ resolution: {integrity: sha512-FGVHfK+xnV879VSQDeRvY61Aa+b0GDiGaFBPwCOKvqIrK57GyepWJL1GydjtGOLHE9qqphFucRNj9fHramCzNg==}
+
+ tailwindcss@1.9.6:
+ resolution: {integrity: sha512-nY8WYM/RLPqGsPEGEV2z63riyQPcHYZUJpAwdyBzVpxQHOHqHE+F/fvbCeXhdF1+TA5l72vSkZrtYCB9hRcwkQ==}
+ engines: {node: '>=8.9.0'}
+ hasBin: true
+
tailwindcss@3.4.4:
resolution: {integrity: sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==}
engines: {node: '>=14.0.0'}
@@ -4929,8 +5294,8 @@ packages:
tslib@2.6.2:
resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
- tsx@4.15.5:
- resolution: {integrity: sha512-iKi8jQ2VBmZ2kU/FkGkL2OSHBHsazsUzsdC/W/RwhKIEsIoZ1alCclZHP5jGfNHEaEWUJFM1GquzCf+4db3b0w==}
+ tsx@4.15.6:
+ resolution: {integrity: sha512-is0VQQlfNZRHEuSSTKA6m4xw74IU4AizmuB6lAYLRt9XtuyeQnyJYexhNZOPCB59SqC4JzmSzPnHGBXxf3k0hA==}
engines: {node: '>=18.0.0'}
hasBin: true
@@ -4972,11 +5337,11 @@ packages:
typedarray-to-buffer@3.1.5:
resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==}
- types-react-dom@19.0.0-rc.0:
- resolution: {integrity: sha512-wGlQSD6H6EeCxhH+dSip1cPcCU7nNTOwHEr29rjiNtGkUPlmEofOizoQaPMEqQH2V76ME3NLvBDLGajRu3xZOw==}
+ types-react-dom@19.0.0-rc.1:
+ resolution: {integrity: sha512-VSLZJl8VXCD0fAWp7DUTFUDCcZ8DVXOQmjhJMD03odgeFmu14ZQJHCXeETm3BEAhJqfgJaFkLnGkQv88sRx0fQ==}
- types-react@19.0.0-rc.0:
- resolution: {integrity: sha512-JFd3qtgXZ+EdHht8WXMPSF231brd6Bu4yLKqyo0JjpzhmjYxJptT6TBh/xFqOhx+ee2Nagj7Ttkh5F/jc49TVQ==}
+ types-react@19.0.0-rc.1:
+ resolution: {integrity: sha512-RshndUfqTW6K3STLPis8BtAYCGOkMbtvYsi90gmVNDZBXUyUc5juf2PE9LfS/JmOlUIRO8cWTS/1MTnmhjDqyQ==}
typescript-plugin-css-modules@5.1.0:
resolution: {integrity: sha512-6h+sLBa4l+XYSTn/31vZHd/1c3SvAbLpobY6FxDiUOHJQG1eD9Gh3eCs12+Eqc+TCOAdxcO+zAPvUq0jBfdciw==}
@@ -5252,6 +5617,10 @@ packages:
resolution: {integrity: sha512-1Dly4xqlulvPD3fZUQJLY+FUIeqN3N2MM3uqe4rCJftAvOjFa3jFGfctOgluGx4ahPbUCsZkmJILiP0Vi4T6lQ==}
engines: {node: '>=4'}
+ xtend@4.0.2:
+ resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
+ engines: {node: '>=0.4'}
+
y18n@5.0.8:
resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
engines: {node: '>=10'}
@@ -5600,29 +5969,29 @@ snapshots:
'@ctrl/tinycolor@4.1.0': {}
- '@dnd-kit/accessibility@3.1.0(react@19.0.0-rc-9d4fba0788-20240530)':
+ '@dnd-kit/accessibility@3.1.0(react@19.0.0-rc-fb9a90fa48-20240614)':
dependencies:
- react: 19.0.0-rc-9d4fba0788-20240530
+ react: 19.0.0-rc-fb9a90fa48-20240614
tslib: 2.6.2
- '@dnd-kit/core@6.1.0(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)':
+ '@dnd-kit/core@6.1.0(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)':
dependencies:
- '@dnd-kit/accessibility': 3.1.0(react@19.0.0-rc-9d4fba0788-20240530)
- '@dnd-kit/utilities': 3.2.2(react@19.0.0-rc-9d4fba0788-20240530)
- react: 19.0.0-rc-9d4fba0788-20240530
- react-dom: 19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530)
+ '@dnd-kit/accessibility': 3.1.0(react@19.0.0-rc-fb9a90fa48-20240614)
+ '@dnd-kit/utilities': 3.2.2(react@19.0.0-rc-fb9a90fa48-20240614)
+ react: 19.0.0-rc-fb9a90fa48-20240614
+ react-dom: 19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614)
tslib: 2.6.2
- '@dnd-kit/sortable@8.0.0(@dnd-kit/core@6.1.0(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)':
+ '@dnd-kit/sortable@8.0.0(@dnd-kit/core@6.1.0(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)':
dependencies:
- '@dnd-kit/core': 6.1.0(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)
- '@dnd-kit/utilities': 3.2.2(react@19.0.0-rc-9d4fba0788-20240530)
- react: 19.0.0-rc-9d4fba0788-20240530
+ '@dnd-kit/core': 6.1.0(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)
+ '@dnd-kit/utilities': 3.2.2(react@19.0.0-rc-fb9a90fa48-20240614)
+ react: 19.0.0-rc-fb9a90fa48-20240614
tslib: 2.6.2
- '@dnd-kit/utilities@3.2.2(react@19.0.0-rc-9d4fba0788-20240530)':
+ '@dnd-kit/utilities@3.2.2(react@19.0.0-rc-fb9a90fa48-20240614)':
dependencies:
- react: 19.0.0-rc-9d4fba0788-20240530
+ react: 19.0.0-rc-fb9a90fa48-20240614
tslib: 2.6.2
'@dual-bundle/import-meta-resolve@4.1.0': {}
@@ -5671,19 +6040,19 @@ snapshots:
'@emotion/memoize@0.8.1': {}
- '@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)':
+ '@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)':
dependencies:
'@babel/runtime': 7.24.5
'@emotion/babel-plugin': 11.11.0
'@emotion/cache': 11.11.0
'@emotion/serialize': 1.1.4
- '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@19.0.0-rc-9d4fba0788-20240530)
+ '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@19.0.0-rc-fb9a90fa48-20240614)
'@emotion/utils': 1.2.1
'@emotion/weak-memoize': 0.3.1
hoist-non-react-statics: 3.3.2
- react: 19.0.0-rc-9d4fba0788-20240530
+ react: 19.0.0-rc-fb9a90fa48-20240614
optionalDependencies:
- '@types/react': types-react@19.0.0-rc.0
+ '@types/react': types-react@19.0.0-rc.1
'@emotion/serialize@1.1.4':
dependencies:
@@ -5695,24 +6064,24 @@ snapshots:
'@emotion/sheet@1.2.2': {}
- '@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)':
+ '@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)':
dependencies:
'@babel/runtime': 7.24.5
'@emotion/babel-plugin': 11.11.0
'@emotion/is-prop-valid': 1.2.2
- '@emotion/react': 11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
+ '@emotion/react': 11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
'@emotion/serialize': 1.1.4
- '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@19.0.0-rc-9d4fba0788-20240530)
+ '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@19.0.0-rc-fb9a90fa48-20240614)
'@emotion/utils': 1.2.1
- react: 19.0.0-rc-9d4fba0788-20240530
+ react: 19.0.0-rc-fb9a90fa48-20240614
optionalDependencies:
- '@types/react': types-react@19.0.0-rc.0
+ '@types/react': types-react@19.0.0-rc.1
'@emotion/unitless@0.8.1': {}
- '@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@19.0.0-rc-9d4fba0788-20240530)':
+ '@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@19.0.0-rc-fb9a90fa48-20240614)':
dependencies:
- react: 19.0.0-rc-9d4fba0788-20240530
+ react: 19.0.0-rc-fb9a90fa48-20240614
'@emotion/utils@1.2.1': {}
@@ -5890,20 +6259,25 @@ snapshots:
'@floating-ui/core': 1.6.1
'@floating-ui/utils': 0.2.2
- '@floating-ui/react-dom@2.0.9(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)':
+ '@floating-ui/react-dom@2.0.9(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)':
dependencies:
'@floating-ui/dom': 1.6.5
- react: 19.0.0-rc-9d4fba0788-20240530
- react-dom: 19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530)
+ react: 19.0.0-rc-fb9a90fa48-20240614
+ react-dom: 19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614)
'@floating-ui/utils@0.2.2': {}
- '@generouted/react-router@1.19.5(react-router-dom@6.23.1(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)(vite@5.3.1(@types/node@20.14.2)(less@4.2.0)(sass@1.77.5)(stylus@0.62.0))':
+ '@fullhuman/postcss-purgecss@2.3.0':
+ dependencies:
+ postcss: 7.0.32
+ purgecss: 2.3.0
+
+ '@generouted/react-router@1.19.5(react-router-dom@6.23.1(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)(vite@5.3.1(@types/node@20.14.2)(less@4.2.0)(sass@1.77.5)(stylus@0.62.0))':
dependencies:
fast-glob: 3.3.2
generouted: 1.19.5(vite@5.3.1(@types/node@20.14.2)(less@4.2.0)(sass@1.77.5)(stylus@0.62.0))
- react: 19.0.0-rc-9d4fba0788-20240530
- react-router-dom: 6.23.1(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)
+ react: 19.0.0-rc-fb9a90fa48-20240614
+ react-router-dom: 6.23.1(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)
vite: 5.3.1(@types/node@20.14.2)(less@4.2.0)(sass@1.77.5)(stylus@0.62.0)
'@humanwhocodes/config-array@0.11.14':
@@ -5948,163 +6322,163 @@ snapshots:
'@material/material-color-utilities@0.2.7': {}
- '@mui/base@5.0.0-beta.40(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)':
+ '@mui/base@5.0.0-beta.40(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)':
dependencies:
'@babel/runtime': 7.24.6
- '@floating-ui/react-dom': 2.0.9(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)
- '@mui/types': 7.2.14(types-react@19.0.0-rc.0)
- '@mui/utils': 5.15.14(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
+ '@floating-ui/react-dom': 2.0.9(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)
+ '@mui/types': 7.2.14(types-react@19.0.0-rc.1)
+ '@mui/utils': 5.15.14(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
'@popperjs/core': 2.11.8
clsx: 2.1.1
prop-types: 15.8.1
- react: 19.0.0-rc-9d4fba0788-20240530
- react-dom: 19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530)
+ react: 19.0.0-rc-fb9a90fa48-20240614
+ react-dom: 19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614)
optionalDependencies:
- '@types/react': types-react@19.0.0-rc.0
+ '@types/react': types-react@19.0.0-rc.1
'@mui/core-downloads-tracker@5.15.20': {}
- '@mui/icons-material@5.15.20(@mui/material@5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)':
+ '@mui/icons-material@5.15.20(@mui/material@5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)':
dependencies:
'@babel/runtime': 7.24.6
- '@mui/material': 5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
- react: 19.0.0-rc-9d4fba0788-20240530
+ '@mui/material': 5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
+ react: 19.0.0-rc-fb9a90fa48-20240614
optionalDependencies:
- '@types/react': types-react@19.0.0-rc.0
+ '@types/react': types-react@19.0.0-rc.1
- '@mui/lab@5.0.0-alpha.170(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@mui/material@5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)':
+ '@mui/lab@5.0.0-alpha.170(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@mui/material@5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)':
dependencies:
'@babel/runtime': 7.24.5
- '@mui/base': 5.0.0-beta.40(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
- '@mui/material': 5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
- '@mui/system': 5.15.15(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
- '@mui/types': 7.2.14(types-react@19.0.0-rc.0)
- '@mui/utils': 5.15.14(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
+ '@mui/base': 5.0.0-beta.40(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
+ '@mui/material': 5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
+ '@mui/system': 5.15.15(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
+ '@mui/types': 7.2.14(types-react@19.0.0-rc.1)
+ '@mui/utils': 5.15.14(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
clsx: 2.1.1
prop-types: 15.8.1
- react: 19.0.0-rc-9d4fba0788-20240530
- react-dom: 19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530)
+ react: 19.0.0-rc-fb9a90fa48-20240614
+ react-dom: 19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614)
optionalDependencies:
- '@emotion/react': 11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
- '@emotion/styled': 11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
- '@types/react': types-react@19.0.0-rc.0
+ '@emotion/react': 11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
+ '@emotion/styled': 11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
+ '@types/react': types-react@19.0.0-rc.1
- '@mui/material@5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)':
+ '@mui/material@5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)':
dependencies:
'@babel/runtime': 7.24.6
- '@mui/base': 5.0.0-beta.40(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
+ '@mui/base': 5.0.0-beta.40(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
'@mui/core-downloads-tracker': 5.15.20
- '@mui/system': 5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
- '@mui/types': 7.2.14(types-react@19.0.0-rc.0)
- '@mui/utils': 5.15.20(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
+ '@mui/system': 5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
+ '@mui/types': 7.2.14(types-react@19.0.0-rc.1)
+ '@mui/utils': 5.15.20(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
'@types/react-transition-group': 4.4.10
clsx: 2.1.1
csstype: 3.1.3
prop-types: 15.8.1
- react: 19.0.0-rc-9d4fba0788-20240530
- react-dom: 19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530)
+ react: 19.0.0-rc-fb9a90fa48-20240614
+ react-dom: 19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614)
react-is: 18.3.1
- react-transition-group: 4.4.5(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)
+ react-transition-group: 4.4.5(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)
optionalDependencies:
- '@emotion/react': 11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
- '@emotion/styled': 11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
- '@types/react': types-react@19.0.0-rc.0
+ '@emotion/react': 11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
+ '@emotion/styled': 11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
+ '@types/react': types-react@19.0.0-rc.1
- '@mui/private-theming@5.15.14(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)':
+ '@mui/private-theming@5.15.14(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)':
dependencies:
'@babel/runtime': 7.24.6
- '@mui/utils': 5.15.20(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
+ '@mui/utils': 5.15.20(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
prop-types: 15.8.1
- react: 19.0.0-rc-9d4fba0788-20240530
+ react: 19.0.0-rc-fb9a90fa48-20240614
optionalDependencies:
- '@types/react': types-react@19.0.0-rc.0
+ '@types/react': types-react@19.0.0-rc.1
- '@mui/private-theming@5.15.20(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)':
+ '@mui/private-theming@5.15.20(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)':
dependencies:
'@babel/runtime': 7.24.6
- '@mui/utils': 5.15.20(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
+ '@mui/utils': 5.15.20(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
prop-types: 15.8.1
- react: 19.0.0-rc-9d4fba0788-20240530
+ react: 19.0.0-rc-fb9a90fa48-20240614
optionalDependencies:
- '@types/react': types-react@19.0.0-rc.0
+ '@types/react': types-react@19.0.0-rc.1
- '@mui/styled-engine@5.15.14(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)':
+ '@mui/styled-engine@5.15.14(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)':
dependencies:
'@babel/runtime': 7.24.6
'@emotion/cache': 11.11.0
csstype: 3.1.3
prop-types: 15.8.1
- react: 19.0.0-rc-9d4fba0788-20240530
+ react: 19.0.0-rc-fb9a90fa48-20240614
optionalDependencies:
- '@emotion/react': 11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
- '@emotion/styled': 11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
+ '@emotion/react': 11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
+ '@emotion/styled': 11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
- '@mui/system@5.15.15(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)':
+ '@mui/system@5.15.15(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)':
dependencies:
'@babel/runtime': 7.24.6
- '@mui/private-theming': 5.15.14(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
- '@mui/styled-engine': 5.15.14(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)
- '@mui/types': 7.2.14(types-react@19.0.0-rc.0)
- '@mui/utils': 5.15.14(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
+ '@mui/private-theming': 5.15.14(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
+ '@mui/styled-engine': 5.15.14(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)
+ '@mui/types': 7.2.14(types-react@19.0.0-rc.1)
+ '@mui/utils': 5.15.14(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
clsx: 2.1.1
csstype: 3.1.3
prop-types: 15.8.1
- react: 19.0.0-rc-9d4fba0788-20240530
+ react: 19.0.0-rc-fb9a90fa48-20240614
optionalDependencies:
- '@emotion/react': 11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
- '@emotion/styled': 11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
- '@types/react': types-react@19.0.0-rc.0
+ '@emotion/react': 11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
+ '@emotion/styled': 11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
+ '@types/react': types-react@19.0.0-rc.1
- '@mui/system@5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)':
+ '@mui/system@5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)':
dependencies:
'@babel/runtime': 7.24.6
- '@mui/private-theming': 5.15.20(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
- '@mui/styled-engine': 5.15.14(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)
- '@mui/types': 7.2.14(types-react@19.0.0-rc.0)
- '@mui/utils': 5.15.20(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
+ '@mui/private-theming': 5.15.20(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
+ '@mui/styled-engine': 5.15.14(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)
+ '@mui/types': 7.2.14(types-react@19.0.0-rc.1)
+ '@mui/utils': 5.15.20(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
clsx: 2.1.1
csstype: 3.1.3
prop-types: 15.8.1
- react: 19.0.0-rc-9d4fba0788-20240530
+ react: 19.0.0-rc-fb9a90fa48-20240614
optionalDependencies:
- '@emotion/react': 11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
- '@emotion/styled': 11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
- '@types/react': types-react@19.0.0-rc.0
+ '@emotion/react': 11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
+ '@emotion/styled': 11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
+ '@types/react': types-react@19.0.0-rc.1
- '@mui/types@7.2.14(types-react@19.0.0-rc.0)':
+ '@mui/types@7.2.14(types-react@19.0.0-rc.1)':
optionalDependencies:
- '@types/react': types-react@19.0.0-rc.0
+ '@types/react': types-react@19.0.0-rc.1
- '@mui/utils@5.15.14(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)':
+ '@mui/utils@5.15.14(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)':
dependencies:
'@babel/runtime': 7.24.6
'@types/prop-types': 15.7.12
prop-types: 15.8.1
- react: 19.0.0-rc-9d4fba0788-20240530
+ react: 19.0.0-rc-fb9a90fa48-20240614
react-is: 18.3.1
optionalDependencies:
- '@types/react': types-react@19.0.0-rc.0
+ '@types/react': types-react@19.0.0-rc.1
- '@mui/utils@5.15.20(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)':
+ '@mui/utils@5.15.20(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)':
dependencies:
'@babel/runtime': 7.24.6
'@types/prop-types': 15.7.12
prop-types: 15.8.1
- react: 19.0.0-rc-9d4fba0788-20240530
+ react: 19.0.0-rc-fb9a90fa48-20240614
react-is: 18.3.1
optionalDependencies:
- '@types/react': types-react@19.0.0-rc.0
+ '@types/react': types-react@19.0.0-rc.1
- '@mui/x-data-grid@7.7.0(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@mui/material@5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)':
+ '@mui/x-data-grid@7.7.0(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@mui/material@5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)':
dependencies:
'@babel/runtime': 7.24.7
- '@mui/material': 5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
- '@mui/system': 5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
- '@mui/utils': 5.15.20(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
+ '@mui/material': 5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
+ '@mui/system': 5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
+ '@mui/utils': 5.15.20(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
clsx: 2.1.1
prop-types: 15.8.1
- react: 19.0.0-rc-9d4fba0788-20240530
- react-dom: 19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530)
+ react: 19.0.0-rc-fb9a90fa48-20240614
+ react-dom: 19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614)
reselect: 4.1.8
transitivePeerDependencies:
- '@emotion/react'
@@ -6387,7 +6761,7 @@ snapshots:
'@rollup/rollup-win32-x64-msvc@4.17.2':
optional: true
- '@shikijs/core@1.6.5': {}
+ '@shikijs/core@1.7.0': {}
'@sindresorhus/is@4.6.0': {}
@@ -6606,6 +6980,123 @@ snapshots:
dependencies:
'@types/node': 20.14.2
+ '@types/d3-array@3.2.1': {}
+
+ '@types/d3-axis@3.0.6':
+ dependencies:
+ '@types/d3-selection': 3.0.10
+
+ '@types/d3-brush@3.0.6':
+ dependencies:
+ '@types/d3-selection': 3.0.10
+
+ '@types/d3-chord@3.0.6': {}
+
+ '@types/d3-color@3.1.3': {}
+
+ '@types/d3-contour@3.0.6':
+ dependencies:
+ '@types/d3-array': 3.2.1
+ '@types/geojson': 7946.0.14
+
+ '@types/d3-delaunay@6.0.4': {}
+
+ '@types/d3-dispatch@3.0.6': {}
+
+ '@types/d3-drag@3.0.7':
+ dependencies:
+ '@types/d3-selection': 3.0.10
+
+ '@types/d3-dsv@3.0.7': {}
+
+ '@types/d3-ease@3.0.2': {}
+
+ '@types/d3-fetch@3.0.7':
+ dependencies:
+ '@types/d3-dsv': 3.0.7
+
+ '@types/d3-force@3.0.9': {}
+
+ '@types/d3-format@3.0.4': {}
+
+ '@types/d3-geo@3.1.0':
+ dependencies:
+ '@types/geojson': 7946.0.14
+
+ '@types/d3-hierarchy@3.1.7': {}
+
+ '@types/d3-interpolate@3.0.4':
+ dependencies:
+ '@types/d3-color': 3.1.3
+
+ '@types/d3-path@3.1.0': {}
+
+ '@types/d3-polygon@3.0.2': {}
+
+ '@types/d3-quadtree@3.0.6': {}
+
+ '@types/d3-random@3.0.3': {}
+
+ '@types/d3-scale-chromatic@3.0.3': {}
+
+ '@types/d3-scale@4.0.8':
+ dependencies:
+ '@types/d3-time': 3.0.3
+
+ '@types/d3-selection@3.0.10': {}
+
+ '@types/d3-shape@3.1.6':
+ dependencies:
+ '@types/d3-path': 3.1.0
+
+ '@types/d3-time-format@4.0.3': {}
+
+ '@types/d3-time@3.0.3': {}
+
+ '@types/d3-timer@3.0.2': {}
+
+ '@types/d3-transition@3.0.8':
+ dependencies:
+ '@types/d3-selection': 3.0.10
+
+ '@types/d3-zoom@3.0.8':
+ dependencies:
+ '@types/d3-interpolate': 3.0.4
+ '@types/d3-selection': 3.0.10
+
+ '@types/d3@7.4.3':
+ dependencies:
+ '@types/d3-array': 3.2.1
+ '@types/d3-axis': 3.0.6
+ '@types/d3-brush': 3.0.6
+ '@types/d3-chord': 3.0.6
+ '@types/d3-color': 3.1.3
+ '@types/d3-contour': 3.0.6
+ '@types/d3-delaunay': 6.0.4
+ '@types/d3-dispatch': 3.0.6
+ '@types/d3-drag': 3.0.7
+ '@types/d3-dsv': 3.0.7
+ '@types/d3-ease': 3.0.2
+ '@types/d3-fetch': 3.0.7
+ '@types/d3-force': 3.0.9
+ '@types/d3-format': 3.0.4
+ '@types/d3-geo': 3.1.0
+ '@types/d3-hierarchy': 3.1.7
+ '@types/d3-interpolate': 3.0.4
+ '@types/d3-path': 3.1.0
+ '@types/d3-polygon': 3.0.2
+ '@types/d3-quadtree': 3.0.6
+ '@types/d3-random': 3.0.3
+ '@types/d3-scale': 4.0.8
+ '@types/d3-scale-chromatic': 3.0.3
+ '@types/d3-selection': 3.0.10
+ '@types/d3-shape': 3.1.6
+ '@types/d3-time': 3.0.3
+ '@types/d3-time-format': 4.0.3
+ '@types/d3-timer': 3.0.2
+ '@types/d3-transition': 3.0.8
+ '@types/d3-zoom': 3.0.8
+
'@types/debug@4.1.12':
dependencies:
'@types/ms': 0.7.34
@@ -6623,6 +7114,8 @@ snapshots:
'@types/jsonfile': 6.1.4
'@types/node': 20.14.2
+ '@types/geojson@7946.0.14': {}
+
'@types/hast@3.0.4':
dependencies:
'@types/unist': 3.0.2
@@ -6677,7 +7170,7 @@ snapshots:
'@types/react-transition-group@4.4.10':
dependencies:
- '@types/react': types-react@19.0.0-rc.0
+ '@types/react': types-react@19.0.0-rc.1
'@types/responselike@1.0.3':
dependencies:
@@ -6802,6 +7295,16 @@ snapshots:
dependencies:
acorn: 8.11.3
+ acorn-node@1.8.2:
+ dependencies:
+ acorn: 7.4.1
+ acorn-walk: 7.2.0
+ xtend: 4.0.2
+
+ acorn-walk@7.2.0: {}
+
+ acorn@7.4.1: {}
+
acorn@8.11.3: {}
adm-zip@0.5.14: {}
@@ -6817,14 +7320,14 @@ snapshots:
clean-stack: 5.2.0
indent-string: 5.0.0
- ahooks@3.8.0(react@19.0.0-rc-9d4fba0788-20240530):
+ ahooks@3.8.0(react@19.0.0-rc-fb9a90fa48-20240614):
dependencies:
'@babel/runtime': 7.24.6
dayjs: 1.11.11
intersection-observer: 0.12.2
js-cookie: 2.2.1
lodash: 4.17.21
- react: 19.0.0-rc-9d4fba0788-20240530
+ react: 19.0.0-rc-fb9a90fa48-20240614
react-fast-compare: 3.2.2
resize-observer-polyfill: 1.5.1
screenfull: 5.2.0
@@ -6844,16 +7347,16 @@ snapshots:
require-from-string: 2.0.2
uri-js: 4.4.1
- allotment@1.20.2(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530):
+ allotment@1.20.2(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614):
dependencies:
classnames: 2.5.1
eventemitter3: 5.0.1
lodash.clamp: 4.0.3
lodash.debounce: 4.0.8
lodash.isequal: 4.5.0
- react: 19.0.0-rc-9d4fba0788-20240530
- react-dom: 19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530)
- use-resize-observer: 9.1.0(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)
+ react: 19.0.0-rc-fb9a90fa48-20240614
+ react-dom: 19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614)
+ use-resize-observer: 9.1.0(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)
ansi-align@2.0.0:
dependencies:
@@ -6982,6 +7485,16 @@ snapshots:
postcss: 8.4.38
postcss-value-parser: 4.2.0
+ autoprefixer@9.8.8:
+ dependencies:
+ browserslist: 4.23.0
+ caniuse-lite: 1.0.30001616
+ normalize-range: 0.1.2
+ num2fraction: 1.2.2
+ picocolors: 0.2.1
+ postcss: 7.0.39
+ postcss-value-parser: 4.2.0
+
available-typed-arrays@1.0.7:
dependencies:
possible-typed-array-names: 1.0.0
@@ -7068,6 +7581,8 @@ snapshots:
dependencies:
semver: 7.6.1
+ bytes@3.1.2: {}
+
cacheable-lookup@5.0.4: {}
cacheable-request@7.0.4:
@@ -7180,6 +7695,16 @@ snapshots:
color-name@1.1.4: {}
+ color-string@1.9.1:
+ dependencies:
+ color-name: 1.1.4
+ simple-swizzle: 0.2.2
+
+ color@3.2.1:
+ dependencies:
+ color-convert: 1.9.3
+ color-string: 1.9.1
+
colord@2.9.3: {}
colorette@2.0.20: {}
@@ -7196,6 +7721,10 @@ snapshots:
commander@4.1.1: {}
+ commander@5.1.0: {}
+
+ commander@7.2.0: {}
+
compare-func@2.0.0:
dependencies:
array-ify: 1.0.0
@@ -7303,10 +7832,164 @@ snapshots:
mdn-data: 2.0.30
source-map-js: 1.2.0
+ css-unit-converter@1.1.2: {}
+
cssesc@3.0.0: {}
csstype@3.1.3: {}
+ d3-array@3.2.4:
+ dependencies:
+ internmap: 2.0.3
+
+ d3-axis@3.0.0: {}
+
+ d3-brush@3.0.0:
+ dependencies:
+ d3-dispatch: 3.0.1
+ d3-drag: 3.0.0
+ d3-interpolate: 3.0.1
+ d3-selection: 3.0.0
+ d3-transition: 3.0.1(d3-selection@3.0.0)
+
+ d3-chord@3.0.1:
+ dependencies:
+ d3-path: 3.1.0
+
+ d3-color@3.1.0: {}
+
+ d3-contour@4.0.2:
+ dependencies:
+ d3-array: 3.2.4
+
+ d3-delaunay@6.0.4:
+ dependencies:
+ delaunator: 5.0.1
+
+ d3-dispatch@3.0.1: {}
+
+ d3-drag@3.0.0:
+ dependencies:
+ d3-dispatch: 3.0.1
+ d3-selection: 3.0.0
+
+ d3-dsv@3.0.1:
+ dependencies:
+ commander: 7.2.0
+ iconv-lite: 0.6.3
+ rw: 1.3.3
+
+ d3-ease@3.0.1: {}
+
+ d3-fetch@3.0.1:
+ dependencies:
+ d3-dsv: 3.0.1
+
+ d3-force@3.0.0:
+ dependencies:
+ d3-dispatch: 3.0.1
+ d3-quadtree: 3.0.1
+ d3-timer: 3.0.1
+
+ d3-format@3.1.0: {}
+
+ d3-geo@3.1.1:
+ dependencies:
+ d3-array: 3.2.4
+
+ d3-hierarchy@3.1.2: {}
+
+ d3-interpolate@3.0.1:
+ dependencies:
+ d3-color: 3.1.0
+
+ d3-path@3.1.0: {}
+
+ d3-polygon@3.0.1: {}
+
+ d3-quadtree@3.0.1: {}
+
+ d3-random@3.0.1: {}
+
+ d3-scale-chromatic@3.1.0:
+ dependencies:
+ d3-color: 3.1.0
+ d3-interpolate: 3.0.1
+
+ d3-scale@4.0.2:
+ dependencies:
+ d3-array: 3.2.4
+ d3-format: 3.1.0
+ d3-interpolate: 3.0.1
+ d3-time: 3.1.0
+ d3-time-format: 4.1.0
+
+ d3-selection@3.0.0: {}
+
+ d3-shape@3.2.0:
+ dependencies:
+ d3-path: 3.1.0
+
+ d3-time-format@4.1.0:
+ dependencies:
+ d3-time: 3.1.0
+
+ d3-time@3.1.0:
+ dependencies:
+ d3-array: 3.2.4
+
+ d3-timer@3.0.1: {}
+
+ d3-transition@3.0.1(d3-selection@3.0.0):
+ dependencies:
+ d3-color: 3.1.0
+ d3-dispatch: 3.0.1
+ d3-ease: 3.0.1
+ d3-interpolate: 3.0.1
+ d3-selection: 3.0.0
+ d3-timer: 3.0.1
+
+ d3-zoom@3.0.0:
+ dependencies:
+ d3-dispatch: 3.0.1
+ d3-drag: 3.0.0
+ d3-interpolate: 3.0.1
+ d3-selection: 3.0.0
+ d3-transition: 3.0.1(d3-selection@3.0.0)
+
+ d3@7.9.0:
+ dependencies:
+ d3-array: 3.2.4
+ d3-axis: 3.0.0
+ d3-brush: 3.0.0
+ d3-chord: 3.0.1
+ d3-color: 3.1.0
+ d3-contour: 4.0.2
+ d3-delaunay: 6.0.4
+ d3-dispatch: 3.0.1
+ d3-drag: 3.0.0
+ d3-dsv: 3.0.1
+ d3-ease: 3.0.1
+ d3-fetch: 3.0.1
+ d3-force: 3.0.0
+ d3-format: 3.1.0
+ d3-geo: 3.1.1
+ d3-hierarchy: 3.1.2
+ d3-interpolate: 3.0.1
+ d3-path: 3.1.0
+ d3-polygon: 3.0.1
+ d3-quadtree: 3.0.1
+ d3-random: 3.0.1
+ d3-scale: 4.0.2
+ d3-scale-chromatic: 3.1.0
+ d3-selection: 3.0.0
+ d3-shape: 3.2.0
+ d3-time: 3.1.0
+ d3-time-format: 4.1.0
+ d3-timer: 3.0.1
+ d3-transition: 3.0.1(d3-selection@3.0.0)
+ d3-zoom: 3.0.0
+
d@1.0.2:
dependencies:
es5-ext: 0.10.64
@@ -7378,6 +8061,12 @@ snapshots:
has-property-descriptors: 1.0.2
object-keys: 1.1.1
+ defined@1.0.1: {}
+
+ delaunator@5.0.1:
+ dependencies:
+ robust-predicates: 3.0.2
+
delayed-stream@1.0.0: {}
deprecation@2.3.1: {}
@@ -7389,6 +8078,12 @@ snapshots:
detect-node@2.1.0:
optional: true
+ detective@5.2.1:
+ dependencies:
+ acorn-node: 1.8.2
+ defined: 1.0.1
+ minimist: 1.2.8
+
devlop@1.1.0:
dependencies:
dequal: 2.0.3
@@ -8016,13 +8711,13 @@ snapshots:
fraction.js@4.3.7: {}
- framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530):
+ framer-motion@11.2.10(@emotion/is-prop-valid@1.2.2)(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614):
dependencies:
tslib: 2.6.2
optionalDependencies:
'@emotion/is-prop-valid': 1.2.2
- react: 19.0.0-rc-9d4fba0788-20240530
- react-dom: 19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530)
+ react: 19.0.0-rc-fb9a90fa48-20240614
+ react-dom: 19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614)
fs-extra@11.2.0:
dependencies:
@@ -8317,7 +9012,6 @@ snapshots:
iconv-lite@0.6.3:
dependencies:
safer-buffer: 2.1.2
- optional: true
icss-utils@5.1.0(postcss@8.4.38):
dependencies:
@@ -8364,6 +9058,8 @@ snapshots:
hasown: 2.0.2
side-channel: 1.0.6
+ internmap@2.0.3: {}
+
intersection-observer@0.12.2: {}
ip-address@9.0.5:
@@ -8387,6 +9083,8 @@ snapshots:
is-arrayish@0.2.1: {}
+ is-arrayish@0.3.2: {}
+
is-async-function@2.0.0:
dependencies:
has-tostringtag: 1.0.2
@@ -8555,10 +9253,10 @@ snapshots:
jiti@1.21.0: {}
- jotai@2.8.3(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0):
+ jotai@2.8.3(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1):
optionalDependencies:
- '@types/react': types-react@19.0.0-rc.0
- react: 19.0.0-rc-9d4fba0788-20240530
+ '@types/react': types-react@19.0.0-rc.1
+ react: 19.0.0-rc-fb9a90fa48-20240614
js-cookie@2.2.1: {}
@@ -9046,16 +9744,16 @@ snapshots:
ms@2.1.3: {}
- mui-color-input@2.0.3(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@mui/material@5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0):
+ mui-color-input@2.0.3(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@mui/material@5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1):
dependencies:
'@ctrl/tinycolor': 4.1.0
- '@emotion/react': 11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
- '@emotion/styled': 11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
- '@mui/material': 5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
- react: 19.0.0-rc-9d4fba0788-20240530
- react-dom: 19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530)
+ '@emotion/react': 11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
+ '@emotion/styled': 11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
+ '@mui/material': 5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
+ react: 19.0.0-rc-fb9a90fa48-20240614
+ react-dom: 19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614)
optionalDependencies:
- '@types/react': types-react@19.0.0-rc.0
+ '@types/react': types-react@19.0.0-rc.1
mz@2.7.0:
dependencies:
@@ -9082,6 +9780,10 @@ snapshots:
node-domexception@1.0.0: {}
+ node-emoji@1.11.0:
+ dependencies:
+ lodash: 4.17.21
+
node-fetch-native@1.6.4: {}
node-fetch@3.3.2:
@@ -9104,6 +9806,8 @@ snapshots:
normalize-url@6.1.0: {}
+ normalize.css@8.0.1: {}
+
npm-normalize-package-bin@3.0.1: {}
npm-run-all2@6.2.0:
@@ -9124,8 +9828,12 @@ snapshots:
dependencies:
path-key: 4.0.0
+ num2fraction@1.2.2: {}
+
object-assign@4.1.1: {}
+ object-hash@2.2.0: {}
+
object-hash@3.0.0: {}
object-inspect@1.13.1: {}
@@ -9290,6 +9998,8 @@ snapshots:
pend@1.2.0: {}
+ picocolors@0.2.1: {}
+
picocolors@1.0.1: {}
picomatch@2.3.1: {}
@@ -9307,6 +10017,13 @@ snapshots:
possible-typed-array-names@1.0.0: {}
+ postcss-functions@3.0.0:
+ dependencies:
+ glob: 7.2.3
+ object-assign: 4.1.1
+ postcss: 6.0.23
+ postcss-value-parser: 3.3.1
+
postcss-html@1.7.0:
dependencies:
htmlparser2: 8.0.2
@@ -9328,6 +10045,11 @@ snapshots:
read-cache: 1.0.0
resolve: 1.22.8
+ postcss-js@2.0.3:
+ dependencies:
+ camelcase-css: 2.0.1
+ postcss: 7.0.39
+
postcss-js@4.0.1(postcss@8.4.38):
dependencies:
camelcase-css: 2.0.1
@@ -9365,6 +10087,11 @@ snapshots:
postcss: 8.4.38
postcss-selector-parser: 6.0.16
+ postcss-nested@4.2.3:
+ dependencies:
+ postcss: 7.0.39
+ postcss-selector-parser: 6.1.0
+
postcss-nested@6.0.1(postcss@8.4.38):
dependencies:
postcss: 8.4.38
@@ -9398,8 +10125,27 @@ snapshots:
dependencies:
postcss: 8.4.38
+ postcss-value-parser@3.3.1: {}
+
postcss-value-parser@4.2.0: {}
+ postcss@6.0.23:
+ dependencies:
+ chalk: 2.4.2
+ source-map: 0.6.1
+ supports-color: 5.5.0
+
+ postcss@7.0.32:
+ dependencies:
+ chalk: 2.4.2
+ source-map: 0.6.1
+ supports-color: 6.1.0
+
+ postcss@7.0.39:
+ dependencies:
+ picocolors: 0.2.1
+ source-map: 0.6.1
+
postcss@8.4.38:
dependencies:
nanoid: 3.3.7
@@ -9421,6 +10167,8 @@ snapshots:
prettier@3.3.2: {}
+ pretty-hrtime@1.0.3: {}
+
progress@2.0.3: {}
prop-types@15.8.1:
@@ -9445,6 +10193,13 @@ snapshots:
punycode@2.3.1: {}
+ purgecss@2.3.0:
+ dependencies:
+ commander: 5.1.0
+ glob: 7.2.3
+ postcss: 7.0.32
+ postcss-selector-parser: 6.1.0
+
queue-microtask@1.2.3: {}
quick-lru@5.1.1: {}
@@ -9477,57 +10232,57 @@ snapshots:
- supports-color
- utf-8-validate
- react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530):
+ react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614):
dependencies:
- react: 19.0.0-rc-9d4fba0788-20240530
- scheduler: 0.25.0-rc-9d4fba0788-20240530
+ react: 19.0.0-rc-fb9a90fa48-20240614
+ scheduler: 0.25.0-rc-fb9a90fa48-20240614
- react-error-boundary@4.0.13(react@19.0.0-rc-9d4fba0788-20240530):
+ react-error-boundary@4.0.13(react@19.0.0-rc-fb9a90fa48-20240614):
dependencies:
'@babel/runtime': 7.24.5
- react: 19.0.0-rc-9d4fba0788-20240530
+ react: 19.0.0-rc-fb9a90fa48-20240614
react-fast-compare@3.2.2: {}
- react-fast-marquee@1.6.4(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530):
+ react-fast-marquee@1.6.4(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614):
dependencies:
- react: 19.0.0-rc-9d4fba0788-20240530
- react-dom: 19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530)
+ react: 19.0.0-rc-fb9a90fa48-20240614
+ react-dom: 19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614)
- react-hook-form-mui@7.0.0(n2wpefg76qqlnn3amngg4fapru):
+ react-hook-form-mui@7.0.0(2dzipru5rzzwe2tvrvu2mntgfa):
dependencies:
- '@mui/material': 5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
- react: 19.0.0-rc-9d4fba0788-20240530
- react-hook-form: 7.52.0(react@19.0.0-rc-9d4fba0788-20240530)
+ '@mui/material': 5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
+ react: 19.0.0-rc-fb9a90fa48-20240614
+ react-hook-form: 7.52.0(react@19.0.0-rc-fb9a90fa48-20240614)
optionalDependencies:
- '@mui/icons-material': 5.15.20(@mui/material@5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0))(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0)
+ '@mui/icons-material': 5.15.20(@mui/material@5.15.20(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1))(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1)
- react-hook-form@7.52.0(react@19.0.0-rc-9d4fba0788-20240530):
+ react-hook-form@7.52.0(react@19.0.0-rc-fb9a90fa48-20240614):
dependencies:
- react: 19.0.0-rc-9d4fba0788-20240530
+ react: 19.0.0-rc-fb9a90fa48-20240614
- react-i18next@14.1.2(i18next@23.11.5)(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530):
+ react-i18next@14.1.2(i18next@23.11.5)(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614):
dependencies:
'@babel/runtime': 7.24.5
html-parse-stringify: 3.0.1
i18next: 23.11.5
- react: 19.0.0-rc-9d4fba0788-20240530
+ react: 19.0.0-rc-fb9a90fa48-20240614
optionalDependencies:
- react-dom: 19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530)
+ react-dom: 19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614)
react-is@16.13.1: {}
react-is@18.3.1: {}
- react-markdown@9.0.1(react@19.0.0-rc-9d4fba0788-20240530)(types-react@19.0.0-rc.0):
+ react-markdown@9.0.1(react@19.0.0-rc-fb9a90fa48-20240614)(types-react@19.0.0-rc.1):
dependencies:
'@types/hast': 3.0.4
- '@types/react': types-react@19.0.0-rc.0
+ '@types/react': types-react@19.0.0-rc.1
devlop: 1.1.0
hast-util-to-jsx-runtime: 2.3.0
html-url-attributes: 3.0.0
mdast-util-to-hast: 13.1.0
- react: 19.0.0-rc-9d4fba0788-20240530
+ react: 19.0.0-rc-fb9a90fa48-20240614
remark-parse: 11.0.0
remark-rehype: 11.1.0
unified: 11.0.4
@@ -9538,33 +10293,33 @@ snapshots:
react-refresh@0.14.2: {}
- react-router-dom@6.23.1(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530):
+ react-router-dom@6.23.1(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614):
dependencies:
'@remix-run/router': 1.16.1
- react: 19.0.0-rc-9d4fba0788-20240530
- react-dom: 19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530)
- react-router: 6.23.1(react@19.0.0-rc-9d4fba0788-20240530)
+ react: 19.0.0-rc-fb9a90fa48-20240614
+ react-dom: 19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614)
+ react-router: 6.23.1(react@19.0.0-rc-fb9a90fa48-20240614)
- react-router@6.23.1(react@19.0.0-rc-9d4fba0788-20240530):
+ react-router@6.23.1(react@19.0.0-rc-fb9a90fa48-20240614):
dependencies:
'@remix-run/router': 1.16.1
- react: 19.0.0-rc-9d4fba0788-20240530
+ react: 19.0.0-rc-fb9a90fa48-20240614
- react-transition-group@4.4.5(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530):
+ react-transition-group@4.4.5(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614):
dependencies:
'@babel/runtime': 7.24.5
dom-helpers: 5.2.1
loose-envify: 1.4.0
prop-types: 15.8.1
- react: 19.0.0-rc-9d4fba0788-20240530
- react-dom: 19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530)
+ react: 19.0.0-rc-fb9a90fa48-20240614
+ react-dom: 19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614)
- react-virtuoso@4.7.10(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530):
+ react-virtuoso@4.7.10(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614):
dependencies:
- react: 19.0.0-rc-9d4fba0788-20240530
- react-dom: 19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530)
+ react: 19.0.0-rc-fb9a90fa48-20240614
+ react-dom: 19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614)
- react@19.0.0-rc-9d4fba0788-20240530: {}
+ react@19.0.0-rc-fb9a90fa48-20240614: {}
read-cache@1.0.0:
dependencies:
@@ -9581,6 +10336,11 @@ snapshots:
real-cancellable-promise@1.2.0: {}
+ reduce-css-calc@2.1.8:
+ dependencies:
+ css-unit-converter: 1.1.2
+ postcss-value-parser: 3.3.1
+
reflect.getprototypeof@1.0.6:
dependencies:
call-bind: 1.0.7
@@ -9683,6 +10443,8 @@ snapshots:
sprintf-js: 1.1.3
optional: true
+ robust-predicates@3.0.2: {}
+
rollup@4.17.2:
dependencies:
'@types/estree': 1.0.5
@@ -9709,6 +10471,8 @@ snapshots:
dependencies:
queue-microtask: 1.2.3
+ rw@1.3.3: {}
+
safe-array-concat@1.1.2:
dependencies:
call-bind: 1.0.7
@@ -9724,8 +10488,7 @@ snapshots:
es-errors: 1.3.0
is-regex: 1.1.4
- safer-buffer@2.1.2:
- optional: true
+ safer-buffer@2.1.2: {}
sass@1.77.5:
dependencies:
@@ -9735,7 +10498,7 @@ snapshots:
sax@1.3.0: {}
- scheduler@0.25.0-rc-9d4fba0788-20240530: {}
+ scheduler@0.25.0-rc-fb9a90fa48-20240614: {}
screenfull@5.2.0: {}
@@ -9787,9 +10550,9 @@ snapshots:
shell-quote@1.8.1: {}
- shiki@1.6.5:
+ shiki@1.7.0:
dependencies:
- '@shikijs/core': 1.6.5
+ '@shikijs/core': 1.7.0
side-channel@1.0.6:
dependencies:
@@ -9802,6 +10565,10 @@ snapshots:
signal-exit@4.1.0: {}
+ simple-swizzle@0.2.2:
+ dependencies:
+ is-arrayish: 0.3.2
+
slash@3.0.0: {}
slice-ansi@4.0.0:
@@ -9838,8 +10605,7 @@ snapshots:
source-map@0.5.7: {}
- source-map@0.6.1:
- optional: true
+ source-map@0.6.1: {}
source-map@0.7.4: {}
@@ -10056,6 +10822,10 @@ snapshots:
dependencies:
has-flag: 3.0.0
+ supports-color@6.1.0:
+ dependencies:
+ has-flag: 3.0.0
+
supports-color@7.2.0:
dependencies:
has-flag: 4.0.0
@@ -10071,11 +10841,11 @@ snapshots:
svg-tags@1.0.0: {}
- swr@2.2.5(react@19.0.0-rc-9d4fba0788-20240530):
+ swr@2.2.5(react@19.0.0-rc-fb9a90fa48-20240614):
dependencies:
client-only: 0.0.1
- react: 19.0.0-rc-9d4fba0788-20240530
- use-sync-external-store: 1.2.2(react@19.0.0-rc-9d4fba0788-20240530)
+ react: 19.0.0-rc-fb9a90fa48-20240614
+ use-sync-external-store: 1.2.2(react@19.0.0-rc-fb9a90fa48-20240614)
synckit@0.8.8:
dependencies:
@@ -10090,6 +10860,35 @@ snapshots:
string-width: 4.2.3
strip-ansi: 6.0.1
+ tailwindcss-textshadow@2.1.3:
+ dependencies:
+ tailwindcss: 1.9.6
+
+ tailwindcss@1.9.6:
+ dependencies:
+ '@fullhuman/postcss-purgecss': 2.3.0
+ autoprefixer: 9.8.8
+ browserslist: 4.23.0
+ bytes: 3.1.2
+ chalk: 4.1.2
+ color: 3.2.1
+ detective: 5.2.1
+ fs-extra: 8.1.0
+ html-tags: 3.3.1
+ lodash: 4.17.21
+ node-emoji: 1.11.0
+ normalize.css: 8.0.1
+ object-hash: 2.2.0
+ postcss: 7.0.39
+ postcss-functions: 3.0.0
+ postcss-js: 2.0.3
+ postcss-nested: 4.2.3
+ postcss-selector-parser: 6.1.0
+ postcss-value-parser: 4.2.0
+ pretty-hrtime: 1.0.3
+ reduce-css-calc: 2.1.8
+ resolve: 1.22.8
+
tailwindcss@3.4.4:
dependencies:
'@alloc/quick-lru': 5.2.0
@@ -10196,7 +10995,7 @@ snapshots:
tslib@2.6.2: {}
- tsx@4.15.5:
+ tsx@4.15.6:
dependencies:
esbuild: 0.21.4
get-tsconfig: 4.7.5
@@ -10252,11 +11051,11 @@ snapshots:
dependencies:
is-typedarray: 1.0.0
- types-react-dom@19.0.0-rc.0:
+ types-react-dom@19.0.0-rc.1:
dependencies:
- '@types/react': types-react@19.0.0-rc.0
+ '@types/react': types-react@19.0.0-rc.1
- types-react@19.0.0-rc.0:
+ types-react@19.0.0-rc.1:
dependencies:
csstype: 3.1.3
@@ -10383,15 +11182,15 @@ snapshots:
dependencies:
prepend-http: 1.0.4
- use-resize-observer@9.1.0(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530):
+ use-resize-observer@9.1.0(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614):
dependencies:
'@juggle/resize-observer': 3.4.0
- react: 19.0.0-rc-9d4fba0788-20240530
- react-dom: 19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530)
+ react: 19.0.0-rc-fb9a90fa48-20240614
+ react-dom: 19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614)
- use-sync-external-store@1.2.2(react@19.0.0-rc-9d4fba0788-20240530):
+ use-sync-external-store@1.2.2(react@19.0.0-rc-fb9a90fa48-20240614):
dependencies:
- react: 19.0.0-rc-9d4fba0788-20240530
+ react: 19.0.0-rc-fb9a90fa48-20240614
utf-8-validate@5.0.10:
dependencies:
@@ -10410,10 +11209,10 @@ snapshots:
unist-util-stringify-position: 4.0.0
vfile-message: 4.0.2
- virtua@0.31.0(react-dom@19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530))(react@19.0.0-rc-9d4fba0788-20240530):
+ virtua@0.31.0(react-dom@19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614))(react@19.0.0-rc-fb9a90fa48-20240614):
optionalDependencies:
- react: 19.0.0-rc-9d4fba0788-20240530
- react-dom: 19.0.0-rc-9d4fba0788-20240530(react@19.0.0-rc-9d4fba0788-20240530)
+ react: 19.0.0-rc-fb9a90fa48-20240614
+ react-dom: 19.0.0-rc-fb9a90fa48-20240614(react@19.0.0-rc-fb9a90fa48-20240614)
vite-plugin-monaco-editor-new@1.1.3(monaco-editor@0.49.0):
dependencies:
@@ -10573,6 +11372,8 @@ snapshots:
xdg-basedir@3.0.0: {}
+ xtend@4.0.2: {}
+
y18n@5.0.8: {}
yaeti@0.0.6: {}
diff --git a/clash-verge-rev/package.json b/clash-verge-rev/package.json
index 0a2cbc037d..1f0aa4b859 100644
--- a/clash-verge-rev/package.json
+++ b/clash-verge-rev/package.json
@@ -24,10 +24,10 @@
"@emotion/react": "^11.11.4",
"@emotion/styled": "^11.11.5",
"@juggle/resize-observer": "^3.4.0",
- "@mui/icons-material": "^5.15.19",
+ "@mui/icons-material": "^5.15.20",
"@mui/lab": "5.0.0-alpha.149",
- "@mui/material": "^5.15.19",
- "@mui/x-data-grid": "^6.20.1",
+ "@mui/material": "^5.15.20",
+ "@mui/x-data-grid": "^7.7.0",
"@tauri-apps/api": "^1.5.6",
"@types/json-schema": "^7.0.15",
"ahooks": "^3.8.0",
@@ -43,7 +43,7 @@
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-error-boundary": "^3.1.4",
- "react-hook-form": "^7.51.5",
+ "react-hook-form": "^7.52.0",
"react-i18next": "^13.5.0",
"react-markdown": "^9.0.1",
"react-router-dom": "^6.23.1",
@@ -76,7 +76,7 @@
"sass": "^1.77.5",
"terser": "^5.31.1",
"typescript": "^5.4.5",
- "vite": "^5.2.13",
+ "vite": "^5.3.1",
"vite-plugin-monaco-editor": "^1.1.0",
"vite-plugin-svgr": "^4.2.0"
},
diff --git a/clash-verge-rev/pnpm-lock.yaml b/clash-verge-rev/pnpm-lock.yaml
index 58c68d6317..456507feff 100644
--- a/clash-verge-rev/pnpm-lock.yaml
+++ b/clash-verge-rev/pnpm-lock.yaml
@@ -26,17 +26,17 @@ importers:
specifier: ^3.4.0
version: 3.4.0
"@mui/icons-material":
- specifier: ^5.15.19
- version: 5.15.19(@mui/material@5.15.19(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)
+ specifier: ^5.15.20
+ version: 5.15.20(@mui/material@5.15.20(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)
"@mui/lab":
specifier: 5.0.0-alpha.149
- version: 5.0.0-alpha.149(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@mui/material@5.15.19(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ version: 5.0.0-alpha.149(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@mui/material@5.15.20(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
"@mui/material":
- specifier: ^5.15.19
- version: 5.15.19(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ specifier: ^5.15.20
+ version: 5.15.20(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
"@mui/x-data-grid":
- specifier: ^6.20.1
- version: 6.20.1(@mui/material@5.15.19(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@5.15.15(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ specifier: ^7.7.0
+ version: 7.7.0(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@mui/material@5.15.20(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
"@tauri-apps/api":
specifier: ^1.5.6
version: 1.5.6
@@ -83,8 +83,8 @@ importers:
specifier: ^3.1.4
version: 3.1.4(react@18.3.1)
react-hook-form:
- specifier: ^7.51.5
- version: 7.51.5(react@18.3.1)
+ specifier: ^7.52.0
+ version: 7.52.0(react@18.3.1)
react-i18next:
specifier: ^13.5.0
version: 13.5.0(i18next@23.11.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -139,10 +139,10 @@ importers:
version: 4.4.10
"@vitejs/plugin-legacy":
specifier: ^5.4.1
- version: 5.4.1(terser@5.31.1)(vite@5.2.13(@types/node@20.14.2)(sass@1.77.5)(terser@5.31.1))
+ version: 5.4.1(terser@5.31.1)(vite@5.3.1(@types/node@20.14.2)(sass@1.77.5)(terser@5.31.1))
"@vitejs/plugin-react":
specifier: ^4.3.1
- version: 4.3.1(vite@5.2.13(@types/node@20.14.2)(sass@1.77.5)(terser@5.31.1))
+ version: 4.3.1(vite@5.3.1(@types/node@20.14.2)(sass@1.77.5)(terser@5.31.1))
adm-zip:
specifier: ^0.5.14
version: 0.5.14
@@ -177,14 +177,14 @@ importers:
specifier: ^5.4.5
version: 5.4.5
vite:
- specifier: ^5.2.13
- version: 5.2.13(@types/node@20.14.2)(sass@1.77.5)(terser@5.31.1)
+ specifier: ^5.3.1
+ version: 5.3.1(@types/node@20.14.2)(sass@1.77.5)(terser@5.31.1)
vite-plugin-monaco-editor:
specifier: ^1.1.0
version: 1.1.0(monaco-editor@0.49.0)
vite-plugin-svgr:
specifier: ^4.2.0
- version: 4.2.0(rollup@4.18.0)(typescript@5.4.5)(vite@5.2.13(@types/node@20.14.2)(sass@1.77.5)(terser@5.31.1))
+ version: 4.2.0(rollup@4.18.0)(typescript@5.4.5)(vite@5.3.1(@types/node@20.14.2)(sass@1.77.5)(terser@5.31.1))
packages:
"@actions/github@5.1.1":
@@ -1251,208 +1251,208 @@ packages:
integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==,
}
- "@esbuild/aix-ppc64@0.20.2":
+ "@esbuild/aix-ppc64@0.21.5":
resolution:
{
- integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==,
+ integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==,
}
engines: { node: ">=12" }
cpu: [ppc64]
os: [aix]
- "@esbuild/android-arm64@0.20.2":
+ "@esbuild/android-arm64@0.21.5":
resolution:
{
- integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==,
+ integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==,
}
engines: { node: ">=12" }
cpu: [arm64]
os: [android]
- "@esbuild/android-arm@0.20.2":
+ "@esbuild/android-arm@0.21.5":
resolution:
{
- integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==,
+ integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==,
}
engines: { node: ">=12" }
cpu: [arm]
os: [android]
- "@esbuild/android-x64@0.20.2":
+ "@esbuild/android-x64@0.21.5":
resolution:
{
- integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==,
+ integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==,
}
engines: { node: ">=12" }
cpu: [x64]
os: [android]
- "@esbuild/darwin-arm64@0.20.2":
+ "@esbuild/darwin-arm64@0.21.5":
resolution:
{
- integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==,
+ integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==,
}
engines: { node: ">=12" }
cpu: [arm64]
os: [darwin]
- "@esbuild/darwin-x64@0.20.2":
+ "@esbuild/darwin-x64@0.21.5":
resolution:
{
- integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==,
+ integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==,
}
engines: { node: ">=12" }
cpu: [x64]
os: [darwin]
- "@esbuild/freebsd-arm64@0.20.2":
+ "@esbuild/freebsd-arm64@0.21.5":
resolution:
{
- integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==,
+ integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==,
}
engines: { node: ">=12" }
cpu: [arm64]
os: [freebsd]
- "@esbuild/freebsd-x64@0.20.2":
+ "@esbuild/freebsd-x64@0.21.5":
resolution:
{
- integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==,
+ integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==,
}
engines: { node: ">=12" }
cpu: [x64]
os: [freebsd]
- "@esbuild/linux-arm64@0.20.2":
+ "@esbuild/linux-arm64@0.21.5":
resolution:
{
- integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==,
+ integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==,
}
engines: { node: ">=12" }
cpu: [arm64]
os: [linux]
- "@esbuild/linux-arm@0.20.2":
+ "@esbuild/linux-arm@0.21.5":
resolution:
{
- integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==,
+ integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==,
}
engines: { node: ">=12" }
cpu: [arm]
os: [linux]
- "@esbuild/linux-ia32@0.20.2":
+ "@esbuild/linux-ia32@0.21.5":
resolution:
{
- integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==,
+ integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==,
}
engines: { node: ">=12" }
cpu: [ia32]
os: [linux]
- "@esbuild/linux-loong64@0.20.2":
+ "@esbuild/linux-loong64@0.21.5":
resolution:
{
- integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==,
+ integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==,
}
engines: { node: ">=12" }
cpu: [loong64]
os: [linux]
- "@esbuild/linux-mips64el@0.20.2":
+ "@esbuild/linux-mips64el@0.21.5":
resolution:
{
- integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==,
+ integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==,
}
engines: { node: ">=12" }
cpu: [mips64el]
os: [linux]
- "@esbuild/linux-ppc64@0.20.2":
+ "@esbuild/linux-ppc64@0.21.5":
resolution:
{
- integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==,
+ integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==,
}
engines: { node: ">=12" }
cpu: [ppc64]
os: [linux]
- "@esbuild/linux-riscv64@0.20.2":
+ "@esbuild/linux-riscv64@0.21.5":
resolution:
{
- integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==,
+ integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==,
}
engines: { node: ">=12" }
cpu: [riscv64]
os: [linux]
- "@esbuild/linux-s390x@0.20.2":
+ "@esbuild/linux-s390x@0.21.5":
resolution:
{
- integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==,
+ integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==,
}
engines: { node: ">=12" }
cpu: [s390x]
os: [linux]
- "@esbuild/linux-x64@0.20.2":
+ "@esbuild/linux-x64@0.21.5":
resolution:
{
- integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==,
+ integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==,
}
engines: { node: ">=12" }
cpu: [x64]
os: [linux]
- "@esbuild/netbsd-x64@0.20.2":
+ "@esbuild/netbsd-x64@0.21.5":
resolution:
{
- integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==,
+ integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==,
}
engines: { node: ">=12" }
cpu: [x64]
os: [netbsd]
- "@esbuild/openbsd-x64@0.20.2":
+ "@esbuild/openbsd-x64@0.21.5":
resolution:
{
- integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==,
+ integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==,
}
engines: { node: ">=12" }
cpu: [x64]
os: [openbsd]
- "@esbuild/sunos-x64@0.20.2":
+ "@esbuild/sunos-x64@0.21.5":
resolution:
{
- integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==,
+ integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==,
}
engines: { node: ">=12" }
cpu: [x64]
os: [sunos]
- "@esbuild/win32-arm64@0.20.2":
+ "@esbuild/win32-arm64@0.21.5":
resolution:
{
- integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==,
+ integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==,
}
engines: { node: ">=12" }
cpu: [arm64]
os: [win32]
- "@esbuild/win32-ia32@0.20.2":
+ "@esbuild/win32-ia32@0.21.5":
resolution:
{
- integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==,
+ integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==,
}
engines: { node: ">=12" }
cpu: [ia32]
os: [win32]
- "@esbuild/win32-x64@0.20.2":
+ "@esbuild/win32-x64@0.21.5":
resolution:
{
- integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==,
+ integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==,
}
engines: { node: ">=12" }
cpu: [x64]
@@ -1565,16 +1565,16 @@ packages:
"@types/react":
optional: true
- "@mui/core-downloads-tracker@5.15.19":
+ "@mui/core-downloads-tracker@5.15.20":
resolution:
{
- integrity: sha512-tCHSi/Tomez9ERynFhZRvFO6n9ATyrPs+2N80DMDzp6xDVirbBjEwhPcE+x7Lj+nwYw0SqFkOxyvMP0irnm55w==,
+ integrity: sha512-DoL2ppgldL16utL8nNyj/P12f8mCNdx/Hb/AJnX9rLY4b52hCMIx1kH83pbXQ6uMy6n54M3StmEbvSGoj2OFuA==,
}
- "@mui/icons-material@5.15.19":
+ "@mui/icons-material@5.15.20":
resolution:
{
- integrity: sha512-RsEiRxA5azN9b8gI7JRqekkgvxQUlitoBOtZglflb8cUDyP12/cP4gRwhb44Ea1/zwwGGjAj66ZJpGHhKfibNA==,
+ integrity: sha512-oGcKmCuHaYbAAoLN67WKSXtHmEgyWcJToT1uRtmPyxMj9N5uqwc/mRtEnst4Wj/eGr+zYH2FiZQ79v9k7kSk1Q==,
}
engines: { node: ">=12.0.0" }
peerDependencies:
@@ -1606,10 +1606,10 @@ packages:
"@types/react":
optional: true
- "@mui/material@5.15.19":
+ "@mui/material@5.15.20":
resolution:
{
- integrity: sha512-lp5xQBbcRuxNtjpWU0BWZgIrv2XLUz4RJ0RqFXBdESIsKoGCQZ6P3wwU5ZPuj5TjssNiKv9AlM+vHopRxZhvVQ==,
+ integrity: sha512-tVq3l4qoXx/NxUgIx/x3lZiPn/5xDbdTE8VrLczNpfblLYZzlrbxA7kb9mI8NoBF6+w9WE9IrxWnKK5KlPI2bg==,
}
engines: { node: ">=12.0.0" }
peerDependencies:
@@ -1626,10 +1626,10 @@ packages:
"@types/react":
optional: true
- "@mui/private-theming@5.15.14":
+ "@mui/private-theming@5.15.20":
resolution:
{
- integrity: sha512-UH0EiZckOWcxiXLX3Jbb0K7rC8mxTr9L9l6QhOZxYc4r8FHUkefltV9VDGLrzCaWh30SQiJvAEd7djX3XXY6Xw==,
+ integrity: sha512-BK8F94AIqSrnaPYXf2KAOjGZJgWfvqAVQ2gVR3EryvQFtuBnG6RwodxrCvd3B48VuMy6Wsk897+lQMUxJyk+6g==,
}
engines: { node: ">=12.0.0" }
peerDependencies:
@@ -1655,10 +1655,10 @@ packages:
"@emotion/styled":
optional: true
- "@mui/system@5.15.15":
+ "@mui/system@5.15.20":
resolution:
{
- integrity: sha512-aulox6N1dnu5PABsfxVGOZffDVmlxPOVgj56HrUnJE8MCSh8lOvvkd47cebIVQQYAjpwieXQXiDPj5pwM40jTQ==,
+ integrity: sha512-LoMq4IlAAhxzL2VNUDBTQxAb4chnBe8JvRINVNDiMtHE2PiPOoHlhOPutSxEbaL5mkECPVWSv6p8JEV+uykwIA==,
}
engines: { node: ">=12.0.0" }
peerDependencies:
@@ -1685,10 +1685,10 @@ packages:
"@types/react":
optional: true
- "@mui/utils@5.15.14":
+ "@mui/utils@5.15.20":
resolution:
{
- integrity: sha512-0lF/7Hh/ezDv5X7Pry6enMsbYyGKjADzvHyo3Qrc/SSlTsQ1VkbDMbH0m2t3OR5iIVLwMoxwM7yGd+6FCMtTFA==,
+ integrity: sha512-mAbYx0sovrnpAu1zHc3MDIhPqL8RPVC5W5xcO1b7PiSCJPtckIZmBkp8hefamAvUiAV8gpfMOM6Zb+eSisbI2A==,
}
engines: { node: ">=12.0.0" }
peerDependencies:
@@ -1698,15 +1698,14 @@ packages:
"@types/react":
optional: true
- "@mui/x-data-grid@6.20.1":
+ "@mui/x-data-grid@7.7.0":
resolution:
{
- integrity: sha512-x1muWWIG9otkk4FuvoTxH3I4foyA1caFu8ZC9TvMQ+7NSBKcfy/JeLQfKkZk8ACUUosvENdrRIkhqU2xdIqIVg==,
+ integrity: sha512-s3Oii9EKcYPnL7M4g5evNley/J0slLL6xWRi0VwYqTHPGntBAMntUktMZ63bD/xko99f5ZcFoRBYTc55+mJ+AQ==,
}
engines: { node: ">=14.0.0" }
peerDependencies:
- "@mui/material": ^5.4.1
- "@mui/system": ^5.4.1
+ "@mui/material": ^5.15.14
react: ^17.0.0 || ^18.0.0
react-dom: ^17.0.0 || ^18.0.0
@@ -2314,10 +2313,10 @@ packages:
peerDependencies:
vite: ^4.2.0 || ^5.0.0
- acorn@8.11.3:
+ acorn@8.12.0:
resolution:
{
- integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==,
+ integrity: sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==,
}
engines: { node: ">=0.4.0" }
hasBin: true
@@ -2472,10 +2471,10 @@ packages:
}
engines: { node: ">=10" }
- caniuse-lite@1.0.30001632:
+ caniuse-lite@1.0.30001636:
resolution:
{
- integrity: sha512-udx3o7yHJfUxMLkGohMlVHCvFvWmirKh9JAH/d7WOLPetlH+LTL5cocMZ0t7oZx/mdlOWXti97xLZWc8uURRHg==,
+ integrity: sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg==,
}
ccount@2.0.1:
@@ -2706,10 +2705,10 @@ packages:
integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==,
}
- electron-to-chromium@1.4.799:
+ electron-to-chromium@1.4.803:
resolution:
{
- integrity: sha512-3D3DwWkRTzrdEpntY0hMLYwj7SeBk1138CkPE8sBDSj3WzrzOiG2rHm3luw8jucpf+WiyLBCZyU9lMHyQI9M9Q==,
+ integrity: sha512-61H9mLzGOCLLVsnLiRzCbc63uldP0AniRYPV3hbGVtONA1pI7qSGILdbofR7A8TMbOypDocEAjH/e+9k1QIe3g==,
}
end-of-stream@1.4.4:
@@ -2731,10 +2730,10 @@ packages:
integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==,
}
- esbuild@0.20.2:
+ esbuild@0.21.5:
resolution:
{
- integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==,
+ integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==,
}
engines: { node: ">=12" }
hasBin: true
@@ -3785,14 +3784,14 @@ packages:
integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==,
}
- react-hook-form@7.51.5:
+ react-hook-form@7.52.0:
resolution:
{
- integrity: sha512-J2ILT5gWx1XUIJRETiA7M19iXHlG74+6O3KApzvqB/w8S5NQR7AbU8HVZrMALdmDgWpRPYiZJl0zx8Z4L2mP6Q==,
+ integrity: sha512-mJX506Xc6mirzLsmXUJyqlAI3Kj9Ph2RhplYhUVffeOQSnubK2uVqBFOBJmvKikvbFV91pxVXmDiR+QMF19x6A==,
}
engines: { node: ">=12.22.0" }
peerDependencies:
- react: ^16.8.0 || ^17 || ^18
+ react: ^16.8.0 || ^17 || ^18 || ^19
react-i18next@13.5.0:
resolution:
@@ -4348,10 +4347,10 @@ packages:
peerDependencies:
vite: ^2.6.0 || 3 || 4 || 5
- vite@5.2.13:
+ vite@5.3.1:
resolution:
{
- integrity: sha512-SSq1noJfY9pR3I1TUENL3rQYDQCFqgD+lM6fTRAM8Nv6Lsg5hDLaXkjETVeBt+7vZBCMoibD+6IWnT2mJ+Zb/A==,
+ integrity: sha512-XBmSKRLXLxiaPYamLv3/hnP/KXDai1NDexN0FpkTaZXTfycHvkRHoenpgl/fvuK/kPbB6xAgoyiryAhQNxYmAQ==,
}
engines: { node: ^18.0.0 || >=20.0.0 }
hasBin: true
@@ -5389,73 +5388,73 @@ snapshots:
"@emotion/weak-memoize@0.3.1": {}
- "@esbuild/aix-ppc64@0.20.2":
+ "@esbuild/aix-ppc64@0.21.5":
optional: true
- "@esbuild/android-arm64@0.20.2":
+ "@esbuild/android-arm64@0.21.5":
optional: true
- "@esbuild/android-arm@0.20.2":
+ "@esbuild/android-arm@0.21.5":
optional: true
- "@esbuild/android-x64@0.20.2":
+ "@esbuild/android-x64@0.21.5":
optional: true
- "@esbuild/darwin-arm64@0.20.2":
+ "@esbuild/darwin-arm64@0.21.5":
optional: true
- "@esbuild/darwin-x64@0.20.2":
+ "@esbuild/darwin-x64@0.21.5":
optional: true
- "@esbuild/freebsd-arm64@0.20.2":
+ "@esbuild/freebsd-arm64@0.21.5":
optional: true
- "@esbuild/freebsd-x64@0.20.2":
+ "@esbuild/freebsd-x64@0.21.5":
optional: true
- "@esbuild/linux-arm64@0.20.2":
+ "@esbuild/linux-arm64@0.21.5":
optional: true
- "@esbuild/linux-arm@0.20.2":
+ "@esbuild/linux-arm@0.21.5":
optional: true
- "@esbuild/linux-ia32@0.20.2":
+ "@esbuild/linux-ia32@0.21.5":
optional: true
- "@esbuild/linux-loong64@0.20.2":
+ "@esbuild/linux-loong64@0.21.5":
optional: true
- "@esbuild/linux-mips64el@0.20.2":
+ "@esbuild/linux-mips64el@0.21.5":
optional: true
- "@esbuild/linux-ppc64@0.20.2":
+ "@esbuild/linux-ppc64@0.21.5":
optional: true
- "@esbuild/linux-riscv64@0.20.2":
+ "@esbuild/linux-riscv64@0.21.5":
optional: true
- "@esbuild/linux-s390x@0.20.2":
+ "@esbuild/linux-s390x@0.21.5":
optional: true
- "@esbuild/linux-x64@0.20.2":
+ "@esbuild/linux-x64@0.21.5":
optional: true
- "@esbuild/netbsd-x64@0.20.2":
+ "@esbuild/netbsd-x64@0.21.5":
optional: true
- "@esbuild/openbsd-x64@0.20.2":
+ "@esbuild/openbsd-x64@0.21.5":
optional: true
- "@esbuild/sunos-x64@0.20.2":
+ "@esbuild/sunos-x64@0.21.5":
optional: true
- "@esbuild/win32-arm64@0.20.2":
+ "@esbuild/win32-arm64@0.21.5":
optional: true
- "@esbuild/win32-ia32@0.20.2":
+ "@esbuild/win32-ia32@0.21.5":
optional: true
- "@esbuild/win32-x64@0.20.2":
+ "@esbuild/win32-x64@0.21.5":
optional: true
"@fastify/busboy@2.1.1": {}
@@ -5506,7 +5505,7 @@ snapshots:
"@babel/runtime": 7.24.7
"@floating-ui/react-dom": 2.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
"@mui/types": 7.2.14(@types/react@18.3.3)
- "@mui/utils": 5.15.14(@types/react@18.3.3)(react@18.3.1)
+ "@mui/utils": 5.15.20(@types/react@18.3.3)(react@18.3.1)
"@popperjs/core": 2.11.8
clsx: 2.1.1
prop-types: 15.8.1
@@ -5520,7 +5519,7 @@ snapshots:
"@babel/runtime": 7.24.7
"@floating-ui/react-dom": 2.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
"@mui/types": 7.2.14(@types/react@18.3.3)
- "@mui/utils": 5.15.14(@types/react@18.3.3)(react@18.3.1)
+ "@mui/utils": 5.15.20(@types/react@18.3.3)(react@18.3.1)
"@popperjs/core": 2.11.8
clsx: 2.1.1
prop-types: 15.8.1
@@ -5529,25 +5528,25 @@ snapshots:
optionalDependencies:
"@types/react": 18.3.3
- "@mui/core-downloads-tracker@5.15.19": {}
+ "@mui/core-downloads-tracker@5.15.20": {}
- "@mui/icons-material@5.15.19(@mui/material@5.15.19(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)":
+ "@mui/icons-material@5.15.20(@mui/material@5.15.20(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)":
dependencies:
"@babel/runtime": 7.24.7
- "@mui/material": 5.15.19(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@mui/material": 5.15.20(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
optionalDependencies:
"@types/react": 18.3.3
- "@mui/lab@5.0.0-alpha.149(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@mui/material@5.15.19(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)":
+ "@mui/lab@5.0.0-alpha.149(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@mui/material@5.15.20(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)":
dependencies:
"@babel/runtime": 7.24.7
"@mui/base": 5.0.0-beta.20(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- "@mui/material": 5.15.19(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- "@mui/system": 5.15.15(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)
+ "@mui/material": 5.15.20(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@mui/system": 5.15.20(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)
"@mui/types": 7.2.14(@types/react@18.3.3)
- "@mui/utils": 5.15.14(@types/react@18.3.3)(react@18.3.1)
- "@mui/x-tree-view": 6.0.0-alpha.1(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@mui/base@5.0.0-beta.20(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/material@5.15.19(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@5.15.15(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@mui/utils": 5.15.20(@types/react@18.3.3)(react@18.3.1)
+ "@mui/x-tree-view": 6.0.0-alpha.1(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@mui/base@5.0.0-beta.20(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/material@5.15.20(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@5.15.20(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
clsx: 2.1.1
prop-types: 15.8.1
react: 18.3.1
@@ -5557,14 +5556,14 @@ snapshots:
"@emotion/styled": 11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)
"@types/react": 18.3.3
- "@mui/material@5.15.19(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)":
+ "@mui/material@5.15.20(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)":
dependencies:
"@babel/runtime": 7.24.7
"@mui/base": 5.0.0-beta.40(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- "@mui/core-downloads-tracker": 5.15.19
- "@mui/system": 5.15.15(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)
+ "@mui/core-downloads-tracker": 5.15.20
+ "@mui/system": 5.15.20(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)
"@mui/types": 7.2.14(@types/react@18.3.3)
- "@mui/utils": 5.15.14(@types/react@18.3.3)(react@18.3.1)
+ "@mui/utils": 5.15.20(@types/react@18.3.3)(react@18.3.1)
"@types/react-transition-group": 4.4.10
clsx: 2.1.1
csstype: 3.1.3
@@ -5578,10 +5577,10 @@ snapshots:
"@emotion/styled": 11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)
"@types/react": 18.3.3
- "@mui/private-theming@5.15.14(@types/react@18.3.3)(react@18.3.1)":
+ "@mui/private-theming@5.15.20(@types/react@18.3.3)(react@18.3.1)":
dependencies:
"@babel/runtime": 7.24.7
- "@mui/utils": 5.15.14(@types/react@18.3.3)(react@18.3.1)
+ "@mui/utils": 5.15.20(@types/react@18.3.3)(react@18.3.1)
prop-types: 15.8.1
react: 18.3.1
optionalDependencies:
@@ -5598,13 +5597,13 @@ snapshots:
"@emotion/react": 11.11.4(@types/react@18.3.3)(react@18.3.1)
"@emotion/styled": 11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)
- "@mui/system@5.15.15(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)":
+ "@mui/system@5.15.20(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)":
dependencies:
"@babel/runtime": 7.24.7
- "@mui/private-theming": 5.15.14(@types/react@18.3.3)(react@18.3.1)
+ "@mui/private-theming": 5.15.20(@types/react@18.3.3)(react@18.3.1)
"@mui/styled-engine": 5.15.14(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
"@mui/types": 7.2.14(@types/react@18.3.3)
- "@mui/utils": 5.15.14(@types/react@18.3.3)(react@18.3.1)
+ "@mui/utils": 5.15.20(@types/react@18.3.3)(react@18.3.1)
clsx: 2.1.1
csstype: 3.1.3
prop-types: 15.8.1
@@ -5618,7 +5617,7 @@ snapshots:
optionalDependencies:
"@types/react": 18.3.3
- "@mui/utils@5.15.14(@types/react@18.3.3)(react@18.3.1)":
+ "@mui/utils@5.15.20(@types/react@18.3.3)(react@18.3.1)":
dependencies:
"@babel/runtime": 7.24.7
"@types/prop-types": 15.7.12
@@ -5628,29 +5627,31 @@ snapshots:
optionalDependencies:
"@types/react": 18.3.3
- "@mui/x-data-grid@6.20.1(@mui/material@5.15.19(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@5.15.15(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)":
+ "@mui/x-data-grid@7.7.0(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@mui/material@5.15.20(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)":
dependencies:
"@babel/runtime": 7.24.7
- "@mui/material": 5.15.19(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- "@mui/system": 5.15.15(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)
- "@mui/utils": 5.15.14(@types/react@18.3.3)(react@18.3.1)
+ "@mui/material": 5.15.20(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@mui/system": 5.15.20(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)
+ "@mui/utils": 5.15.20(@types/react@18.3.3)(react@18.3.1)
clsx: 2.1.1
prop-types: 15.8.1
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
reselect: 4.1.8
transitivePeerDependencies:
+ - "@emotion/react"
+ - "@emotion/styled"
- "@types/react"
- "@mui/x-tree-view@6.0.0-alpha.1(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@mui/base@5.0.0-beta.20(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/material@5.15.19(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@5.15.15(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)":
+ "@mui/x-tree-view@6.0.0-alpha.1(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@mui/base@5.0.0-beta.20(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/material@5.15.20(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@5.15.20(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)":
dependencies:
"@babel/runtime": 7.24.7
"@emotion/react": 11.11.4(@types/react@18.3.3)(react@18.3.1)
"@emotion/styled": 11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)
"@mui/base": 5.0.0-beta.20(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- "@mui/material": 5.15.19(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- "@mui/system": 5.15.15(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)
- "@mui/utils": 5.15.14(@types/react@18.3.3)(react@18.3.1)
+ "@mui/material": 5.15.20(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ "@mui/system": 5.15.20(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)
+ "@mui/utils": 5.15.20(@types/react@18.3.3)(react@18.3.1)
"@types/react-transition-group": 4.4.10
clsx: 2.1.1
prop-types: 15.8.1
@@ -5981,7 +5982,7 @@ snapshots:
"@ungap/structured-clone@1.2.0": {}
- "@vitejs/plugin-legacy@5.4.1(terser@5.31.1)(vite@5.2.13(@types/node@20.14.2)(sass@1.77.5)(terser@5.31.1))":
+ "@vitejs/plugin-legacy@5.4.1(terser@5.31.1)(vite@5.3.1(@types/node@20.14.2)(sass@1.77.5)(terser@5.31.1))":
dependencies:
"@babel/core": 7.24.7
"@babel/preset-env": 7.24.7(@babel/core@7.24.7)
@@ -5992,22 +5993,22 @@ snapshots:
regenerator-runtime: 0.14.1
systemjs: 6.15.1
terser: 5.31.1
- vite: 5.2.13(@types/node@20.14.2)(sass@1.77.5)(terser@5.31.1)
+ vite: 5.3.1(@types/node@20.14.2)(sass@1.77.5)(terser@5.31.1)
transitivePeerDependencies:
- supports-color
- "@vitejs/plugin-react@4.3.1(vite@5.2.13(@types/node@20.14.2)(sass@1.77.5)(terser@5.31.1))":
+ "@vitejs/plugin-react@4.3.1(vite@5.3.1(@types/node@20.14.2)(sass@1.77.5)(terser@5.31.1))":
dependencies:
"@babel/core": 7.24.7
"@babel/plugin-transform-react-jsx-self": 7.24.7(@babel/core@7.24.7)
"@babel/plugin-transform-react-jsx-source": 7.24.7(@babel/core@7.24.7)
"@types/babel__core": 7.20.5
react-refresh: 0.14.2
- vite: 5.2.13(@types/node@20.14.2)(sass@1.77.5)(terser@5.31.1)
+ vite: 5.3.1(@types/node@20.14.2)(sass@1.77.5)(terser@5.31.1)
transitivePeerDependencies:
- supports-color
- acorn@8.11.3: {}
+ acorn@8.12.0: {}
adm-zip@0.5.14: {}
@@ -6098,8 +6099,8 @@ snapshots:
browserslist@4.23.1:
dependencies:
- caniuse-lite: 1.0.30001632
- electron-to-chromium: 1.4.799
+ caniuse-lite: 1.0.30001636
+ electron-to-chromium: 1.4.803
node-releases: 2.0.14
update-browserslist-db: 1.0.16(browserslist@4.23.1)
@@ -6109,7 +6110,7 @@ snapshots:
camelcase@6.3.0: {}
- caniuse-lite@1.0.30001632: {}
+ caniuse-lite@1.0.30001636: {}
ccount@2.0.1: {}
@@ -6230,7 +6231,7 @@ snapshots:
no-case: 3.0.4
tslib: 2.6.3
- electron-to-chromium@1.4.799: {}
+ electron-to-chromium@1.4.803: {}
end-of-stream@1.4.4:
dependencies:
@@ -6242,31 +6243,31 @@ snapshots:
dependencies:
is-arrayish: 0.2.1
- esbuild@0.20.2:
+ esbuild@0.21.5:
optionalDependencies:
- "@esbuild/aix-ppc64": 0.20.2
- "@esbuild/android-arm": 0.20.2
- "@esbuild/android-arm64": 0.20.2
- "@esbuild/android-x64": 0.20.2
- "@esbuild/darwin-arm64": 0.20.2
- "@esbuild/darwin-x64": 0.20.2
- "@esbuild/freebsd-arm64": 0.20.2
- "@esbuild/freebsd-x64": 0.20.2
- "@esbuild/linux-arm": 0.20.2
- "@esbuild/linux-arm64": 0.20.2
- "@esbuild/linux-ia32": 0.20.2
- "@esbuild/linux-loong64": 0.20.2
- "@esbuild/linux-mips64el": 0.20.2
- "@esbuild/linux-ppc64": 0.20.2
- "@esbuild/linux-riscv64": 0.20.2
- "@esbuild/linux-s390x": 0.20.2
- "@esbuild/linux-x64": 0.20.2
- "@esbuild/netbsd-x64": 0.20.2
- "@esbuild/openbsd-x64": 0.20.2
- "@esbuild/sunos-x64": 0.20.2
- "@esbuild/win32-arm64": 0.20.2
- "@esbuild/win32-ia32": 0.20.2
- "@esbuild/win32-x64": 0.20.2
+ "@esbuild/aix-ppc64": 0.21.5
+ "@esbuild/android-arm": 0.21.5
+ "@esbuild/android-arm64": 0.21.5
+ "@esbuild/android-x64": 0.21.5
+ "@esbuild/darwin-arm64": 0.21.5
+ "@esbuild/darwin-x64": 0.21.5
+ "@esbuild/freebsd-arm64": 0.21.5
+ "@esbuild/freebsd-x64": 0.21.5
+ "@esbuild/linux-arm": 0.21.5
+ "@esbuild/linux-arm64": 0.21.5
+ "@esbuild/linux-ia32": 0.21.5
+ "@esbuild/linux-loong64": 0.21.5
+ "@esbuild/linux-mips64el": 0.21.5
+ "@esbuild/linux-ppc64": 0.21.5
+ "@esbuild/linux-riscv64": 0.21.5
+ "@esbuild/linux-s390x": 0.21.5
+ "@esbuild/linux-x64": 0.21.5
+ "@esbuild/netbsd-x64": 0.21.5
+ "@esbuild/openbsd-x64": 0.21.5
+ "@esbuild/sunos-x64": 0.21.5
+ "@esbuild/win32-arm64": 0.21.5
+ "@esbuild/win32-ia32": 0.21.5
+ "@esbuild/win32-x64": 0.21.5
escalade@3.1.2: {}
@@ -6938,7 +6939,7 @@ snapshots:
react-fast-compare@3.2.2: {}
- react-hook-form@7.51.5(react@18.3.1):
+ react-hook-form@7.52.0(react@18.3.1):
dependencies:
react: 18.3.1
@@ -7169,7 +7170,7 @@ snapshots:
terser@5.31.1:
dependencies:
"@jridgewell/source-map": 0.3.6
- acorn: 8.11.3
+ acorn: 8.12.0
commander: 2.20.3
source-map-support: 0.5.21
@@ -7277,20 +7278,20 @@ snapshots:
dependencies:
monaco-editor: 0.49.0
- vite-plugin-svgr@4.2.0(rollup@4.18.0)(typescript@5.4.5)(vite@5.2.13(@types/node@20.14.2)(sass@1.77.5)(terser@5.31.1)):
+ vite-plugin-svgr@4.2.0(rollup@4.18.0)(typescript@5.4.5)(vite@5.3.1(@types/node@20.14.2)(sass@1.77.5)(terser@5.31.1)):
dependencies:
"@rollup/pluginutils": 5.1.0(rollup@4.18.0)
"@svgr/core": 8.1.0(typescript@5.4.5)
"@svgr/plugin-jsx": 8.1.0(@svgr/core@8.1.0(typescript@5.4.5))
- vite: 5.2.13(@types/node@20.14.2)(sass@1.77.5)(terser@5.31.1)
+ vite: 5.3.1(@types/node@20.14.2)(sass@1.77.5)(terser@5.31.1)
transitivePeerDependencies:
- rollup
- supports-color
- typescript
- vite@5.2.13(@types/node@20.14.2)(sass@1.77.5)(terser@5.31.1):
+ vite@5.3.1(@types/node@20.14.2)(sass@1.77.5)(terser@5.31.1):
dependencies:
- esbuild: 0.20.2
+ esbuild: 0.21.5
postcss: 8.4.38
rollup: 4.18.0
optionalDependencies:
diff --git a/clash-verge-rev/src/components/connection/connection-table.tsx b/clash-verge-rev/src/components/connection/connection-table.tsx
index be1461ef3b..f2daed6ae9 100644
--- a/clash-verge-rev/src/components/connection/connection-table.tsx
+++ b/clash-verge-rev/src/components/connection/connection-table.tsx
@@ -1,10 +1,6 @@
import dayjs from "dayjs";
import { useMemo, useState } from "react";
-import {
- DataGrid,
- GridColDef,
- GridValueFormatterParams,
-} from "@mui/x-data-grid";
+import { DataGrid, GridColDef } from "@mui/x-data-grid";
import { truncateStr } from "@/utils/truncate-str";
import parseTraffic from "@/utils/parse-traffic";
import { t } from "i18next";
@@ -21,7 +17,7 @@ export const ConnectionTable = (props: Props) => {
Partial>
>({});
- const columns: GridColDef[] = [
+ const [columns] = useState([
{ field: "host", headerName: t("Host"), flex: 220, minWidth: 220 },
{
field: "download",
@@ -29,8 +25,7 @@ export const ConnectionTable = (props: Props) => {
width: 88,
align: "right",
headerAlign: "right",
- valueFormatter: (params: GridValueFormatterParams) =>
- parseTraffic(params.value).join(" "),
+ valueFormatter: (value: number) => parseTraffic(value).join(" "),
},
{
field: "upload",
@@ -38,8 +33,7 @@ export const ConnectionTable = (props: Props) => {
width: 88,
align: "right",
headerAlign: "right",
- valueFormatter: (params: GridValueFormatterParams) =>
- parseTraffic(params.value).join(" "),
+ valueFormatter: (value: number) => parseTraffic(value).join(" "),
},
{
field: "dlSpeed",
@@ -47,8 +41,7 @@ export const ConnectionTable = (props: Props) => {
width: 88,
align: "right",
headerAlign: "right",
- valueFormatter: (params: GridValueFormatterParams) =>
- parseTraffic(params.value).join(" ") + "/s",
+ valueFormatter: (value: number) => parseTraffic(value).join(" ") + "/s",
},
{
field: "ulSpeed",
@@ -56,8 +49,7 @@ export const ConnectionTable = (props: Props) => {
width: 88,
align: "right",
headerAlign: "right",
- valueFormatter: (params: GridValueFormatterParams) =>
- parseTraffic(params.value).join(" ") + "/s",
+ valueFormatter: (value: number) => parseTraffic(value).join(" ") + "/s",
},
{ field: "chains", headerName: t("Chains"), flex: 360, minWidth: 360 },
{ field: "rule", headerName: t("Rule"), flex: 300, minWidth: 250 },
@@ -69,11 +61,9 @@ export const ConnectionTable = (props: Props) => {
minWidth: 100,
align: "right",
headerAlign: "right",
- sortComparator: (v1, v2) => {
- return new Date(v2).getTime() - new Date(v1).getTime();
- },
- valueFormatter: (params: GridValueFormatterParams) =>
- dayjs(params.value).fromNow(),
+ sortComparator: (v1: string, v2: string) =>
+ new Date(v2).getTime() - new Date(v1).getTime(),
+ valueFormatter: (value: number) => dayjs(value).fromNow(),
},
{ field: "source", headerName: t("Source"), flex: 200, minWidth: 130 },
{
@@ -83,7 +73,7 @@ export const ConnectionTable = (props: Props) => {
minWidth: 130,
},
{ field: "type", headerName: t("Type"), flex: 160, minWidth: 100 },
- ];
+ ]);
const connRows = useMemo(() => {
return connections.map((each) => {
diff --git a/clash-verge-rev/src/components/layout/layout-traffic.tsx b/clash-verge-rev/src/components/layout/layout-traffic.tsx
index c6a25c5588..336c10e73a 100644
--- a/clash-verge-rev/src/components/layout/layout-traffic.tsx
+++ b/clash-verge-rev/src/components/layout/layout-traffic.tsx
@@ -8,7 +8,7 @@ import {
import { useClashInfo } from "@/hooks/use-clash";
import { useVerge } from "@/hooks/use-verge";
import { TrafficGraph, type TrafficRef } from "./traffic-graph";
-import { useLogSetup } from "./use-log-setup";
+import { useLogData } from "@/hooks/use-log-data";
import { useVisibility } from "@/hooks/use-visibility";
import parseTraffic from "@/utils/parse-traffic";
import useSWRSubscription from "swr/subscription";
@@ -30,8 +30,10 @@ export const LayoutTraffic = () => {
const trafficRef = useRef(null);
const pageVisible = useVisibility();
- // setup log ws during layout
- useLogSetup();
+ // https://swr.vercel.app/docs/subscription#deduplication
+ // useSWRSubscription auto deduplicates to one subscription per key per entire app
+ // So we can simply invoke it here acting as preconnect
+ useLogData();
const { data: traffic = { up: 0, down: 0 } } = useSWRSubscription<
ITrafficItem,
diff --git a/clash-verge-rev/src/components/layout/use-log-setup.ts b/clash-verge-rev/src/components/layout/use-log-setup.ts
deleted file mode 100644
index 4a1e5679e2..0000000000
--- a/clash-verge-rev/src/components/layout/use-log-setup.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-import dayjs from "dayjs";
-import { useEffect } from "react";
-import { getClashLogs } from "@/services/cmds";
-import { useClashInfo } from "@/hooks/use-clash";
-import { useEnableLog, useSetLogData } from "@/services/states";
-import { useWebsocket } from "@/hooks/use-websocket";
-
-const MAX_LOG_NUM = 1000;
-
-// setup the log websocket
-export const useLogSetup = () => {
- const { clashInfo } = useClashInfo();
-
- const [enableLog] = useEnableLog();
- const setLogData = useSetLogData();
-
- const { connect, disconnect } = useWebsocket((event) => {
- const data = JSON.parse(event.data) as ILogItem;
- const time = dayjs().format("MM-DD HH:mm:ss");
- setLogData((l) => {
- if (l.length >= MAX_LOG_NUM) l.shift();
- return [...l, { ...data, time }];
- });
- });
-
- useEffect(() => {
- if (!enableLog || !clashInfo) return;
-
- getClashLogs().then(setLogData);
-
- const { server = "", secret = "" } = clashInfo;
- connect(`ws://${server}/logs?token=${encodeURIComponent(secret)}`);
-
- return () => {
- disconnect();
- };
- }, [clashInfo, enableLog]);
-};
diff --git a/clash-verge-rev/src/components/setting/mods/sysproxy-viewer.tsx b/clash-verge-rev/src/components/setting/mods/sysproxy-viewer.tsx
index 90cdae2acb..c5ecea442e 100644
--- a/clash-verge-rev/src/components/setting/mods/sysproxy-viewer.tsx
+++ b/clash-verge-rev/src/components/setting/mods/sysproxy-viewer.tsx
@@ -32,7 +32,7 @@ export const SysproxyViewer = forwardRef((props, ref) => {
/^((\*\.)?([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}|(\d{1,3}\.){1,3}\d{1,3}|\d{1,3}\.\d{1,3}\.\d{1,3}\.\*|\d{1,3}\.\d{1,3}\.\*|\d{1,3}\.\*|([a-fA-F0-9:]+:+)+[a-fA-F0-9]+|localhost|)(;((\*\.)?([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}|(\d{1,3}\.){1,3}\d{1,3}|\d{1,3}\.\d{1,3}\.\d{1,3}\.\*|\d{1,3}\.\d{1,3}\.\*|\d{1,3}\.\*|([a-fA-F0-9:]+:+)+[a-fA-F0-9]+|localhost|))*;?$/;
} else {
validReg =
- /^((\*\.)?([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}|(\d{1,3}\.){1,3}\d{1,3}(\/\d{1,2}|\/3[0-2])?|\d{1,3}\.\d{1,3}\.\d{1,3}\.\*(\/\d{1,2}|\/3[0-2])?|\d{1,3}\.\d{1,3}\.\*(\/\d{1,2}|\/3[0-2])?|\d{1,3}\.\*(\/\d{1,2}|\/3[0-2])?|([a-fA-F0-9:]+:+)+[a-fA-F0-9]+(\/\d{1,3})?|localhost|)(;((\*\.)?([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}|(\d{1,3}\.){1,3}\d{1,3}(\/\d{1,2}|\/3[0-2])?|\d{1,3}\.\d{1,3}\.\d{1,3}\.\*(\/\d{1,2}|\/3[0-2])?|\d{1,3}\.\d{1,3}\.\*(\/\d{1,2}|\/3[0-2])?|\d{1,3}\.\*(\/\d{1,2}|\/3[0-2])?|([a-fA-F0-9:]+:+)+[a-fA-F0-9]+(\/\d{1,3})?|localhost|))*;?$/;
+ /^((\*\.)?([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}|(\d{1,3}\.){1,3}\d{1,3}(\/\d{1,2}|\/3[0-2])?|\d{1,3}\.\d{1,3}\.\d{1,3}\.\*(\/\d{1,2}|\/3[0-2])?|\d{1,3}\.\d{1,3}\.\*(\/\d{1,2}|\/3[0-2])?|\d{1,3}\.\*(\/\d{1,2}|\/3[0-2])?|([a-fA-F0-9:]+:+)+[a-fA-F0-9]+(\/\d{1,3})?|localhost|)(,((\*\.)?([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}|(\d{1,3}\.){1,3}\d{1,3}(\/\d{1,2}|\/3[0-2])?|\d{1,3}\.\d{1,3}\.\d{1,3}\.\*(\/\d{1,2}|\/3[0-2])?|\d{1,3}\.\d{1,3}\.\*(\/\d{1,2}|\/3[0-2])?|\d{1,3}\.\*(\/\d{1,2}|\/3[0-2])?|([a-fA-F0-9:]+:+)+[a-fA-F0-9]+(\/\d{1,3})?|localhost|))*,?$/;
}
const [open, setOpen] = useState(false);
diff --git a/clash-verge-rev/src/hooks/use-log-data.ts b/clash-verge-rev/src/hooks/use-log-data.ts
new file mode 100644
index 0000000000..cc3c50a5cb
--- /dev/null
+++ b/clash-verge-rev/src/hooks/use-log-data.ts
@@ -0,0 +1,57 @@
+import useSWRSubscription from "swr/subscription";
+import { useEnableLog } from "../services/states";
+import { createSockette } from "../utils/websocket";
+import { useClashInfo } from "./use-clash";
+import dayjs from "dayjs";
+import { getClashLogs } from "../services/cmds";
+
+const MAX_LOG_NUM = 1000;
+
+export const useLogData = () => {
+ const { clashInfo } = useClashInfo();
+
+ const [enableLog] = useEnableLog();
+ !enableLog || !clashInfo;
+
+ return useSWRSubscription(
+ enableLog && clashInfo ? "getClashLog" : null,
+ (_key, { next }) => {
+ const { server = "", secret = "" } = clashInfo!;
+
+ // populate the initial logs
+ getClashLogs().then(
+ (logs) => next(null, logs),
+ (err) => next(err)
+ );
+
+ const s = createSockette(
+ `ws://${server}/logs?token=${encodeURIComponent(secret)}`,
+ {
+ onmessage(event) {
+ const data = JSON.parse(event.data) as ILogItem;
+
+ // append new log item on socket message
+ next(null, (l = []) => {
+ const time = dayjs().format("MM-DD HH:mm:ss");
+
+ if (l.length >= MAX_LOG_NUM) l.shift();
+ return [...l, { ...data, time }];
+ });
+ },
+ onerror(event) {
+ this.close();
+ next(event);
+ },
+ }
+ );
+
+ return () => {
+ s.close();
+ };
+ },
+ {
+ fallbackData: { up: 0, down: 0 },
+ keepPreviousData: true,
+ }
+ );
+};
diff --git a/clash-verge-rev/src/hooks/use-websocket.ts b/clash-verge-rev/src/hooks/use-websocket.ts
deleted file mode 100644
index a27792bd30..0000000000
--- a/clash-verge-rev/src/hooks/use-websocket.ts
+++ /dev/null
@@ -1,60 +0,0 @@
-import { useRef } from "react";
-
-export type WsMsgFn = (event: MessageEvent) => void;
-
-export interface WsOptions {
- errorCount?: number; // default is 5
- retryInterval?: number; // default is 2500
- onError?: (event: Event) => void;
- onClose?: (event: CloseEvent) => void;
-}
-
-export const useWebsocket = (onMessage: WsMsgFn, options?: WsOptions) => {
- const wsRef = useRef(null);
- const timerRef = useRef(null);
-
- const disconnect = () => {
- if (wsRef.current) {
- wsRef.current.close();
- wsRef.current = null;
- }
- if (timerRef.current) {
- clearTimeout(timerRef.current);
- }
- };
-
- const connect = (url: string) => {
- let errorCount = options?.errorCount ?? 5;
-
- if (!url) return;
-
- const connectHelper = () => {
- disconnect();
-
- const ws = new WebSocket(url);
- wsRef.current = ws;
-
- ws.addEventListener("message", (event) => {
- errorCount = 0; // reset counter
- onMessage(event);
- });
- ws.addEventListener("error", (event) => {
- errorCount -= 1;
-
- if (errorCount >= 0) {
- timerRef.current = setTimeout(connectHelper, 2500);
- } else {
- disconnect();
- options?.onError?.(event);
- }
- });
- ws.addEventListener("close", (event) => {
- options?.onClose?.(event);
- });
- };
-
- connectHelper();
- };
-
- return { connect, disconnect };
-};
diff --git a/clash-verge-rev/src/main.tsx b/clash-verge-rev/src/main.tsx
index efb3bc5917..2b7b9467e5 100644
--- a/clash-verge-rev/src/main.tsx
+++ b/clash-verge-rev/src/main.tsx
@@ -16,7 +16,6 @@ import Layout from "./pages/_layout";
import "./services/i18n";
import {
LoadingCacheProvider,
- LogDataProvider,
ThemeModeProvider,
UpdateStateProvider,
} from "./services/states";
@@ -45,7 +44,6 @@ document.addEventListener("keydown", (event) => {
const contexts = [
,
- ,
,
,
];
diff --git a/clash-verge-rev/src/pages/connections.tsx b/clash-verge-rev/src/pages/connections.tsx
index ab3b5c746e..a5c04c5a7c 100644
--- a/clash-verge-rev/src/pages/connections.tsx
+++ b/clash-verge-rev/src/pages/connections.tsx
@@ -1,4 +1,4 @@
-import { useEffect, useMemo, useRef, useState } from "react";
+import { useMemo, useRef, useState } from "react";
import { useLockFn } from "ahooks";
import { Box, Button, IconButton, MenuItem } from "@mui/material";
import { Virtuoso } from "react-virtuoso";
@@ -8,7 +8,6 @@ import { closeAllConnections } from "@/services/api";
import { useConnectionSetting } from "@/services/states";
import { useClashInfo } from "@/hooks/use-clash";
import { BaseEmpty, BasePage } from "@/components/base";
-import { useWebsocket } from "@/hooks/use-websocket";
import { ConnectionItem } from "@/components/connection/connection-item";
import { ConnectionTable } from "@/components/connection/connection-table";
import {
@@ -19,8 +18,14 @@ import parseTraffic from "@/utils/parse-traffic";
import { useCustomTheme } from "@/components/layout/use-custom-theme";
import { BaseSearchBox } from "@/components/base/base-search-box";
import { BaseStyledSelect } from "@/components/base/base-styled-select";
+import useSWRSubscription from "swr/subscription";
+import { createSockette } from "@/utils/websocket";
-const initConn = { uploadTotal: 0, downloadTotal: 0, connections: [] };
+const initConn: IConnections = {
+ uploadTotal: 0,
+ downloadTotal: 0,
+ connections: [],
+};
type OrderFunc = (list: IConnectionsItem[]) => IConnectionsItem[];
@@ -31,7 +36,6 @@ const ConnectionsPage = () => {
const isDark = theme.palette.mode === "dark";
const [match, setMatch] = useState(() => (_: string) => true);
const [curOrderOpt, setOrderOpt] = useState("Default");
- const [connData, setConnData] = useState(initConn);
const [setting, setSetting] = useConnectionSetting();
@@ -49,6 +53,63 @@ const ConnectionsPage = () => {
list.sort((a, b) => b.curDownload! - a.curDownload!),
};
+ const { data: connData = initConn } = useSWRSubscription<
+ IConnections,
+ any,
+ "getClashConnections" | null
+ >(clashInfo ? "getClashConnections" : null, (_key, { next }) => {
+ const { server = "", secret = "" } = clashInfo!;
+
+ const s = createSockette(
+ `ws://${server}/connections?token=${encodeURIComponent(secret)}`,
+ {
+ onmessage(event) {
+ // meta v1.15.0 出现 data.connections 为 null 的情况
+ const data = JSON.parse(event.data) as IConnections;
+ // 尽量与前一次 connections 的展示顺序保持一致
+ next(null, (old = initConn) => {
+ const oldConn = old.connections;
+ const maxLen = data.connections?.length;
+
+ const connections: IConnectionsItem[] = [];
+
+ const rest = (data.connections || []).filter((each) => {
+ const index = oldConn.findIndex((o) => o.id === each.id);
+
+ if (index >= 0 && index < maxLen) {
+ const old = oldConn[index];
+ each.curUpload = each.upload - old.upload;
+ each.curDownload = each.download - old.download;
+
+ connections[index] = each;
+ return false;
+ }
+ return true;
+ });
+
+ for (let i = 0; i < maxLen; ++i) {
+ if (!connections[i] && rest.length > 0) {
+ connections[i] = rest.shift()!;
+ connections[i].curUpload = 0;
+ connections[i].curDownload = 0;
+ }
+ }
+
+ return { ...data, connections };
+ });
+ },
+ onerror(event) {
+ next(event);
+ },
+ },
+ 3
+ );
+
+ return () => {
+ s.close();
+ };
+ });
+
const [filterConn, download, upload] = useMemo(() => {
const orderFunc = orderOpts[curOrderOpt];
let connections = connData.connections.filter((conn) =>
@@ -56,6 +117,7 @@ const ConnectionsPage = () => {
);
if (orderFunc) connections = orderFunc(connections);
+
let download = 0;
let upload = 0;
connections.forEach((x) => {
@@ -65,55 +127,6 @@ const ConnectionsPage = () => {
return [connections, download, upload];
}, [connData, match, curOrderOpt]);
- const { connect, disconnect } = useWebsocket(
- (event) => {
- // meta v1.15.0 出现data.connections为null的情况
- const data = JSON.parse(event.data) as IConnections;
- // 尽量与前一次connections的展示顺序保持一致
- setConnData((old) => {
- const oldConn = old.connections;
- const maxLen = data.connections?.length;
-
- const connections: typeof oldConn = [];
-
- const rest = (data.connections || []).filter((each) => {
- const index = oldConn.findIndex((o) => o.id === each.id);
-
- if (index >= 0 && index < maxLen) {
- const old = oldConn[index];
- each.curUpload = each.upload - old.upload;
- each.curDownload = each.download - old.download;
-
- connections[index] = each;
- return false;
- }
- return true;
- });
-
- for (let i = 0; i < maxLen; ++i) {
- if (!connections[i] && rest.length > 0) {
- connections[i] = rest.shift()!;
- connections[i].curUpload = 0;
- connections[i].curDownload = 0;
- }
- }
-
- return { ...data, connections };
- });
- },
- { errorCount: 3, retryInterval: 1000 }
- );
-
- useEffect(() => {
- if (!clashInfo) return;
- const { server = "", secret = "" } = clashInfo;
- connect(`ws://${server}/connections?token=${encodeURIComponent(secret)}`);
-
- return () => {
- disconnect();
- };
- }, [clashInfo]);
-
const onCloseAll = useLockFn(closeAllConnections);
const detailRef = useRef(null!);
diff --git a/clash-verge-rev/src/pages/logs.tsx b/clash-verge-rev/src/pages/logs.tsx
index b9df1aba4f..c3bce9d415 100644
--- a/clash-verge-rev/src/pages/logs.tsx
+++ b/clash-verge-rev/src/pages/logs.tsx
@@ -6,17 +6,18 @@ import {
PlayCircleOutlineRounded,
PauseCircleOutlineRounded,
} from "@mui/icons-material";
-import { useEnableLog, useLogData, useSetLogData } from "@/services/states";
+import { useLogData } from "@/hooks/use-log-data";
+import { useEnableLog } from "@/services/states";
import { BaseEmpty, BasePage } from "@/components/base";
import LogItem from "@/components/log/log-item";
import { useCustomTheme } from "@/components/layout/use-custom-theme";
import { BaseSearchBox } from "@/components/base/base-search-box";
import { BaseStyledSelect } from "@/components/base/base-styled-select";
+import { mutate } from "swr";
const LogPage = () => {
const { t } = useTranslation();
- const logData = useLogData();
- const setLogData = useSetLogData();
+ const { data: logData = [] } = useLogData();
const [enableLog, setEnableLog] = useEnableLog();
const { theme } = useCustomTheme();
const isDark = theme.palette.mode === "dark";
@@ -54,7 +55,9 @@ const LogPage = () => {
diff --git a/clash-verge-rev/src/services/states.ts b/clash-verge-rev/src/services/states.ts
index 3beddd0053..4ea46298a3 100644
--- a/clash-verge-rev/src/services/states.ts
+++ b/clash-verge-rev/src/services/states.ts
@@ -5,10 +5,6 @@ const [ThemeModeProvider, useThemeMode, useSetThemeMode] = createContextState<
"light" | "dark"
>("light");
-const [LogDataProvider, useLogData, useSetLogData] = createContextState<
- ILogItem[]
->([]);
-
export const useEnableLog = () => useLocalStorage("enable-log", true);
interface IConnectionSetting {
@@ -39,9 +35,6 @@ export {
ThemeModeProvider,
useThemeMode,
useSetThemeMode,
- LogDataProvider,
- useLogData,
- useSetLogData,
LoadingCacheProvider,
useLoadingCache,
useSetLoadingCache,
diff --git a/echo/internal/constant/constant.go b/echo/internal/constant/constant.go
index bbaafcddec..ba967997ef 100644
--- a/echo/internal/constant/constant.go
+++ b/echo/internal/constant/constant.go
@@ -6,7 +6,7 @@ var (
// allow change in test
IdleTimeOut = 10 * time.Second
- Version = "1.1.4-dev"
+ Version = "1.1.4"
GitBranch string
GitRevision string
BuildTime string
diff --git a/lede/include/kernel-5.10 b/lede/include/kernel-5.10
index 3355c82098..5c8eca928f 100644
--- a/lede/include/kernel-5.10
+++ b/lede/include/kernel-5.10
@@ -1,2 +1,2 @@
-LINUX_VERSION-5.10 = .218
-LINUX_KERNEL_HASH-5.10.218 = 9c36b243e8c3ec1d5963366618f336710b84340bf95be2037b26c452392cb2d6
+LINUX_VERSION-5.10 = .219
+LINUX_KERNEL_HASH-5.10.219 = 93b73f15cc376463e6422cce09ccd9d0a20fb113921ffebddf3352c44d84cd30
diff --git a/lede/include/kernel-5.4 b/lede/include/kernel-5.4
index bb474605fd..82c8c74189 100644
--- a/lede/include/kernel-5.4
+++ b/lede/include/kernel-5.4
@@ -1,2 +1,2 @@
-LINUX_VERSION-5.4 = .277
-LINUX_KERNEL_HASH-5.4.277 = 7e1f5b28588e49ddfd18e7772476e4e8b52bdc9c3e19beafcbb7c103e6c01f51
+LINUX_VERSION-5.4 = .278
+LINUX_KERNEL_HASH-5.4.278 = e5a00606115545f444ef2766af5652f5539e3c96f46a9778bede89b98ffb8588
diff --git a/lede/include/kernel-6.1 b/lede/include/kernel-6.1
index 026ef91a52..4634403e51 100644
--- a/lede/include/kernel-6.1
+++ b/lede/include/kernel-6.1
@@ -1,2 +1,2 @@
-LINUX_VERSION-6.1 = .92
-LINUX_KERNEL_HASH-6.1.92 = 9019f427bfdc9ced5bc954d760d37ac08c0cdffb45ad28087fc45a73e64336c9
+LINUX_VERSION-6.1 = .94
+LINUX_KERNEL_HASH-6.1.94 = 38ea71ad22ae0187fd8ee5ff879b33b0d9bd58161ac9a3e868ae0b4c66b95369
diff --git a/lede/package/qca/nss-firmware/Makefile b/lede/package/qca/nss-firmware/Makefile
index b4d6f46aeb..1b686174aa 100644
--- a/lede/package/qca/nss-firmware/Makefile
+++ b/lede/package/qca/nss-firmware/Makefile
@@ -43,7 +43,7 @@ endef
define Package/nss-firmware-ipq8074
$(Package/nss-firmware-default)
TITLE:=NSS firmware for IPQ8074 devices
- NSS_ARCHIVE:=$(VERSION_PATH)/IPQ8074.ATH.12.0.0/BIN-NSS.FW.12.0.r1-002-HK.R.tar.bz2
+ NSS_ARCHIVE:=$(VERSION_PATH)/IPQ8074.ATH.12.0.0/BIN-NSS.FW.12.1-022-HK.R.tar.bz2
endef
define Build/Compile
diff --git a/lede/target/linux/bcm27xx/patches-6.1/950-0081-smsx95xx-fix-crimes-against-truesize.patch b/lede/target/linux/bcm27xx/patches-6.1/950-0081-smsx95xx-fix-crimes-against-truesize.patch
deleted file mode 100644
index 98a6ed86b1..0000000000
--- a/lede/target/linux/bcm27xx/patches-6.1/950-0081-smsx95xx-fix-crimes-against-truesize.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 648c906a27d3713f589717f4be36583fc64f2ba1 Mon Sep 17 00:00:00 2001
-From: Steve Glendinning
-Date: Thu, 19 Feb 2015 18:47:12 +0000
-Subject: [PATCH] smsx95xx: fix crimes against truesize
-
-smsc95xx is adjusting truesize when it shouldn't, and following a recent patch from Eric this is now triggering warnings.
-
-This patch stops smsc95xx from changing truesize.
-
-Signed-off-by: Steve Glendinning
----
- drivers/net/usb/smsc95xx.c | 10 ++++++++--
- 1 file changed, 8 insertions(+), 2 deletions(-)
-
---- a/drivers/net/usb/smsc95xx.c
-+++ b/drivers/net/usb/smsc95xx.c
-@@ -79,6 +79,10 @@ static bool turbo_mode = true;
- module_param(turbo_mode, bool, 0644);
- MODULE_PARM_DESC(turbo_mode, "Enable multiple frames per Rx transaction");
-
-+static bool truesize_mode = false;
-+module_param(truesize_mode, bool, 0644);
-+MODULE_PARM_DESC(truesize_mode, "Report larger truesize value");
-+
- static int __must_check smsc95xx_read_reg(struct usbnet *dev, u32 index,
- u32 *data)
- {
-@@ -1870,7 +1874,8 @@ static int smsc95xx_rx_fixup(struct usbn
- if (dev->net->features & NETIF_F_RXCSUM)
- smsc95xx_rx_csum_offload(skb);
- skb_trim(skb, skb->len - 4); /* remove fcs */
-- skb->truesize = size + sizeof(struct sk_buff);
-+ if (truesize_mode)
-+ skb->truesize = size + sizeof(struct sk_buff);
-
- return 1;
- }
-@@ -1888,7 +1893,8 @@ static int smsc95xx_rx_fixup(struct usbn
- if (dev->net->features & NETIF_F_RXCSUM)
- smsc95xx_rx_csum_offload(ax_skb);
- skb_trim(ax_skb, ax_skb->len - 4); /* remove fcs */
-- ax_skb->truesize = size + sizeof(struct sk_buff);
-+ if (truesize_mode)
-+ ax_skb->truesize = size + sizeof(struct sk_buff);
-
- usbnet_skb_return(dev, ax_skb);
- }
diff --git a/lede/target/linux/bcm27xx/patches-6.1/950-0082-smsc95xx-Experimental-Enable-turbo_mode-and-packetsi.patch b/lede/target/linux/bcm27xx/patches-6.1/950-0082-smsc95xx-Experimental-Enable-turbo_mode-and-packetsi.patch
index c55f194b23..593e5eb456 100644
--- a/lede/target/linux/bcm27xx/patches-6.1/950-0082-smsc95xx-Experimental-Enable-turbo_mode-and-packetsi.patch
+++ b/lede/target/linux/bcm27xx/patches-6.1/950-0082-smsc95xx-Experimental-Enable-turbo_mode-and-packetsi.patch
@@ -11,9 +11,9 @@ See: http://forum.kodi.tv/showthread.php?tid=285288
--- a/drivers/net/usb/smsc95xx.c
+++ b/drivers/net/usb/smsc95xx.c
-@@ -83,6 +83,10 @@ static bool truesize_mode = false;
- module_param(truesize_mode, bool, 0644);
- MODULE_PARM_DESC(truesize_mode, "Report larger truesize value");
+@@ -79,6 +79,10 @@ static bool turbo_mode = true;
+ module_param(turbo_mode, bool, 0644);
+ MODULE_PARM_DESC(turbo_mode, "Enable multiple frames per Rx transaction");
+static int packetsize = 2560;
+module_param(packetsize, int, 0644);
@@ -22,7 +22,7 @@ See: http://forum.kodi.tv/showthread.php?tid=285288
static int __must_check smsc95xx_read_reg(struct usbnet *dev, u32 index,
u32 *data)
{
-@@ -936,13 +940,13 @@ static int smsc95xx_reset(struct usbnet
+@@ -932,13 +936,13 @@ static int smsc95xx_reset(struct usbnet
if (!turbo_mode) {
burst_cap = 0;
diff --git a/lede/target/linux/bcm27xx/patches-6.1/950-0083-Allow-mac-address-to-be-set-in-smsc95xx.patch b/lede/target/linux/bcm27xx/patches-6.1/950-0083-Allow-mac-address-to-be-set-in-smsc95xx.patch
index a47a858e16..d9035fddbf 100644
--- a/lede/target/linux/bcm27xx/patches-6.1/950-0083-Allow-mac-address-to-be-set-in-smsc95xx.patch
+++ b/lede/target/linux/bcm27xx/patches-6.1/950-0083-Allow-mac-address-to-be-set-in-smsc95xx.patch
@@ -22,7 +22,7 @@ Signed-off-by: Phil Elwell
--- a/drivers/net/usb/smsc95xx.c
+++ b/drivers/net/usb/smsc95xx.c
-@@ -87,6 +87,10 @@ static int packetsize = 2560;
+@@ -83,6 +83,10 @@ static int packetsize = 2560;
module_param(packetsize, int, 0644);
MODULE_PARM_DESC(packetsize, "Override the RX URB packet size");
@@ -33,7 +33,7 @@ Signed-off-by: Phil Elwell
static int __must_check smsc95xx_read_reg(struct usbnet *dev, u32 index,
u32 *data)
{
-@@ -809,6 +813,52 @@ static int smsc95xx_ioctl(struct net_dev
+@@ -805,6 +809,52 @@ static int smsc95xx_ioctl(struct net_dev
return phy_mii_ioctl(netdev->phydev, rq, cmd);
}
@@ -86,7 +86,7 @@ Signed-off-by: Phil Elwell
static void smsc95xx_init_mac_address(struct usbnet *dev)
{
u8 addr[ETH_ALEN];
-@@ -832,6 +882,10 @@ static void smsc95xx_init_mac_address(st
+@@ -828,6 +878,10 @@ static void smsc95xx_init_mac_address(st
}
}
diff --git a/lede/target/linux/bcm27xx/patches-6.1/950-0118-firmware-bcm2835-Support-ARCH_BCM270x.patch b/lede/target/linux/bcm27xx/patches-6.1/950-0118-firmware-bcm2835-Support-ARCH_BCM270x.patch
index 3b847b561d..3b32562b49 100644
--- a/lede/target/linux/bcm27xx/patches-6.1/950-0118-firmware-bcm2835-Support-ARCH_BCM270x.patch
+++ b/lede/target/linux/bcm27xx/patches-6.1/950-0118-firmware-bcm2835-Support-ARCH_BCM270x.patch
@@ -27,7 +27,7 @@ Signed-off-by: Noralf Trønnes
--- a/drivers/firmware/raspberrypi.c
+++ b/drivers/firmware/raspberrypi.c
-@@ -32,6 +32,8 @@ struct rpi_firmware {
+@@ -33,6 +33,8 @@ struct rpi_firmware {
struct kref consumers;
};
@@ -36,7 +36,7 @@ Signed-off-by: Noralf Trønnes
static DEFINE_MUTEX(transaction_lock);
static void response_callback(struct mbox_client *cl, void *msg)
-@@ -280,6 +282,7 @@ static int rpi_firmware_probe(struct pla
+@@ -281,6 +283,7 @@ static int rpi_firmware_probe(struct pla
kref_init(&fw->consumers);
platform_set_drvdata(pdev, fw);
@@ -44,7 +44,7 @@ Signed-off-by: Noralf Trønnes
rpi_firmware_print_firmware_revision(fw);
rpi_register_hwmon_driver(dev, fw);
-@@ -308,6 +311,7 @@ static int rpi_firmware_remove(struct pl
+@@ -309,6 +312,7 @@ static int rpi_firmware_remove(struct pl
rpi_clk = NULL;
rpi_firmware_put(fw);
@@ -52,7 +52,7 @@ Signed-off-by: Noralf Trønnes
return 0;
}
-@@ -382,7 +386,18 @@ static struct platform_driver rpi_firmwa
+@@ -383,7 +387,18 @@ static struct platform_driver rpi_firmwa
.shutdown = rpi_firmware_shutdown,
.remove = rpi_firmware_remove,
};
diff --git a/lede/target/linux/bcm27xx/patches-6.1/950-0119-leds-Add-the-input-trigger-for-pwr_led.patch b/lede/target/linux/bcm27xx/patches-6.1/950-0119-leds-Add-the-input-trigger-for-pwr_led.patch
index e5e5a8a1b1..4d30fab654 100644
--- a/lede/target/linux/bcm27xx/patches-6.1/950-0119-leds-Add-the-input-trigger-for-pwr_led.patch
+++ b/lede/target/linux/bcm27xx/patches-6.1/950-0119-leds-Add-the-input-trigger-for-pwr_led.patch
@@ -156,7 +156,7 @@ See: https://github.com/raspberrypi/linux/issues/1064
+MODULE_LICENSE("GPL");
--- a/include/linux/leds.h
+++ b/include/linux/leds.h
-@@ -85,6 +85,9 @@ struct led_classdev {
+@@ -95,6 +95,9 @@ struct led_classdev {
#define LED_BRIGHT_HW_CHANGED BIT(21)
#define LED_RETAIN_AT_SHUTDOWN BIT(22)
#define LED_INIT_DEFAULT_TRIGGER BIT(23)
diff --git a/lede/target/linux/bcm27xx/patches-6.1/950-0140-firmware-raspberrypi-Notify-firmware-of-a-reboot.patch b/lede/target/linux/bcm27xx/patches-6.1/950-0140-firmware-raspberrypi-Notify-firmware-of-a-reboot.patch
index 90408f4916..8a9a2da728 100644
--- a/lede/target/linux/bcm27xx/patches-6.1/950-0140-firmware-raspberrypi-Notify-firmware-of-a-reboot.patch
+++ b/lede/target/linux/bcm27xx/patches-6.1/950-0140-firmware-raspberrypi-Notify-firmware-of-a-reboot.patch
@@ -13,7 +13,7 @@ Signed-off-by: Phil Elwell
--- a/drivers/firmware/raspberrypi.c
+++ b/drivers/firmware/raspberrypi.c
-@@ -12,6 +12,7 @@
+@@ -13,6 +13,7 @@
#include
#include
#include
@@ -21,7 +21,7 @@ Signed-off-by: Phil Elwell
#include
#include
-@@ -179,6 +180,26 @@ int rpi_firmware_property(struct rpi_fir
+@@ -180,6 +181,26 @@ int rpi_firmware_property(struct rpi_fir
}
EXPORT_SYMBOL_GPL(rpi_firmware_property);
@@ -48,7 +48,7 @@ Signed-off-by: Phil Elwell
static void
rpi_firmware_print_firmware_revision(struct rpi_firmware *fw)
{
-@@ -387,15 +408,32 @@ static struct platform_driver rpi_firmwa
+@@ -388,15 +409,32 @@ static struct platform_driver rpi_firmwa
.remove = rpi_firmware_remove,
};
diff --git a/lede/target/linux/bcm27xx/patches-6.1/950-0145-firmware-raspberrypi-Add-backward-compatible-get_thr.patch b/lede/target/linux/bcm27xx/patches-6.1/950-0145-firmware-raspberrypi-Add-backward-compatible-get_thr.patch
index 1f62f7f54e..2b5a9fc3f8 100644
--- a/lede/target/linux/bcm27xx/patches-6.1/950-0145-firmware-raspberrypi-Add-backward-compatible-get_thr.patch
+++ b/lede/target/linux/bcm27xx/patches-6.1/950-0145-firmware-raspberrypi-Add-backward-compatible-get_thr.patch
@@ -16,7 +16,7 @@ Signed-off-by: Stefan Wahren
--- a/drivers/firmware/raspberrypi.c
+++ b/drivers/firmware/raspberrypi.c
-@@ -31,6 +31,7 @@ struct rpi_firmware {
+@@ -32,6 +32,7 @@ struct rpi_firmware {
u32 enabled;
struct kref consumers;
@@ -24,7 +24,7 @@ Signed-off-by: Stefan Wahren
};
static struct platform_device *g_pdev;
-@@ -176,6 +177,12 @@ int rpi_firmware_property(struct rpi_fir
+@@ -177,6 +178,12 @@ int rpi_firmware_property(struct rpi_fir
kfree(data);
@@ -37,7 +37,7 @@ Signed-off-by: Stefan Wahren
return ret;
}
EXPORT_SYMBOL_GPL(rpi_firmware_property);
-@@ -200,6 +207,27 @@ static int rpi_firmware_notify_reboot(st
+@@ -201,6 +208,27 @@ static int rpi_firmware_notify_reboot(st
return 0;
}
@@ -65,7 +65,7 @@ Signed-off-by: Stefan Wahren
static void
rpi_firmware_print_firmware_revision(struct rpi_firmware *fw)
{
-@@ -229,6 +257,11 @@ rpi_register_hwmon_driver(struct device
+@@ -230,6 +258,11 @@ rpi_register_hwmon_driver(struct device
rpi_hwmon = platform_device_register_data(dev, "raspberrypi-hwmon",
-1, NULL, 0);
diff --git a/lede/target/linux/bcm27xx/patches-6.1/950-0151-firmware-raspberrypi-Report-the-fw-variant-during-pr.patch b/lede/target/linux/bcm27xx/patches-6.1/950-0151-firmware-raspberrypi-Report-the-fw-variant-during-pr.patch
index 7a4b26ebda..742ae42164 100644
--- a/lede/target/linux/bcm27xx/patches-6.1/950-0151-firmware-raspberrypi-Report-the-fw-variant-during-pr.patch
+++ b/lede/target/linux/bcm27xx/patches-6.1/950-0151-firmware-raspberrypi-Report-the-fw-variant-during-pr.patch
@@ -26,7 +26,7 @@ Signed-off-by: Dave Stevenson
--- a/drivers/firmware/raspberrypi.c
+++ b/drivers/firmware/raspberrypi.c
-@@ -233,6 +233,15 @@ rpi_firmware_print_firmware_revision(str
+@@ -234,6 +234,15 @@ rpi_firmware_print_firmware_revision(str
{
time64_t date_and_time;
u32 packet;
@@ -42,7 +42,7 @@ Signed-off-by: Dave Stevenson
int ret = rpi_firmware_property(fw,
RPI_FIRMWARE_GET_FIRMWARE_REVISION,
&packet, sizeof(packet));
-@@ -242,7 +251,35 @@ rpi_firmware_print_firmware_revision(str
+@@ -243,7 +252,35 @@ rpi_firmware_print_firmware_revision(str
/* This is not compatible with y2038 */
date_and_time = packet;
@@ -79,7 +79,7 @@ Signed-off-by: Dave Stevenson
}
static void
-@@ -339,6 +376,7 @@ static int rpi_firmware_probe(struct pla
+@@ -340,6 +377,7 @@ static int rpi_firmware_probe(struct pla
g_pdev = pdev;
rpi_firmware_print_firmware_revision(fw);
diff --git a/lede/target/linux/bcm27xx/patches-6.1/950-0216-Initialise-rpi-firmware-before-clk-bcm2835.patch b/lede/target/linux/bcm27xx/patches-6.1/950-0216-Initialise-rpi-firmware-before-clk-bcm2835.patch
index 43781f1256..d07fdf05d0 100644
--- a/lede/target/linux/bcm27xx/patches-6.1/950-0216-Initialise-rpi-firmware-before-clk-bcm2835.patch
+++ b/lede/target/linux/bcm27xx/patches-6.1/950-0216-Initialise-rpi-firmware-before-clk-bcm2835.patch
@@ -36,7 +36,7 @@ Co-authored-by: Phil Elwell
MODULE_DESCRIPTION("BCM2835 clock driver");
--- a/drivers/firmware/raspberrypi.c
+++ b/drivers/firmware/raspberrypi.c
-@@ -499,7 +499,7 @@ out2:
+@@ -500,7 +500,7 @@ out2:
out1:
return ret;
}
diff --git a/lede/target/linux/bcm27xx/patches-6.1/950-0227-spi-Force-CS_HIGH-if-GPIO-descriptors-are-used.patch b/lede/target/linux/bcm27xx/patches-6.1/950-0227-spi-Force-CS_HIGH-if-GPIO-descriptors-are-used.patch
index 2a3e2d781e..19573eda1b 100644
--- a/lede/target/linux/bcm27xx/patches-6.1/950-0227-spi-Force-CS_HIGH-if-GPIO-descriptors-are-used.patch
+++ b/lede/target/linux/bcm27xx/patches-6.1/950-0227-spi-Force-CS_HIGH-if-GPIO-descriptors-are-used.patch
@@ -32,7 +32,7 @@ Signed-off-by: Phil Elwell
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
-@@ -3690,6 +3690,7 @@ static int spi_set_cs_timing(struct spi_
+@@ -3694,6 +3694,7 @@ static int spi_set_cs_timing(struct spi_
*/
int spi_setup(struct spi_device *spi)
{
@@ -40,7 +40,7 @@ Signed-off-by: Phil Elwell
unsigned bad_bits, ugly_bits;
int status = 0;
-@@ -3710,6 +3711,14 @@ int spi_setup(struct spi_device *spi)
+@@ -3714,6 +3715,14 @@ int spi_setup(struct spi_device *spi)
(SPI_TX_DUAL | SPI_TX_QUAD | SPI_TX_OCTAL |
SPI_RX_DUAL | SPI_RX_QUAD | SPI_RX_OCTAL)))
return -EINVAL;
diff --git a/lede/target/linux/bcm27xx/patches-6.1/950-0285-firmware-raspberrypi-Add-support-for-tryonce-reboot-.patch b/lede/target/linux/bcm27xx/patches-6.1/950-0285-firmware-raspberrypi-Add-support-for-tryonce-reboot-.patch
index 42cb682e0b..795e6bd909 100644
--- a/lede/target/linux/bcm27xx/patches-6.1/950-0285-firmware-raspberrypi-Add-support-for-tryonce-reboot-.patch
+++ b/lede/target/linux/bcm27xx/patches-6.1/950-0285-firmware-raspberrypi-Add-support-for-tryonce-reboot-.patch
@@ -19,7 +19,7 @@ mechanism to be implemented for OS upgrades.
--- a/drivers/firmware/raspberrypi.c
+++ b/drivers/firmware/raspberrypi.c
-@@ -193,6 +193,7 @@ static int rpi_firmware_notify_reboot(st
+@@ -194,6 +194,7 @@ static int rpi_firmware_notify_reboot(st
{
struct rpi_firmware *fw;
struct platform_device *pdev = g_pdev;
@@ -27,7 +27,7 @@ mechanism to be implemented for OS upgrades.
if (!pdev)
return 0;
-@@ -201,8 +202,28 @@ static int rpi_firmware_notify_reboot(st
+@@ -202,8 +203,28 @@ static int rpi_firmware_notify_reboot(st
if (!fw)
return 0;
diff --git a/lede/target/linux/bcm27xx/patches-6.1/950-0332-drm-panel-simple-Add-a-timing-for-the-Raspberry-Pi-7.patch b/lede/target/linux/bcm27xx/patches-6.1/950-0332-drm-panel-simple-Add-a-timing-for-the-Raspberry-Pi-7.patch
index d0eecb7ee8..fa6aaa3d19 100644
--- a/lede/target/linux/bcm27xx/patches-6.1/950-0332-drm-panel-simple-Add-a-timing-for-the-Raspberry-Pi-7.patch
+++ b/lede/target/linux/bcm27xx/patches-6.1/950-0332-drm-panel-simple-Add-a-timing-for-the-Raspberry-Pi-7.patch
@@ -15,7 +15,7 @@ Signed-off-by: Dave Stevenson
--- a/drivers/gpu/drm/panel/panel-simple.c
+++ b/drivers/gpu/drm/panel/panel-simple.c
-@@ -3193,6 +3193,31 @@ static const struct panel_desc qishenglo
+@@ -3196,6 +3196,31 @@ static const struct panel_desc qishenglo
.connector_type = DRM_MODE_CONNECTOR_DPI,
};
@@ -47,7 +47,7 @@ Signed-off-by: Dave Stevenson
static const struct display_timing rocktech_rk070er9427_timing = {
.pixelclock = { 26400000, 33300000, 46800000 },
.hactive = { 800, 800, 800 },
-@@ -4226,6 +4251,9 @@ static const struct of_device_id platfor
+@@ -4229,6 +4254,9 @@ static const struct of_device_id platfor
.compatible = "qishenglong,gopher2b-lcd",
.data = &qishenglong_gopher2b_lcd,
}, {
diff --git a/lede/target/linux/bcm27xx/patches-6.1/950-0383-drm-panel-simple-add-Geekworm-MZP280-Panel.patch b/lede/target/linux/bcm27xx/patches-6.1/950-0383-drm-panel-simple-add-Geekworm-MZP280-Panel.patch
index fa850a4fd9..904df714dc 100644
--- a/lede/target/linux/bcm27xx/patches-6.1/950-0383-drm-panel-simple-add-Geekworm-MZP280-Panel.patch
+++ b/lede/target/linux/bcm27xx/patches-6.1/950-0383-drm-panel-simple-add-Geekworm-MZP280-Panel.patch
@@ -46,7 +46,7 @@ Acked-by: Maxime Ripard
static const struct drm_display_mode giantplus_gpg482739qs5_mode = {
.clock = 9000,
.hdisplay = 480,
-@@ -4110,6 +4136,9 @@ static const struct of_device_id platfor
+@@ -4113,6 +4139,9 @@ static const struct of_device_id platfor
.compatible = "friendlyarm,hd702e",
.data = &friendlyarm_hd702e,
}, {
diff --git a/lede/target/linux/bcm27xx/patches-6.1/950-0450-firmware-raspberrypi-Introduce-rpi_firmware_find_nod.patch b/lede/target/linux/bcm27xx/patches-6.1/950-0450-firmware-raspberrypi-Introduce-rpi_firmware_find_nod.patch
index 9feea59a37..742b9d2858 100644
--- a/lede/target/linux/bcm27xx/patches-6.1/950-0450-firmware-raspberrypi-Introduce-rpi_firmware_find_nod.patch
+++ b/lede/target/linux/bcm27xx/patches-6.1/950-0450-firmware-raspberrypi-Introduce-rpi_firmware_find_nod.patch
@@ -19,7 +19,7 @@ Signed-off-by: Maxime Ripard
--- a/drivers/firmware/raspberrypi.c
+++ b/drivers/firmware/raspberrypi.c
-@@ -429,6 +429,18 @@ static int rpi_firmware_remove(struct pl
+@@ -430,6 +430,18 @@ static int rpi_firmware_remove(struct pl
return 0;
}
@@ -38,7 +38,7 @@ Signed-off-by: Maxime Ripard
/**
* rpi_firmware_get - Get pointer to rpi_firmware structure.
* @firmware_node: Pointer to the firmware Device Tree node.
-@@ -484,12 +496,6 @@ struct rpi_firmware *devm_rpi_firmware_g
+@@ -485,12 +497,6 @@ struct rpi_firmware *devm_rpi_firmware_g
}
EXPORT_SYMBOL_GPL(devm_rpi_firmware_get);
diff --git a/lede/target/linux/bcm27xx/patches-6.1/950-0452-firmware-raspberrypi-Provide-a-helper-to-query-a-clo.patch b/lede/target/linux/bcm27xx/patches-6.1/950-0452-firmware-raspberrypi-Provide-a-helper-to-query-a-clo.patch
index da30d57810..d5ac2e941f 100644
--- a/lede/target/linux/bcm27xx/patches-6.1/950-0452-firmware-raspberrypi-Provide-a-helper-to-query-a-clo.patch
+++ b/lede/target/linux/bcm27xx/patches-6.1/950-0452-firmware-raspberrypi-Provide-a-helper-to-query-a-clo.patch
@@ -19,7 +19,7 @@ Signed-off-by: Maxime Ripard
--- a/drivers/firmware/raspberrypi.c
+++ b/drivers/firmware/raspberrypi.c
-@@ -342,6 +342,26 @@ static void rpi_register_clk_driver(stru
+@@ -343,6 +343,26 @@ static void rpi_register_clk_driver(stru
-1, NULL, 0);
}
diff --git a/lede/target/linux/bcm27xx/patches-6.1/950-0453-drm-vc4-hdmi-Fix-hdmi_enable_4kp60-detection.patch b/lede/target/linux/bcm27xx/patches-6.1/950-0453-drm-vc4-hdmi-Fix-hdmi_enable_4kp60-detection.patch
index 2dac12b8a2..be8676e2f2 100644
--- a/lede/target/linux/bcm27xx/patches-6.1/950-0453-drm-vc4-hdmi-Fix-hdmi_enable_4kp60-detection.patch
+++ b/lede/target/linux/bcm27xx/patches-6.1/950-0453-drm-vc4-hdmi-Fix-hdmi_enable_4kp60-detection.patch
@@ -36,7 +36,7 @@ Signed-off-by: Maxime Ripard
#include
#include
#include
-@@ -3695,7 +3696,7 @@ static int vc4_hdmi_bind(struct device *
+@@ -3697,7 +3698,7 @@ static int vc4_hdmi_bind(struct device *
if (variant->max_pixel_clock == 600000000) {
struct vc4_dev *vc4 = to_vc4_dev(drm);
diff --git a/lede/target/linux/bcm27xx/patches-6.1/950-0454-drm-vc4-hdmi-Rework-hdmi_enable_4kp60-detection-code.patch b/lede/target/linux/bcm27xx/patches-6.1/950-0454-drm-vc4-hdmi-Rework-hdmi_enable_4kp60-detection-code.patch
index 4b77fe3516..d8522d4ffa 100644
--- a/lede/target/linux/bcm27xx/patches-6.1/950-0454-drm-vc4-hdmi-Rework-hdmi_enable_4kp60-detection-code.patch
+++ b/lede/target/linux/bcm27xx/patches-6.1/950-0454-drm-vc4-hdmi-Rework-hdmi_enable_4kp60-detection-code.patch
@@ -91,7 +91,7 @@ Signed-off-by: Maxime Ripard
return MODE_CLOCK_HIGH;
if (info->max_tmds_clock && clock > (info->max_tmds_clock * 1000))
-@@ -3694,14 +3695,6 @@ static int vc4_hdmi_bind(struct device *
+@@ -3696,14 +3697,6 @@ static int vc4_hdmi_bind(struct device *
vc4_hdmi->disable_wifi_frequencies =
of_property_read_bool(dev->of_node, "wifi-2.4ghz-coexistence");
diff --git a/lede/target/linux/bcm27xx/patches-6.1/950-0521-drm-panel-simple-Add-Innolux-AT056tN53V1-5.6-VGA.patch b/lede/target/linux/bcm27xx/patches-6.1/950-0521-drm-panel-simple-Add-Innolux-AT056tN53V1-5.6-VGA.patch
index 93da3ce94d..9abd05b5e2 100644
--- a/lede/target/linux/bcm27xx/patches-6.1/950-0521-drm-panel-simple-Add-Innolux-AT056tN53V1-5.6-VGA.patch
+++ b/lede/target/linux/bcm27xx/patches-6.1/950-0521-drm-panel-simple-Add-Innolux-AT056tN53V1-5.6-VGA.patch
@@ -165,7 +165,7 @@ Signed-off-by: Phil Elwell
static const struct drm_display_mode innolux_at070tn92_mode = {
.clock = 33333,
.hdisplay = 800,
-@@ -4146,6 +4178,9 @@ static const struct of_device_id platfor
+@@ -4149,6 +4181,9 @@ static const struct of_device_id platfor
.compatible = "innolux,at043tn24",
.data = &innolux_at043tn24,
}, {
diff --git a/lede/target/linux/bcm27xx/patches-6.1/950-0712-drm-vc4-Use-phys-addresses-for-slave-DMA-config.patch b/lede/target/linux/bcm27xx/patches-6.1/950-0712-drm-vc4-Use-phys-addresses-for-slave-DMA-config.patch
index 2c83a8083b..04967b5294 100644
--- a/lede/target/linux/bcm27xx/patches-6.1/950-0712-drm-vc4-Use-phys-addresses-for-slave-DMA-config.patch
+++ b/lede/target/linux/bcm27xx/patches-6.1/950-0712-drm-vc4-Use-phys-addresses-for-slave-DMA-config.patch
@@ -8,8 +8,8 @@ Slave addresses for DMA are meant to be supplied as physical addresses
Signed-off-by: Phil Elwell
---
- drivers/gpu/drm/vc4/vc4_hdmi.c | 13 ++++---------
- 1 file changed, 4 insertions(+), 9 deletions(-)
+ drivers/gpu/drm/vc4/vc4_hdmi.c | 15 ++++-----------
+ 1 file changed, 4 insertions(+), 11 deletions(-)
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
@@ -22,7 +22,7 @@ Signed-off-by: Phil Elwell
int index, len;
int ret;
-@@ -2755,20 +2755,15 @@ static int vc4_hdmi_audio_init(struct vc
+@@ -2755,22 +2755,15 @@ static int vc4_hdmi_audio_init(struct vc
}
/*
@@ -40,6 +40,8 @@ Signed-off-by: Phil Elwell
+ iomem = platform_get_resource(vc4_hdmi->pdev, IORESOURCE_MEM, index);
- addr = of_get_address(dev->of_node, index, NULL, NULL);
+- if (!addr)
+- return -EINVAL;
-
- vc4_hdmi->audio.dma_data.addr = be32_to_cpup(addr) + mai_data->offset;
+ vc4_hdmi->audio.dma_data.addr = iomem->start + mai_data->offset;
diff --git a/lede/target/linux/bcm27xx/patches-6.1/950-0804-fixup-Allow-mac-address-to-be-set-in-smsc95xx.patch b/lede/target/linux/bcm27xx/patches-6.1/950-0804-fixup-Allow-mac-address-to-be-set-in-smsc95xx.patch
index 9265e931fa..7dc9ee9af7 100644
--- a/lede/target/linux/bcm27xx/patches-6.1/950-0804-fixup-Allow-mac-address-to-be-set-in-smsc95xx.patch
+++ b/lede/target/linux/bcm27xx/patches-6.1/950-0804-fixup-Allow-mac-address-to-be-set-in-smsc95xx.patch
@@ -43,7 +43,7 @@ Signed-off-by: Lukas Wunner
--- a/drivers/net/usb/smsc95xx.c
+++ b/drivers/net/usb/smsc95xx.c
-@@ -814,49 +814,18 @@ static int smsc95xx_ioctl(struct net_dev
+@@ -810,49 +810,18 @@ static int smsc95xx_ioctl(struct net_dev
}
/* Check the macaddr module parameter for a MAC address */
@@ -103,7 +103,7 @@ Signed-off-by: Lukas Wunner
}
static void smsc95xx_init_mac_address(struct usbnet *dev)
-@@ -883,8 +852,12 @@ static void smsc95xx_init_mac_address(st
+@@ -879,8 +848,12 @@ static void smsc95xx_init_mac_address(st
}
/* Check module parameters */
diff --git a/lede/target/linux/bcm27xx/patches-6.1/950-0860-sdhci-Add-SD-Express-hook.patch b/lede/target/linux/bcm27xx/patches-6.1/950-0860-sdhci-Add-SD-Express-hook.patch
index 1aea0b3bcd..c7d53f9770 100644
--- a/lede/target/linux/bcm27xx/patches-6.1/950-0860-sdhci-Add-SD-Express-hook.patch
+++ b/lede/target/linux/bcm27xx/patches-6.1/950-0860-sdhci-Add-SD-Express-hook.patch
@@ -50,7 +50,7 @@ sdhci: remove PYA0_INTR_BUG quirk. Add quirks to disable some of the higher SDR
};
/*****************************************************************************\
-@@ -4605,6 +4615,15 @@ int sdhci_setup_host(struct sdhci_host *
+@@ -4611,6 +4621,15 @@ int sdhci_setup_host(struct sdhci_host *
!(host->quirks2 & SDHCI_QUIRK2_BROKEN_DDR50))
mmc->caps |= MMC_CAP_UHS_DDR50;
@@ -68,7 +68,7 @@ sdhci: remove PYA0_INTR_BUG quirk. Add quirks to disable some of the higher SDR
host->flags |= SDHCI_SDR50_NEEDS_TUNING;
--- a/drivers/mmc/host/sdhci.h
+++ b/drivers/mmc/host/sdhci.h
-@@ -481,6 +481,11 @@ struct sdhci_host {
+@@ -482,6 +482,11 @@ struct sdhci_host {
/* Issue CMD and DATA reset together */
#define SDHCI_QUIRK2_ISSUE_CMD_DAT_RESET_TOGETHER (1<<19)
@@ -80,7 +80,7 @@ sdhci: remove PYA0_INTR_BUG quirk. Add quirks to disable some of the higher SDR
int irq; /* Device IRQ */
void __iomem *ioaddr; /* Mapped address */
phys_addr_t mapbase; /* physical address base */
-@@ -663,6 +668,7 @@ struct sdhci_ops {
+@@ -664,6 +669,7 @@ struct sdhci_ops {
void (*request_done)(struct sdhci_host *host,
struct mmc_request *mrq);
void (*dump_vendor_regs)(struct sdhci_host *host);
diff --git a/lede/target/linux/bcm27xx/patches-6.1/950-0931-drm-vc4-hdmi-Enable-the-audio-clock.patch b/lede/target/linux/bcm27xx/patches-6.1/950-0931-drm-vc4-hdmi-Enable-the-audio-clock.patch
index f228dca9d5..6adc263740 100644
--- a/lede/target/linux/bcm27xx/patches-6.1/950-0931-drm-vc4-hdmi-Enable-the-audio-clock.patch
+++ b/lede/target/linux/bcm27xx/patches-6.1/950-0931-drm-vc4-hdmi-Enable-the-audio-clock.patch
@@ -18,7 +18,7 @@ Signed-off-by: Maxime Ripard
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -3625,6 +3625,7 @@ static int vc4_hdmi_runtime_suspend(stru
+@@ -3627,6 +3627,7 @@ static int vc4_hdmi_runtime_suspend(stru
{
struct vc4_hdmi *vc4_hdmi = dev_get_drvdata(dev);
@@ -26,7 +26,7 @@ Signed-off-by: Maxime Ripard
clk_disable_unprepare(vc4_hdmi->hsm_rpm_clock);
return 0;
-@@ -3666,6 +3667,10 @@ static int vc4_hdmi_runtime_resume(struc
+@@ -3668,6 +3669,10 @@ static int vc4_hdmi_runtime_resume(struc
goto err_disable_clk;
}
diff --git a/lede/target/linux/bcm27xx/patches-6.1/950-0965-drm-vc4-hdmi-Add-support-for-BCM2712-HDMI-controller.patch b/lede/target/linux/bcm27xx/patches-6.1/950-0965-drm-vc4-hdmi-Add-support-for-BCM2712-HDMI-controller.patch
index 7cb4e5661d..707c939781 100644
--- a/lede/target/linux/bcm27xx/patches-6.1/950-0965-drm-vc4-hdmi-Add-support-for-BCM2712-HDMI-controller.patch
+++ b/lede/target/linux/bcm27xx/patches-6.1/950-0965-drm-vc4-hdmi-Add-support-for-BCM2712-HDMI-controller.patch
@@ -73,7 +73,7 @@ Signed-off-by: Maxime Ripard
VC4_HD_VID_CTL_ENABLE |
VC4_HD_VID_CTL_CLRRGB |
VC4_HD_VID_CTL_UNDERFLOW_ENABLE |
-@@ -3796,7 +3808,9 @@ static int vc4_hdmi_bind(struct device *
+@@ -3798,7 +3810,9 @@ static int vc4_hdmi_bind(struct device *
return ret;
if ((of_device_is_compatible(dev->of_node, "brcm,bcm2711-hdmi0") ||
@@ -84,7 +84,7 @@ Signed-off-by: Maxime Ripard
HDMI_READ(HDMI_VID_CTL) & VC4_HD_VID_CTL_ENABLE) {
clk_prepare_enable(vc4_hdmi->pixel_clock);
clk_prepare_enable(vc4_hdmi->hsm_clock);
-@@ -3931,10 +3945,66 @@ static const struct vc4_hdmi_variant bcm
+@@ -3933,10 +3947,66 @@ static const struct vc4_hdmi_variant bcm
.hp_detect = vc5_hdmi_hp_detect,
};
diff --git a/lede/target/linux/bcm27xx/patches-6.1/950-0989-drm-panel-simple-Alter-the-timing-for-the-Pi-7-DSI-d.patch b/lede/target/linux/bcm27xx/patches-6.1/950-0989-drm-panel-simple-Alter-the-timing-for-the-Pi-7-DSI-d.patch
index ef70de7ee4..42f4266682 100644
--- a/lede/target/linux/bcm27xx/patches-6.1/950-0989-drm-panel-simple-Alter-the-timing-for-the-Pi-7-DSI-d.patch
+++ b/lede/target/linux/bcm27xx/patches-6.1/950-0989-drm-panel-simple-Alter-the-timing-for-the-Pi-7-DSI-d.patch
@@ -15,7 +15,7 @@ Signed-off-by: Dave Stevenson
--- a/drivers/gpu/drm/panel/panel-simple.c
+++ b/drivers/gpu/drm/panel/panel-simple.c
-@@ -3241,11 +3241,11 @@ static const struct panel_desc qishenglo
+@@ -3244,11 +3244,11 @@ static const struct panel_desc qishenglo
};
static const struct drm_display_mode raspberrypi_7inch_mode = {
diff --git a/lede/target/linux/bcm27xx/patches-6.1/950-1072-drm-vc4-crtc-Support-odd-horizontal-timings-on-BCM27.patch b/lede/target/linux/bcm27xx/patches-6.1/950-1072-drm-vc4-crtc-Support-odd-horizontal-timings-on-BCM27.patch
index a72e3b8e5b..08ab168984 100644
--- a/lede/target/linux/bcm27xx/patches-6.1/950-1072-drm-vc4-crtc-Support-odd-horizontal-timings-on-BCM27.patch
+++ b/lede/target/linux/bcm27xx/patches-6.1/950-1072-drm-vc4-crtc-Support-odd-horizontal-timings-on-BCM27.patch
@@ -74,7 +74,7 @@ Signed-off-by: Dom Cobley
},
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -3958,7 +3958,7 @@ static const struct vc4_hdmi_variant bcm
+@@ -3960,7 +3960,7 @@ static const struct vc4_hdmi_variant bcm
PHY_LANE_2,
PHY_LANE_CK,
},
@@ -83,7 +83,7 @@ Signed-off-by: Dom Cobley
.external_irq_controller = true,
.init_resources = vc5_hdmi_init_resources,
-@@ -3985,7 +3985,7 @@ static const struct vc4_hdmi_variant bcm
+@@ -3987,7 +3987,7 @@ static const struct vc4_hdmi_variant bcm
PHY_LANE_2,
PHY_LANE_CK,
},
diff --git a/lede/target/linux/bcm27xx/patches-6.1/950-1075-drivers-mmc-sdhci-add-SPURIOUS_INT_RESP-quirk.patch b/lede/target/linux/bcm27xx/patches-6.1/950-1075-drivers-mmc-sdhci-add-SPURIOUS_INT_RESP-quirk.patch
index 2ab224df05..5b3b66c1f6 100644
--- a/lede/target/linux/bcm27xx/patches-6.1/950-1075-drivers-mmc-sdhci-add-SPURIOUS_INT_RESP-quirk.patch
+++ b/lede/target/linux/bcm27xx/patches-6.1/950-1075-drivers-mmc-sdhci-add-SPURIOUS_INT_RESP-quirk.patch
@@ -50,7 +50,7 @@ Signed-off-by: Jonathan Bell
if (!mmc_op_tuning(host->cmd->opcode))
--- a/drivers/mmc/host/sdhci.h
+++ b/drivers/mmc/host/sdhci.h
-@@ -486,6 +486,9 @@ struct sdhci_host {
+@@ -487,6 +487,9 @@ struct sdhci_host {
#define SDHCI_QUIRK2_NO_SDR50 (1<<20)
#define SDHCI_QUIRK2_NO_SDR104 (1<<21)
diff --git a/lede/target/linux/bcm27xx/patches-6.1/950-1182-drm-panel-add-panel-dsi.patch b/lede/target/linux/bcm27xx/patches-6.1/950-1182-drm-panel-add-panel-dsi.patch
index 9122d73476..a46d6d3f15 100644
--- a/lede/target/linux/bcm27xx/patches-6.1/950-1182-drm-panel-add-panel-dsi.patch
+++ b/lede/target/linux/bcm27xx/patches-6.1/950-1182-drm-panel-add-panel-dsi.patch
@@ -23,7 +23,7 @@ Signed-off-by: Timon Skerutsch
/**
* struct panel_desc - Describes a simple panel.
-@@ -4662,6 +4663,9 @@ static const struct panel_desc_dsi osd10
+@@ -4665,6 +4666,9 @@ static const struct panel_desc_dsi osd10
.lanes = 4,
};
@@ -33,7 +33,7 @@ Signed-off-by: Timon Skerutsch
static const struct of_device_id dsi_of_match[] = {
{
.compatible = "auo,b080uan01",
-@@ -4685,14 +4689,118 @@ static const struct of_device_id dsi_of_
+@@ -4688,14 +4692,118 @@ static const struct of_device_id dsi_of_
.compatible = "osddisplays,osd101t2045-53ts",
.data = &osd101t2045_53ts
}, {
@@ -152,7 +152,7 @@ Signed-off-by: Timon Skerutsch
const struct of_device_id *id;
int err;
-@@ -4700,7 +4808,20 @@ static int panel_simple_dsi_probe(struct
+@@ -4703,7 +4811,20 @@ static int panel_simple_dsi_probe(struct
if (!id)
return -ENODEV;
diff --git a/lede/target/linux/generic/backport-5.4/782-net-next-1-of-net-pass-the-dst-buffer-to-of_get_mac_address.patch b/lede/target/linux/generic/backport-5.4/782-net-next-1-of-net-pass-the-dst-buffer-to-of_get_mac_address.patch
index 2c1cd9c839..4aa71d6a35 100644
--- a/lede/target/linux/generic/backport-5.4/782-net-next-1-of-net-pass-the-dst-buffer-to-of_get_mac_address.patch
+++ b/lede/target/linux/generic/backport-5.4/782-net-next-1-of-net-pass-the-dst-buffer-to-of_get_mac_address.patch
@@ -1815,7 +1815,7 @@ Signed-off-by: David S. Miller
}
--- a/drivers/net/usb/smsc95xx.c
+++ b/drivers/net/usb/smsc95xx.c
-@@ -901,11 +901,12 @@ static int smsc95xx_ioctl(struct net_dev
+@@ -903,11 +903,12 @@ static int smsc95xx_ioctl(struct net_dev
static void smsc95xx_init_mac_address(struct usbnet *dev)
{
diff --git a/lede/target/linux/generic/backport-6.1/424-v6.4-0004-mtd-core-prepare-mtd_otp_nvmem_add-to-handle-EPROBE_.patch b/lede/target/linux/generic/backport-6.1/424-v6.4-0004-mtd-core-prepare-mtd_otp_nvmem_add-to-handle-EPROBE_.patch
index 9ddda420ac..28f54d9e5e 100644
--- a/lede/target/linux/generic/backport-6.1/424-v6.4-0004-mtd-core-prepare-mtd_otp_nvmem_add-to-handle-EPROBE_.patch
+++ b/lede/target/linux/generic/backport-6.1/424-v6.4-0004-mtd-core-prepare-mtd_otp_nvmem_add-to-handle-EPROBE_.patch
@@ -17,7 +17,7 @@ Link: https://lore.kernel.org/linux-mtd/20230308082021.870459-4-michael@walle.cc
--- a/drivers/mtd/mtdcore.c
+++ b/drivers/mtd/mtdcore.c
-@@ -953,8 +953,8 @@ static int mtd_otp_nvmem_add(struct mtd_
+@@ -955,8 +955,8 @@ static int mtd_otp_nvmem_add(struct mtd_
nvmem = mtd_otp_nvmem_register(mtd, "user-otp", size,
mtd_nvmem_user_otp_reg_read);
if (IS_ERR(nvmem)) {
@@ -28,7 +28,7 @@ Link: https://lore.kernel.org/linux-mtd/20230308082021.870459-4-michael@walle.cc
}
mtd->otp_user_nvmem = nvmem;
}
-@@ -971,7 +971,6 @@ static int mtd_otp_nvmem_add(struct mtd_
+@@ -973,7 +973,6 @@ static int mtd_otp_nvmem_add(struct mtd_
nvmem = mtd_otp_nvmem_register(mtd, "factory-otp", size,
mtd_nvmem_fact_otp_reg_read);
if (IS_ERR(nvmem)) {
@@ -36,7 +36,7 @@ Link: https://lore.kernel.org/linux-mtd/20230308082021.870459-4-michael@walle.cc
err = PTR_ERR(nvmem);
goto err;
}
-@@ -983,7 +982,7 @@ static int mtd_otp_nvmem_add(struct mtd_
+@@ -985,7 +984,7 @@ static int mtd_otp_nvmem_add(struct mtd_
err:
nvmem_unregister(mtd->otp_user_nvmem);
diff --git a/lede/target/linux/generic/backport-6.1/733-v6.4-23-net-ethernet-mtk_eth_soc-ppe-add-support-for-flow-ac.patch b/lede/target/linux/generic/backport-6.1/733-v6.4-23-net-ethernet-mtk_eth_soc-ppe-add-support-for-flow-ac.patch
index 88140168b1..93eaffa19e 100644
--- a/lede/target/linux/generic/backport-6.1/733-v6.4-23-net-ethernet-mtk_eth_soc-ppe-add-support-for-flow-ac.patch
+++ b/lede/target/linux/generic/backport-6.1/733-v6.4-23-net-ethernet-mtk_eth_soc-ppe-add-support-for-flow-ac.patch
@@ -27,7 +27,7 @@ Signed-off-by: Jakub Kicinski
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -4689,8 +4689,8 @@ static int mtk_probe(struct platform_dev
+@@ -4691,8 +4691,8 @@ static int mtk_probe(struct platform_dev
for (i = 0; i < num_ppe; i++) {
u32 ppe_addr = eth->soc->reg_map->ppe_base + i * 0x400;
@@ -38,7 +38,7 @@ Signed-off-by: Jakub Kicinski
if (!eth->ppe[i]) {
err = -ENOMEM;
goto err_deinit_ppe;
-@@ -4814,6 +4814,7 @@ static const struct mtk_soc_data mt7622_
+@@ -4816,6 +4816,7 @@ static const struct mtk_soc_data mt7622_
.required_pctl = false,
.offload_version = 2,
.hash_offset = 2,
@@ -46,7 +46,7 @@ Signed-off-by: Jakub Kicinski
.foe_entry_size = sizeof(struct mtk_foe_entry) - 16,
.txrx = {
.txd_size = sizeof(struct mtk_tx_dma),
-@@ -4851,6 +4852,7 @@ static const struct mtk_soc_data mt7629_
+@@ -4853,6 +4854,7 @@ static const struct mtk_soc_data mt7629_
.hw_features = MTK_HW_FEATURES,
.required_clks = MT7629_CLKS_BITMAP,
.required_pctl = false,
@@ -54,7 +54,7 @@ Signed-off-by: Jakub Kicinski
.txrx = {
.txd_size = sizeof(struct mtk_tx_dma),
.rxd_size = sizeof(struct mtk_rx_dma),
-@@ -4871,6 +4873,7 @@ static const struct mtk_soc_data mt7981_
+@@ -4873,6 +4875,7 @@ static const struct mtk_soc_data mt7981_
.offload_version = 2,
.hash_offset = 4,
.foe_entry_size = sizeof(struct mtk_foe_entry),
@@ -62,7 +62,7 @@ Signed-off-by: Jakub Kicinski
.txrx = {
.txd_size = sizeof(struct mtk_tx_dma_v2),
.rxd_size = sizeof(struct mtk_rx_dma_v2),
-@@ -4891,6 +4894,7 @@ static const struct mtk_soc_data mt7986_
+@@ -4893,6 +4896,7 @@ static const struct mtk_soc_data mt7986_
.offload_version = 2,
.hash_offset = 4,
.foe_entry_size = sizeof(struct mtk_foe_entry),
@@ -356,7 +356,7 @@ Signed-off-by: Jakub Kicinski
return 0;
--- a/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
+++ b/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
-@@ -500,6 +500,7 @@ static int
+@@ -497,6 +497,7 @@ static int
mtk_flow_offload_stats(struct mtk_eth *eth, struct flow_cls_offload *f)
{
struct mtk_flow_entry *entry;
@@ -364,7 +364,7 @@ Signed-off-by: Jakub Kicinski
u32 idle;
entry = rhashtable_lookup(ð->flow_table, &f->cookie,
-@@ -510,6 +511,13 @@ mtk_flow_offload_stats(struct mtk_eth *e
+@@ -507,6 +508,13 @@ mtk_flow_offload_stats(struct mtk_eth *e
idle = mtk_foe_entry_idle_time(eth->ppe[entry->ppe_index], entry);
f->stats.lastused = jiffies - idle * HZ;
diff --git a/lede/target/linux/generic/backport-6.1/750-v6.5-01-net-ethernet-mtk_ppe-add-MTK_FOE_ENTRY_V-1-2-_SIZE-m.patch b/lede/target/linux/generic/backport-6.1/750-v6.5-01-net-ethernet-mtk_ppe-add-MTK_FOE_ENTRY_V-1-2-_SIZE-m.patch
index aceeaa9fe5..d7d1c08fce 100644
--- a/lede/target/linux/generic/backport-6.1/750-v6.5-01-net-ethernet-mtk_ppe-add-MTK_FOE_ENTRY_V-1-2-_SIZE-m.patch
+++ b/lede/target/linux/generic/backport-6.1/750-v6.5-01-net-ethernet-mtk_ppe-add-MTK_FOE_ENTRY_V-1-2-_SIZE-m.patch
@@ -17,7 +17,7 @@ Signed-off-by: David S. Miller
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -4763,7 +4763,7 @@ static const struct mtk_soc_data mt7621_
+@@ -4765,7 +4765,7 @@ static const struct mtk_soc_data mt7621_
.required_pctl = false,
.offload_version = 1,
.hash_offset = 2,
@@ -26,7 +26,7 @@ Signed-off-by: David S. Miller
.txrx = {
.txd_size = sizeof(struct mtk_tx_dma),
.rxd_size = sizeof(struct mtk_rx_dma),
-@@ -4784,7 +4784,7 @@ static const struct mtk_soc_data mt7622_
+@@ -4786,7 +4786,7 @@ static const struct mtk_soc_data mt7622_
.offload_version = 2,
.hash_offset = 2,
.has_accounting = true,
@@ -35,7 +35,7 @@ Signed-off-by: David S. Miller
.txrx = {
.txd_size = sizeof(struct mtk_tx_dma),
.rxd_size = sizeof(struct mtk_rx_dma),
-@@ -4803,7 +4803,7 @@ static const struct mtk_soc_data mt7623_
+@@ -4805,7 +4805,7 @@ static const struct mtk_soc_data mt7623_
.required_pctl = true,
.offload_version = 1,
.hash_offset = 2,
@@ -44,7 +44,7 @@ Signed-off-by: David S. Miller
.txrx = {
.txd_size = sizeof(struct mtk_tx_dma),
.rxd_size = sizeof(struct mtk_rx_dma),
-@@ -4841,8 +4841,8 @@ static const struct mtk_soc_data mt7981_
+@@ -4843,8 +4843,8 @@ static const struct mtk_soc_data mt7981_
.required_pctl = false,
.offload_version = 2,
.hash_offset = 4,
@@ -54,7 +54,7 @@ Signed-off-by: David S. Miller
.txrx = {
.txd_size = sizeof(struct mtk_tx_dma_v2),
.rxd_size = sizeof(struct mtk_rx_dma_v2),
-@@ -4862,8 +4862,8 @@ static const struct mtk_soc_data mt7986_
+@@ -4864,8 +4864,8 @@ static const struct mtk_soc_data mt7986_
.required_pctl = false,
.offload_version = 2,
.hash_offset = 4,
diff --git a/lede/target/linux/generic/backport-6.1/750-v6.5-02-net-ethernet-mtk_eth_soc-remove-incorrect-PLL-config.patch b/lede/target/linux/generic/backport-6.1/750-v6.5-02-net-ethernet-mtk_eth_soc-remove-incorrect-PLL-config.patch
index ae56a99e83..fb54f404b2 100644
--- a/lede/target/linux/generic/backport-6.1/750-v6.5-02-net-ethernet-mtk_eth_soc-remove-incorrect-PLL-config.patch
+++ b/lede/target/linux/generic/backport-6.1/750-v6.5-02-net-ethernet-mtk_eth_soc-remove-incorrect-PLL-config.patch
@@ -95,7 +95,7 @@ Signed-off-by: Paolo Abeni
/* mt7623_pad_clk_setup */
for (i = 0 ; i < NUM_TRGMII_CTRL; i++)
-@@ -4340,13 +4312,19 @@ static int mtk_add_mac(struct mtk_eth *e
+@@ -4342,13 +4314,19 @@ static int mtk_add_mac(struct mtk_eth *e
mac->phylink_config.mac_capabilities = MAC_ASYM_PAUSE | MAC_SYM_PAUSE |
MAC_10 | MAC_100 | MAC_1000 | MAC_2500FD;
@@ -121,7 +121,7 @@ Signed-off-by: Paolo Abeni
if (MTK_HAS_CAPS(mac->hw->soc->caps, MTK_TRGMII) && !mac->id)
__set_bit(PHY_INTERFACE_MODE_TRGMII,
-@@ -4804,6 +4782,7 @@ static const struct mtk_soc_data mt7623_
+@@ -4806,6 +4784,7 @@ static const struct mtk_soc_data mt7623_
.offload_version = 1,
.hash_offset = 2,
.foe_entry_size = MTK_FOE_ENTRY_V1_SIZE,
diff --git a/lede/target/linux/generic/backport-6.1/750-v6.5-03-net-ethernet-mtk_eth_soc-remove-mac_pcs_get_state-an.patch b/lede/target/linux/generic/backport-6.1/750-v6.5-03-net-ethernet-mtk_eth_soc-remove-mac_pcs_get_state-an.patch
index 2893a073fd..500fad3b84 100644
--- a/lede/target/linux/generic/backport-6.1/750-v6.5-03-net-ethernet-mtk_eth_soc-remove-mac_pcs_get_state-an.patch
+++ b/lede/target/linux/generic/backport-6.1/750-v6.5-03-net-ethernet-mtk_eth_soc-remove-mac_pcs_get_state-an.patch
@@ -23,7 +23,7 @@ Signed-off-by: Paolo Abeni
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -555,38 +555,6 @@ static int mtk_mac_finish(struct phylink
+@@ -554,38 +554,6 @@ static int mtk_mac_finish(struct phylink
return 0;
}
@@ -62,7 +62,7 @@ Signed-off-by: Paolo Abeni
static void mtk_mac_link_down(struct phylink_config *config, unsigned int mode,
phy_interface_t interface)
{
-@@ -709,7 +677,6 @@ static void mtk_mac_link_up(struct phyli
+@@ -708,7 +676,6 @@ static void mtk_mac_link_up(struct phyli
static const struct phylink_mac_ops mtk_phylink_ops = {
.validate = phylink_generic_validate,
.mac_select_pcs = mtk_mac_select_pcs,
@@ -70,7 +70,7 @@ Signed-off-by: Paolo Abeni
.mac_config = mtk_mac_config,
.mac_finish = mtk_mac_finish,
.mac_link_down = mtk_mac_link_down,
-@@ -4307,8 +4274,6 @@ static int mtk_add_mac(struct mtk_eth *e
+@@ -4309,8 +4276,6 @@ static int mtk_add_mac(struct mtk_eth *e
mac->phylink_config.dev = ð->netdev[id]->dev;
mac->phylink_config.type = PHYLINK_NETDEV;
diff --git a/lede/target/linux/generic/backport-6.1/750-v6.5-05-net-ethernet-mtk_eth_soc-add-version-in-mtk_soc_data.patch b/lede/target/linux/generic/backport-6.1/750-v6.5-05-net-ethernet-mtk_eth_soc-add-version-in-mtk_soc_data.patch
index 9151702d01..3b1225e94e 100644
--- a/lede/target/linux/generic/backport-6.1/750-v6.5-05-net-ethernet-mtk_eth_soc-add-version-in-mtk_soc_data.patch
+++ b/lede/target/linux/generic/backport-6.1/750-v6.5-05-net-ethernet-mtk_eth_soc-add-version-in-mtk_soc_data.patch
@@ -23,7 +23,7 @@ Signed-off-by: Jakub Kicinski
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -580,7 +580,7 @@ static void mtk_set_queue_speed(struct m
+@@ -579,7 +579,7 @@ static void mtk_set_queue_speed(struct m
FIELD_PREP(MTK_QTX_SCH_MIN_RATE_MAN, 1) |
FIELD_PREP(MTK_QTX_SCH_MIN_RATE_EXP, 4) |
MTK_QTX_SCH_LEAKY_BUCKET_SIZE;
@@ -32,7 +32,7 @@ Signed-off-by: Jakub Kicinski
val |= MTK_QTX_SCH_LEAKY_BUCKET_EN;
if (IS_ENABLED(CONFIG_SOC_MT7621)) {
-@@ -956,7 +956,7 @@ static bool mtk_rx_get_desc(struct mtk_e
+@@ -955,7 +955,7 @@ static bool mtk_rx_get_desc(struct mtk_e
rxd->rxd1 = READ_ONCE(dma_rxd->rxd1);
rxd->rxd3 = READ_ONCE(dma_rxd->rxd3);
rxd->rxd4 = READ_ONCE(dma_rxd->rxd4);
@@ -41,7 +41,7 @@ Signed-off-by: Jakub Kicinski
rxd->rxd5 = READ_ONCE(dma_rxd->rxd5);
rxd->rxd6 = READ_ONCE(dma_rxd->rxd6);
}
-@@ -1014,7 +1014,7 @@ static int mtk_init_fq_dma(struct mtk_et
+@@ -1013,7 +1013,7 @@ static int mtk_init_fq_dma(struct mtk_et
txd->txd3 = TX_DMA_PLEN0(MTK_QDMA_PAGE_SIZE);
txd->txd4 = 0;
@@ -50,7 +50,7 @@ Signed-off-by: Jakub Kicinski
txd->txd5 = 0;
txd->txd6 = 0;
txd->txd7 = 0;
-@@ -1205,7 +1205,7 @@ static void mtk_tx_set_dma_desc(struct n
+@@ -1204,7 +1204,7 @@ static void mtk_tx_set_dma_desc(struct n
struct mtk_mac *mac = netdev_priv(dev);
struct mtk_eth *eth = mac->hw;
@@ -59,7 +59,7 @@ Signed-off-by: Jakub Kicinski
mtk_tx_set_dma_desc_v2(dev, txd, info);
else
mtk_tx_set_dma_desc_v1(dev, txd, info);
-@@ -1512,7 +1512,7 @@ static void mtk_update_rx_cpu_idx(struct
+@@ -1511,7 +1511,7 @@ static void mtk_update_rx_cpu_idx(struct
static bool mtk_page_pool_enabled(struct mtk_eth *eth)
{
@@ -68,7 +68,7 @@ Signed-off-by: Jakub Kicinski
}
static struct page_pool *mtk_create_page_pool(struct mtk_eth *eth,
-@@ -1854,7 +1854,7 @@ static int mtk_poll_rx(struct napi_struc
+@@ -1853,7 +1853,7 @@ static int mtk_poll_rx(struct napi_struc
break;
/* find out which mac the packet come from. values start at 1 */
@@ -77,7 +77,7 @@ Signed-off-by: Jakub Kicinski
mac = RX_DMA_GET_SPORT_V2(trxd.rxd5) - 1;
else if (!MTK_HAS_CAPS(eth->soc->caps, MTK_SOC_MT7628) &&
!(trxd.rxd4 & RX_DMA_SPECIAL_TAG))
-@@ -1950,7 +1950,7 @@ static int mtk_poll_rx(struct napi_struc
+@@ -1949,7 +1949,7 @@ static int mtk_poll_rx(struct napi_struc
skb->dev = netdev;
bytes += skb->len;
@@ -86,7 +86,7 @@ Signed-off-by: Jakub Kicinski
reason = FIELD_GET(MTK_RXD5_PPE_CPU_REASON, trxd.rxd5);
hash = trxd.rxd5 & MTK_RXD5_FOE_ENTRY;
if (hash != MTK_RXD5_FOE_ENTRY)
-@@ -1975,8 +1975,8 @@ static int mtk_poll_rx(struct napi_struc
+@@ -1974,8 +1974,8 @@ static int mtk_poll_rx(struct napi_struc
/* When using VLAN untagging in combination with DSA, the
* hardware treats the MTK special tag as a VLAN and untags it.
*/
@@ -97,7 +97,7 @@ Signed-off-by: Jakub Kicinski
unsigned int port = RX_DMA_VPID(trxd.rxd3) & GENMASK(2, 0);
if (port < ARRAY_SIZE(eth->dsa_meta) &&
-@@ -2286,7 +2286,7 @@ static int mtk_tx_alloc(struct mtk_eth *
+@@ -2285,7 +2285,7 @@ static int mtk_tx_alloc(struct mtk_eth *
txd->txd2 = next_ptr;
txd->txd3 = TX_DMA_LS0 | TX_DMA_OWNER_CPU;
txd->txd4 = 0;
@@ -106,7 +106,7 @@ Signed-off-by: Jakub Kicinski
txd->txd5 = 0;
txd->txd6 = 0;
txd->txd7 = 0;
-@@ -2339,14 +2339,14 @@ static int mtk_tx_alloc(struct mtk_eth *
+@@ -2338,14 +2338,14 @@ static int mtk_tx_alloc(struct mtk_eth *
FIELD_PREP(MTK_QTX_SCH_MIN_RATE_MAN, 1) |
FIELD_PREP(MTK_QTX_SCH_MIN_RATE_EXP, 4) |
MTK_QTX_SCH_LEAKY_BUCKET_SIZE;
@@ -123,7 +123,7 @@ Signed-off-by: Jakub Kicinski
mtk_w32(eth, val, soc->reg_map->qdma.tx_sch_rate + 4);
} else {
mtk_w32(eth, ring->phys_pdma, MT7628_TX_BASE_PTR0);
-@@ -2475,7 +2475,7 @@ static int mtk_rx_alloc(struct mtk_eth *
+@@ -2474,7 +2474,7 @@ static int mtk_rx_alloc(struct mtk_eth *
rxd->rxd3 = 0;
rxd->rxd4 = 0;
@@ -132,7 +132,7 @@ Signed-off-by: Jakub Kicinski
rxd->rxd5 = 0;
rxd->rxd6 = 0;
rxd->rxd7 = 0;
-@@ -3023,7 +3023,7 @@ static int mtk_start_dma(struct mtk_eth
+@@ -3025,7 +3025,7 @@ static int mtk_start_dma(struct mtk_eth
MTK_TX_BT_32DWORDS | MTK_NDP_CO_PRO |
MTK_RX_2B_OFFSET | MTK_TX_WB_DDONE;
@@ -141,7 +141,7 @@ Signed-off-by: Jakub Kicinski
val |= MTK_MUTLI_CNT | MTK_RESV_BUF |
MTK_WCOMP_EN | MTK_DMAD_WR_WDONE |
MTK_CHK_DDONE_EN | MTK_LEAKY_BUCKET_EN;
-@@ -3165,7 +3165,7 @@ static int mtk_open(struct net_device *d
+@@ -3167,7 +3167,7 @@ static int mtk_open(struct net_device *d
phylink_start(mac->phylink);
netif_tx_start_all_queues(dev);
@@ -150,7 +150,7 @@ Signed-off-by: Jakub Kicinski
return 0;
if (mtk_uses_dsa(dev) && !eth->prog) {
-@@ -3430,7 +3430,7 @@ static void mtk_hw_reset(struct mtk_eth
+@@ -3432,7 +3432,7 @@ static void mtk_hw_reset(struct mtk_eth
{
u32 val;
@@ -159,7 +159,7 @@ Signed-off-by: Jakub Kicinski
regmap_write(eth->ethsys, ETHSYS_FE_RST_CHK_IDLE_EN, 0);
val = RSTCTRL_PPE0_V2;
} else {
-@@ -3442,7 +3442,7 @@ static void mtk_hw_reset(struct mtk_eth
+@@ -3444,7 +3444,7 @@ static void mtk_hw_reset(struct mtk_eth
ethsys_reset(eth, RSTCTRL_ETH | RSTCTRL_FE | val);
@@ -168,7 +168,7 @@ Signed-off-by: Jakub Kicinski
regmap_write(eth->ethsys, ETHSYS_FE_RST_CHK_IDLE_EN,
0x3ffffff);
}
-@@ -3468,7 +3468,7 @@ static void mtk_hw_warm_reset(struct mtk
+@@ -3470,7 +3470,7 @@ static void mtk_hw_warm_reset(struct mtk
return;
}
@@ -177,7 +177,7 @@ Signed-off-by: Jakub Kicinski
rst_mask = RSTCTRL_ETH | RSTCTRL_PPE0_V2;
else
rst_mask = RSTCTRL_ETH | RSTCTRL_PPE0;
-@@ -3638,7 +3638,7 @@ static int mtk_hw_init(struct mtk_eth *e
+@@ -3640,7 +3640,7 @@ static int mtk_hw_init(struct mtk_eth *e
else
mtk_hw_reset(eth);
@@ -186,7 +186,7 @@ Signed-off-by: Jakub Kicinski
/* Set FE to PDMAv2 if necessary */
val = mtk_r32(eth, MTK_FE_GLO_MISC);
mtk_w32(eth, val | BIT(4), MTK_FE_GLO_MISC);
-@@ -3675,7 +3675,7 @@ static int mtk_hw_init(struct mtk_eth *e
+@@ -3677,7 +3677,7 @@ static int mtk_hw_init(struct mtk_eth *e
*/
val = mtk_r32(eth, MTK_CDMQ_IG_CTRL);
mtk_w32(eth, val | MTK_CDMQ_STAG_EN, MTK_CDMQ_IG_CTRL);
@@ -195,7 +195,7 @@ Signed-off-by: Jakub Kicinski
val = mtk_r32(eth, MTK_CDMP_IG_CTRL);
mtk_w32(eth, val | MTK_CDMP_STAG_EN, MTK_CDMP_IG_CTRL);
-@@ -3697,7 +3697,7 @@ static int mtk_hw_init(struct mtk_eth *e
+@@ -3699,7 +3699,7 @@ static int mtk_hw_init(struct mtk_eth *e
mtk_w32(eth, eth->soc->txrx.rx_irq_done_mask, reg_map->qdma.int_grp + 4);
mtk_w32(eth, 0x21021000, MTK_FE_INT_GRP);
@@ -204,7 +204,7 @@ Signed-off-by: Jakub Kicinski
/* PSE should not drop port8 and port9 packets from WDMA Tx */
mtk_w32(eth, 0x00000300, PSE_DROP_CFG);
-@@ -4486,7 +4486,7 @@ static int mtk_probe(struct platform_dev
+@@ -4488,7 +4488,7 @@ static int mtk_probe(struct platform_dev
}
}
@@ -213,7 +213,7 @@ Signed-off-by: Jakub Kicinski
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (!res) {
err = -EINVAL;
-@@ -4594,9 +4594,8 @@ static int mtk_probe(struct platform_dev
+@@ -4596,9 +4596,8 @@ static int mtk_probe(struct platform_dev
}
if (eth->soc->offload_version) {
@@ -224,7 +224,7 @@ Signed-off-by: Jakub Kicinski
num_ppe = min_t(u32, ARRAY_SIZE(eth->ppe), num_ppe);
for (i = 0; i < num_ppe; i++) {
u32 ppe_addr = eth->soc->reg_map->ppe_base + i * 0x400;
-@@ -4688,6 +4687,7 @@ static const struct mtk_soc_data mt2701_
+@@ -4690,6 +4689,7 @@ static const struct mtk_soc_data mt2701_
.hw_features = MTK_HW_FEATURES,
.required_clks = MT7623_CLKS_BITMAP,
.required_pctl = true,
@@ -232,7 +232,7 @@ Signed-off-by: Jakub Kicinski
.txrx = {
.txd_size = sizeof(struct mtk_tx_dma),
.rxd_size = sizeof(struct mtk_rx_dma),
-@@ -4704,6 +4704,7 @@ static const struct mtk_soc_data mt7621_
+@@ -4706,6 +4706,7 @@ static const struct mtk_soc_data mt7621_
.hw_features = MTK_HW_FEATURES,
.required_clks = MT7621_CLKS_BITMAP,
.required_pctl = false,
@@ -240,7 +240,7 @@ Signed-off-by: Jakub Kicinski
.offload_version = 1,
.hash_offset = 2,
.foe_entry_size = MTK_FOE_ENTRY_V1_SIZE,
-@@ -4724,6 +4725,7 @@ static const struct mtk_soc_data mt7622_
+@@ -4726,6 +4727,7 @@ static const struct mtk_soc_data mt7622_
.hw_features = MTK_HW_FEATURES,
.required_clks = MT7622_CLKS_BITMAP,
.required_pctl = false,
@@ -248,7 +248,7 @@ Signed-off-by: Jakub Kicinski
.offload_version = 2,
.hash_offset = 2,
.has_accounting = true,
-@@ -4744,6 +4746,7 @@ static const struct mtk_soc_data mt7623_
+@@ -4746,6 +4748,7 @@ static const struct mtk_soc_data mt7623_
.hw_features = MTK_HW_FEATURES,
.required_clks = MT7623_CLKS_BITMAP,
.required_pctl = true,
@@ -256,7 +256,7 @@ Signed-off-by: Jakub Kicinski
.offload_version = 1,
.hash_offset = 2,
.foe_entry_size = MTK_FOE_ENTRY_V1_SIZE,
-@@ -4766,6 +4769,7 @@ static const struct mtk_soc_data mt7629_
+@@ -4768,6 +4771,7 @@ static const struct mtk_soc_data mt7629_
.required_clks = MT7629_CLKS_BITMAP,
.required_pctl = false,
.has_accounting = true,
@@ -264,7 +264,7 @@ Signed-off-by: Jakub Kicinski
.txrx = {
.txd_size = sizeof(struct mtk_tx_dma),
.rxd_size = sizeof(struct mtk_rx_dma),
-@@ -4783,6 +4787,7 @@ static const struct mtk_soc_data mt7981_
+@@ -4785,6 +4789,7 @@ static const struct mtk_soc_data mt7981_
.hw_features = MTK_HW_FEATURES,
.required_clks = MT7981_CLKS_BITMAP,
.required_pctl = false,
@@ -272,7 +272,7 @@ Signed-off-by: Jakub Kicinski
.offload_version = 2,
.hash_offset = 4,
.has_accounting = true,
-@@ -4804,6 +4809,7 @@ static const struct mtk_soc_data mt7986_
+@@ -4806,6 +4811,7 @@ static const struct mtk_soc_data mt7986_
.hw_features = MTK_HW_FEATURES,
.required_clks = MT7986_CLKS_BITMAP,
.required_pctl = false,
@@ -280,7 +280,7 @@ Signed-off-by: Jakub Kicinski
.offload_version = 2,
.hash_offset = 4,
.has_accounting = true,
-@@ -4824,6 +4830,7 @@ static const struct mtk_soc_data rt5350_
+@@ -4826,6 +4832,7 @@ static const struct mtk_soc_data rt5350_
.hw_features = MTK_HW_FEATURES_MT7628,
.required_clks = MT7628_CLKS_BITMAP,
.required_pctl = false,
@@ -491,7 +491,7 @@ Signed-off-by: Jakub Kicinski
else
val = MTK_FOE_IB2_MIB_CNT;
@@ -965,7 +965,7 @@ void mtk_ppe_start(struct mtk_ppe *ppe)
- MTK_PPE_SCAN_MODE_KEEPALIVE_AGE) |
+ MTK_PPE_SCAN_MODE_CHECK_AGE) |
FIELD_PREP(MTK_PPE_TB_CFG_ENTRY_NUM,
MTK_PPE_ENTRIES_SHIFT);
- if (MTK_HAS_CAPS(ppe->eth->soc->caps, MTK_NETSYS_V2))
diff --git a/lede/target/linux/generic/backport-6.1/750-v6.5-07-net-ethernet-mtk_eth_soc-rely-on-MTK_MAX_DEVS-and-re.patch b/lede/target/linux/generic/backport-6.1/750-v6.5-07-net-ethernet-mtk_eth_soc-rely-on-MTK_MAX_DEVS-and-re.patch
index d7ba0d4a57..8071658313 100644
--- a/lede/target/linux/generic/backport-6.1/750-v6.5-07-net-ethernet-mtk_eth_soc-rely-on-MTK_MAX_DEVS-and-re.patch
+++ b/lede/target/linux/generic/backport-6.1/750-v6.5-07-net-ethernet-mtk_eth_soc-rely-on-MTK_MAX_DEVS-and-re.patch
@@ -17,7 +17,7 @@ Signed-off-by: Jakub Kicinski
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -882,7 +882,7 @@ static void mtk_stats_update(struct mtk_
+@@ -881,7 +881,7 @@ static void mtk_stats_update(struct mtk_
{
int i;
@@ -26,7 +26,7 @@ Signed-off-by: Jakub Kicinski
if (!eth->mac[i] || !eth->mac[i]->hw_stats)
continue;
if (spin_trylock(ð->mac[i]->hw_stats->stats_lock)) {
-@@ -1387,7 +1387,7 @@ static int mtk_queue_stopped(struct mtk_
+@@ -1386,7 +1386,7 @@ static int mtk_queue_stopped(struct mtk_
{
int i;
@@ -35,7 +35,7 @@ Signed-off-by: Jakub Kicinski
if (!eth->netdev[i])
continue;
if (netif_queue_stopped(eth->netdev[i]))
-@@ -1401,7 +1401,7 @@ static void mtk_wake_queue(struct mtk_et
+@@ -1400,7 +1400,7 @@ static void mtk_wake_queue(struct mtk_et
{
int i;
@@ -44,7 +44,7 @@ Signed-off-by: Jakub Kicinski
if (!eth->netdev[i])
continue;
netif_tx_wake_all_queues(eth->netdev[i]);
-@@ -1860,7 +1860,7 @@ static int mtk_poll_rx(struct napi_struc
+@@ -1859,7 +1859,7 @@ static int mtk_poll_rx(struct napi_struc
!(trxd.rxd4 & RX_DMA_SPECIAL_TAG))
mac = RX_DMA_GET_SPORT(trxd.rxd4) - 1;
@@ -53,7 +53,7 @@ Signed-off-by: Jakub Kicinski
!eth->netdev[mac]))
goto release_desc;
-@@ -2897,7 +2897,7 @@ static void mtk_dma_free(struct mtk_eth
+@@ -2899,7 +2899,7 @@ static void mtk_dma_free(struct mtk_eth
const struct mtk_soc_data *soc = eth->soc;
int i;
@@ -62,7 +62,7 @@ Signed-off-by: Jakub Kicinski
if (eth->netdev[i])
netdev_reset_queue(eth->netdev[i]);
if (eth->scratch_ring) {
-@@ -3051,8 +3051,13 @@ static void mtk_gdm_config(struct mtk_et
+@@ -3053,8 +3053,13 @@ static void mtk_gdm_config(struct mtk_et
if (MTK_HAS_CAPS(eth->soc->caps, MTK_SOC_MT7628))
return;
@@ -78,7 +78,7 @@ Signed-off-by: Jakub Kicinski
/* default setup the forward port to send frame to PDMA */
val &= ~0xffff;
-@@ -3062,7 +3067,7 @@ static void mtk_gdm_config(struct mtk_et
+@@ -3064,7 +3069,7 @@ static void mtk_gdm_config(struct mtk_et
val |= config;
@@ -87,7 +87,7 @@ Signed-off-by: Jakub Kicinski
val |= MTK_GDMA_SPECIAL_TAG;
mtk_w32(eth, val, MTK_GDMA_FWD_CFG(i));
-@@ -3659,15 +3664,15 @@ static int mtk_hw_init(struct mtk_eth *e
+@@ -3661,15 +3666,15 @@ static int mtk_hw_init(struct mtk_eth *e
* up with the more appropriate value when mtk_mac_config call is being
* invoked.
*/
@@ -109,7 +109,7 @@ Signed-off-by: Jakub Kicinski
}
/* Indicates CDM to parse the MTK special tag from CPU
-@@ -3847,7 +3852,7 @@ static void mtk_pending_work(struct work
+@@ -3849,7 +3854,7 @@ static void mtk_pending_work(struct work
mtk_prepare_for_reset(eth);
/* stop all devices to make sure that dma is properly shut down */
@@ -118,7 +118,7 @@ Signed-off-by: Jakub Kicinski
if (!eth->netdev[i] || !netif_running(eth->netdev[i]))
continue;
-@@ -3863,8 +3868,8 @@ static void mtk_pending_work(struct work
+@@ -3865,8 +3870,8 @@ static void mtk_pending_work(struct work
mtk_hw_init(eth, true);
/* restart DMA and enable IRQs */
@@ -129,7 +129,7 @@ Signed-off-by: Jakub Kicinski
continue;
if (mtk_open(eth->netdev[i])) {
-@@ -3891,7 +3896,7 @@ static int mtk_free_dev(struct mtk_eth *
+@@ -3893,7 +3898,7 @@ static int mtk_free_dev(struct mtk_eth *
{
int i;
@@ -138,7 +138,7 @@ Signed-off-by: Jakub Kicinski
if (!eth->netdev[i])
continue;
free_netdev(eth->netdev[i]);
-@@ -3910,7 +3915,7 @@ static int mtk_unreg_dev(struct mtk_eth
+@@ -3912,7 +3917,7 @@ static int mtk_unreg_dev(struct mtk_eth
{
int i;
@@ -147,7 +147,7 @@ Signed-off-by: Jakub Kicinski
struct mtk_mac *mac;
if (!eth->netdev[i])
continue;
-@@ -4211,7 +4216,7 @@ static int mtk_add_mac(struct mtk_eth *e
+@@ -4213,7 +4218,7 @@ static int mtk_add_mac(struct mtk_eth *e
}
id = be32_to_cpup(_id);
@@ -156,7 +156,7 @@ Signed-off-by: Jakub Kicinski
dev_err(eth->dev, "%d is not a valid mac id\n", id);
return -EINVAL;
}
-@@ -4356,7 +4361,7 @@ void mtk_eth_set_dma_device(struct mtk_e
+@@ -4358,7 +4363,7 @@ void mtk_eth_set_dma_device(struct mtk_e
rtnl_lock();
@@ -165,7 +165,7 @@ Signed-off-by: Jakub Kicinski
dev = eth->netdev[i];
if (!dev || !(dev->flags & IFF_UP))
-@@ -4662,7 +4667,7 @@ static int mtk_remove(struct platform_de
+@@ -4664,7 +4669,7 @@ static int mtk_remove(struct platform_de
int i;
/* stop all devices to make sure that dma is properly shut down */
diff --git a/lede/target/linux/generic/backport-6.1/750-v6.5-08-net-ethernet-mtk_eth_soc-add-NETSYS_V3-version-suppo.patch b/lede/target/linux/generic/backport-6.1/750-v6.5-08-net-ethernet-mtk_eth_soc-add-NETSYS_V3-version-suppo.patch
index f06fcce618..1a9b31f526 100644
--- a/lede/target/linux/generic/backport-6.1/750-v6.5-08-net-ethernet-mtk_eth_soc-add-NETSYS_V3-version-suppo.patch
+++ b/lede/target/linux/generic/backport-6.1/750-v6.5-08-net-ethernet-mtk_eth_soc-add-NETSYS_V3-version-suppo.patch
@@ -18,7 +18,7 @@ Signed-off-by: Jakub Kicinski
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -862,17 +862,32 @@ void mtk_stats_update_mac(struct mtk_mac
+@@ -861,17 +861,32 @@ void mtk_stats_update_mac(struct mtk_mac
mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x20 + offs);
hw_stats->rx_flow_control_packets +=
mtk_r32(mac->hw, reg_map->gdm1_cnt + 0x24 + offs);
@@ -62,7 +62,7 @@ Signed-off-by: Jakub Kicinski
}
u64_stats_update_end(&hw_stats->syncp);
-@@ -1176,7 +1191,10 @@ static void mtk_tx_set_dma_desc_v2(struc
+@@ -1175,7 +1190,10 @@ static void mtk_tx_set_dma_desc_v2(struc
data |= TX_DMA_LS0;
WRITE_ONCE(desc->txd3, data);
@@ -74,7 +74,7 @@ Signed-off-by: Jakub Kicinski
data |= TX_DMA_SWC_V2 | QID_BITS_V2(info->qid);
WRITE_ONCE(desc->txd4, data);
-@@ -1187,6 +1205,8 @@ static void mtk_tx_set_dma_desc_v2(struc
+@@ -1186,6 +1204,8 @@ static void mtk_tx_set_dma_desc_v2(struc
/* tx checksum offload */
if (info->csum)
data |= TX_DMA_CHKSUM_V2;
@@ -83,7 +83,7 @@ Signed-off-by: Jakub Kicinski
}
WRITE_ONCE(desc->txd5, data);
-@@ -1252,8 +1272,7 @@ static int mtk_tx_map(struct sk_buff *sk
+@@ -1251,8 +1271,7 @@ static int mtk_tx_map(struct sk_buff *sk
mtk_tx_set_dma_desc(dev, itxd, &txd_info);
itx_buf->flags |= MTK_TX_FLAGS_SINGLE0;
@@ -93,7 +93,7 @@ Signed-off-by: Jakub Kicinski
setup_tx_buf(eth, itx_buf, itxd_pdma, txd_info.addr, txd_info.size,
k++);
-@@ -1301,8 +1320,7 @@ static int mtk_tx_map(struct sk_buff *sk
+@@ -1300,8 +1319,7 @@ static int mtk_tx_map(struct sk_buff *sk
memset(tx_buf, 0, sizeof(*tx_buf));
tx_buf->data = (void *)MTK_DMA_DUMMY_DESC;
tx_buf->flags |= MTK_TX_FLAGS_PAGE0;
@@ -103,7 +103,7 @@ Signed-off-by: Jakub Kicinski
setup_tx_buf(eth, tx_buf, txd_pdma, txd_info.addr,
txd_info.size, k++);
-@@ -1604,7 +1622,7 @@ static int mtk_xdp_frame_map(struct mtk_
+@@ -1603,7 +1621,7 @@ static int mtk_xdp_frame_map(struct mtk_
}
mtk_tx_set_dma_desc(dev, txd, txd_info);
@@ -112,7 +112,7 @@ Signed-off-by: Jakub Kicinski
tx_buf->type = dma_map ? MTK_TYPE_XDP_NDO : MTK_TYPE_XDP_TX;
tx_buf->data = (void *)MTK_DMA_DUMMY_DESC;
-@@ -1854,11 +1872,24 @@ static int mtk_poll_rx(struct napi_struc
+@@ -1853,11 +1871,24 @@ static int mtk_poll_rx(struct napi_struc
break;
/* find out which mac the packet come from. values start at 1 */
@@ -141,7 +141,7 @@ Signed-off-by: Jakub Kicinski
if (unlikely(mac < 0 || mac >= MTK_MAX_DEVS ||
!eth->netdev[mac]))
-@@ -2080,7 +2111,6 @@ static int mtk_poll_tx_qdma(struct mtk_e
+@@ -2079,7 +2110,6 @@ static int mtk_poll_tx_qdma(struct mtk_e
while ((cpu != dma) && budget) {
u32 next_cpu = desc->txd2;
@@ -149,7 +149,7 @@ Signed-off-by: Jakub Kicinski
desc = mtk_qdma_phys_to_virt(ring, desc->txd2);
if ((desc->txd3 & TX_DMA_OWNER_CPU) == 0)
-@@ -2088,15 +2118,13 @@ static int mtk_poll_tx_qdma(struct mtk_e
+@@ -2087,15 +2117,13 @@ static int mtk_poll_tx_qdma(struct mtk_e
tx_buf = mtk_desc_to_tx_buf(ring, desc,
eth->soc->txrx.txd_size);
@@ -167,7 +167,7 @@ Signed-off-by: Jakub Kicinski
budget--;
}
-@@ -3702,7 +3730,24 @@ static int mtk_hw_init(struct mtk_eth *e
+@@ -3704,7 +3732,24 @@ static int mtk_hw_init(struct mtk_eth *e
mtk_w32(eth, eth->soc->txrx.rx_irq_done_mask, reg_map->qdma.int_grp + 4);
mtk_w32(eth, 0x21021000, MTK_FE_INT_GRP);
@@ -193,7 +193,7 @@ Signed-off-by: Jakub Kicinski
/* PSE should not drop port8 and port9 packets from WDMA Tx */
mtk_w32(eth, 0x00000300, PSE_DROP_CFG);
-@@ -4264,7 +4309,11 @@ static int mtk_add_mac(struct mtk_eth *e
+@@ -4266,7 +4311,11 @@ static int mtk_add_mac(struct mtk_eth *e
}
spin_lock_init(&mac->hw_stats->stats_lock);
u64_stats_init(&mac->hw_stats->syncp);
diff --git a/lede/target/linux/generic/backport-6.1/750-v6.5-11-net-ethernet-mtk_eth_soc-add-basic-support-for-MT798.patch b/lede/target/linux/generic/backport-6.1/750-v6.5-11-net-ethernet-mtk_eth_soc-add-basic-support-for-MT798.patch
index a7195236c3..8c24321dd4 100644
--- a/lede/target/linux/generic/backport-6.1/750-v6.5-11-net-ethernet-mtk_eth_soc-add-basic-support-for-MT798.patch
+++ b/lede/target/linux/generic/backport-6.1/750-v6.5-11-net-ethernet-mtk_eth_soc-add-basic-support-for-MT798.patch
@@ -219,7 +219,7 @@ Signed-off-by: Jakub Kicinski
return;
err_phy:
-@@ -726,11 +842,15 @@ static int mtk_mdio_init(struct mtk_eth
+@@ -725,11 +841,15 @@ static int mtk_mdio_init(struct mtk_eth
}
divider = min_t(unsigned int, DIV_ROUND_UP(MDC_MAX_FREQ, max_clk), 63);
@@ -239,7 +239,7 @@ Signed-off-by: Jakub Kicinski
dev_dbg(eth->dev, "MDC is running on %d Hz\n", MDC_MAX_FREQ / divider);
-@@ -1191,10 +1311,19 @@ static void mtk_tx_set_dma_desc_v2(struc
+@@ -1190,10 +1310,19 @@ static void mtk_tx_set_dma_desc_v2(struc
data |= TX_DMA_LS0;
WRITE_ONCE(desc->txd3, data);
@@ -263,7 +263,7 @@ Signed-off-by: Jakub Kicinski
data |= TX_DMA_SWC_V2 | QID_BITS_V2(info->qid);
WRITE_ONCE(desc->txd4, data);
-@@ -4358,6 +4487,17 @@ static int mtk_add_mac(struct mtk_eth *e
+@@ -4360,6 +4489,17 @@ static int mtk_add_mac(struct mtk_eth *e
mac->phylink_config.supported_interfaces);
}
@@ -281,7 +281,7 @@ Signed-off-by: Jakub Kicinski
phylink = phylink_create(&mac->phylink_config,
of_fwnode_handle(mac->of_node),
phy_mode, &mtk_phylink_ops);
-@@ -4878,6 +5018,24 @@ static const struct mtk_soc_data mt7986_
+@@ -4880,6 +5020,24 @@ static const struct mtk_soc_data mt7986_
},
};
@@ -306,7 +306,7 @@ Signed-off-by: Jakub Kicinski
static const struct mtk_soc_data rt5350_data = {
.reg_map = &mt7628_reg_map,
.caps = MT7628_CAPS,
-@@ -4896,14 +5054,15 @@ static const struct mtk_soc_data rt5350_
+@@ -4898,14 +5056,15 @@ static const struct mtk_soc_data rt5350_
};
const struct of_device_id of_mtk_match[] = {
diff --git a/lede/target/linux/generic/backport-6.1/750-v6.5-12-net-ethernet-mtk_eth_soc-enable-page_pool-support-fo.patch b/lede/target/linux/generic/backport-6.1/750-v6.5-12-net-ethernet-mtk_eth_soc-enable-page_pool-support-fo.patch
index 62c38c7137..3dc4662d1a 100644
--- a/lede/target/linux/generic/backport-6.1/750-v6.5-12-net-ethernet-mtk_eth_soc-enable-page_pool-support-fo.patch
+++ b/lede/target/linux/generic/backport-6.1/750-v6.5-12-net-ethernet-mtk_eth_soc-enable-page_pool-support-fo.patch
@@ -16,7 +16,7 @@ Signed-off-by: Jakub Kicinski
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -1659,7 +1659,7 @@ static void mtk_update_rx_cpu_idx(struct
+@@ -1658,7 +1658,7 @@ static void mtk_update_rx_cpu_idx(struct
static bool mtk_page_pool_enabled(struct mtk_eth *eth)
{
diff --git a/lede/target/linux/generic/backport-6.1/750-v6.5-13-net-ethernet-mtk_eth_soc-enable-nft-hw-flowtable_off.patch b/lede/target/linux/generic/backport-6.1/750-v6.5-13-net-ethernet-mtk_eth_soc-enable-nft-hw-flowtable_off.patch
index 49f4bd6a9d..32f26d7d27 100644
--- a/lede/target/linux/generic/backport-6.1/750-v6.5-13-net-ethernet-mtk_eth_soc-enable-nft-hw-flowtable_off.patch
+++ b/lede/target/linux/generic/backport-6.1/750-v6.5-13-net-ethernet-mtk_eth_soc-enable-nft-hw-flowtable_off.patch
@@ -18,7 +18,7 @@ Signed-off-by: Jakub Kicinski
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -5026,6 +5026,9 @@ static const struct mtk_soc_data mt7988_
+@@ -5028,6 +5028,9 @@ static const struct mtk_soc_data mt7988_
.required_clks = MT7988_CLKS_BITMAP,
.required_pctl = false,
.version = 3,
diff --git a/lede/target/linux/generic/backport-6.1/750-v6.5-14-net-ethernet-mtk_eth_soc-support-per-flow-accounting.patch b/lede/target/linux/generic/backport-6.1/750-v6.5-14-net-ethernet-mtk_eth_soc-support-per-flow-accounting.patch
index 88987d7bc9..876bdd5dd3 100644
--- a/lede/target/linux/generic/backport-6.1/750-v6.5-14-net-ethernet-mtk_eth_soc-support-per-flow-accounting.patch
+++ b/lede/target/linux/generic/backport-6.1/750-v6.5-14-net-ethernet-mtk_eth_soc-support-per-flow-accounting.patch
@@ -20,7 +20,7 @@ Signed-off-by: Paolo Abeni
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -5028,6 +5028,7 @@ static const struct mtk_soc_data mt7988_
+@@ -5030,6 +5030,7 @@ static const struct mtk_soc_data mt7988_
.version = 3,
.offload_version = 2,
.hash_offset = 4,
diff --git a/lede/target/linux/generic/backport-6.1/750-v6.5-17-net-ethernet-mtk_eth_soc-add-reset-bits-for-MT7988.patch b/lede/target/linux/generic/backport-6.1/750-v6.5-17-net-ethernet-mtk_eth_soc-add-reset-bits-for-MT7988.patch
index b94ca7ebc5..05a18364d6 100644
--- a/lede/target/linux/generic/backport-6.1/750-v6.5-17-net-ethernet-mtk_eth_soc-add-reset-bits-for-MT7988.patch
+++ b/lede/target/linux/generic/backport-6.1/750-v6.5-17-net-ethernet-mtk_eth_soc-add-reset-bits-for-MT7988.patch
@@ -16,7 +16,7 @@ Signed-off-by: Jakub Kicinski
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -3592,19 +3592,34 @@ static void mtk_hw_reset(struct mtk_eth
+@@ -3594,19 +3594,34 @@ static void mtk_hw_reset(struct mtk_eth
{
u32 val;
@@ -56,7 +56,7 @@ Signed-off-by: Jakub Kicinski
regmap_write(eth->ethsys, ETHSYS_FE_RST_CHK_IDLE_EN,
0x3ffffff);
}
-@@ -3630,13 +3645,21 @@ static void mtk_hw_warm_reset(struct mtk
+@@ -3632,13 +3647,21 @@ static void mtk_hw_warm_reset(struct mtk
return;
}
@@ -83,7 +83,7 @@ Signed-off-by: Jakub Kicinski
regmap_update_bits(eth->ethsys, ETHSYS_RSTCTRL, rst_mask, rst_mask);
-@@ -3988,11 +4011,17 @@ static void mtk_prepare_for_reset(struct
+@@ -3990,11 +4013,17 @@ static void mtk_prepare_for_reset(struct
u32 val;
int i;
@@ -106,7 +106,7 @@ Signed-off-by: Jakub Kicinski
/* adjust PPE configurations to prepare for reset */
for (i = 0; i < ARRAY_SIZE(eth->ppe); i++)
-@@ -4053,11 +4082,18 @@ static void mtk_pending_work(struct work
+@@ -4055,11 +4084,18 @@ static void mtk_pending_work(struct work
}
}
diff --git a/lede/target/linux/generic/backport-6.1/750-v6.5-18-net-ethernet-mtk_eth_soc-add-support-for-in-SoC-SRAM.patch b/lede/target/linux/generic/backport-6.1/750-v6.5-18-net-ethernet-mtk_eth_soc-add-support-for-in-SoC-SRAM.patch
index 43fbffc51b..74ac8dc898 100644
--- a/lede/target/linux/generic/backport-6.1/750-v6.5-18-net-ethernet-mtk_eth_soc-add-support-for-in-SoC-SRAM.patch
+++ b/lede/target/linux/generic/backport-6.1/750-v6.5-18-net-ethernet-mtk_eth_soc-add-support-for-in-SoC-SRAM.patch
@@ -20,7 +20,7 @@ Signed-off-by: Jakub Kicinski
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -1119,10 +1119,13 @@ static int mtk_init_fq_dma(struct mtk_et
+@@ -1118,10 +1118,13 @@ static int mtk_init_fq_dma(struct mtk_et
dma_addr_t dma_addr;
int i;
@@ -38,7 +38,7 @@ Signed-off-by: Jakub Kicinski
if (unlikely(!eth->scratch_ring))
return -ENOMEM;
-@@ -2430,8 +2433,14 @@ static int mtk_tx_alloc(struct mtk_eth *
+@@ -2429,8 +2432,14 @@ static int mtk_tx_alloc(struct mtk_eth *
if (!ring->buf)
goto no_tx_mem;
@@ -55,7 +55,7 @@ Signed-off-by: Jakub Kicinski
if (!ring->dma)
goto no_tx_mem;
-@@ -2530,8 +2539,7 @@ static void mtk_tx_clean(struct mtk_eth
+@@ -2529,8 +2538,7 @@ static void mtk_tx_clean(struct mtk_eth
kfree(ring->buf);
ring->buf = NULL;
}
@@ -65,7 +65,7 @@ Signed-off-by: Jakub Kicinski
dma_free_coherent(eth->dma_dev,
ring->dma_size * soc->txrx.txd_size,
ring->dma, ring->phys);
-@@ -2550,9 +2558,14 @@ static int mtk_rx_alloc(struct mtk_eth *
+@@ -2549,9 +2557,14 @@ static int mtk_rx_alloc(struct mtk_eth *
{
const struct mtk_reg_map *reg_map = eth->soc->reg_map;
struct mtk_rx_ring *ring;
@@ -81,7 +81,7 @@ Signed-off-by: Jakub Kicinski
if (rx_flag == MTK_RX_FLAGS_QDMA) {
if (ring_no)
return -EINVAL;
-@@ -2587,9 +2600,20 @@ static int mtk_rx_alloc(struct mtk_eth *
+@@ -2586,9 +2599,20 @@ static int mtk_rx_alloc(struct mtk_eth *
ring->page_pool = pp;
}
@@ -105,7 +105,7 @@ Signed-off-by: Jakub Kicinski
if (!ring->dma)
return -ENOMEM;
-@@ -2674,7 +2698,7 @@ static int mtk_rx_alloc(struct mtk_eth *
+@@ -2673,7 +2697,7 @@ static int mtk_rx_alloc(struct mtk_eth *
return 0;
}
@@ -114,7 +114,7 @@ Signed-off-by: Jakub Kicinski
{
int i;
-@@ -2697,7 +2721,7 @@ static void mtk_rx_clean(struct mtk_eth
+@@ -2696,7 +2720,7 @@ static void mtk_rx_clean(struct mtk_eth
ring->data = NULL;
}
@@ -123,7 +123,7 @@ Signed-off-by: Jakub Kicinski
dma_free_coherent(eth->dma_dev,
ring->dma_size * eth->soc->txrx.rxd_size,
ring->dma, ring->phys);
-@@ -3057,7 +3081,7 @@ static void mtk_dma_free(struct mtk_eth
+@@ -3059,7 +3083,7 @@ static void mtk_dma_free(struct mtk_eth
for (i = 0; i < MTK_MAX_DEVS; i++)
if (eth->netdev[i])
netdev_reset_queue(eth->netdev[i]);
@@ -132,7 +132,7 @@ Signed-off-by: Jakub Kicinski
dma_free_coherent(eth->dma_dev,
MTK_QDMA_RING_SIZE * soc->txrx.txd_size,
eth->scratch_ring, eth->phy_scratch_ring);
-@@ -3065,13 +3089,13 @@ static void mtk_dma_free(struct mtk_eth
+@@ -3067,13 +3091,13 @@ static void mtk_dma_free(struct mtk_eth
eth->phy_scratch_ring = 0;
}
mtk_tx_clean(eth);
@@ -149,7 +149,7 @@ Signed-off-by: Jakub Kicinski
}
kfree(eth->scratch_head);
-@@ -4639,7 +4663,7 @@ static int mtk_sgmii_init(struct mtk_eth
+@@ -4641,7 +4665,7 @@ static int mtk_sgmii_init(struct mtk_eth
static int mtk_probe(struct platform_device *pdev)
{
@@ -158,7 +158,7 @@ Signed-off-by: Jakub Kicinski
struct device_node *mac_np;
struct mtk_eth *eth;
int err, i;
-@@ -4659,6 +4683,20 @@ static int mtk_probe(struct platform_dev
+@@ -4661,6 +4685,20 @@ static int mtk_probe(struct platform_dev
if (MTK_HAS_CAPS(eth->soc->caps, MTK_SOC_MT7628))
eth->ip_align = NET_IP_ALIGN;
@@ -179,7 +179,7 @@ Signed-off-by: Jakub Kicinski
spin_lock_init(ð->page_lock);
spin_lock_init(ð->tx_irq_lock);
spin_lock_init(ð->rx_irq_lock);
-@@ -4722,6 +4760,18 @@ static int mtk_probe(struct platform_dev
+@@ -4724,6 +4762,18 @@ static int mtk_probe(struct platform_dev
err = -EINVAL;
goto err_destroy_sgmii;
}
diff --git a/lede/target/linux/generic/backport-6.1/750-v6.5-19-net-ethernet-mtk_eth_soc-support-36-bit-DMA-addressi.patch b/lede/target/linux/generic/backport-6.1/750-v6.5-19-net-ethernet-mtk_eth_soc-support-36-bit-DMA-addressi.patch
index 3933997003..1584dfd07c 100644
--- a/lede/target/linux/generic/backport-6.1/750-v6.5-19-net-ethernet-mtk_eth_soc-support-36-bit-DMA-addressi.patch
+++ b/lede/target/linux/generic/backport-6.1/750-v6.5-19-net-ethernet-mtk_eth_soc-support-36-bit-DMA-addressi.patch
@@ -19,7 +19,7 @@ Signed-off-by: Jakub Kicinski
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -1312,6 +1312,10 @@ static void mtk_tx_set_dma_desc_v2(struc
+@@ -1311,6 +1311,10 @@ static void mtk_tx_set_dma_desc_v2(struc
data = TX_DMA_PLEN0(info->size);
if (info->last)
data |= TX_DMA_LS0;
@@ -30,7 +30,7 @@ Signed-off-by: Jakub Kicinski
WRITE_ONCE(desc->txd3, data);
/* set forward port */
-@@ -1981,6 +1985,7 @@ static int mtk_poll_rx(struct napi_struc
+@@ -1980,6 +1984,7 @@ static int mtk_poll_rx(struct napi_struc
bool xdp_flush = false;
int idx;
struct sk_buff *skb;
@@ -38,7 +38,7 @@ Signed-off-by: Jakub Kicinski
u8 *data, *new_data;
struct mtk_rx_dma_v2 *rxd, trxd;
int done = 0, bytes = 0;
-@@ -2096,7 +2101,10 @@ static int mtk_poll_rx(struct napi_struc
+@@ -2095,7 +2100,10 @@ static int mtk_poll_rx(struct napi_struc
goto release_desc;
}
@@ -50,7 +50,7 @@ Signed-off-by: Jakub Kicinski
ring->buf_size, DMA_FROM_DEVICE);
skb = build_skb(data, ring->frag_size);
-@@ -2162,6 +2170,9 @@ release_desc:
+@@ -2161,6 +2169,9 @@ release_desc:
else
rxd->rxd2 = RX_DMA_PREP_PLEN0(ring->buf_size);
@@ -60,7 +60,7 @@ Signed-off-by: Jakub Kicinski
ring->calc_idx = idx;
done++;
}
-@@ -2654,6 +2665,9 @@ static int mtk_rx_alloc(struct mtk_eth *
+@@ -2653,6 +2664,9 @@ static int mtk_rx_alloc(struct mtk_eth *
else
rxd->rxd2 = RX_DMA_PREP_PLEN0(ring->buf_size);
@@ -70,7 +70,7 @@ Signed-off-by: Jakub Kicinski
rxd->rxd3 = 0;
rxd->rxd4 = 0;
if (mtk_is_netsys_v2_or_greater(eth)) {
-@@ -2700,6 +2714,7 @@ static int mtk_rx_alloc(struct mtk_eth *
+@@ -2699,6 +2713,7 @@ static int mtk_rx_alloc(struct mtk_eth *
static void mtk_rx_clean(struct mtk_eth *eth, struct mtk_rx_ring *ring, bool in_sram)
{
@@ -78,7 +78,7 @@ Signed-off-by: Jakub Kicinski
int i;
if (ring->data && ring->dma) {
-@@ -2713,7 +2728,10 @@ static void mtk_rx_clean(struct mtk_eth
+@@ -2712,7 +2727,10 @@ static void mtk_rx_clean(struct mtk_eth
if (!rxd->rxd1)
continue;
@@ -90,7 +90,7 @@ Signed-off-by: Jakub Kicinski
ring->buf_size, DMA_FROM_DEVICE);
mtk_rx_put_buff(ring, ring->data[i], false);
}
-@@ -4697,6 +4715,14 @@ static int mtk_probe(struct platform_dev
+@@ -4699,6 +4717,14 @@ static int mtk_probe(struct platform_dev
}
}
diff --git a/lede/target/linux/generic/backport-6.1/792-v6.6-net-phylink-add-pcs_enable-pcs_disable-methods.patch b/lede/target/linux/generic/backport-6.1/792-v6.6-net-phylink-add-pcs_enable-pcs_disable-methods.patch
index 6ade45ee3e..eac8966a48 100644
--- a/lede/target/linux/generic/backport-6.1/792-v6.6-net-phylink-add-pcs_enable-pcs_disable-methods.patch
+++ b/lede/target/linux/generic/backport-6.1/792-v6.6-net-phylink-add-pcs_enable-pcs_disable-methods.patch
@@ -76,7 +76,7 @@ Signed-off-by: David S. Miller
if (pl->pcs) {
err = pl->pcs->ops->pcs_config(pl->pcs, pl->cur_link_an_mode,
state->interface,
-@@ -1498,6 +1524,7 @@ struct phylink *phylink_create(struct ph
+@@ -1499,6 +1525,7 @@ struct phylink *phylink_create(struct ph
pl->link_config.speed = SPEED_UNKNOWN;
pl->link_config.duplex = DUPLEX_UNKNOWN;
pl->link_config.an_enabled = true;
@@ -84,7 +84,7 @@ Signed-off-by: David S. Miller
pl->mac_ops = mac_ops;
__set_bit(PHYLINK_DISABLE_STOPPED, &pl->phylink_disable_state);
timer_setup(&pl->link_poll, phylink_fixed_poll, 0);
-@@ -1899,6 +1926,8 @@ void phylink_start(struct phylink *pl)
+@@ -1900,6 +1927,8 @@ void phylink_start(struct phylink *pl)
if (pl->netdev)
netif_carrier_off(pl->netdev);
@@ -93,7 +93,7 @@ Signed-off-by: David S. Miller
/* Apply the link configuration to the MAC when starting. This allows
* a fixed-link to start with the correct parameters, and also
* ensures that we set the appropriate advertisement for Serdes links.
-@@ -1909,6 +1938,8 @@ void phylink_start(struct phylink *pl)
+@@ -1910,6 +1939,8 @@ void phylink_start(struct phylink *pl)
*/
phylink_mac_initial_config(pl, true);
@@ -102,7 +102,7 @@ Signed-off-by: David S. Miller
phylink_enable_and_run_resolve(pl, PHYLINK_DISABLE_STOPPED);
if (pl->cfg_link_an_mode == MLO_AN_FIXED && pl->link_gpio) {
-@@ -1927,15 +1958,9 @@ void phylink_start(struct phylink *pl)
+@@ -1928,15 +1959,9 @@ void phylink_start(struct phylink *pl)
poll = true;
}
@@ -120,7 +120,7 @@ Signed-off-by: David S. Miller
if (poll)
mod_timer(&pl->link_poll, jiffies + HZ);
if (pl->phydev)
-@@ -1972,6 +1997,10 @@ void phylink_stop(struct phylink *pl)
+@@ -1973,6 +1998,10 @@ void phylink_stop(struct phylink *pl)
}
phylink_run_resolve_and_disable(pl, PHYLINK_DISABLE_STOPPED);
diff --git a/lede/target/linux/generic/backport-6.1/801-v6.4-01-net-dsa-qca8k-move-qca8k_port_to_phy-to-header.patch b/lede/target/linux/generic/backport-6.1/801-v6.4-01-net-dsa-qca8k-move-qca8k_port_to_phy-to-header.patch
index e336fb81ba..07becafbeb 100644
--- a/lede/target/linux/generic/backport-6.1/801-v6.4-01-net-dsa-qca8k-move-qca8k_port_to_phy-to-header.patch
+++ b/lede/target/linux/generic/backport-6.1/801-v6.4-01-net-dsa-qca8k-move-qca8k_port_to_phy-to-header.patch
@@ -20,7 +20,7 @@ Signed-off-by: David S. Miller
--- a/drivers/net/dsa/qca/qca8k-8xxx.c
+++ b/drivers/net/dsa/qca/qca8k-8xxx.c
-@@ -716,21 +716,6 @@ err_clear_skb:
+@@ -730,21 +730,6 @@ err_clear_skb:
return ret;
}
diff --git a/lede/target/linux/generic/backport-6.1/801-v6.4-02-net-dsa-qca8k-add-LEDs-basic-support.patch b/lede/target/linux/generic/backport-6.1/801-v6.4-02-net-dsa-qca8k-add-LEDs-basic-support.patch
index 37922580da..414ba97e9c 100644
--- a/lede/target/linux/generic/backport-6.1/801-v6.4-02-net-dsa-qca8k-add-LEDs-basic-support.patch
+++ b/lede/target/linux/generic/backport-6.1/801-v6.4-02-net-dsa-qca8k-add-LEDs-basic-support.patch
@@ -71,7 +71,7 @@ Signed-off-by: David S. Miller
static void
qca8k_split_addr(u32 regaddr, u16 *r1, u16 *r2, u16 *page)
-@@ -1726,6 +1727,10 @@ qca8k_setup(struct dsa_switch *ds)
+@@ -1751,6 +1752,10 @@ qca8k_setup(struct dsa_switch *ds)
if (ret)
return ret;
diff --git a/lede/target/linux/generic/backport-6.1/801-v6.4-05-net-phy-Add-a-binding-for-PHY-LEDs.patch b/lede/target/linux/generic/backport-6.1/801-v6.4-05-net-phy-Add-a-binding-for-PHY-LEDs.patch
index 8df0ed1f7f..a3184513ee 100644
--- a/lede/target/linux/generic/backport-6.1/801-v6.4-05-net-phy-Add-a-binding-for-PHY-LEDs.patch
+++ b/lede/target/linux/generic/backport-6.1/801-v6.4-05-net-phy-Add-a-binding-for-PHY-LEDs.patch
@@ -131,7 +131,7 @@ Signed-off-by: David S. Miller
/**
* fwnode_mdio_find_device - Given a fwnode, find the mdio_device
* @fwnode: pointer to the mdio_device's fwnode
-@@ -3107,6 +3178,11 @@ static int phy_probe(struct device *dev)
+@@ -3109,6 +3180,11 @@ static int phy_probe(struct device *dev)
/* Set the state to READY by default */
phydev->state = PHY_READY;
diff --git a/lede/target/linux/generic/backport-6.1/820-v6.4-net-phy-fix-circular-LEDS_CLASS-dependencies.patch b/lede/target/linux/generic/backport-6.1/820-v6.4-net-phy-fix-circular-LEDS_CLASS-dependencies.patch
index 09a84201b5..1de086417b 100644
--- a/lede/target/linux/generic/backport-6.1/820-v6.4-net-phy-fix-circular-LEDS_CLASS-dependencies.patch
+++ b/lede/target/linux/generic/backport-6.1/820-v6.4-net-phy-fix-circular-LEDS_CLASS-dependencies.patch
@@ -53,7 +53,7 @@ Signed-off-by: Jakub Kicinski
tristate "MDIO Bus/PHY emulation with fixed speed/link PHYs"
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
-@@ -3208,7 +3208,8 @@ static int phy_probe(struct device *dev)
+@@ -3210,7 +3210,8 @@ static int phy_probe(struct device *dev)
/* Get the LEDs from the device tree, and instantiate standard
* LEDs for them.
*/
diff --git a/lede/target/linux/generic/backport-6.1/822-v6.4-net-phy-Manual-remove-LEDs-to-ensure-correct-orderin.patch b/lede/target/linux/generic/backport-6.1/822-v6.4-net-phy-Manual-remove-LEDs-to-ensure-correct-orderin.patch
index 04939deb6e..8f076be640 100644
--- a/lede/target/linux/generic/backport-6.1/822-v6.4-net-phy-Manual-remove-LEDs-to-ensure-correct-orderin.patch
+++ b/lede/target/linux/generic/backport-6.1/822-v6.4-net-phy-Manual-remove-LEDs-to-ensure-correct-orderin.patch
@@ -55,7 +55,7 @@ Signed-off-by: David S. Miller
return err;
}
}
-@@ -3229,6 +3239,9 @@ static int phy_remove(struct device *dev
+@@ -3231,6 +3241,9 @@ static int phy_remove(struct device *dev
cancel_delayed_work_sync(&phydev->state_queue);
diff --git a/lede/target/linux/generic/backport-6.1/828-v6.4-0003-of-Rename-of_modalias_node.patch b/lede/target/linux/generic/backport-6.1/828-v6.4-0003-of-Rename-of_modalias_node.patch
index 671556fbaa..c11ccc6c3e 100644
--- a/lede/target/linux/generic/backport-6.1/828-v6.4-0003-of-Rename-of_modalias_node.patch
+++ b/lede/target/linux/generic/backport-6.1/828-v6.4-0003-of-Rename-of_modalias_node.patch
@@ -148,7 +148,7 @@ Signed-off-by: Greg Kroah-Hartman
* of_find_node_by_phandle - Find a node given a phandle
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
-@@ -2330,8 +2330,8 @@ of_register_spi_device(struct spi_contro
+@@ -2334,8 +2334,8 @@ of_register_spi_device(struct spi_contro
}
/* Select device driver */
diff --git a/lede/target/linux/generic/hack-5.10/902-debloat_proc.patch b/lede/target/linux/generic/hack-5.10/902-debloat_proc.patch
index 6dc608f2f7..d5440e4191 100644
--- a/lede/target/linux/generic/hack-5.10/902-debloat_proc.patch
+++ b/lede/target/linux/generic/hack-5.10/902-debloat_proc.patch
@@ -396,7 +396,7 @@ Signed-off-by: Felix Fietkau
}
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
-@@ -410,6 +410,9 @@ static struct pernet_operations ip_rt_pr
+@@ -411,6 +411,9 @@ static struct pernet_operations ip_rt_pr
static int __init ip_rt_proc_init(void)
{
diff --git a/lede/target/linux/generic/hack-5.4/902-debloat_proc.patch b/lede/target/linux/generic/hack-5.4/902-debloat_proc.patch
index c980dfe411..8cbedc629c 100644
--- a/lede/target/linux/generic/hack-5.4/902-debloat_proc.patch
+++ b/lede/target/linux/generic/hack-5.4/902-debloat_proc.patch
@@ -396,7 +396,7 @@ Signed-off-by: Felix Fietkau
}
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
-@@ -410,6 +410,9 @@ static struct pernet_operations ip_rt_pr
+@@ -411,6 +411,9 @@ static struct pernet_operations ip_rt_pr
static int __init ip_rt_proc_init(void)
{
diff --git a/lede/target/linux/generic/hack-6.1/402-mtd-blktrans-call-add-disks-after-mtd-device.patch b/lede/target/linux/generic/hack-6.1/402-mtd-blktrans-call-add-disks-after-mtd-device.patch
index c0fa2ddabf..7b8ae7680a 100644
--- a/lede/target/linux/generic/hack-6.1/402-mtd-blktrans-call-add-disks-after-mtd-device.patch
+++ b/lede/target/linux/generic/hack-6.1/402-mtd-blktrans-call-add-disks-after-mtd-device.patch
@@ -91,7 +91,7 @@ Signed-off-by: Daniel Golle
#include "mtdcore.h"
-@@ -1074,6 +1075,8 @@ int mtd_device_parse_register(struct mtd
+@@ -1076,6 +1077,8 @@ int mtd_device_parse_register(struct mtd
register_reboot_notifier(&mtd->reboot_notifier);
}
diff --git a/lede/target/linux/generic/hack-6.1/410-block-fit-partition-parser.patch b/lede/target/linux/generic/hack-6.1/410-block-fit-partition-parser.patch
index 3e45646fdb..0bd82e0704 100644
--- a/lede/target/linux/generic/hack-6.1/410-block-fit-partition-parser.patch
+++ b/lede/target/linux/generic/hack-6.1/410-block-fit-partition-parser.patch
@@ -19,7 +19,7 @@ Subject: [PATCH] kernel: add block fit partition parser
--- a/block/blk.h
+++ b/block/blk.h
-@@ -414,6 +414,8 @@ void blk_free_ext_minor(unsigned int min
+@@ -415,6 +415,8 @@ void blk_free_ext_minor(unsigned int min
#define ADDPART_FLAG_NONE 0
#define ADDPART_FLAG_RAID 1
#define ADDPART_FLAG_WHOLEDISK 2
diff --git a/lede/target/linux/generic/hack-6.1/600-bridge_offload.patch b/lede/target/linux/generic/hack-6.1/600-bridge_offload.patch
index e6b8879e19..bb6237c49a 100644
--- a/lede/target/linux/generic/hack-6.1/600-bridge_offload.patch
+++ b/lede/target/linux/generic/hack-6.1/600-bridge_offload.patch
@@ -84,7 +84,7 @@ Subject: [PATCH] net/bridge: add bridge offload
--- a/net/bridge/br_device.c
+++ b/net/bridge/br_device.c
-@@ -525,6 +525,8 @@ void br_dev_setup(struct net_device *dev
+@@ -531,6 +531,8 @@ void br_dev_setup(struct net_device *dev
br->bridge_hello_time = br->hello_time = 2 * HZ;
br->bridge_forward_delay = br->forward_delay = 15 * HZ;
br->bridge_ageing_time = br->ageing_time = BR_DEFAULT_AGEING_TIME;
diff --git a/lede/target/linux/generic/hack-6.1/711-net-dsa-mv88e6xxx-disable-ATU-violation.patch b/lede/target/linux/generic/hack-6.1/711-net-dsa-mv88e6xxx-disable-ATU-violation.patch
index 08943b7471..696009d396 100644
--- a/lede/target/linux/generic/hack-6.1/711-net-dsa-mv88e6xxx-disable-ATU-violation.patch
+++ b/lede/target/linux/generic/hack-6.1/711-net-dsa-mv88e6xxx-disable-ATU-violation.patch
@@ -9,7 +9,7 @@ Subject: [PATCH] net/dsa/mv88e6xxx: disable ATU violation
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
-@@ -3482,6 +3482,9 @@ static int mv88e6xxx_setup_port(struct m
+@@ -3492,6 +3492,9 @@ static int mv88e6xxx_setup_port(struct m
else
reg = 1 << port;
diff --git a/lede/target/linux/generic/hack-6.1/721-net-add-packet-mangeling.patch b/lede/target/linux/generic/hack-6.1/721-net-add-packet-mangeling.patch
index 73b406740f..435f390eab 100644
--- a/lede/target/linux/generic/hack-6.1/721-net-add-packet-mangeling.patch
+++ b/lede/target/linux/generic/hack-6.1/721-net-add-packet-mangeling.patch
@@ -60,7 +60,7 @@ Signed-off-by: Felix Fietkau
*/
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
-@@ -3060,6 +3060,10 @@ static inline int pskb_trim(struct sk_bu
+@@ -3071,6 +3071,10 @@ static inline int pskb_trim(struct sk_bu
return (len < skb->len) ? __pskb_trim(skb, len) : 0;
}
@@ -71,7 +71,7 @@ Signed-off-by: Felix Fietkau
/**
* pskb_trim_unique - remove end from a paged unique (not cloned) buffer
* @skb: buffer to alter
-@@ -3209,16 +3213,6 @@ static inline struct sk_buff *dev_alloc_
+@@ -3220,16 +3224,6 @@ static inline struct sk_buff *dev_alloc_
}
diff --git a/lede/target/linux/generic/hack-6.1/902-debloat_proc.patch b/lede/target/linux/generic/hack-6.1/902-debloat_proc.patch
index 322f2622bf..a03b8c22b8 100644
--- a/lede/target/linux/generic/hack-6.1/902-debloat_proc.patch
+++ b/lede/target/linux/generic/hack-6.1/902-debloat_proc.patch
@@ -396,7 +396,7 @@ Signed-off-by: Felix Fietkau
}
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
-@@ -380,6 +380,9 @@ static struct pernet_operations ip_rt_pr
+@@ -381,6 +381,9 @@ static struct pernet_operations ip_rt_pr
static int __init ip_rt_proc_init(void)
{
diff --git a/lede/target/linux/generic/pending-5.10/630-packet_socket_type.patch b/lede/target/linux/generic/pending-5.10/630-packet_socket_type.patch
index 1f21ced0ab..3f5f461e7e 100644
--- a/lede/target/linux/generic/pending-5.10/630-packet_socket_type.patch
+++ b/lede/target/linux/generic/pending-5.10/630-packet_socket_type.patch
@@ -87,7 +87,7 @@ Signed-off-by: Felix Fietkau
if (!net_eq(dev_net(dev), sock_net(sk)))
goto drop;
-@@ -3346,6 +3348,7 @@ static int packet_create(struct net *net
+@@ -3345,6 +3347,7 @@ static int packet_create(struct net *net
mutex_init(&po->pg_vec_lock);
po->rollover = NULL;
po->prot_hook.func = packet_rcv;
@@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau
if (sock->type == SOCK_PACKET)
po->prot_hook.func = packet_rcv_spkt;
-@@ -3986,6 +3989,16 @@ packet_setsockopt(struct socket *sock, i
+@@ -3985,6 +3988,16 @@ packet_setsockopt(struct socket *sock, i
WRITE_ONCE(po->xmit, val ? packet_direct_xmit : dev_queue_xmit);
return 0;
}
@@ -112,7 +112,7 @@ Signed-off-by: Felix Fietkau
default:
return -ENOPROTOOPT;
}
-@@ -4042,6 +4055,13 @@ static int packet_getsockopt(struct sock
+@@ -4041,6 +4054,13 @@ static int packet_getsockopt(struct sock
case PACKET_VNET_HDR:
val = po->has_vnet_hdr;
break;
diff --git a/lede/target/linux/generic/pending-5.10/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch b/lede/target/linux/generic/pending-5.10/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
index 7beabef9a3..ef22be2b6e 100644
--- a/lede/target/linux/generic/pending-5.10/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
+++ b/lede/target/linux/generic/pending-5.10/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
@@ -110,7 +110,7 @@ Signed-off-by: Jonas Gorski
return -EINVAL;
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
-@@ -95,6 +95,8 @@ static int ip6_pkt_discard(struct sk_bu
+@@ -96,6 +96,8 @@ static int ip6_pkt_discard(struct sk_bu
static int ip6_pkt_discard_out(struct net *net, struct sock *sk, struct sk_buff *skb);
static int ip6_pkt_prohibit(struct sk_buff *skb);
static int ip6_pkt_prohibit_out(struct net *net, struct sock *sk, struct sk_buff *skb);
@@ -119,7 +119,7 @@ Signed-off-by: Jonas Gorski
static void ip6_link_failure(struct sk_buff *skb);
static void ip6_rt_update_pmtu(struct dst_entry *dst, struct sock *sk,
struct sk_buff *skb, u32 mtu,
-@@ -310,6 +312,18 @@ static const struct rt6_info ip6_prohibi
+@@ -311,6 +313,18 @@ static const struct rt6_info ip6_prohibi
.rt6i_flags = (RTF_REJECT | RTF_NONEXTHOP),
};
@@ -138,7 +138,7 @@ Signed-off-by: Jonas Gorski
static const struct rt6_info ip6_blk_hole_entry_template = {
.dst = {
.__refcnt = ATOMIC_INIT(1),
-@@ -1031,6 +1045,7 @@ static const int fib6_prop[RTN_MAX + 1]
+@@ -1032,6 +1046,7 @@ static const int fib6_prop[RTN_MAX + 1]
[RTN_BLACKHOLE] = -EINVAL,
[RTN_UNREACHABLE] = -EHOSTUNREACH,
[RTN_PROHIBIT] = -EACCES,
@@ -146,7 +146,7 @@ Signed-off-by: Jonas Gorski
[RTN_THROW] = -EAGAIN,
[RTN_NAT] = -EINVAL,
[RTN_XRESOLVE] = -EINVAL,
-@@ -1066,6 +1081,10 @@ static void ip6_rt_init_dst_reject(struc
+@@ -1067,6 +1082,10 @@ static void ip6_rt_init_dst_reject(struc
rt->dst.output = ip6_pkt_prohibit_out;
rt->dst.input = ip6_pkt_prohibit;
break;
@@ -157,7 +157,7 @@ Signed-off-by: Jonas Gorski
case RTN_THROW:
case RTN_UNREACHABLE:
default:
-@@ -4446,6 +4465,17 @@ static int ip6_pkt_prohibit_out(struct n
+@@ -4450,6 +4469,17 @@ static int ip6_pkt_prohibit_out(struct n
return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
}
@@ -175,7 +175,7 @@ Signed-off-by: Jonas Gorski
/*
* Allocate a dst for local (unicast / anycast) address.
*/
-@@ -4933,7 +4963,8 @@ static int rtm_to_fib6_config(struct sk_
+@@ -4937,7 +4967,8 @@ static int rtm_to_fib6_config(struct sk_
if (rtm->rtm_type == RTN_UNREACHABLE ||
rtm->rtm_type == RTN_BLACKHOLE ||
rtm->rtm_type == RTN_PROHIBIT ||
@@ -185,7 +185,7 @@ Signed-off-by: Jonas Gorski
cfg->fc_flags |= RTF_REJECT;
if (rtm->rtm_type == RTN_LOCAL)
-@@ -6126,6 +6157,8 @@ static int ip6_route_dev_notify(struct n
+@@ -6130,6 +6161,8 @@ static int ip6_route_dev_notify(struct n
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
net->ipv6.ip6_prohibit_entry->dst.dev = dev;
net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
@@ -194,7 +194,7 @@ Signed-off-by: Jonas Gorski
net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
#endif
-@@ -6137,6 +6170,7 @@ static int ip6_route_dev_notify(struct n
+@@ -6141,6 +6174,7 @@ static int ip6_route_dev_notify(struct n
in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev);
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev);
@@ -202,7 +202,7 @@ Signed-off-by: Jonas Gorski
in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev);
#endif
}
-@@ -6328,6 +6362,8 @@ static int __net_init ip6_route_net_init
+@@ -6332,6 +6366,8 @@ static int __net_init ip6_route_net_init
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
net->ipv6.fib6_has_custom_rules = false;
@@ -211,7 +211,7 @@ Signed-off-by: Jonas Gorski
net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template,
sizeof(*net->ipv6.ip6_prohibit_entry),
GFP_KERNEL);
-@@ -6338,11 +6374,21 @@ static int __net_init ip6_route_net_init
+@@ -6342,11 +6378,21 @@ static int __net_init ip6_route_net_init
ip6_template_metrics, true);
INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->rt6i_uncached);
@@ -234,7 +234,7 @@ Signed-off-by: Jonas Gorski
net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
ip6_template_metrics, true);
-@@ -6369,6 +6415,8 @@ out:
+@@ -6373,6 +6419,8 @@ out:
return ret;
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
@@ -243,7 +243,7 @@ Signed-off-by: Jonas Gorski
out_ip6_prohibit_entry:
kfree(net->ipv6.ip6_prohibit_entry);
out_ip6_null_entry:
-@@ -6388,6 +6436,7 @@ static void __net_exit ip6_route_net_exi
+@@ -6392,6 +6440,7 @@ static void __net_exit ip6_route_net_exi
kfree(net->ipv6.ip6_null_entry);
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
kfree(net->ipv6.ip6_prohibit_entry);
@@ -251,7 +251,7 @@ Signed-off-by: Jonas Gorski
kfree(net->ipv6.ip6_blk_hole_entry);
#endif
dst_entries_destroy(&net->ipv6.ip6_dst_ops);
-@@ -6471,6 +6520,9 @@ void __init ip6_route_init_special_entri
+@@ -6475,6 +6524,9 @@ void __init ip6_route_init_special_entri
init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
diff --git a/lede/target/linux/generic/pending-5.4/630-packet_socket_type.patch b/lede/target/linux/generic/pending-5.4/630-packet_socket_type.patch
index 7370f5edae..9b218614e8 100644
--- a/lede/target/linux/generic/pending-5.4/630-packet_socket_type.patch
+++ b/lede/target/linux/generic/pending-5.4/630-packet_socket_type.patch
@@ -87,7 +87,7 @@ Signed-off-by: Felix Fietkau
if (!net_eq(dev_net(dev), sock_net(sk)))
goto drop;
-@@ -3317,6 +3319,7 @@ static int packet_create(struct net *net
+@@ -3316,6 +3318,7 @@ static int packet_create(struct net *net
mutex_init(&po->pg_vec_lock);
po->rollover = NULL;
po->prot_hook.func = packet_rcv;
@@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau
if (sock->type == SOCK_PACKET)
po->prot_hook.func = packet_rcv_spkt;
-@@ -3956,6 +3959,16 @@ packet_setsockopt(struct socket *sock, i
+@@ -3955,6 +3958,16 @@ packet_setsockopt(struct socket *sock, i
WRITE_ONCE(po->xmit, val ? packet_direct_xmit : dev_queue_xmit);
return 0;
}
@@ -112,7 +112,7 @@ Signed-off-by: Felix Fietkau
default:
return -ENOPROTOOPT;
}
-@@ -4012,6 +4025,13 @@ static int packet_getsockopt(struct sock
+@@ -4011,6 +4024,13 @@ static int packet_getsockopt(struct sock
case PACKET_VNET_HDR:
val = po->has_vnet_hdr;
break;
diff --git a/lede/target/linux/generic/pending-5.4/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch b/lede/target/linux/generic/pending-5.4/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
index abb27cb33c..e848e00722 100644
--- a/lede/target/linux/generic/pending-5.4/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
+++ b/lede/target/linux/generic/pending-5.4/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
@@ -110,7 +110,7 @@ Signed-off-by: Jonas Gorski
return -EINVAL;
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
-@@ -94,6 +94,8 @@ static int ip6_pkt_discard(struct sk_bu
+@@ -95,6 +95,8 @@ static int ip6_pkt_discard(struct sk_bu
static int ip6_pkt_discard_out(struct net *net, struct sock *sk, struct sk_buff *skb);
static int ip6_pkt_prohibit(struct sk_buff *skb);
static int ip6_pkt_prohibit_out(struct net *net, struct sock *sk, struct sk_buff *skb);
@@ -119,7 +119,7 @@ Signed-off-by: Jonas Gorski
static void ip6_link_failure(struct sk_buff *skb);
static void ip6_rt_update_pmtu(struct dst_entry *dst, struct sock *sk,
struct sk_buff *skb, u32 mtu,
-@@ -327,6 +329,18 @@ static const struct rt6_info ip6_prohibi
+@@ -328,6 +330,18 @@ static const struct rt6_info ip6_prohibi
.rt6i_flags = (RTF_REJECT | RTF_NONEXTHOP),
};
@@ -138,7 +138,7 @@ Signed-off-by: Jonas Gorski
static const struct rt6_info ip6_blk_hole_entry_template = {
.dst = {
.__refcnt = ATOMIC_INIT(1),
-@@ -1048,6 +1062,7 @@ static const int fib6_prop[RTN_MAX + 1]
+@@ -1049,6 +1063,7 @@ static const int fib6_prop[RTN_MAX + 1]
[RTN_BLACKHOLE] = -EINVAL,
[RTN_UNREACHABLE] = -EHOSTUNREACH,
[RTN_PROHIBIT] = -EACCES,
@@ -146,7 +146,7 @@ Signed-off-by: Jonas Gorski
[RTN_THROW] = -EAGAIN,
[RTN_NAT] = -EINVAL,
[RTN_XRESOLVE] = -EINVAL,
-@@ -1085,6 +1100,10 @@ static void ip6_rt_init_dst_reject(struc
+@@ -1086,6 +1101,10 @@ static void ip6_rt_init_dst_reject(struc
rt->dst.output = ip6_pkt_prohibit_out;
rt->dst.input = ip6_pkt_prohibit;
break;
@@ -157,7 +157,7 @@ Signed-off-by: Jonas Gorski
case RTN_THROW:
case RTN_UNREACHABLE:
default:
-@@ -4454,6 +4473,17 @@ static int ip6_pkt_prohibit_out(struct n
+@@ -4458,6 +4477,17 @@ static int ip6_pkt_prohibit_out(struct n
return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
}
@@ -175,7 +175,7 @@ Signed-off-by: Jonas Gorski
/*
* Allocate a dst for local (unicast / anycast) address.
*/
-@@ -4941,7 +4971,8 @@ static int rtm_to_fib6_config(struct sk_
+@@ -4945,7 +4975,8 @@ static int rtm_to_fib6_config(struct sk_
if (rtm->rtm_type == RTN_UNREACHABLE ||
rtm->rtm_type == RTN_BLACKHOLE ||
rtm->rtm_type == RTN_PROHIBIT ||
@@ -185,7 +185,7 @@ Signed-off-by: Jonas Gorski
cfg->fc_flags |= RTF_REJECT;
if (rtm->rtm_type == RTN_LOCAL)
-@@ -6086,6 +6117,8 @@ static int ip6_route_dev_notify(struct n
+@@ -6090,6 +6121,8 @@ static int ip6_route_dev_notify(struct n
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
net->ipv6.ip6_prohibit_entry->dst.dev = dev;
net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
@@ -194,7 +194,7 @@ Signed-off-by: Jonas Gorski
net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
#endif
-@@ -6097,6 +6130,7 @@ static int ip6_route_dev_notify(struct n
+@@ -6101,6 +6134,7 @@ static int ip6_route_dev_notify(struct n
in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev);
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev);
@@ -202,7 +202,7 @@ Signed-off-by: Jonas Gorski
in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev);
#endif
}
-@@ -6289,6 +6323,8 @@ static int __net_init ip6_route_net_init
+@@ -6293,6 +6327,8 @@ static int __net_init ip6_route_net_init
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
net->ipv6.fib6_has_custom_rules = false;
@@ -211,7 +211,7 @@ Signed-off-by: Jonas Gorski
net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template,
sizeof(*net->ipv6.ip6_prohibit_entry),
GFP_KERNEL);
-@@ -6299,11 +6335,21 @@ static int __net_init ip6_route_net_init
+@@ -6303,11 +6339,21 @@ static int __net_init ip6_route_net_init
ip6_template_metrics, true);
INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->rt6i_uncached);
@@ -234,7 +234,7 @@ Signed-off-by: Jonas Gorski
net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
ip6_template_metrics, true);
-@@ -6327,6 +6373,8 @@ out:
+@@ -6331,6 +6377,8 @@ out:
return ret;
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
@@ -243,7 +243,7 @@ Signed-off-by: Jonas Gorski
out_ip6_prohibit_entry:
kfree(net->ipv6.ip6_prohibit_entry);
out_ip6_null_entry:
-@@ -6346,6 +6394,7 @@ static void __net_exit ip6_route_net_exi
+@@ -6350,6 +6398,7 @@ static void __net_exit ip6_route_net_exi
kfree(net->ipv6.ip6_null_entry);
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
kfree(net->ipv6.ip6_prohibit_entry);
@@ -251,7 +251,7 @@ Signed-off-by: Jonas Gorski
kfree(net->ipv6.ip6_blk_hole_entry);
#endif
dst_entries_destroy(&net->ipv6.ip6_dst_ops);
-@@ -6429,6 +6478,9 @@ void __init ip6_route_init_special_entri
+@@ -6433,6 +6482,9 @@ void __init ip6_route_init_special_entri
init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
diff --git a/lede/target/linux/generic/pending-6.1/540-ksmbd-only-v2-leases-handle-the-directory.patch b/lede/target/linux/generic/pending-6.1/540-ksmbd-only-v2-leases-handle-the-directory.patch
index 69ba86b77b..ef94f278d1 100644
--- a/lede/target/linux/generic/pending-6.1/540-ksmbd-only-v2-leases-handle-the-directory.patch
+++ b/lede/target/linux/generic/pending-6.1/540-ksmbd-only-v2-leases-handle-the-directory.patch
@@ -17,7 +17,7 @@ Signed-off-by: Steve French
--- a/fs/smb/server/oplock.c
+++ b/fs/smb/server/oplock.c
-@@ -1214,6 +1214,12 @@ int smb_grant_oplock(struct ksmbd_work *
+@@ -1219,6 +1219,12 @@ int smb_grant_oplock(struct ksmbd_work *
return 0;
}
diff --git a/lede/target/linux/generic/pending-6.1/630-packet_socket_type.patch b/lede/target/linux/generic/pending-6.1/630-packet_socket_type.patch
index c40c709635..9c8be72745 100644
--- a/lede/target/linux/generic/pending-6.1/630-packet_socket_type.patch
+++ b/lede/target/linux/generic/pending-6.1/630-packet_socket_type.patch
@@ -87,7 +87,7 @@ Signed-off-by: Felix Fietkau
if (!net_eq(dev_net(dev), sock_net(sk)))
goto drop;
-@@ -3378,6 +3380,7 @@ static int packet_create(struct net *net
+@@ -3377,6 +3379,7 @@ static int packet_create(struct net *net
mutex_init(&po->pg_vec_lock);
po->rollover = NULL;
po->prot_hook.func = packet_rcv;
@@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau
if (sock->type == SOCK_PACKET)
po->prot_hook.func = packet_rcv_spkt;
-@@ -4013,6 +4016,16 @@ packet_setsockopt(struct socket *sock, i
+@@ -4012,6 +4015,16 @@ packet_setsockopt(struct socket *sock, i
WRITE_ONCE(po->xmit, val ? packet_direct_xmit : dev_queue_xmit);
return 0;
}
@@ -112,7 +112,7 @@ Signed-off-by: Felix Fietkau
default:
return -ENOPROTOOPT;
}
-@@ -4069,6 +4082,13 @@ static int packet_getsockopt(struct sock
+@@ -4068,6 +4081,13 @@ static int packet_getsockopt(struct sock
case PACKET_VNET_HDR:
val = po->has_vnet_hdr;
break;
diff --git a/lede/target/linux/generic/pending-6.1/655-increase_skb_pad.patch b/lede/target/linux/generic/pending-6.1/655-increase_skb_pad.patch
index 9d77ceaf93..22c479311a 100644
--- a/lede/target/linux/generic/pending-6.1/655-increase_skb_pad.patch
+++ b/lede/target/linux/generic/pending-6.1/655-increase_skb_pad.patch
@@ -9,7 +9,7 @@ Signed-off-by: Felix Fietkau
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
-@@ -3027,7 +3027,7 @@ static inline int pskb_network_may_pull(
+@@ -3038,7 +3038,7 @@ static inline int pskb_network_may_pull(
* NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
*/
#ifndef NET_SKB_PAD
diff --git a/lede/target/linux/generic/pending-6.1/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch b/lede/target/linux/generic/pending-6.1/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
index 78000a1cd2..3247094691 100644
--- a/lede/target/linux/generic/pending-6.1/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
+++ b/lede/target/linux/generic/pending-6.1/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
@@ -110,7 +110,7 @@ Signed-off-by: Jonas Gorski
return -EINVAL;
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
-@@ -97,6 +97,8 @@ static int ip6_pkt_discard(struct sk_bu
+@@ -98,6 +98,8 @@ static int ip6_pkt_discard(struct sk_bu
static int ip6_pkt_discard_out(struct net *net, struct sock *sk, struct sk_buff *skb);
static int ip6_pkt_prohibit(struct sk_buff *skb);
static int ip6_pkt_prohibit_out(struct net *net, struct sock *sk, struct sk_buff *skb);
@@ -119,7 +119,7 @@ Signed-off-by: Jonas Gorski