From 21961e32c9bcd42b183a7d9b93c1ac10d4252134 Mon Sep 17 00:00:00 2001
From: Luke Parker <lukeparker5132@gmail.com>
Date: Mon, 4 Dec 2023 07:40:56 -0500
Subject: [PATCH] Add patches for directories/directories-next/option-ext

The rational is detailed in the root Cargo.toml.

While I don't personally mind MPL dependencies, even if I don't prefer them
(they're allowed in the deny.toml for a reason), I do mind the pointless scope
creep and wish to highlight how little it actually used from the crate by
re-defining it as the single function.

We could also fork directories-next, or directories, and remove the usage of
option-ext per https://github.com/dirs-dev/dirs-sys-rs/issues/24, yet that'd be
a much larger task than what was done here.

In the future, it may be beneficial to submit a PR to wasmtime replacing
directories-next with home, a cargo-team maintained library to get the home
directory and associated folders. An example migration can be found at
https://github.com/harryfei/which-rs/pull/80.
---
 Cargo.lock                                    | 346 ++++++++----------
 Cargo.toml                                    |  13 +
 .../tree-cleanup/directories-next/Cargo.toml  |  17 +
 .../tree-cleanup/directories-next/src/lib.rs  |   1 +
 substrate/tree-cleanup/option-ext/Cargo.toml  |  14 +
 substrate/tree-cleanup/option-ext/src/lib.rs  |   8 +
 6 files changed, 207 insertions(+), 192 deletions(-)
 create mode 100644 substrate/tree-cleanup/directories-next/Cargo.toml
 create mode 100644 substrate/tree-cleanup/directories-next/src/lib.rs
 create mode 100644 substrate/tree-cleanup/option-ext/Cargo.toml
 create mode 100644 substrate/tree-cleanup/option-ext/src/lib.rs

diff --git a/Cargo.lock b/Cargo.lock
index d778936ee..cbd334350 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1093,18 +1093,18 @@ dependencies = [
 
 [[package]]
 name = "cranelift-bforest"
-version = "0.102.0"
+version = "0.102.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "76eb38f2af690b5a4411d9a8782b6d77dabff3ca939e0518453ab9f9a4392d41"
+checksum = "8e7e56668d2263f92b691cb9e4a2fcb186ca0384941fe420484322fa559c3329"
 dependencies = [
  "cranelift-entity",
 ]
 
 [[package]]
 name = "cranelift-codegen"
-version = "0.102.0"
+version = "0.102.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "39526c036b92912417e8931f52c1e235796688068d3efdbbd8b164f299d19156"
+checksum = "2a9ff61938bf11615f55b80361288c68865318025632ea73c65c0b44fa16283c"
 dependencies = [
  "bumpalo",
  "cranelift-bforest",
@@ -1123,33 +1123,33 @@ dependencies = [
 
 [[package]]
 name = "cranelift-codegen-meta"
-version = "0.102.0"
+version = "0.102.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fdb0deedc9fccf2db53a5a3c9c9d0163e44143b0d004dca9bf6ab6a0024cd79a"
+checksum = "50656bf19e3d4a153b404ff835b8b59e924cfa3682ebe0d3df408994f37983f6"
 dependencies = [
  "cranelift-codegen-shared",
 ]
 
 [[package]]
 name = "cranelift-codegen-shared"
-version = "0.102.0"
+version = "0.102.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cea2d1b274e45aa8e61e9103efa1ba82d4b5a19d12bd1fd10744c3b7380ba3ff"
+checksum = "388041deeb26109f1ea73c1812ea26bfd406c94cbce0bb5230aa44277e43b209"
 
 [[package]]
 name = "cranelift-control"
-version = "0.102.0"
+version = "0.102.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ea5977559a71e63db79a263f0e81a89b996e8a38212c4281e37dd1dbaa8b65c"
+checksum = "b39b7c512ffac527e5b5df9beae3d67ab85d07dca6d88942c16195439fedd1d3"
 dependencies = [
  "arbitrary",
 ]
 
 [[package]]
 name = "cranelift-entity"
-version = "0.102.0"
+version = "0.102.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2f871ada808b58158d84dfc43a6a2e2d2756baaf4ed1c51fd969ca8330e6ca5c"
+checksum = "fdb25f573701284fe2bcf88209d405342125df00764b396c923e11eafc94d892"
 dependencies = [
  "serde",
  "serde_derive",
@@ -1157,9 +1157,9 @@ dependencies = [
 
 [[package]]
 name = "cranelift-frontend"
-version = "0.102.0"
+version = "0.102.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e8e6890f587ef59824b3debe577e68fdf9b307b3808c54b8d93a18fd0b70941b"
+checksum = "e57374fd11d72cf9ffb85ff64506ed831440818318f58d09f45b4185e5e9c376"
 dependencies = [
  "cranelift-codegen",
  "log",
@@ -1169,15 +1169,15 @@ dependencies = [
 
 [[package]]
 name = "cranelift-isle"
-version = "0.102.0"
+version = "0.102.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a8d5fc6d5d3b52d1917002b17a8ecce448c2621b5bf394bb4e77e2f676893537"
+checksum = "ae769b235f6ea2f86623a3ff157cc04a4ff131dc9fe782c2ebd35f272043581e"
 
 [[package]]
 name = "cranelift-native"
-version = "0.102.0"
+version = "0.102.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3e10c2e7faa65d4ae7de9a83b44f2c31aca7dc638e17d0a79572fdf8103d720b"
+checksum = "3dc7bfb8f13a0526fe20db338711d9354729b861c336978380bb10f7f17dd207"
 dependencies = [
  "cranelift-codegen",
  "libc",
@@ -1186,9 +1186,9 @@ dependencies = [
 
 [[package]]
 name = "cranelift-wasm"
-version = "0.102.0"
+version = "0.102.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2755807efc7ec80d1cc0b6815e70f10cedf968889f0469091dbff9c5c0741c48"
+checksum = "2c5f41a4af931b756be05af0dd374ce200aae2d52cea16b0beb07e8b52732c35"
 dependencies = [
  "cranelift-codegen",
  "cranelift-entity",
@@ -1515,11 +1515,8 @@ dependencies = [
 [[package]]
 name = "directories-next"
 version = "2.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "339ee130d97a610ea5a5872d2bbb130fdf68884ff09d3028b81bec8a1ac23bbc"
 dependencies = [
- "cfg-if",
- "dirs-sys-next",
+ "directories",
 ]
 
 [[package]]
@@ -1534,17 +1531,6 @@ dependencies = [
  "windows-sys",
 ]
 
-[[package]]
-name = "dirs-sys-next"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d"
-dependencies = [
- "libc",
- "redox_users",
- "winapi",
-]
-
 [[package]]
 name = "displaydoc"
 version = "0.2.4"
@@ -1660,27 +1646,6 @@ version = "1.0.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b"
 
-[[package]]
-name = "dyn-clonable"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4e9232f0e607a262ceb9bd5141a3dfb3e4db6994b31989bbfd845878cba59fd4"
-dependencies = [
- "dyn-clonable-impl",
- "dyn-clone",
-]
-
-[[package]]
-name = "dyn-clonable-impl"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "558e40ea573c374cf53507fd240b7ee2f5477df7cfebdb97323ec61c719399c5"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 1.0.109",
-]
-
 [[package]]
 name = "dyn-clone"
 version = "1.0.16"
@@ -2225,7 +2190,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
 [[package]]
 name = "fork-tree"
 version = "3.0.0"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "parity-scale-codec",
 ]
@@ -2248,7 +2213,7 @@ checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa"
 [[package]]
 name = "frame-benchmarking"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "frame-support",
  "frame-support-procedural",
@@ -2273,7 +2238,7 @@ dependencies = [
 [[package]]
 name = "frame-executive"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -2303,7 +2268,7 @@ dependencies = [
 [[package]]
 name = "frame-support"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "aquamarine",
  "bitflags 1.3.2",
@@ -2340,7 +2305,7 @@ dependencies = [
 [[package]]
 name = "frame-support-procedural"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "Inflector",
  "cfg-expr",
@@ -2359,7 +2324,7 @@ dependencies = [
 [[package]]
 name = "frame-support-procedural-tools"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "frame-support-procedural-tools-derive",
  "proc-macro-crate 2.0.0",
@@ -2371,7 +2336,7 @@ dependencies = [
 [[package]]
 name = "frame-support-procedural-tools-derive"
 version = "3.0.0"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -2381,7 +2346,7 @@ dependencies = [
 [[package]]
 name = "frame-system"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "cfg-if",
  "frame-support",
@@ -2400,7 +2365,7 @@ dependencies = [
 [[package]]
 name = "frame-system-rpc-runtime-api"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "parity-scale-codec",
  "sp-api",
@@ -2409,7 +2374,7 @@ dependencies = [
 [[package]]
 name = "frame-try-runtime"
 version = "0.10.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "frame-support",
  "parity-scale-codec",
@@ -4776,8 +4741,6 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
 [[package]]
 name = "option-ext"
 version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
 
 [[package]]
 name = "overload"
@@ -4808,7 +4771,7 @@ dependencies = [
 [[package]]
 name = "pallet-authorship"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -4822,7 +4785,7 @@ dependencies = [
 [[package]]
 name = "pallet-babe"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4845,7 +4808,7 @@ dependencies = [
 [[package]]
 name = "pallet-grandpa"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4867,7 +4830,7 @@ dependencies = [
 [[package]]
 name = "pallet-session"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -4889,7 +4852,7 @@ dependencies = [
 [[package]]
 name = "pallet-timestamp"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "docify",
  "frame-benchmarking",
@@ -4908,7 +4871,7 @@ dependencies = [
 [[package]]
 name = "pallet-transaction-payment"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -4924,7 +4887,7 @@ dependencies = [
 [[package]]
 name = "pallet-transaction-payment-rpc"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "jsonrpsee",
  "pallet-transaction-payment-rpc-runtime-api",
@@ -4940,7 +4903,7 @@ dependencies = [
 [[package]]
 name = "pallet-transaction-payment-rpc-runtime-api"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "pallet-transaction-payment",
  "parity-scale-codec",
@@ -6100,7 +6063,7 @@ dependencies = [
 [[package]]
 name = "sc-allocator"
 version = "4.1.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "log",
  "sp-core",
@@ -6111,7 +6074,7 @@ dependencies = [
 [[package]]
 name = "sc-authority-discovery"
 version = "0.10.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "async-trait",
  "futures",
@@ -6139,7 +6102,7 @@ dependencies = [
 [[package]]
 name = "sc-basic-authorship"
 version = "0.10.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "futures",
  "futures-timer",
@@ -6161,7 +6124,7 @@ dependencies = [
 [[package]]
 name = "sc-block-builder"
 version = "0.10.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "parity-scale-codec",
  "sp-api",
@@ -6175,7 +6138,7 @@ dependencies = [
 [[package]]
 name = "sc-chain-spec"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "array-bytes",
  "docify",
@@ -6199,7 +6162,7 @@ dependencies = [
 [[package]]
 name = "sc-chain-spec-derive"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "proc-macro-crate 2.0.0",
  "proc-macro2",
@@ -6210,7 +6173,7 @@ dependencies = [
 [[package]]
 name = "sc-cli"
 version = "0.10.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "array-bytes",
  "bip39",
@@ -6250,7 +6213,7 @@ dependencies = [
 [[package]]
 name = "sc-client-api"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "fnv",
  "futures",
@@ -6276,7 +6239,7 @@ dependencies = [
 [[package]]
 name = "sc-client-db"
 version = "0.10.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "hash-db",
  "kvdb",
@@ -6302,7 +6265,7 @@ dependencies = [
 [[package]]
 name = "sc-consensus"
 version = "0.10.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "async-trait",
  "futures",
@@ -6326,7 +6289,7 @@ dependencies = [
 [[package]]
 name = "sc-consensus-babe"
 version = "0.10.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "async-trait",
  "fork-tree",
@@ -6361,7 +6324,7 @@ dependencies = [
 [[package]]
 name = "sc-consensus-epochs"
 version = "0.10.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "fork-tree",
  "parity-scale-codec",
@@ -6374,7 +6337,7 @@ dependencies = [
 [[package]]
 name = "sc-consensus-grandpa"
 version = "0.10.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "ahash",
  "array-bytes",
@@ -6416,7 +6379,7 @@ dependencies = [
 [[package]]
 name = "sc-consensus-slots"
 version = "0.10.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "async-trait",
  "futures",
@@ -6439,7 +6402,7 @@ dependencies = [
 [[package]]
 name = "sc-executor"
 version = "0.10.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "parity-scale-codec",
  "parking_lot 0.12.1",
@@ -6460,7 +6423,7 @@ dependencies = [
 [[package]]
 name = "sc-executor-common"
 version = "0.10.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "sc-allocator",
  "sp-maybe-compressed-blob",
@@ -6472,7 +6435,7 @@ dependencies = [
 [[package]]
 name = "sc-executor-wasmtime"
 version = "0.10.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "anyhow",
  "log",
@@ -6488,7 +6451,7 @@ dependencies = [
 [[package]]
 name = "sc-informant"
 version = "0.10.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "anstyle",
  "futures",
@@ -6504,7 +6467,7 @@ dependencies = [
 [[package]]
 name = "sc-keystore"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "array-bytes",
  "parking_lot 0.12.1",
@@ -6518,7 +6481,7 @@ dependencies = [
 [[package]]
 name = "sc-network"
 version = "0.10.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "array-bytes",
  "async-channel",
@@ -6561,7 +6524,7 @@ dependencies = [
 [[package]]
 name = "sc-network-common"
 version = "0.10.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "bitflags 1.3.2",
  "parity-scale-codec",
@@ -6573,7 +6536,7 @@ dependencies = [
 [[package]]
 name = "sc-network-gossip"
 version = "0.10.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "ahash",
  "futures",
@@ -6593,7 +6556,7 @@ dependencies = [
 [[package]]
 name = "sc-network-light"
 version = "0.10.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "array-bytes",
  "async-channel",
@@ -6614,7 +6577,7 @@ dependencies = [
 [[package]]
 name = "sc-network-sync"
 version = "0.10.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "array-bytes",
  "async-channel",
@@ -6649,7 +6612,7 @@ dependencies = [
 [[package]]
 name = "sc-network-transactions"
 version = "0.10.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "array-bytes",
  "futures",
@@ -6668,7 +6631,7 @@ dependencies = [
 [[package]]
 name = "sc-offchain"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "futures",
  "futures-timer",
@@ -6693,7 +6656,7 @@ dependencies = [
 [[package]]
 name = "sc-proposer-metrics"
 version = "0.10.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "log",
  "substrate-prometheus-endpoint",
@@ -6702,7 +6665,7 @@ dependencies = [
 [[package]]
 name = "sc-rpc"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "futures",
  "jsonrpsee",
@@ -6732,7 +6695,7 @@ dependencies = [
 [[package]]
 name = "sc-rpc-api"
 version = "0.10.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "jsonrpsee",
  "parity-scale-codec",
@@ -6751,7 +6714,7 @@ dependencies = [
 [[package]]
 name = "sc-rpc-server"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "http",
  "jsonrpsee",
@@ -6766,7 +6729,7 @@ dependencies = [
 [[package]]
 name = "sc-rpc-spec-v2"
 version = "0.10.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "array-bytes",
  "futures",
@@ -6795,10 +6758,10 @@ dependencies = [
 [[package]]
 name = "sc-service"
 version = "0.10.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "async-trait",
- "directories",
+ "directories-next",
  "exit-future",
  "futures",
  "futures-timer",
@@ -6855,7 +6818,7 @@ dependencies = [
 [[package]]
 name = "sc-state-db"
 version = "0.10.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "log",
  "parity-scale-codec",
@@ -6866,7 +6829,7 @@ dependencies = [
 [[package]]
 name = "sc-sysinfo"
 version = "6.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "derive_more",
  "futures",
@@ -6886,7 +6849,7 @@ dependencies = [
 [[package]]
 name = "sc-telemetry"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "chrono",
  "futures",
@@ -6905,7 +6868,7 @@ dependencies = [
 [[package]]
 name = "sc-tracing"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "anstyle",
  "chrono",
@@ -6933,7 +6896,7 @@ dependencies = [
 [[package]]
 name = "sc-tracing-proc-macro"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "proc-macro-crate 2.0.0",
  "proc-macro2",
@@ -6944,7 +6907,7 @@ dependencies = [
 [[package]]
 name = "sc-transaction-pool"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "async-trait",
  "futures",
@@ -6970,7 +6933,7 @@ dependencies = [
 [[package]]
 name = "sc-transaction-pool-api"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "async-trait",
  "futures",
@@ -6986,7 +6949,7 @@ dependencies = [
 [[package]]
 name = "sc-utils"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "async-channel",
  "futures",
@@ -7968,7 +7931,7 @@ dependencies = [
 [[package]]
 name = "sp-api"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "hash-db",
  "log",
@@ -7989,7 +7952,7 @@ dependencies = [
 [[package]]
 name = "sp-api-proc-macro"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "Inflector",
  "blake2",
@@ -8003,7 +7966,7 @@ dependencies = [
 [[package]]
 name = "sp-application-crypto"
 version = "23.0.0"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "parity-scale-codec",
  "scale-info",
@@ -8016,7 +7979,7 @@ dependencies = [
 [[package]]
 name = "sp-arithmetic"
 version = "16.0.0"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "integer-sqrt",
  "num-traits",
@@ -8030,7 +7993,7 @@ dependencies = [
 [[package]]
 name = "sp-authority-discovery"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "parity-scale-codec",
  "scale-info",
@@ -8042,7 +8005,7 @@ dependencies = [
 [[package]]
 name = "sp-block-builder"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "sp-api",
  "sp-inherents",
@@ -8053,7 +8016,7 @@ dependencies = [
 [[package]]
 name = "sp-blockchain"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "futures",
  "log",
@@ -8071,7 +8034,7 @@ dependencies = [
 [[package]]
 name = "sp-consensus"
 version = "0.10.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "async-trait",
  "futures",
@@ -8085,7 +8048,7 @@ dependencies = [
 [[package]]
 name = "sp-consensus-babe"
 version = "0.10.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "async-trait",
  "parity-scale-codec",
@@ -8104,7 +8067,7 @@ dependencies = [
 [[package]]
 name = "sp-consensus-grandpa"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "finality-grandpa",
  "log",
@@ -8122,7 +8085,7 @@ dependencies = [
 [[package]]
 name = "sp-consensus-slots"
 version = "0.10.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "parity-scale-codec",
  "scale-info",
@@ -8134,7 +8097,7 @@ dependencies = [
 [[package]]
 name = "sp-core"
 version = "21.0.0"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "array-bytes",
  "bandersnatch_vrfs",
@@ -8143,7 +8106,7 @@ dependencies = [
  "blake2",
  "bounded-collections",
  "bs58",
- "dyn-clonable",
+ "dyn-clone",
  "ed25519-zebra",
  "futures",
  "hash-db",
@@ -8161,7 +8124,6 @@ dependencies = [
  "regex",
  "scale-info",
  "schnorrkel",
- "secrecy",
  "serde",
  "sp-core-hashing",
  "sp-debug-derive",
@@ -8179,7 +8141,7 @@ dependencies = [
 [[package]]
 name = "sp-core-hashing"
 version = "9.0.0"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "blake2b_simd",
  "byteorder",
@@ -8191,7 +8153,7 @@ dependencies = [
 [[package]]
 name = "sp-core-hashing-proc-macro"
 version = "9.0.0"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "quote",
  "sp-core-hashing",
@@ -8201,7 +8163,7 @@ dependencies = [
 [[package]]
 name = "sp-database"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "kvdb",
  "parking_lot 0.12.1",
@@ -8210,7 +8172,7 @@ dependencies = [
 [[package]]
 name = "sp-debug-derive"
 version = "8.0.0"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -8220,7 +8182,7 @@ dependencies = [
 [[package]]
 name = "sp-externalities"
 version = "0.19.0"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "environmental",
  "parity-scale-codec",
@@ -8231,7 +8193,7 @@ dependencies = [
 [[package]]
 name = "sp-genesis-builder"
 version = "0.1.0"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "sp-api",
  "sp-runtime",
@@ -8241,7 +8203,7 @@ dependencies = [
 [[package]]
 name = "sp-inherents"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "async-trait",
  "impl-trait-for-tuples",
@@ -8255,7 +8217,7 @@ dependencies = [
 [[package]]
 name = "sp-io"
 version = "23.0.0"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "bytes",
  "log",
@@ -8276,7 +8238,7 @@ dependencies = [
 [[package]]
 name = "sp-keyring"
 version = "24.0.0"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "lazy_static",
  "sp-core",
@@ -8287,7 +8249,7 @@ dependencies = [
 [[package]]
 name = "sp-keystore"
 version = "0.27.0"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "parity-scale-codec",
  "parking_lot 0.12.1",
@@ -8299,7 +8261,7 @@ dependencies = [
 [[package]]
 name = "sp-maybe-compressed-blob"
 version = "4.1.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "thiserror",
  "zstd 0.13.0",
@@ -8308,7 +8270,7 @@ dependencies = [
 [[package]]
 name = "sp-metadata-ir"
 version = "0.1.0"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "frame-metadata",
  "parity-scale-codec",
@@ -8319,7 +8281,7 @@ dependencies = [
 [[package]]
 name = "sp-offchain"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "sp-api",
  "sp-core",
@@ -8329,7 +8291,7 @@ dependencies = [
 [[package]]
 name = "sp-panic-handler"
 version = "8.0.0"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "backtrace",
  "lazy_static",
@@ -8339,7 +8301,7 @@ dependencies = [
 [[package]]
 name = "sp-rpc"
 version = "6.0.0"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "rustc-hash",
  "serde",
@@ -8349,7 +8311,7 @@ dependencies = [
 [[package]]
 name = "sp-runtime"
 version = "24.0.0"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "either",
  "hash256-std-hasher",
@@ -8371,7 +8333,7 @@ dependencies = [
 [[package]]
 name = "sp-runtime-interface"
 version = "17.0.0"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "bytes",
  "impl-trait-for-tuples",
@@ -8389,7 +8351,7 @@ dependencies = [
 [[package]]
 name = "sp-runtime-interface-proc-macro"
 version = "11.0.0"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "Inflector",
  "proc-macro-crate 2.0.0",
@@ -8401,7 +8363,7 @@ dependencies = [
 [[package]]
 name = "sp-session"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "parity-scale-codec",
  "scale-info",
@@ -8416,7 +8378,7 @@ dependencies = [
 [[package]]
 name = "sp-staking"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "impl-trait-for-tuples",
  "parity-scale-codec",
@@ -8430,7 +8392,7 @@ dependencies = [
 [[package]]
 name = "sp-state-machine"
 version = "0.28.0"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "hash-db",
  "log",
@@ -8451,12 +8413,12 @@ dependencies = [
 [[package]]
 name = "sp-std"
 version = "8.0.0"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 
 [[package]]
 name = "sp-storage"
 version = "13.0.0"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "impl-serde",
  "parity-scale-codec",
@@ -8469,7 +8431,7 @@ dependencies = [
 [[package]]
 name = "sp-timestamp"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "async-trait",
  "parity-scale-codec",
@@ -8482,7 +8444,7 @@ dependencies = [
 [[package]]
 name = "sp-tracing"
 version = "10.0.0"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "parity-scale-codec",
  "sp-std",
@@ -8494,7 +8456,7 @@ dependencies = [
 [[package]]
 name = "sp-transaction-pool"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "sp-api",
  "sp-runtime",
@@ -8503,7 +8465,7 @@ dependencies = [
 [[package]]
 name = "sp-trie"
 version = "22.0.0"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "ahash",
  "hash-db",
@@ -8527,7 +8489,7 @@ dependencies = [
 [[package]]
 name = "sp-version"
 version = "22.0.0"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "impl-serde",
  "parity-scale-codec",
@@ -8544,7 +8506,7 @@ dependencies = [
 [[package]]
 name = "sp-version-proc-macro"
 version = "8.0.0"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "parity-scale-codec",
  "proc-macro2",
@@ -8555,7 +8517,7 @@ dependencies = [
 [[package]]
 name = "sp-wasm-interface"
 version = "14.0.0"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "anyhow",
  "impl-trait-for-tuples",
@@ -8568,7 +8530,7 @@ dependencies = [
 [[package]]
 name = "sp-weights"
 version = "20.0.0"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "parity-scale-codec",
  "scale-info",
@@ -8706,12 +8668,12 @@ dependencies = [
 [[package]]
 name = "substrate-build-script-utils"
 version = "3.0.0"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 
 [[package]]
 name = "substrate-frame-rpc-system"
 version = "4.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "frame-system-rpc-runtime-api",
  "futures",
@@ -8730,7 +8692,7 @@ dependencies = [
 [[package]]
 name = "substrate-prometheus-endpoint"
 version = "0.10.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "hyper",
  "log",
@@ -8742,7 +8704,7 @@ dependencies = [
 [[package]]
 name = "substrate-wasm-builder"
 version = "5.0.0-dev"
-source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#2870e14359727983181622107510df8bdc8ebcb4"
+source = "git+https://github.com/serai-dex/polkadot-sdk?branch=experimental#16232194d8852c00df7f9e27b43e74c5b9786d89"
 dependencies = [
  "anstyle",
  "cargo_metadata",
@@ -9703,9 +9665,9 @@ dependencies = [
 
 [[package]]
 name = "wasmtime"
-version = "15.0.0"
+version = "15.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae4b1702ef55144d6f594085f4989dc71fb71a791be1c8354ecc8e489b81199b"
+checksum = "642e12d108e800215263e3b95972977f473957923103029d7d617db701d67ba4"
 dependencies = [
  "anyhow",
  "bincode",
@@ -9735,18 +9697,18 @@ dependencies = [
 
 [[package]]
 name = "wasmtime-asm-macros"
-version = "15.0.0"
+version = "15.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c981d0e87bb3e98e08e76644e7ae5dfdef7f1d4105145853f3d677bb4535d65f"
+checksum = "beada8bb15df52503de0a4c58de4357bfd2f96d9a44a6e547bad11efdd988b47"
 dependencies = [
  "cfg-if",
 ]
 
 [[package]]
 name = "wasmtime-cache"
-version = "15.0.0"
+version = "15.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d7ba8adaa84fdb9dd659275edcf7fc5282c44b9c9f829986c71d44fd52ea80a"
+checksum = "aba5bf44d044d25892c03fb3534373936ee204141ff92bac8297787ac7f22318"
 dependencies = [
  "anyhow",
  "base64 0.21.5",
@@ -9764,9 +9726,9 @@ dependencies = [
 
 [[package]]
 name = "wasmtime-cranelift"
-version = "15.0.0"
+version = "15.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1453665878e16245b9a25405e550c4a36c6731c6e34ea804edc002a38c3e6741"
+checksum = "fe2e7532f1d6adbcc57e69bb6a7c503f0859076d07a9b4b6aabe8021ff8a05fd"
 dependencies = [
  "anyhow",
  "cfg-if",
@@ -9789,9 +9751,9 @@ dependencies = [
 
 [[package]]
 name = "wasmtime-cranelift-shared"
-version = "15.0.0"
+version = "15.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3dface3d9b72b4670781ff72675eabb291e2836b5dded6bb312b577d2bb561f"
+checksum = "8c98d5378a856cbf058d36278627dfabf0ed68a888142958c7ae8e6af507dafa"
 dependencies = [
  "anyhow",
  "cranelift-codegen",
@@ -9805,9 +9767,9 @@ dependencies = [
 
 [[package]]
 name = "wasmtime-environ"
-version = "15.0.0"
+version = "15.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0116108e7d231cce15fe7dd642c66c3abb14dbcf169b0130e11f223ce8d1ad7"
+checksum = "a6d33a9f421da810a070cd56add9bc51f852bd66afbb8b920489d6242f15b70e"
 dependencies = [
  "anyhow",
  "cranelift-entity",
@@ -9825,9 +9787,9 @@ dependencies = [
 
 [[package]]
 name = "wasmtime-jit"
-version = "15.0.0"
+version = "15.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e32b210767452f6b20157bb7c7d98295b92cc47aaad2a8aa31652f4469813a5d"
+checksum = "8d0994a86d6dca5f7d9740d7f2bd0568be06d2014a550361dc1c397d289d81ef"
 dependencies = [
  "anyhow",
  "bincode",
@@ -9849,9 +9811,9 @@ dependencies = [
 
 [[package]]
 name = "wasmtime-jit-debug"
-version = "15.0.0"
+version = "15.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bffd2785a16c55ac77565613ebda625f5850d4014af0499df750e8de97c04547"
+checksum = "4e0c4b74e606d1462d648631d5bc328e3d5b14e7f9d3ff93bc6db062fb8c5cd8"
 dependencies = [
  "object",
  "once_cell",
@@ -9861,9 +9823,9 @@ dependencies = [
 
 [[package]]
 name = "wasmtime-jit-icache-coherence"
-version = "15.0.0"
+version = "15.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b73ad1395eda136baec5ece7e079e0536a82ef73488e345456cc9b89858ad0ec"
+checksum = "3090a69ba1476979e090aa7ed4bc759178bafdb65b22f98b9ba24fc6e7e578d5"
 dependencies = [
  "cfg-if",
  "libc",
@@ -9872,9 +9834,9 @@ dependencies = [
 
 [[package]]
 name = "wasmtime-runtime"
-version = "15.0.0"
+version = "15.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77b50f7f3c1a8dabb2607f32a81242917bd77cee75f3dec66e04b02ccbb8ba07"
+checksum = "b993ac8380385ed67bf71b51b9553edcf1ab0801b78a805a067de581b9a3e88a"
 dependencies = [
  "anyhow",
  "cc",
@@ -9900,9 +9862,9 @@ dependencies = [
 
 [[package]]
 name = "wasmtime-types"
-version = "15.0.0"
+version = "15.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "447973db3dc5c24db14130ab0922795c58790aec296d198ad9d253b82ec67471"
+checksum = "8b5778112fcab2dc3d4371f4203ab8facf0c453dd94312b0a88dd662955e64e0"
 dependencies = [
  "cranelift-entity",
  "serde",
@@ -9913,9 +9875,9 @@ dependencies = [
 
 [[package]]
 name = "wasmtime-versioned-export-macros"
-version = "15.0.0"
+version = "15.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a347bb8ecf12275fb180afb1b1c85c9e186553c43109737bffed4f54c2aa365"
+checksum = "f50f51f8d79bfd2aa8e9d9a0ae7c2d02b45fe412e62ff1b87c0c81b07c738231"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -9924,9 +9886,9 @@ dependencies = [
 
 [[package]]
 name = "wasmtime-wmemcheck"
-version = "15.0.0"
+version = "15.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "47907bdd67500c66fa308acbce7387c7bfb63b5505ef81be7fc897709afcca60"
+checksum = "9b6060bc082cc32d9a45587c7640e29e3c7b89ada82677ac25d87850aaccb368"
 
 [[package]]
 name = "web-sys"
diff --git a/Cargo.toml b/Cargo.toml
index 029f105df..f84e8f84b 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -36,6 +36,8 @@ members = [
   "coordinator/tributary",
   "coordinator",
 
+  "substrate/tree-cleanup/option-ext",
+  "substrate/tree-cleanup/directories-next",
   "substrate/tree-cleanup/bandersnatch_vrfs",
   "substrate/tree-cleanup/w3f-bls",
 
@@ -97,6 +99,17 @@ lazy_static = { git = "https://github.com/rust-lang-nursery/lazy-static.rs", rev
 sp-core-hashing = { git = "https://github.com/serai-dex/polkadot-sdk", branch = "experimental" }
 sp-std = { git = "https://github.com/serai-dex/polkadot-sdk", branch = "experimental" }
 
+# directories-next was created because directories was unmaintained
+# directories-next is now unmaintained while directories is maintained
+# The directories author pulls in ridiculously pointless crates and prefers
+# copyleft licenses
+# Serai's polkadot-sdk consolidated to directories-next, as directories-next is
+# acceptable and because we couldn't consolidate to directories without forking
+# wasmtime
+# The following two patches resolve everything
+option-ext = { path = "substrate/tree-cleanup/option-ext" }
+directories-next = { path = "substrate/tree-cleanup/directories-next" }
+
 # cargo believes the following are in-tree despite no features activating them
 # We provide empty crates to not only prove they're unused, yet also clean up
 # our Cargo.lock
diff --git a/substrate/tree-cleanup/directories-next/Cargo.toml b/substrate/tree-cleanup/directories-next/Cargo.toml
new file mode 100644
index 000000000..f7d733839
--- /dev/null
+++ b/substrate/tree-cleanup/directories-next/Cargo.toml
@@ -0,0 +1,17 @@
+[package]
+name = "directories-next"
+version = "2.0.0"
+description = "Patch from directories-next back to directories"
+license = "MIT"
+repository = "https://github.com/serai-dex/serai/tree/develop/substrate/tree-cleanup/directories-next"
+authors = ["Luke Parker <lukeparker5132@gmail.com>"]
+keywords = []
+edition = "2021"
+rust-version = "1.74"
+
+[package.metadata.docs.rs]
+all-features = true
+rustdoc-args = ["--cfg", "docsrs"]
+
+[dependencies]
+directories = "5"
diff --git a/substrate/tree-cleanup/directories-next/src/lib.rs b/substrate/tree-cleanup/directories-next/src/lib.rs
new file mode 100644
index 000000000..fb4871e65
--- /dev/null
+++ b/substrate/tree-cleanup/directories-next/src/lib.rs
@@ -0,0 +1 @@
+pub use directories::*;
diff --git a/substrate/tree-cleanup/option-ext/Cargo.toml b/substrate/tree-cleanup/option-ext/Cargo.toml
new file mode 100644
index 000000000..6940b9673
--- /dev/null
+++ b/substrate/tree-cleanup/option-ext/Cargo.toml
@@ -0,0 +1,14 @@
+[package]
+name = "option-ext"
+version = "0.2.0"
+description = "Non-MPL option-ext with the exactly needed API for directories"
+license = "MIT"
+repository = "https://github.com/serai-dex/serai/tree/develop/substrate/tree-cleanup/option-ext"
+authors = ["Luke Parker <lukeparker5132@gmail.com>"]
+keywords = []
+edition = "2021"
+rust-version = "1.74"
+
+[package.metadata.docs.rs]
+all-features = true
+rustdoc-args = ["--cfg", "docsrs"]
diff --git a/substrate/tree-cleanup/option-ext/src/lib.rs b/substrate/tree-cleanup/option-ext/src/lib.rs
new file mode 100644
index 000000000..b075111ce
--- /dev/null
+++ b/substrate/tree-cleanup/option-ext/src/lib.rs
@@ -0,0 +1,8 @@
+pub trait OptionExt<T: PartialEq> {
+  fn contains(&self, x: &T) -> bool;
+}
+impl<T: PartialEq> OptionExt<T> for Option<T> {
+  fn contains(&self, x: &T) -> bool {
+    self.as_ref() == Some(x)
+  }
+}