diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index e3ac2d5ddc7af0a8c2ec2ed4fe7dcae1d580d0ed_LmdpdGxhYi1jaS55bWw=..fe28610183a8f50cf1a155faf809eb359db30168_LmdpdGxhYi1jaS55bWw= 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -91,10 +91,8 @@
       - ${RHGITALY_EXECUTABLE}
 
 tests-hg-current:
-  variables:
-    HGITALY_TESTS_HG_EXE_PATH: /usr/local/bin/hg
   extends:
     - .pytests
   stage: main
   image: ${BASE_IMAGES_MERCURIAL}/hg-current:${BASE_IMAGES_TAG}
 
@@ -96,6 +94,12 @@
   extends:
     - .pytests
   stage: main
   image: ${BASE_IMAGES_MERCURIAL}/hg-current:${BASE_IMAGES_TAG}
 
+tests-py3.9:
+  extends:
+    - .pytests
+  stage: compat
+  image: ${BASE_IMAGES_MERCURIAL}/hg-current:${BASE_IMAGES_TAG}-py3.9
+
 tests-hg-stable:
@@ -101,6 +105,4 @@
 tests-hg-stable:
-  variables:
-    HGITALY_TESTS_HG_EXE_PATH: /usr/local/bin/hg
   extends:
     - .pytests
     - .only_hgitaly_default
@@ -109,8 +111,6 @@
   image: ${BASE_IMAGES_MERCURIAL}/hg-stable:${BASE_IMAGES_TAG}
 
 tests-hg-default:
-  variables:
-    HGITALY_TESTS_HG_EXE_PATH: /usr/local/bin/hg
   extends:
     - .pytests
     - .only_hgitaly_default
diff --git a/.hgtags b/.hgtags
index e3ac2d5ddc7af0a8c2ec2ed4fe7dcae1d580d0ed_LmhndGFncw==..fe28610183a8f50cf1a155faf809eb359db30168_LmhndGFncw== 100644
--- a/.hgtags
+++ b/.hgtags
@@ -137,3 +137,4 @@
 e9f5b758dbc13eb7dc1f44b8246bbef0dcc74f1a 17.8.3
 c2dc21a71ccd0cbe8c33ae9b8ff28128e0d977bd 17.8.4
 ac2aa9b92e0d157d1d51cc7864ed4658a2ecdb32 17.9.0
+1febbc24f370e41ac50979a84fdc36a8eef85a41 17.9.1
diff --git a/hgitaly/VERSION b/hgitaly/VERSION
index e3ac2d5ddc7af0a8c2ec2ed4fe7dcae1d580d0ed_aGdpdGFseS9WRVJTSU9O..fe28610183a8f50cf1a155faf809eb359db30168_aGdpdGFseS9WRVJTSU9O 100644
--- a/hgitaly/VERSION
+++ b/hgitaly/VERSION
@@ -1,1 +1,1 @@
-17.9.1dev0
+17.9.2dev0
diff --git a/rust/Cargo.lock b/rust/Cargo.lock
index e3ac2d5ddc7af0a8c2ec2ed4fe7dcae1d580d0ed_cnVzdC9DYXJnby5sb2Nr..fe28610183a8f50cf1a155faf809eb359db30168_cnVzdC9DYXJnby5sb2Nr 100644
--- a/rust/Cargo.lock
+++ b/rust/Cargo.lock
@@ -3,6 +3,6 @@
 version = 3
 
 [[package]]
-name = "adler"
-version = "1.0.2"
+name = "addr2line"
+version = "0.24.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -8,5 +8,14 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
+checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1"
+dependencies = [
+ "gimli",
+]
+
+[[package]]
+name = "adler2"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"
 
 [[package]]
 name = "ahash"
@@ -10,5 +19,5 @@
 
 [[package]]
 name = "ahash"
-version = "0.8.3"
+version = "0.8.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -14,4 +23,4 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f"
+checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
 dependencies = [
  "cfg-if 1.0.0",
@@ -16,4 +25,5 @@
 dependencies = [
  "cfg-if 1.0.0",
+ "getrandom 0.2.15",
  "once_cell",
  "version_check",
@@ -18,6 +28,7 @@
  "once_cell",
  "version_check",
+ "zerocopy 0.7.35",
 ]
 
 [[package]]
 name = "aho-corasick"
@@ -20,6 +31,6 @@
 ]
 
 [[package]]
 name = "aho-corasick"
-version = "1.1.2"
+version = "1.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -25,5 +36,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
 dependencies = [
  "memchr",
 ]
@@ -45,5 +56,5 @@
 
 [[package]]
 name = "anyhow"
-version = "1.0.70"
+version = "1.0.97"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -49,5 +60,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4"
+checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f"
 
 [[package]]
 name = "async-stream"
@@ -51,5 +62,5 @@
 
 [[package]]
 name = "async-stream"
-version = "0.3.4"
+version = "0.3.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -55,5 +66,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ad445822218ce64be7a341abfb0b1ea43b5c23aa83902542a4542e78309d8e5e"
+checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476"
 dependencies = [
  "async-stream-impl",
  "futures-core",
@@ -62,5 +73,5 @@
 
 [[package]]
 name = "async-stream-impl"
-version = "0.3.4"
+version = "0.3.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -66,5 +77,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e4655ae1a7b0cdf149156f780c5bf3f1352bc53cbd9e0a361a7ef7b22947e965"
+checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -68,8 +79,8 @@
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 1.0.109",
+ "syn 2.0.100",
 ]
 
 [[package]]
 name = "async-trait"
@@ -72,6 +83,6 @@
 ]
 
 [[package]]
 name = "async-trait"
-version = "0.1.68"
+version = "0.1.88"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -77,5 +88,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842"
+checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -79,19 +90,8 @@
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.48",
-]
-
-[[package]]
-name = "atty"
-version = "0.2.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
-dependencies = [
- "hermit-abi 0.1.19",
- "libc",
- "winapi",
+ "syn 2.0.100",
 ]
 
 [[package]]
 name = "autocfg"
@@ -94,6 +94,6 @@
 ]
 
 [[package]]
 name = "autocfg"
-version = "1.1.0"
+version = "1.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -99,5 +99,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
 
 [[package]]
 name = "axum"
@@ -101,5 +101,5 @@
 
 [[package]]
 name = "axum"
-version = "0.6.12"
+version = "0.6.20"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -105,5 +105,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "349f8ccfd9221ee7d1f3d4b33e1f8319b3a81ed8f61f2ea40b37b859794b4491"
+checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf"
 dependencies = [
  "async-trait",
  "axum-core",
@@ -129,5 +129,5 @@
 
 [[package]]
 name = "axum-core"
-version = "0.3.3"
+version = "0.3.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -133,5 +133,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2f958c80c248b34b9a877a643811be8dbca03ca5ba827f2b63baf3a81e5fc4e"
+checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c"
 dependencies = [
  "async-trait",
  "bytes",
@@ -145,4 +145,19 @@
 ]
 
 [[package]]
+name = "backtrace"
+version = "0.3.74"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a"
+dependencies = [
+ "addr2line",
+ "cfg-if 1.0.0",
+ "libc",
+ "miniz_oxide",
+ "object",
+ "rustc-demangle",
+ "windows-targets",
+]
+
+[[package]]
 name = "base64"
@@ -148,3 +163,9 @@
 name = "base64"
-version = "0.21.2"
+version = "0.21.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
+
+[[package]]
+name = "bit-set"
+version = "0.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -150,5 +171,14 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d"
+checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3"
+dependencies = [
+ "bit-vec",
+]
+
+[[package]]
+name = "bit-vec"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7"
 
 [[package]]
 name = "bitflags"
@@ -158,5 +188,5 @@
 
 [[package]]
 name = "bitflags"
-version = "2.5.0"
+version = "2.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -162,5 +192,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"
+checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd"
 
 [[package]]
 name = "bitmaps"
@@ -200,5 +230,5 @@
 
 [[package]]
 name = "bumpalo"
-version = "3.15.4"
+version = "3.17.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -204,5 +234,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa"
+checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf"
 
 [[package]]
 name = "byteorder"
@@ -206,5 +236,5 @@
 
 [[package]]
 name = "byteorder"
-version = "1.4.3"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -210,5 +240,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
+checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
 
 [[package]]
 name = "bytes"
@@ -212,5 +242,5 @@
 
 [[package]]
 name = "bytes"
-version = "1.4.0"
+version = "1.10.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -216,5 +246,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be"
+checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a"
 
 [[package]]
 name = "bytes-cast"
@@ -238,5 +268,5 @@
 
 [[package]]
 name = "cc"
-version = "1.0.79"
+version = "1.2.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -242,4 +272,4 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
+checksum = "1fcb57c740ae1daf453ae85f16e37396f672b039e00d9d866e07ddb24e328e3a"
 dependencies = [
  "jobserver",
@@ -244,5 +274,7 @@
 dependencies = [
  "jobserver",
+ "libc",
+ "shlex",
 ]
 
 [[package]]
@@ -265,5 +297,5 @@
 
 [[package]]
 name = "chrono"
-version = "0.4.37"
+version = "0.4.40"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -269,8 +301,8 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a0d04d43504c61aa6c7531f1871dd0d418d91130162063b789da00fd7057a5e"
+checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c"
 dependencies = [
  "android-tzdata",
  "iana-time-zone",
  "js-sys",
  "num-traits",
  "wasm-bindgen",
@@ -271,11 +303,11 @@
 dependencies = [
  "android-tzdata",
  "iana-time-zone",
  "js-sys",
  "num-traits",
  "wasm-bindgen",
- "windows-targets 0.52.4",
+ "windows-link",
 ]
 
 [[package]]
 name = "clap"
@@ -278,6 +310,6 @@
 ]
 
 [[package]]
 name = "clap"
-version = "4.0.24"
+version = "4.0.32"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -283,3 +315,3 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "60494cedb60cb47462c0ff7be53de32c0e42a6fc2c772184554fa12bd9489c03"
+checksum = "a7db700bc935f9e43e88d00b0850dae18a63773cfbec6d8e070fccf7fef89a39"
 dependencies = [
@@ -285,5 +317,4 @@
 dependencies = [
- "atty",
  "bitflags 1.3.2",
  "clap_derive",
  "clap_lex",
@@ -287,6 +318,7 @@
  "bitflags 1.3.2",
  "clap_derive",
  "clap_lex",
+ "is-terminal",
  "once_cell",
  "strsim",
  "termcolor",
@@ -298,7 +330,7 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0177313f9f02afc995627906bbd8967e2be069f5261954222dac78290c2b9014"
 dependencies = [
- "heck",
+ "heck 0.4.1",
  "proc-macro-error",
  "proc-macro2",
  "quote",
@@ -307,5 +339,5 @@
 
 [[package]]
 name = "clap_lex"
-version = "0.3.0"
+version = "0.3.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -311,7 +343,7 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0d4198f73e42b4936b35b5bb248d81d2b595ecb170da0bac7655c54eedfa8da8"
+checksum = "033f6b7a4acb1f358c742aaca805c939ee73b4c6209ae4318ec7aca81c42e646"
 dependencies = [
  "os_str_bytes",
 ]
 
 [[package]]
@@ -313,8 +345,21 @@
 dependencies = [
  "os_str_bytes",
 ]
 
 [[package]]
+name = "console"
+version = "0.15.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8"
+dependencies = [
+ "encode_unicode",
+ "libc",
+ "once_cell",
+ "unicode-width",
+ "windows-sys 0.59.0",
+]
+
+[[package]]
 name = "convert_case"
 version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -322,5 +367,5 @@
 
 [[package]]
 name = "core-foundation-sys"
-version = "0.8.6"
+version = "0.8.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -326,5 +371,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
+checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
 
 [[package]]
 name = "cpufeatures"
@@ -328,5 +373,5 @@
 
 [[package]]
 name = "cpufeatures"
-version = "0.2.5"
+version = "0.2.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -332,8 +377,8 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320"
+checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
 dependencies = [
  "libc",
 ]
 
 [[package]]
 name = "crc32fast"
@@ -334,8 +379,8 @@
 dependencies = [
  "libc",
 ]
 
 [[package]]
 name = "crc32fast"
-version = "1.3.2"
+version = "1.4.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -341,8 +386,8 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
+checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3"
 dependencies = [
  "cfg-if 1.0.0",
 ]
 
 [[package]]
 name = "crossbeam-channel"
@@ -343,8 +388,8 @@
 dependencies = [
  "cfg-if 1.0.0",
 ]
 
 [[package]]
 name = "crossbeam-channel"
-version = "0.5.7"
+version = "0.5.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -350,3 +395,3 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c"
+checksum = "06ba6d68e24814cb8de6bb986db8222d3a027d15872cabc0d18817bc3c0e4471"
 dependencies = [
@@ -352,7 +397,6 @@
 dependencies = [
- "cfg-if 1.0.0",
  "crossbeam-utils",
 ]
 
 [[package]]
 name = "crossbeam-deque"
@@ -354,7 +398,7 @@
  "crossbeam-utils",
 ]
 
 [[package]]
 name = "crossbeam-deque"
-version = "0.8.3"
+version = "0.8.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -360,3 +404,3 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
+checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51"
 dependencies = [
@@ -362,8 +406,7 @@
 dependencies = [
- "cfg-if 1.0.0",
  "crossbeam-epoch",
  "crossbeam-utils",
 ]
 
 [[package]]
 name = "crossbeam-epoch"
@@ -364,8 +407,8 @@
  "crossbeam-epoch",
  "crossbeam-utils",
 ]
 
 [[package]]
 name = "crossbeam-epoch"
-version = "0.9.14"
+version = "0.9.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -371,3 +414,3 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695"
+checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
 dependencies = [
@@ -373,4 +416,2 @@
 dependencies = [
- "autocfg",
- "cfg-if 1.0.0",
  "crossbeam-utils",
@@ -376,7 +417,5 @@
  "crossbeam-utils",
- "memoffset",
- "scopeguard",
 ]
 
 [[package]]
 name = "crossbeam-utils"
@@ -379,6 +418,6 @@
 ]
 
 [[package]]
 name = "crossbeam-utils"
-version = "0.8.15"
+version = "0.8.21"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -384,8 +423,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b"
-dependencies = [
- "cfg-if 1.0.0",
-]
+checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
 
 [[package]]
 name = "crypto-common"
@@ -398,6 +434,6 @@
 ]
 
 [[package]]
-name = "ctor"
-version = "0.1.26"
+name = "ctrlc"
+version = "3.4.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -403,3 +439,3 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096"
+checksum = "90eeab0aa92f3f9b4e87f258c72b139c207d251f9cbc1080a0086b86a8870dd3"
 dependencies = [
@@ -405,7 +441,7 @@
 dependencies = [
- "quote",
- "syn 1.0.109",
+ "nix",
+ "windows-sys 0.59.0",
 ]
 
 [[package]]
 name = "derive_more"
@@ -408,6 +444,6 @@
 ]
 
 [[package]]
 name = "derive_more"
-version = "0.99.17"
+version = "0.99.19"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -413,6 +449,6 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321"
+checksum = "3da29a38df43d6f156149c9b43ded5e018ddff2a855cf2cfd62e8cd7d079c69f"
 dependencies = [
  "convert_case",
  "proc-macro2",
  "quote",
@@ -415,9 +451,9 @@
 dependencies = [
  "convert_case",
  "proc-macro2",
  "quote",
- "rustc_version 0.4.0",
- "syn 1.0.109",
+ "rustc_version 0.4.1",
+ "syn 2.0.100",
 ]
 
 [[package]]
@@ -428,5 +464,5 @@
 
 [[package]]
 name = "digest"
-version = "0.10.6"
+version = "0.10.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -432,8 +468,8 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f"
+checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
 dependencies = [
  "block-buffer",
  "crypto-common",
 ]
 
 [[package]]
@@ -434,7 +470,13 @@
 dependencies = [
  "block-buffer",
  "crypto-common",
 ]
 
 [[package]]
+name = "dyn-clone"
+version = "1.0.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005"
+
+[[package]]
 name = "either"
@@ -440,3 +482,3 @@
 name = "either"
-version = "1.8.1"
+version = "1.15.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -442,5 +484,11 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
+checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
+
+[[package]]
+name = "encode_unicode"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0"
 
 [[package]]
 name = "enry"
@@ -451,5 +499,5 @@
 
 [[package]]
 name = "equivalent"
-version = "1.0.1"
+version = "1.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -455,5 +503,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
+checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
 
 [[package]]
 name = "errno"
@@ -457,5 +505,5 @@
 
 [[package]]
 name = "errno"
-version = "0.2.8"
+version = "0.3.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -461,3 +509,3 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1"
+checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d"
 dependencies = [
@@ -463,3 +511,2 @@
 dependencies = [
- "errno-dragonfly",
  "libc",
@@ -465,16 +512,6 @@
  "libc",
- "winapi",
-]
-
-[[package]]
-name = "errno-dragonfly"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
-dependencies = [
- "cc",
- "libc",
+ "windows-sys 0.59.0",
 ]
 
 [[package]]
 name = "fastrand"
@@ -477,6 +514,6 @@
 ]
 
 [[package]]
 name = "fastrand"
-version = "1.9.0"
+version = "2.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -482,3 +519,9 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be"
+checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
+
+[[package]]
+name = "filetime"
+version = "0.2.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586"
 dependencies = [
@@ -484,5 +527,8 @@
 dependencies = [
- "instant",
+ "cfg-if 1.0.0",
+ "libc",
+ "libredox",
+ "windows-sys 0.59.0",
 ]
 
 [[package]]
@@ -493,5 +539,5 @@
 
 [[package]]
 name = "flate2"
-version = "1.0.25"
+version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -497,5 +543,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a8a2db397cb1c8772f31494cb8917e48cd1e64f0fa7efac59fbd741a0a8ce841"
+checksum = "11faaf5a5236997af9848be0bef4db95824b1d534ebc64d0f0c6cf3e67bd38dc"
 dependencies = [
  "crc32fast",
  "libz-sys",
@@ -510,5 +556,5 @@
 
 [[package]]
 name = "form_urlencoded"
-version = "1.1.0"
+version = "1.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -514,5 +560,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
+checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
 dependencies = [
  "percent-encoding",
 ]
@@ -545,5 +591,5 @@
 
 [[package]]
 name = "futures"
-version = "0.3.27"
+version = "0.3.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -549,5 +595,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "531ac96c6ff5fd7c62263c5e3c67a603af4fcaee2e1a0ae5565ba3a11e69e549"
+checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876"
 dependencies = [
  "futures-channel",
  "futures-core",
@@ -560,5 +606,5 @@
 
 [[package]]
 name = "futures-channel"
-version = "0.3.27"
+version = "0.3.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -564,5 +610,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac"
+checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10"
 dependencies = [
  "futures-core",
  "futures-sink",
@@ -570,5 +616,5 @@
 
 [[package]]
 name = "futures-core"
-version = "0.3.27"
+version = "0.3.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -574,5 +620,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd"
+checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e"
 
 [[package]]
 name = "futures-executor"
@@ -576,5 +622,5 @@
 
 [[package]]
 name = "futures-executor"
-version = "0.3.27"
+version = "0.3.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -580,5 +626,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83"
+checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f"
 dependencies = [
  "futures-core",
  "futures-task",
@@ -587,5 +633,5 @@
 
 [[package]]
 name = "futures-io"
-version = "0.3.28"
+version = "0.3.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -591,5 +637,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964"
+checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6"
 
 [[package]]
 name = "futures-macro"
@@ -593,5 +639,5 @@
 
 [[package]]
 name = "futures-macro"
-version = "0.3.27"
+version = "0.3.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -597,5 +643,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6"
+checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -599,8 +645,8 @@
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 1.0.109",
+ "syn 2.0.100",
 ]
 
 [[package]]
 name = "futures-sink"
@@ -603,6 +649,6 @@
 ]
 
 [[package]]
 name = "futures-sink"
-version = "0.3.27"
+version = "0.3.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -608,5 +654,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec93083a4aecafb2a80a885c9de1f0ccae9dbd32c2bb54b0c3a65690e0b8d2f2"
+checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7"
 
 [[package]]
 name = "futures-task"
@@ -610,5 +656,5 @@
 
 [[package]]
 name = "futures-task"
-version = "0.3.27"
+version = "0.3.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -614,5 +660,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879"
+checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988"
 
 [[package]]
 name = "futures-util"
@@ -616,5 +662,5 @@
 
 [[package]]
 name = "futures-util"
-version = "0.3.27"
+version = "0.3.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -620,5 +666,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab"
+checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81"
 dependencies = [
  "futures-channel",
  "futures-core",
@@ -634,5 +680,5 @@
 
 [[package]]
 name = "generic-array"
-version = "0.14.6"
+version = "0.14.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -638,5 +684,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9"
+checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
 dependencies = [
  "typenum",
  "version_check",
@@ -644,5 +690,5 @@
 
 [[package]]
 name = "getrandom"
-version = "0.2.8"
+version = "0.2.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -648,5 +694,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
+checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
 dependencies = [
  "cfg-if 1.0.0",
  "libc",
@@ -650,7 +696,7 @@
 dependencies = [
  "cfg-if 1.0.0",
  "libc",
- "wasi",
+ "wasi 0.11.0+wasi-snapshot-preview1",
 ]
 
 [[package]]
@@ -654,6 +700,24 @@
 ]
 
 [[package]]
+name = "getrandom"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0"
+dependencies = [
+ "cfg-if 1.0.0",
+ "libc",
+ "r-efi",
+ "wasi 0.14.2+wasi-0.2.4",
+]
+
+[[package]]
+name = "gimli"
+version = "0.31.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f"
+
+[[package]]
 name = "h2"
 version = "0.3.26"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -665,7 +729,7 @@
  "futures-sink",
  "futures-util",
  "http",
- "indexmap 2.1.0",
+ "indexmap 2.8.0",
  "slab",
  "tokio",
  "tokio-util",
@@ -690,5 +754,5 @@
 
 [[package]]
 name = "hashbrown"
-version = "0.14.3"
+version = "0.15.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -694,5 +758,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604"
+checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289"
 
 [[package]]
 name = "heck"
@@ -701,6 +765,6 @@
 checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
 
 [[package]]
-name = "hermit-abi"
-version = "0.1.19"
+name = "heck"
+version = "0.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -706,8 +770,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
-dependencies = [
- "libc",
-]
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
 
 [[package]]
 name = "hermit-abi"
@@ -711,5 +772,5 @@
 
 [[package]]
 name = "hermit-abi"
-version = "0.2.6"
+version = "0.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -715,16 +776,7 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
-dependencies = [
- "libc",
-]
-
-[[package]]
-name = "hermit-abi"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286"
+checksum = "fbd780fe5cc30f81464441920d82ac8740e2e46b29a6fad543ddd075229ce37e"
 
 [[package]]
 name = "hg-core"
 version = "0.1.0"
 dependencies = [
@@ -726,9 +778,10 @@
 
 [[package]]
 name = "hg-core"
 version = "0.1.0"
 dependencies = [
+ "bit-set",
  "bitflags 1.3.2",
  "bitvec",
  "byteorder",
  "bytes-cast",
@@ -731,7 +784,8 @@
  "bitflags 1.3.2",
  "bitvec",
  "byteorder",
  "bytes-cast",
+ "cc",
  "chrono",
  "clap",
  "crossbeam-channel",
@@ -735,4 +789,5 @@
  "chrono",
  "clap",
  "crossbeam-channel",
+ "ctrlc",
  "derive_more",
@@ -738,6 +793,8 @@
  "derive_more",
+ "dyn-clone",
+ "filetime",
  "flate2",
  "format-bytes",
  "hashbrown 0.13.2",
  "home",
  "im-rc",
@@ -739,10 +796,11 @@
  "flate2",
  "format-bytes",
  "hashbrown 0.13.2",
  "home",
  "im-rc",
+ "indicatif",
  "itertools 0.10.5",
  "lazy_static",
  "libc",
  "log",
  "logging_timer",
@@ -744,8 +802,9 @@
  "itertools 0.10.5",
  "lazy_static",
  "libc",
  "log",
  "logging_timer",
+ "memchr",
  "memmap2",
  "once_cell",
  "pretty_assertions",
@@ -749,8 +808,8 @@
  "memmap2",
  "once_cell",
  "pretty_assertions",
- "rand",
+ "rand 0.8.5",
  "rand_distr",
  "rand_pcg",
  "rayon",
  "regex",
@@ -753,5 +812,7 @@
  "rand_distr",
  "rand_pcg",
  "rayon",
  "regex",
+ "regex-automata",
+ "regex-syntax",
  "same-file",
@@ -757,4 +818,5 @@
  "same-file",
+ "schnellru",
  "self_cell",
  "serde",
  "sha-1",
@@ -758,7 +820,8 @@
  "self_cell",
  "serde",
  "sha-1",
+ "static_assertions_next",
  "tempfile",
  "thread_local",
  "toml",
  "twox-hash",
@@ -761,9 +824,11 @@
  "tempfile",
  "thread_local",
  "toml",
  "twox-hash",
+ "unicode-width",
+ "uuid",
  "zstd",
 ]
 
 [[package]]
 name = "home"
@@ -765,7 +830,7 @@
  "zstd",
 ]
 
 [[package]]
 name = "home"
-version = "0.5.4"
+version = "0.5.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -771,3 +836,3 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "747309b4b440c06d57b0b25f2aee03ee9b5e5397d288c60e21fc709bb98a7408"
+checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5"
 dependencies = [
@@ -773,6 +838,6 @@
 dependencies = [
- "winapi",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
 name = "http"
@@ -775,6 +840,6 @@
 ]
 
 [[package]]
 name = "http"
-version = "0.2.9"
+version = "0.2.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -780,5 +845,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482"
+checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1"
 dependencies = [
  "bytes",
  "fnv",
@@ -787,5 +852,5 @@
 
 [[package]]
 name = "http-body"
-version = "0.4.5"
+version = "0.4.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -791,5 +856,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1"
+checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2"
 dependencies = [
  "bytes",
  "http",
@@ -798,5 +863,5 @@
 
 [[package]]
 name = "httparse"
-version = "1.8.0"
+version = "1.10.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -802,5 +867,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904"
+checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87"
 
 [[package]]
 name = "httpdate"
@@ -804,5 +869,5 @@
 
 [[package]]
 name = "httpdate"
-version = "1.0.2"
+version = "1.0.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -808,5 +873,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421"
+checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
 
 [[package]]
 name = "hyper"
@@ -810,5 +875,5 @@
 
 [[package]]
 name = "hyper"
-version = "0.14.28"
+version = "0.14.32"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -814,5 +879,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80"
+checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7"
 dependencies = [
  "bytes",
  "futures-channel",
@@ -846,5 +911,5 @@
 
 [[package]]
 name = "iana-time-zone"
-version = "0.1.60"
+version = "0.1.62"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -850,7 +915,7 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141"
+checksum = "b2fd658b06e56721792c5df4475705b6cda790e9298d19d2f8af083457bcd127"
 dependencies = [
  "android_system_properties",
  "core-foundation-sys",
  "iana-time-zone-haiku",
  "js-sys",
@@ -852,8 +917,9 @@
 dependencies = [
  "android_system_properties",
  "core-foundation-sys",
  "iana-time-zone-haiku",
  "js-sys",
+ "log",
  "wasm-bindgen",
  "windows-core",
 ]
@@ -884,7 +950,7 @@
 checksum = "af1955a75fa080c677d3972822ec4bad316169ab1cfc6c257a942c2265dbe5fe"
 dependencies = [
  "bitmaps",
- "rand_core",
+ "rand_core 0.6.4",
  "rand_xoshiro",
  "sized-chunks",
  "typenum",
@@ -903,5 +969,5 @@
 
 [[package]]
 name = "indexmap"
-version = "2.1.0"
+version = "2.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -907,4 +973,4 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f"
+checksum = "3954d50fe15b02142bf25d3b8bdadb634ec3948f103d04ffe3031bc8fe9d7058"
 dependencies = [
  "equivalent",
@@ -909,6 +975,6 @@
 dependencies = [
  "equivalent",
- "hashbrown 0.14.3",
+ "hashbrown 0.15.2",
 ]
 
 [[package]]
@@ -912,6 +978,6 @@
 ]
 
 [[package]]
-name = "instant"
-version = "0.1.12"
+name = "indicatif"
+version = "0.17.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -917,3 +983,3 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
+checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235"
 dependencies = [
@@ -919,5 +985,9 @@
 dependencies = [
- "cfg-if 1.0.0",
+ "console",
+ "number_prefix",
+ "portable-atomic",
+ "unicode-width",
+ "web-time",
 ]
 
 [[package]]
@@ -921,6 +991,6 @@
 ]
 
 [[package]]
-name = "io-lifetimes"
-version = "1.0.7"
+name = "is-terminal"
+version = "0.4.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -926,3 +996,3 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "76e86b86ae312accbf05ade23ce76b625e0e47a255712b7414037385a1c05380"
+checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9"
 dependencies = [
@@ -928,3 +998,3 @@
 dependencies = [
- "hermit-abi 0.3.1",
+ "hermit-abi",
  "libc",
@@ -930,5 +1000,5 @@
  "libc",
- "windows-sys 0.45.0",
+ "windows-sys 0.59.0",
 ]
 
 [[package]]
@@ -942,6 +1012,15 @@
 
 [[package]]
 name = "itertools"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itertools"
 version = "0.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
@@ -951,5 +1030,5 @@
 
 [[package]]
 name = "itoa"
-version = "1.0.6"
+version = "1.0.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -955,5 +1034,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
+checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
 
 [[package]]
 name = "jobserver"
@@ -957,5 +1036,5 @@
 
 [[package]]
 name = "jobserver"
-version = "0.1.26"
+version = "0.1.32"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -961,8 +1040,8 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2"
+checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0"
 dependencies = [
  "libc",
 ]
 
 [[package]]
 name = "js-sys"
@@ -963,8 +1042,8 @@
 dependencies = [
  "libc",
 ]
 
 [[package]]
 name = "js-sys"
-version = "0.3.69"
+version = "0.3.77"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -970,3 +1049,3 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d"
+checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f"
 dependencies = [
@@ -972,6 +1051,7 @@
 dependencies = [
+ "once_cell",
  "wasm-bindgen",
 ]
 
 [[package]]
 name = "lazy_static"
@@ -973,7 +1053,7 @@
  "wasm-bindgen",
 ]
 
 [[package]]
 name = "lazy_static"
-version = "1.4.0"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -979,5 +1059,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
 
 [[package]]
 name = "libc"
@@ -981,5 +1061,5 @@
 
 [[package]]
 name = "libc"
-version = "0.2.155"
+version = "0.2.171"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -985,5 +1065,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"
+checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6"
 
 [[package]]
 name = "libm"
@@ -987,5 +1067,5 @@
 
 [[package]]
 name = "libm"
-version = "0.2.6"
+version = "0.2.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -991,5 +1071,16 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "348108ab3fba42ec82ff6e9564fc4ca0247bdccdc68dd8af9764bbc79c3c8ffb"
+checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa"
+
+[[package]]
+name = "libredox"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"
+dependencies = [
+ "bitflags 2.9.0",
+ "libc",
+ "redox_syscall",
+]
 
 [[package]]
 name = "libz-sys"
@@ -993,5 +1084,5 @@
 
 [[package]]
 name = "libz-sys"
-version = "1.1.8"
+version = "1.1.22"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -997,5 +1088,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9702761c3935f8cc2f101793272e202c72b99da8f4224a19ddcf1279a6450bbf"
+checksum = "8b70e7a7df205e92a1a4cd9aaae7898dac0aa555503cc0a649494d0d60e7651d"
 dependencies = [
  "cc",
  "pkg-config",
@@ -1004,5 +1095,5 @@
 
 [[package]]
 name = "linux-raw-sys"
-version = "0.1.4"
+version = "0.9.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1008,5 +1099,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4"
+checksum = "fe7db12097d22ec582439daf8618b8fdd1a7bef6270e9af3b1ebcd30893cf413"
 
 [[package]]
 name = "log"
@@ -1010,5 +1101,5 @@
 
 [[package]]
 name = "log"
-version = "0.4.17"
+version = "0.4.27"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1014,8 +1105,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
-dependencies = [
- "cfg-if 1.0.0",
-]
+checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94"
 
 [[package]]
 name = "logging_timer"
@@ -1019,5 +1107,5 @@
 
 [[package]]
 name = "logging_timer"
-version = "1.1.0"
+version = "1.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1023,5 +1111,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "64e96f261d684b7089aa576bb74e823241dccd994b27d30fabf1dcb3af284fe9"
+checksum = "5669c09dbcb4a0b5f6de8364154495574238e18d6736bbdaa7726307f3268471"
 dependencies = [
  "log",
  "logging_timer_proc_macros",
@@ -1029,5 +1117,5 @@
 
 [[package]]
 name = "logging_timer_proc_macros"
-version = "1.1.0"
+version = "1.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1033,5 +1121,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "10a9062912d7952c5588cc474795e0b9ee008e7e6781127945b85413d4b99d81"
+checksum = "27906ca51651609191eeb2d1fdc6b52b8024789ec188b07aad88b6dfbe392fbe"
 dependencies = [
  "log",
  "proc-macro2",
@@ -1041,5 +1129,5 @@
 
 [[package]]
 name = "matchit"
-version = "0.7.0"
+version = "0.7.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1045,5 +1133,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b87248edafb776e59e6ee64a79086f65890d3510f2c656c000bf2a7e8a0aea40"
+checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94"
 
 [[package]]
 name = "memchr"
@@ -1047,5 +1135,5 @@
 
 [[package]]
 name = "memchr"
-version = "2.5.0"
+version = "2.7.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1051,5 +1139,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
 
 [[package]]
 name = "memmap2"
@@ -1062,15 +1150,6 @@
 ]
 
 [[package]]
-name = "memoffset"
-version = "0.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
-dependencies = [
- "autocfg",
-]
-
-[[package]]
 name = "mime"
 version = "0.3.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1078,5 +1157,5 @@
 
 [[package]]
 name = "miniz_oxide"
-version = "0.6.2"
+version = "0.8.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1082,3 +1161,3 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa"
+checksum = "8e3e04debbb59698c15bacbb6d93584a8c0ca9cc3213cb423d31f760d8843ce5"
 dependencies = [
@@ -1084,6 +1163,6 @@
 dependencies = [
- "adler",
+ "adler2",
 ]
 
 [[package]]
 name = "mio"
@@ -1086,6 +1165,6 @@
 ]
 
 [[package]]
 name = "mio"
-version = "0.8.6"
+version = "1.0.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1091,4 +1170,4 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9"
+checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd"
 dependencies = [
  "libc",
@@ -1093,9 +1172,8 @@
 dependencies = [
  "libc",
- "log",
- "wasi",
- "windows-sys 0.45.0",
+ "wasi 0.11.0+wasi-snapshot-preview1",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
 name = "multimap"
@@ -1098,6 +1176,6 @@
 ]
 
 [[package]]
 name = "multimap"
-version = "0.8.3"
+version = "0.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1103,5 +1181,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a"
+checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03"
 
 [[package]]
 name = "nix"
@@ -1109,7 +1187,7 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46"
 dependencies = [
- "bitflags 2.5.0",
+ "bitflags 2.9.0",
  "cfg-if 1.0.0",
  "cfg_aliases",
  "libc",
@@ -1136,5 +1214,5 @@
 
 [[package]]
 name = "num-traits"
-version = "0.2.15"
+version = "0.2.19"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1140,8 +1218,8 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
 dependencies = [
  "autocfg",
  "libm",
 ]
 
 [[package]]
@@ -1142,9 +1220,9 @@
 dependencies = [
  "autocfg",
  "libm",
 ]
 
 [[package]]
-name = "num_cpus"
-version = "1.15.0"
+name = "number_prefix"
+version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1150,3 +1228,9 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
+checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3"
+
+[[package]]
+name = "object"
+version = "0.36.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87"
 dependencies = [
@@ -1152,7 +1236,6 @@
 dependencies = [
- "hermit-abi 0.2.6",
- "libc",
+ "memchr",
 ]
 
 [[package]]
 name = "once_cell"
@@ -1155,6 +1238,6 @@
 ]
 
 [[package]]
 name = "once_cell"
-version = "1.17.1"
+version = "1.21.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1160,5 +1243,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
+checksum = "d75b0bedcc4fe52caa0e03d9f1151a323e4aa5e2d78ba3580400cd3c9e2bc4bc"
 
 [[package]]
 name = "os_str_bytes"
@@ -1162,5 +1245,5 @@
 
 [[package]]
 name = "os_str_bytes"
-version = "6.5.0"
+version = "6.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1166,14 +1249,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267"
-
-[[package]]
-name = "output_vt100"
-version = "0.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "628223faebab4e3e40667ee0b2336d34a5b960ff60ea743ddfdbcf7770bcfb66"
-dependencies = [
- "winapi",
-]
+checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1"
 
 [[package]]
 name = "overload"
@@ -1183,5 +1257,5 @@
 
 [[package]]
 name = "percent-encoding"
-version = "2.2.0"
+version = "2.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1187,5 +1261,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
+checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
 
 [[package]]
 name = "petgraph"
@@ -1189,5 +1263,5 @@
 
 [[package]]
 name = "petgraph"
-version = "0.6.3"
+version = "0.6.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1193,4 +1267,4 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4dd7d28ee937e54fe3080c91faa1c3a46c06de6252988a7f4592ba2310ef22a4"
+checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db"
 dependencies = [
  "fixedbitset",
@@ -1195,7 +1269,7 @@
 dependencies = [
  "fixedbitset",
- "indexmap 1.9.3",
+ "indexmap 2.8.0",
 ]
 
 [[package]]
 name = "pin-project"
@@ -1198,6 +1272,6 @@
 ]
 
 [[package]]
 name = "pin-project"
-version = "1.0.12"
+version = "1.1.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1203,8 +1277,8 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc"
+checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a"
 dependencies = [
  "pin-project-internal",
 ]
 
 [[package]]
 name = "pin-project-internal"
@@ -1205,8 +1279,8 @@
 dependencies = [
  "pin-project-internal",
 ]
 
 [[package]]
 name = "pin-project-internal"
-version = "1.0.12"
+version = "1.1.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1212,5 +1286,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55"
+checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -1214,8 +1288,8 @@
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 1.0.109",
+ "syn 2.0.100",
 ]
 
 [[package]]
 name = "pin-project-lite"
@@ -1218,6 +1292,6 @@
 ]
 
 [[package]]
 name = "pin-project-lite"
-version = "0.2.9"
+version = "0.2.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1223,5 +1297,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
+checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"
 
 [[package]]
 name = "pin-utils"
@@ -1231,5 +1305,5 @@
 
 [[package]]
 name = "pkg-config"
-version = "0.3.26"
+version = "0.3.32"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1235,5 +1309,11 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
+checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
+
+[[package]]
+name = "portable-atomic"
+version = "1.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e"
 
 [[package]]
 name = "ppv-lite86"
@@ -1237,5 +1317,5 @@
 
 [[package]]
 name = "ppv-lite86"
-version = "0.2.17"
+version = "0.2.21"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1241,5 +1321,8 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
+checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
+dependencies = [
+ "zerocopy 0.8.24",
+]
 
 [[package]]
 name = "pretty_assertions"
@@ -1243,5 +1326,5 @@
 
 [[package]]
 name = "pretty_assertions"
-version = "1.3.0"
+version = "1.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1247,3 +1330,3 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a25e9bcb20aa780fd0bb16b72403a9064d6b3f22f026946029acb941a50af755"
+checksum = "3ae130e2f271fbc2ac3a40fb1d07180839cdbbe443c7a27e1e3c13c5cac0116d"
 dependencies = [
@@ -1249,3 +1332,2 @@
 dependencies = [
- "ctor",
  "diff",
@@ -1251,7 +1333,6 @@
  "diff",
- "output_vt100",
  "yansi",
 ]
 
 [[package]]
 name = "prettyplease"
@@ -1253,7 +1334,7 @@
  "yansi",
 ]
 
 [[package]]
 name = "prettyplease"
-version = "0.2.16"
+version = "0.2.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1259,4 +1340,4 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a41cf62165e97c7f814d2221421dbb9afcbcdb0a88068e5ea206e19951c2cbb5"
+checksum = "5316f57387668042f561aae71480de936257848f9c43ce528e311d89a07cadeb"
 dependencies = [
  "proc-macro2",
@@ -1261,6 +1342,6 @@
 dependencies = [
  "proc-macro2",
- "syn 2.0.48",
+ "syn 2.0.100",
 ]
 
 [[package]]
@@ -1289,5 +1370,5 @@
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.76"
+version = "1.0.94"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1293,8 +1374,8 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "95fc56cda0b5c3325f5fbbd7ff9fda9e02bb00bb3dac51252d2f1bfa1cb8cc8c"
+checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84"
 dependencies = [
  "unicode-ident",
 ]
 
 [[package]]
 name = "prost"
@@ -1295,8 +1376,8 @@
 dependencies = [
  "unicode-ident",
 ]
 
 [[package]]
 name = "prost"
-version = "0.12.3"
+version = "0.12.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1302,5 +1383,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "146c289cda302b98a28d40c8b3b90498d6e526dd24ac2ecea73e4e491685b94a"
+checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29"
 dependencies = [
  "bytes",
  "prost-derive",
@@ -1308,5 +1389,5 @@
 
 [[package]]
 name = "prost-build"
-version = "0.12.3"
+version = "0.12.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1312,4 +1393,4 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c55e02e35260070b6f716a2423c2ff1c3bb1642ddca6f99e1f26d06268a0e2d2"
+checksum = "22505a5c94da8e3b7c2996394d1c933236c4d743e81a410bcca4e6989fc066a4"
 dependencies = [
  "bytes",
@@ -1314,7 +1395,7 @@
 dependencies = [
  "bytes",
- "heck",
- "itertools 0.10.5",
+ "heck 0.5.0",
+ "itertools 0.12.1",
  "log",
  "multimap",
  "once_cell",
@@ -1323,5 +1404,5 @@
  "prost",
  "prost-types",
  "regex",
- "syn 2.0.48",
+ "syn 2.0.100",
  "tempfile",
@@ -1327,6 +1408,5 @@
  "tempfile",
- "which",
 ]
 
 [[package]]
 name = "prost-derive"
@@ -1329,6 +1409,6 @@
 ]
 
 [[package]]
 name = "prost-derive"
-version = "0.12.3"
+version = "0.12.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1334,4 +1414,4 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "efb6c9a1dd1def8e2124d17e83a20af56f1570d6c2d2bd9e266ccb768df3840e"
+checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1"
 dependencies = [
  "anyhow",
@@ -1336,5 +1416,5 @@
 dependencies = [
  "anyhow",
- "itertools 0.10.5",
+ "itertools 0.12.1",
  "proc-macro2",
  "quote",
@@ -1339,7 +1419,7 @@
  "proc-macro2",
  "quote",
- "syn 2.0.48",
+ "syn 2.0.100",
 ]
 
 [[package]]
 name = "prost-types"
@@ -1342,6 +1422,6 @@
 ]
 
 [[package]]
 name = "prost-types"
-version = "0.12.3"
+version = "0.12.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1347,8 +1427,8 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "193898f59edcf43c26227dcd4c8427f00d99d61e95dcde58dabd49fa291d470e"
+checksum = "9091c90b0a32608e984ff2fa4091273cbdd755d54935c51d520887f4a1dbd5b0"
 dependencies = [
  "prost",
 ]
 
 [[package]]
 name = "quote"
@@ -1349,8 +1429,8 @@
 dependencies = [
  "prost",
 ]
 
 [[package]]
 name = "quote"
-version = "1.0.35"
+version = "1.0.40"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1356,7 +1436,7 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
+checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
 dependencies = [
  "proc-macro2",
 ]
 
 [[package]]
@@ -1358,8 +1438,14 @@
 dependencies = [
  "proc-macro2",
 ]
 
 [[package]]
+name = "r-efi"
+version = "5.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5"
+
+[[package]]
 name = "radium"
 version = "0.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1372,8 +1458,19 @@
 checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
 dependencies = [
  "libc",
- "rand_chacha",
- "rand_core",
+ "rand_chacha 0.3.1",
+ "rand_core 0.6.4",
+]
+
+[[package]]
+name = "rand"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94"
+dependencies = [
+ "rand_chacha 0.9.0",
+ "rand_core 0.9.3",
+ "zerocopy 0.8.24",
 ]
 
 [[package]]
@@ -1383,7 +1480,17 @@
 checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
 dependencies = [
  "ppv-lite86",
- "rand_core",
+ "rand_core 0.6.4",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
+dependencies = [
+ "ppv-lite86",
+ "rand_core 0.9.3",
 ]
 
 [[package]]
@@ -1392,7 +1499,16 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
 dependencies = [
- "getrandom",
+ "getrandom 0.2.15",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"
+dependencies = [
+ "getrandom 0.3.2",
 ]
 
 [[package]]
@@ -1402,7 +1518,7 @@
 checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31"
 dependencies = [
  "num-traits",
- "rand",
+ "rand 0.8.5",
 ]
 
 [[package]]
@@ -1411,7 +1527,7 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "59cad018caf63deb318e5a4586d99a24424a364f40f1e5778c29aca23f4fc73e"
 dependencies = [
- "rand_core",
+ "rand_core 0.6.4",
 ]
 
 [[package]]
@@ -1420,8 +1536,8 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa"
 dependencies = [
- "rand_core",
+ "rand_core 0.6.4",
 ]
 
 [[package]]
 name = "rayon"
@@ -1424,6 +1540,6 @@
 ]
 
 [[package]]
 name = "rayon"
-version = "1.7.0"
+version = "1.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1429,5 +1545,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
+checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
 dependencies = [
  "either",
  "rayon-core",
@@ -1435,5 +1551,5 @@
 
 [[package]]
 name = "rayon-core"
-version = "1.11.0"
+version = "1.12.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1439,3 +1555,3 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
+checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
 dependencies = [
@@ -1441,4 +1557,3 @@
 dependencies = [
- "crossbeam-channel",
  "crossbeam-deque",
  "crossbeam-utils",
@@ -1443,7 +1558,6 @@
  "crossbeam-deque",
  "crossbeam-utils",
- "num_cpus",
 ]
 
 [[package]]
 name = "redox_syscall"
@@ -1446,6 +1560,6 @@
 ]
 
 [[package]]
 name = "redox_syscall"
-version = "0.2.16"
+version = "0.5.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1451,3 +1565,3 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
+checksum = "0b8c0c260b63a8219631167be35e6a988e9554dbd323f8bd08439c8ed1302bd1"
 dependencies = [
@@ -1453,6 +1567,6 @@
 dependencies = [
- "bitflags 1.3.2",
+ "bitflags 2.9.0",
 ]
 
 [[package]]
 name = "regex"
@@ -1455,6 +1569,6 @@
 ]
 
 [[package]]
 name = "regex"
-version = "1.9.4"
+version = "1.11.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1460,5 +1574,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "12de2eff854e5fa4b1295edd650e227e9d8fb0c9e90b12e7f36d6a6811791a29"
+checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
 dependencies = [
  "aho-corasick",
  "memchr",
@@ -1468,5 +1582,5 @@
 
 [[package]]
 name = "regex-automata"
-version = "0.3.7"
+version = "0.4.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1472,5 +1586,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "49530408a136e16e5b486e883fbb6ba058e8e4e8ae6621a77b048b314336e629"
+checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
 dependencies = [
  "aho-corasick",
  "memchr",
@@ -1479,5 +1593,5 @@
 
 [[package]]
 name = "regex-syntax"
-version = "0.7.5"
+version = "0.8.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1483,5 +1597,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da"
+checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
 
 [[package]]
 name = "rhgitaly"
@@ -1503,7 +1617,7 @@
  "nix",
  "prost",
  "prost-types",
- "rand",
+ "rand 0.9.0",
  "regex",
  "regex-syntax",
  "tempfile",
@@ -1534,6 +1648,12 @@
 ]
 
 [[package]]
+name = "rustc-demangle"
+version = "0.1.24"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
+
+[[package]]
 name = "rustc_version"
 version = "0.2.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1544,5 +1664,5 @@
 
 [[package]]
 name = "rustc_version"
-version = "0.4.0"
+version = "0.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1548,3 +1668,3 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
+checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"
 dependencies = [
@@ -1550,6 +1670,6 @@
 dependencies = [
- "semver 1.0.17",
+ "semver 1.0.26",
 ]
 
 [[package]]
 name = "rustix"
@@ -1552,6 +1672,6 @@
 ]
 
 [[package]]
 name = "rustix"
-version = "0.36.9"
+version = "1.0.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1557,3 +1677,3 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fd5c6ff11fecd55b40746d1995a02f2eb375bf8c00d192d521ee09f42bef37bc"
+checksum = "e56a18552996ac8d29ecc3b190b4fdbb2d91ca4ec396de7bbffaf43f3d637e96"
 dependencies = [
@@ -1559,3 +1679,3 @@
 dependencies = [
- "bitflags 1.3.2",
+ "bitflags 2.9.0",
  "errno",
@@ -1561,4 +1681,3 @@
  "errno",
- "io-lifetimes",
  "libc",
  "linux-raw-sys",
@@ -1563,7 +1682,7 @@
  "libc",
  "linux-raw-sys",
- "windows-sys 0.45.0",
+ "windows-sys 0.59.0",
 ]
 
 [[package]]
 name = "rustversion"
@@ -1566,6 +1685,6 @@
 ]
 
 [[package]]
 name = "rustversion"
-version = "1.0.12"
+version = "1.0.20"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1571,5 +1690,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06"
+checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2"
 
 [[package]]
 name = "same-file"
@@ -1581,6 +1700,6 @@
 ]
 
 [[package]]
-name = "scopeguard"
-version = "1.1.0"
+name = "schnellru"
+version = "0.2.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1586,5 +1705,10 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+checksum = "356285bbf17bea63d9e52e96bd18f039672ac92b55b8cb997d6162a2a37d1649"
+dependencies = [
+ "ahash",
+ "cfg-if 1.0.0",
+ "hashbrown 0.13.2",
+]
 
 [[package]]
 name = "self_cell"
@@ -1588,5 +1712,5 @@
 
 [[package]]
 name = "self_cell"
-version = "1.0.3"
+version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1592,5 +1716,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "58bf37232d3bb9a2c4e641ca2a11d83b5062066f88df7fed36c28772046d65ba"
+checksum = "c2fdfc24bc566f839a2da4c4295b82db7d25a24253867d5c64355abb5799bdbe"
 
 [[package]]
 name = "semver"
@@ -1603,5 +1727,5 @@
 
 [[package]]
 name = "semver"
-version = "1.0.17"
+version = "1.0.26"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1607,5 +1731,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed"
+checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0"
 
 [[package]]
 name = "semver-parser"
@@ -1615,5 +1739,5 @@
 
 [[package]]
 name = "serde"
-version = "1.0.158"
+version = "1.0.219"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1619,8 +1743,8 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9"
+checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6"
 dependencies = [
  "serde_derive",
 ]
 
 [[package]]
 name = "serde_derive"
@@ -1621,8 +1745,8 @@
 dependencies = [
  "serde_derive",
 ]
 
 [[package]]
 name = "serde_derive"
-version = "1.0.158"
+version = "1.0.219"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1628,5 +1752,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad"
+checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -1630,8 +1754,8 @@
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.48",
+ "syn 2.0.100",
 ]
 
 [[package]]
 name = "serde_spanned"
@@ -1634,6 +1758,6 @@
 ]
 
 [[package]]
 name = "serde_spanned"
-version = "0.6.1"
+version = "0.6.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1639,5 +1763,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0efd8caf556a6cebd3b285caf480045fcc1ac04f6bd786b09a6f11af30c4fcf4"
+checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1"
 dependencies = [
  "serde",
 ]
@@ -1655,5 +1779,5 @@
 
 [[package]]
 name = "sharded-slab"
-version = "0.1.4"
+version = "0.1.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1659,7 +1783,7 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31"
+checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
 dependencies = [
  "lazy_static",
 ]
 
 [[package]]
@@ -1661,8 +1785,14 @@
 dependencies = [
  "lazy_static",
 ]
 
 [[package]]
+name = "shlex"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+
+[[package]]
 name = "signal-hook-registry"
 version = "1.4.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1683,5 +1813,5 @@
 
 [[package]]
 name = "slab"
-version = "0.4.8"
+version = "0.4.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1687,8 +1817,8 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
+checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
 dependencies = [
  "autocfg",
 ]
 
 [[package]]
 name = "smallvec"
@@ -1689,8 +1819,8 @@
 dependencies = [
  "autocfg",
 ]
 
 [[package]]
 name = "smallvec"
-version = "1.10.0"
+version = "1.14.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1696,5 +1826,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"
+checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd"
 
 [[package]]
 name = "socket2"
@@ -1698,5 +1828,5 @@
 
 [[package]]
 name = "socket2"
-version = "0.4.9"
+version = "0.5.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1702,4 +1832,4 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662"
+checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8"
 dependencies = [
  "libc",
@@ -1704,6 +1834,6 @@
 dependencies = [
  "libc",
- "winapi",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -1719,6 +1849,12 @@
 checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
 
 [[package]]
+name = "static_assertions_next"
+version = "1.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d7beae5182595e9a8b683fa98c4317f956c9a2dec3b9716990d20023cc60c766"
+
+[[package]]
 name = "strsim"
 version = "0.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1737,5 +1873,5 @@
 
 [[package]]
 name = "syn"
-version = "2.0.48"
+version = "2.0.100"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1741,5 +1877,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f"
+checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -1760,5 +1896,5 @@
 
 [[package]]
 name = "tempfile"
-version = "3.4.0"
+version = "3.19.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1764,3 +1900,3 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af18f7ae1acd354b992402e9ec5864359d693cd8a79dcbef59f76891701c1e95"
+checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf"
 dependencies = [
@@ -1766,3 +1902,2 @@
 dependencies = [
- "cfg-if 1.0.0",
  "fastrand",
@@ -1768,3 +1903,4 @@
  "fastrand",
- "redox_syscall",
+ "getrandom 0.3.2",
+ "once_cell",
  "rustix",
@@ -1770,6 +1906,6 @@
  "rustix",
- "windows-sys 0.42.0",
+ "windows-sys 0.59.0",
 ]
 
 [[package]]
 name = "termcolor"
@@ -1772,6 +1908,6 @@
 ]
 
 [[package]]
 name = "termcolor"
-version = "1.2.0"
+version = "1.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1777,8 +1913,8 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6"
+checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755"
 dependencies = [
  "winapi-util",
 ]
 
 [[package]]
 name = "thread_local"
@@ -1779,8 +1915,8 @@
 dependencies = [
  "winapi-util",
 ]
 
 [[package]]
 name = "thread_local"
-version = "1.1.7"
+version = "1.1.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1786,5 +1922,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152"
+checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c"
 dependencies = [
  "cfg-if 1.0.0",
  "once_cell",
@@ -1792,5 +1928,5 @@
 
 [[package]]
 name = "tinyvec"
-version = "1.6.1"
+version = "1.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1796,5 +1932,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c55115c6fbe2d2bef26eb09ad74bde02d8255476fc0c7b515ef09fbb35742d82"
+checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71"
 dependencies = [
  "tinyvec_macros",
 ]
@@ -1807,5 +1943,5 @@
 
 [[package]]
 name = "tokio"
-version = "1.26.0"
+version = "1.44.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1811,3 +1947,3 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "03201d01c3c27a29c8a5cee5b55a93ddae1ccf6f08f65365c2c918f8c1b76f64"
+checksum = "f382da615b842244d4b8738c82ed1275e6c5dd90c459a30941cd07080b06c91a"
 dependencies = [
@@ -1813,4 +1949,4 @@
 dependencies = [
- "autocfg",
+ "backtrace",
  "bytes",
  "libc",
@@ -1815,4 +1951,3 @@
  "bytes",
  "libc",
- "memchr",
  "mio",
@@ -1818,6 +1953,5 @@
  "mio",
- "num_cpus",
  "pin-project-lite",
  "signal-hook-registry",
  "socket2",
  "tokio-macros",
@@ -1820,8 +1954,8 @@
  "pin-project-lite",
  "signal-hook-registry",
  "socket2",
  "tokio-macros",
- "windows-sys 0.45.0",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -1836,5 +1970,5 @@
 
 [[package]]
 name = "tokio-macros"
-version = "1.8.2"
+version = "2.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1840,5 +1974,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8"
+checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -1842,8 +1976,8 @@
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 1.0.109",
+ "syn 2.0.100",
 ]
 
 [[package]]
 name = "tokio-stream"
@@ -1846,6 +1980,6 @@
 ]
 
 [[package]]
 name = "tokio-stream"
-version = "0.1.12"
+version = "0.1.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1851,5 +1985,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8fb52b74f05dbf495a8fba459fdc331812b96aa086d9eb78101fa0d4569c3313"
+checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047"
 dependencies = [
  "futures-core",
  "pin-project-lite",
@@ -1858,5 +1992,5 @@
 
 [[package]]
 name = "tokio-util"
-version = "0.7.7"
+version = "0.7.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1862,8 +1996,8 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5427d89453009325de0d8f342c9490009f76e999cb7672d77e46267448f7e6b2"
+checksum = "6b9590b93e6fcc1739458317cccd391ad3955e2bde8913edf6f95f9e65a8f034"
 dependencies = [
  "bytes",
  "futures-core",
  "futures-sink",
  "pin-project-lite",
  "tokio",
@@ -1864,10 +1998,9 @@
 dependencies = [
  "bytes",
  "futures-core",
  "futures-sink",
  "pin-project-lite",
  "tokio",
- "tracing",
 ]
 
 [[package]]
@@ -1941,7 +2074,7 @@
  "proc-macro2",
  "prost-build",
  "quote",
- "syn 2.0.48",
+ "syn 2.0.100",
 ]
 
 [[package]]
@@ -1966,7 +2099,7 @@
  "indexmap 1.9.3",
  "pin-project",
  "pin-project-lite",
- "rand",
+ "rand 0.8.5",
  "slab",
  "tokio",
  "tokio-util",
@@ -1977,5 +2110,5 @@
 
 [[package]]
 name = "tower-layer"
-version = "0.3.2"
+version = "0.3.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1981,5 +2114,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0"
+checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
 
 [[package]]
 name = "tower-service"
@@ -1983,5 +2116,5 @@
 
 [[package]]
 name = "tower-service"
-version = "0.3.2"
+version = "0.3.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1987,5 +2120,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52"
+checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"
 
 [[package]]
 name = "tracing"
@@ -1989,5 +2122,5 @@
 
 [[package]]
 name = "tracing"
-version = "0.1.37"
+version = "0.1.41"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1993,3 +2126,3 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"
+checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0"
 dependencies = [
@@ -1995,5 +2128,4 @@
 dependencies = [
- "cfg-if 1.0.0",
  "log",
  "pin-project-lite",
  "tracing-attributes",
@@ -2002,5 +2134,5 @@
 
 [[package]]
 name = "tracing-attributes"
-version = "0.1.23"
+version = "0.1.28"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2006,5 +2138,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a"
+checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -2008,8 +2140,8 @@
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 1.0.109",
+ "syn 2.0.100",
 ]
 
 [[package]]
 name = "tracing-core"
@@ -2012,6 +2144,6 @@
 ]
 
 [[package]]
 name = "tracing-core"
-version = "0.1.30"
+version = "0.1.33"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2017,5 +2149,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a"
+checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c"
 dependencies = [
  "once_cell",
  "valuable",
@@ -2023,5 +2155,5 @@
 
 [[package]]
 name = "tracing-log"
-version = "0.1.3"
+version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2027,3 +2159,3 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922"
+checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
 dependencies = [
@@ -2029,3 +2161,2 @@
 dependencies = [
- "lazy_static",
  "log",
@@ -2031,6 +2162,7 @@
  "log",
+ "once_cell",
  "tracing-core",
 ]
 
 [[package]]
 name = "tracing-subscriber"
@@ -2032,7 +2164,7 @@
  "tracing-core",
 ]
 
 [[package]]
 name = "tracing-subscriber"
-version = "0.3.16"
+version = "0.3.19"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2038,5 +2170,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a6176eae26dd70d0c919749377897b54a9276bd7061339665dd68777926b5a70"
+checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008"
 dependencies = [
  "nu-ansi-term",
  "sharded-slab",
@@ -2048,5 +2180,5 @@
 
 [[package]]
 name = "try-lock"
-version = "0.2.4"
+version = "0.2.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2052,5 +2184,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed"
+checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
 
 [[package]]
 name = "twox-hash"
@@ -2059,9 +2191,9 @@
 checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675"
 dependencies = [
  "cfg-if 1.0.0",
- "rand",
+ "rand 0.8.5",
  "static_assertions",
 ]
 
 [[package]]
 name = "typenum"
@@ -2063,7 +2195,7 @@
  "static_assertions",
 ]
 
 [[package]]
 name = "typenum"
-version = "1.16.0"
+version = "1.18.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2069,5 +2201,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba"
+checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f"
 
 [[package]]
 name = "unicode-bidi"
@@ -2071,5 +2203,5 @@
 
 [[package]]
 name = "unicode-bidi"
-version = "0.3.15"
+version = "0.3.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2075,5 +2207,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75"
+checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5"
 
 [[package]]
 name = "unicode-ident"
@@ -2077,5 +2209,5 @@
 
 [[package]]
 name = "unicode-ident"
-version = "1.0.8"
+version = "1.0.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2081,5 +2213,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
+checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
 
 [[package]]
 name = "unicode-normalization"
@@ -2083,5 +2215,5 @@
 
 [[package]]
 name = "unicode-normalization"
-version = "0.1.23"
+version = "0.1.24"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2087,7 +2219,7 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5"
+checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956"
 dependencies = [
  "tinyvec",
 ]
 
 [[package]]
@@ -2089,8 +2221,14 @@
 dependencies = [
  "tinyvec",
 ]
 
 [[package]]
+name = "unicode-width"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd"
+
+[[package]]
 name = "url"
 version = "2.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2102,4 +2240,13 @@
 ]
 
 [[package]]
+name = "uuid"
+version = "1.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "458f7a779bf54acc9f347480ac654f68407d3aab21269a6e3c9f922acd9e2da9"
+dependencies = [
+ "getrandom 0.3.2",
+]
+
+[[package]]
 name = "valuable"
@@ -2105,3 +2252,3 @@
 name = "valuable"
-version = "0.1.0"
+version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2107,5 +2254,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
+checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65"
 
 [[package]]
 name = "vcpkg"
@@ -2115,5 +2262,5 @@
 
 [[package]]
 name = "version_check"
-version = "0.9.4"
+version = "0.9.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2119,5 +2266,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
 
 [[package]]
 name = "walkdir"
@@ -2131,5 +2278,5 @@
 
 [[package]]
 name = "want"
-version = "0.3.0"
+version = "0.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2135,3 +2282,3 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0"
+checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"
 dependencies = [
@@ -2137,5 +2284,4 @@
 dependencies = [
- "log",
  "try-lock",
 ]
 
@@ -2146,4 +2292,13 @@
 checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
 
 [[package]]
+name = "wasi"
+version = "0.14.2+wasi-0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3"
+dependencies = [
+ "wit-bindgen-rt",
+]
+
+[[package]]
 name = "wasm-bindgen"
@@ -2149,3 +2304,3 @@
 name = "wasm-bindgen"
-version = "0.2.92"
+version = "0.2.100"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2151,4 +2306,4 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8"
+checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5"
 dependencies = [
  "cfg-if 1.0.0",
@@ -2153,7 +2308,9 @@
 dependencies = [
  "cfg-if 1.0.0",
+ "once_cell",
+ "rustversion",
  "wasm-bindgen-macro",
 ]
 
 [[package]]
 name = "wasm-bindgen-backend"
@@ -2155,7 +2312,7 @@
  "wasm-bindgen-macro",
 ]
 
 [[package]]
 name = "wasm-bindgen-backend"
-version = "0.2.92"
+version = "0.2.100"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2161,5 +2318,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da"
+checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6"
 dependencies = [
  "bumpalo",
  "log",
@@ -2163,6 +2320,5 @@
 dependencies = [
  "bumpalo",
  "log",
- "once_cell",
  "proc-macro2",
  "quote",
@@ -2167,8 +2323,8 @@
  "proc-macro2",
  "quote",
- "syn 2.0.48",
+ "syn 2.0.100",
  "wasm-bindgen-shared",
 ]
 
 [[package]]
 name = "wasm-bindgen-macro"
@@ -2170,7 +2326,7 @@
  "wasm-bindgen-shared",
 ]
 
 [[package]]
 name = "wasm-bindgen-macro"
-version = "0.2.92"
+version = "0.2.100"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2176,5 +2332,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726"
+checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407"
 dependencies = [
  "quote",
  "wasm-bindgen-macro-support",
@@ -2182,5 +2338,5 @@
 
 [[package]]
 name = "wasm-bindgen-macro-support"
-version = "0.2.92"
+version = "0.2.100"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2186,5 +2342,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
+checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -2188,10 +2344,10 @@
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.48",
+ "syn 2.0.100",
  "wasm-bindgen-backend",
  "wasm-bindgen-shared",
 ]
 
 [[package]]
 name = "wasm-bindgen-shared"
@@ -2192,8 +2348,8 @@
  "wasm-bindgen-backend",
  "wasm-bindgen-shared",
 ]
 
 [[package]]
 name = "wasm-bindgen-shared"
-version = "0.2.92"
+version = "0.2.100"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2199,4 +2355,7 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96"
+checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d"
+dependencies = [
+ "unicode-ident",
+]
 
 [[package]]
@@ -2201,5 +2360,5 @@
 
 [[package]]
-name = "which"
-version = "4.4.0"
+name = "web-time"
+version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2205,3 +2364,3 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2441c784c52b289a054b7201fc93253e288f094e2f4be9058343127c4226a269"
+checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb"
 dependencies = [
@@ -2207,7 +2366,6 @@
 dependencies = [
- "either",
- "libc",
- "once_cell",
+ "js-sys",
+ "wasm-bindgen",
 ]
 
 [[package]]
@@ -2228,5 +2386,5 @@
 
 [[package]]
 name = "winapi-util"
-version = "0.1.5"
+version = "0.1.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2232,3 +2390,3 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
 dependencies = [
@@ -2234,5 +2392,5 @@
 dependencies = [
- "winapi",
+ "windows-sys 0.59.0",
 ]
 
 [[package]]
@@ -2247,7 +2405,7 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
 dependencies = [
- "windows-targets 0.52.4",
+ "windows-targets",
 ]
 
 [[package]]
@@ -2251,4 +2409,10 @@
 ]
 
 [[package]]
+name = "windows-link"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38"
+
+[[package]]
 name = "windows-sys"
@@ -2254,3 +2418,3 @@
 name = "windows-sys"
-version = "0.42.0"
+version = "0.52.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2256,3 +2420,3 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
 dependencies = [
@@ -2258,12 +2422,6 @@
 dependencies = [
- "windows_aarch64_gnullvm 0.42.2",
- "windows_aarch64_msvc 0.42.2",
- "windows_i686_gnu 0.42.2",
- "windows_i686_msvc 0.42.2",
- "windows_x86_64_gnu 0.42.2",
- "windows_x86_64_gnullvm 0.42.2",
- "windows_x86_64_msvc 0.42.2",
+ "windows-targets",
 ]
 
 [[package]]
 name = "windows-sys"
@@ -2266,6 +2424,6 @@
 ]
 
 [[package]]
 name = "windows-sys"
-version = "0.45.0"
+version = "0.59.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2271,3 +2429,3 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
+checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
 dependencies = [
@@ -2273,6 +2431,6 @@
 dependencies = [
- "windows-targets 0.42.2",
+ "windows-targets",
 ]
 
 [[package]]
 name = "windows-targets"
@@ -2275,6 +2433,6 @@
 ]
 
 [[package]]
 name = "windows-targets"
-version = "0.42.2"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2280,3 +2438,3 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
 dependencies = [
@@ -2282,27 +2440,13 @@
 dependencies = [
- "windows_aarch64_gnullvm 0.42.2",
- "windows_aarch64_msvc 0.42.2",
- "windows_i686_gnu 0.42.2",
- "windows_i686_msvc 0.42.2",
- "windows_x86_64_gnu 0.42.2",
- "windows_x86_64_gnullvm 0.42.2",
- "windows_x86_64_msvc 0.42.2",
-]
-
-[[package]]
-name = "windows-targets"
-version = "0.52.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b"
-dependencies = [
- "windows_aarch64_gnullvm 0.52.4",
- "windows_aarch64_msvc 0.52.4",
- "windows_i686_gnu 0.52.4",
- "windows_i686_msvc 0.52.4",
- "windows_x86_64_gnu 0.52.4",
- "windows_x86_64_gnullvm 0.52.4",
- "windows_x86_64_msvc 0.52.4",
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_gnullvm",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc",
 ]
 
 [[package]]
 name = "windows_aarch64_gnullvm"
@@ -2305,6 +2449,6 @@
 ]
 
 [[package]]
 name = "windows_aarch64_gnullvm"
-version = "0.42.2"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2310,11 +2454,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
-
-[[package]]
-name = "windows_aarch64_gnullvm"
-version = "0.52.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9"
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
 
 [[package]]
 name = "windows_aarch64_msvc"
@@ -2318,5 +2456,5 @@
 
 [[package]]
 name = "windows_aarch64_msvc"
-version = "0.42.2"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2322,11 +2460,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
-
-[[package]]
-name = "windows_aarch64_msvc"
-version = "0.52.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675"
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
 
 [[package]]
 name = "windows_i686_gnu"
@@ -2330,5 +2462,5 @@
 
 [[package]]
 name = "windows_i686_gnu"
-version = "0.42.2"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2334,4 +2466,4 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
 
 [[package]]
@@ -2336,5 +2468,5 @@
 
 [[package]]
-name = "windows_i686_gnu"
-version = "0.52.4"
+name = "windows_i686_gnullvm"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2340,5 +2472,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3"
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
 
 [[package]]
 name = "windows_i686_msvc"
@@ -2342,11 +2474,5 @@
 
 [[package]]
 name = "windows_i686_msvc"
-version = "0.42.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
-
-[[package]]
-name = "windows_i686_msvc"
-version = "0.52.4"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2352,11 +2478,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02"
-
-[[package]]
-name = "windows_x86_64_gnu"
-version = "0.42.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
 
 [[package]]
 name = "windows_x86_64_gnu"
@@ -2360,5 +2480,5 @@
 
 [[package]]
 name = "windows_x86_64_gnu"
-version = "0.52.4"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2364,11 +2484,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03"
-
-[[package]]
-name = "windows_x86_64_gnullvm"
-version = "0.42.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
 
 [[package]]
 name = "windows_x86_64_gnullvm"
@@ -2372,5 +2486,5 @@
 
 [[package]]
 name = "windows_x86_64_gnullvm"
-version = "0.52.4"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2376,5 +2490,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177"
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
 
 [[package]]
 name = "windows_x86_64_msvc"
@@ -2378,5 +2492,5 @@
 
 [[package]]
 name = "windows_x86_64_msvc"
-version = "0.42.2"
+version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2382,4 +2496,4 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
 
 [[package]]
@@ -2384,5 +2498,5 @@
 
 [[package]]
-name = "windows_x86_64_msvc"
-version = "0.52.4"
+name = "wit-bindgen-rt"
+version = "0.39.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2388,5 +2502,8 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8"
+checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1"
+dependencies = [
+ "bitflags 2.9.0",
+]
 
 [[package]]
 name = "wyz"
@@ -2399,5 +2516,20 @@
 
 [[package]]
 name = "yansi"
-version = "0.5.1"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049"
+
+[[package]]
+name = "zerocopy"
+version = "0.7.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
+dependencies = [
+ "zerocopy-derive 0.7.35",
+]
+
+[[package]]
+name = "zerocopy"
+version = "0.8.24"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2403,5 +2535,30 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec"
+checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879"
+dependencies = [
+ "zerocopy-derive 0.8.24",
+]
+
+[[package]]
+name = "zerocopy-derive"
+version = "0.7.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.100",
+]
+
+[[package]]
+name = "zerocopy-derive"
+version = "0.8.24"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.100",
+]
 
 [[package]]
 name = "zstd"
@@ -2405,5 +2562,5 @@
 
 [[package]]
 name = "zstd"
-version = "0.12.3+zstd.1.5.2"
+version = "0.12.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2409,8 +2566,8 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "76eea132fb024e0e13fd9c2f5d5d595d8a967aa72382ac2f9d39fcc95afd0806"
+checksum = "1a27595e173641171fc74a1232b7b1c7a7cb6e18222c11e9dfb9888fa424c53c"
 dependencies = [
  "zstd-safe",
 ]
 
 [[package]]
 name = "zstd-safe"
@@ -2411,8 +2568,8 @@
 dependencies = [
  "zstd-safe",
 ]
 
 [[package]]
 name = "zstd-safe"
-version = "6.0.4+zstd.1.5.4"
+version = "6.0.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2418,5 +2575,5 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7afb4b54b8910cf5447638cb54bf4e8a65cbedd783af98b98c62ffe91f185543"
+checksum = "ee98ffd0b48ee95e6c5168188e44a54550b1564d9d530ee21d5f0eaed1069581"
 dependencies = [
  "libc",
  "zstd-sys",
@@ -2424,5 +2581,5 @@
 
 [[package]]
 name = "zstd-sys"
-version = "2.0.7+zstd.1.5.4"
+version = "2.0.15+zstd.1.5.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2428,4 +2585,4 @@
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "94509c3ba2fe55294d752b79842c530ccfab760192521df74a081a78d2b3c7f5"
+checksum = "eb81183ddd97d0c74cedf1d50d85c8d08c1b8b68ee863bdee9e706eedba1a237"
 dependencies = [
  "cc",
@@ -2430,5 +2587,4 @@
 dependencies = [
  "cc",
- "libc",
  "pkg-config",
 ]
diff --git a/rust/dependencies/mercurial.patch b/rust/dependencies/mercurial.patch
index e3ac2d5ddc7af0a8c2ec2ed4fe7dcae1d580d0ed_cnVzdC9kZXBlbmRlbmNpZXMvbWVyY3VyaWFsLnBhdGNo..fe28610183a8f50cf1a155faf809eb359db30168_cnVzdC9kZXBlbmRlbmNpZXMvbWVyY3VyaWFsLnBhdGNo 100644
--- a/rust/dependencies/mercurial.patch
+++ b/rust/dependencies/mercurial.patch
@@ -1,7 +1,20 @@
-diff -r 028dc3f92dbd rust/hg-core/src/requirements.rs
---- a/rust/hg-core/src/requirements.rs	Mon May 06 17:51:21 2024 +0200
-+++ b/rust/hg-core/src/requirements.rs	Thu Jul 04 13:28:53 2024 +0200
-@@ -80,6 +80,7 @@
+diff -r 9b285d51e4b6 rust/hg-core/Cargo.toml
+--- a/rust/hg-core/Cargo.toml	Tue Mar 25 02:29:14 2025 +0100
++++ b/rust/hg-core/Cargo.toml	Wed Mar 26 12:36:29 2025 +0100
+@@ -5,9 +5,6 @@
+ description = "Mercurial pure Rust core library, with no assumption on Python bindings (FFI)"
+ edition = "2021"
+ 
+-[lints]
+-workspace = true
+-
+ [lib]
+ name = "hg"
+ 
+diff -r 9b285d51e4b6 rust/hg-core/src/requirements.rs
+--- a/rust/hg-core/src/requirements.rs	Tue Mar 25 02:29:14 2025 +0100
++++ b/rust/hg-core/src/requirements.rs	Wed Mar 26 12:36:29 2025 +0100
+@@ -82,6 +82,7 @@
      GENERALDELTA_REQUIREMENT,
      SHARED_REQUIREMENT,
      SHARESAFE_REQUIREMENT,
@@ -9,7 +22,7 @@
      SPARSEREVLOG_REQUIREMENT,
      RELATIVE_SHARED_REQUIREMENT,
      REVLOG_COMPRESSION_ZSTD,
-@@ -172,6 +173,14 @@
+@@ -174,6 +175,14 @@
  #[allow(unused)]
  pub const RELATIVE_SHARED_REQUIREMENT: &str = "relshared";
  
@@ -24,25 +37,3 @@
  /// A repository with share implemented safely. The repository has different
  /// store and working copy requirements i.e. both `.hg/requires` and
  /// `.hg/store/requires` are present.
-diff -r 028dc3f92dbd rust/hg-core/src/revlog/changelog.rs
---- a/rust/hg-core/src/revlog/changelog.rs	Mon May 06 17:51:21 2024 +0200
-+++ b/rust/hg-core/src/revlog/changelog.rs	Thu Jul 04 13:28:53 2024 +0200
-@@ -8,6 +8,7 @@
- use itertools::{Either, Itertools};
- 
- use crate::errors::HgError;
-+use crate::revlog::Index;
- use crate::revlog::Revision;
- use crate::revlog::{Node, NodePrefix};
- use crate::revlog::{Revlog, RevlogEntry, RevlogError};
-@@ -81,6 +82,10 @@
-     ) -> Result<Revision, RevlogError> {
-         self.revlog.rev_from_node(node)
-     }
-+
-+    pub fn get_index(&self) -> &Index {
-+        &self.revlog.index
-+    }
- }
- 
- impl Graph for Changelog {
diff --git a/rust/mercurial.rev b/rust/mercurial.rev
index e3ac2d5ddc7af0a8c2ec2ed4fe7dcae1d580d0ed_cnVzdC9tZXJjdXJpYWwucmV2..fe28610183a8f50cf1a155faf809eb359db30168_cnVzdC9tZXJjdXJpYWwucmV2 100644
--- a/rust/mercurial.rev
+++ b/rust/mercurial.rev
@@ -1,1 +1,1 @@
-11a9e2fc0caf0800625612e374139e4d825349a6
+9b285d51e4b6fb01eb9de357092b993311bd1152
diff --git a/rust/rhgitaly/Cargo.toml b/rust/rhgitaly/Cargo.toml
index e3ac2d5ddc7af0a8c2ec2ed4fe7dcae1d580d0ed_cnVzdC9yaGdpdGFseS9DYXJnby50b21s..fe28610183a8f50cf1a155faf809eb359db30168_cnVzdC9yaGdpdGFseS9DYXJnby50b21s 100644
--- a/rust/rhgitaly/Cargo.toml
+++ b/rust/rhgitaly/Cargo.toml
@@ -17,11 +17,11 @@
 rand = "*"
 regex = "*"
 regex-syntax = "*"
-tonic = "0.11"
-tonic-types = "*"
-prost = "0.12"
-prost-types = "0.12"
-tempfile = "*"
+tonic = "0.11.0"
+tonic-types = "0.11.0"
+prost = "0.12.6"
+prost-types = "0.12.6"
+tempfile = "3.3.0"
 tokio = { version = "1.0", features = ["macros", "rt-multi-thread", "fs", "process", "signal"] }
 tokio-util = { version= "*", features = ["codec"] }
 tokio-stream = { version = "0.1", features = ["net", "io-util"] }
@@ -32,8 +32,8 @@
 h2 = "^0.3.24"
 clap = { version = "~4.0", features = ["derive"] }
 nix = {version = "~0.29.0", features = ["signal"] }
-tower = "*"
-url= "*"
+tower = "0.4.13"
+url= "=2.3.1"
 walkdir = "2.5.0"
 
 [build-dependencies]
diff --git a/rust/rhgitaly/src/glob.rs b/rust/rhgitaly/src/glob.rs
index e3ac2d5ddc7af0a8c2ec2ed4fe7dcae1d580d0ed_cnVzdC9yaGdpdGFseS9zcmMvZ2xvYi5ycw==..fe28610183a8f50cf1a155faf809eb359db30168_cnVzdC9yaGdpdGFseS9zcmMvZ2xvYi5ycw== 100644
--- a/rust/rhgitaly/src/glob.rs
+++ b/rust/rhgitaly/src/glob.rs
@@ -5,7 +5,8 @@
 //
 // This software may be used and distributed according to the terms of the
 // GNU General Public License version 2 or any later version.
-use hg::filepatterns::glob_to_re as glob_to_regex_bytes_pattern;
+use hg::utils::strings::SliceExt;
+use lazy_static::lazy_static;
 use regex::bytes::Regex;
 use std::io::Write;
 
@@ -9,6 +10,95 @@
 use regex::bytes::Regex;
 use std::io::Write;
 
+lazy_static! {
+    static ref RE_ESCAPE: Vec<Vec<u8>> = {
+        let mut v: Vec<Vec<u8>> = (0..=255).map(|byte| vec![byte]).collect();
+        let to_escape = b"()[]{}?*+-|^$\\.&~#\t\n\r\x0b\x0c";
+        for byte in to_escape {
+            v[*byte as usize].insert(0, b'\\');
+        }
+        v
+    };
+}
+
+/// These are matched in order
+const GLOB_REPLACEMENTS: &[(&[u8], &[u8])] =
+    &[(b"*/", b"(?:.*/)?"), (b"*", b".*"), (b"", b"[^/]*")];
+
+/// Transforms a glob pattern into a regex
+///
+/// TODO for HGitaly we do not want the general expressions
+/// such as brackets (curly or not)
+pub fn glob_to_regex_bytes_pattern(pat: &[u8]) -> Vec<u8> {
+    let mut input = pat;
+    let mut res: Vec<u8> = vec![];
+    let mut group_depth = 0;
+
+    while let Some((c, rest)) = input.split_first() {
+        input = rest;
+
+        match c {
+            b'*' => {
+                for (source, repl) in GLOB_REPLACEMENTS {
+                    if let Some(rest) = input.drop_prefix(source) {
+                        input = rest;
+                        res.extend(*repl);
+                        break;
+                    }
+                }
+            }
+            b'?' => res.extend(b"."),
+            b'[' => {
+                match input.iter().skip(1).position(|b| *b == b']') {
+                    None => res.extend(b"\\["),
+                    Some(end) => {
+                        // Account for the one we skipped
+                        let end = end + 1;
+
+                        res.extend(b"[");
+
+                        for (i, b) in input[..end].iter().enumerate() {
+                            if *b == b'!' && i == 0 {
+                                res.extend(b"^")
+                            } else if *b == b'^' && i == 0 {
+                                res.extend(b"\\^")
+                            } else if *b == b'\\' {
+                                res.extend(b"\\\\")
+                            } else {
+                                res.push(*b)
+                            }
+                        }
+                        res.extend(b"]");
+                        input = &input[end + 1..];
+                    }
+                }
+            }
+            b'{' => {
+                group_depth += 1;
+                res.extend(b"(?:")
+            }
+            b'}' if group_depth > 0 => {
+                group_depth -= 1;
+                res.extend(b")");
+            }
+            b',' if group_depth > 0 => res.extend(b"|"),
+            b'\\' => {
+                let c = {
+                    if let Some((c, rest)) = input.split_first() {
+                        input = rest;
+                        c
+                    } else {
+                        c
+                    }
+                };
+                res.extend(&RE_ESCAPE[*c as usize])
+            }
+            _ => res.extend(&RE_ESCAPE[*c as usize]),
+        }
+    }
+    res
+}
+
 /// Convert a glob pattern into a regular expression
 ///
 /// Taken from [`hg::matchers::re_matcher`] with the following changes:
diff --git a/rust/rhgitaly/src/mercurial.rs b/rust/rhgitaly/src/mercurial.rs
index e3ac2d5ddc7af0a8c2ec2ed4fe7dcae1d580d0ed_cnVzdC9yaGdpdGFseS9zcmMvbWVyY3VyaWFsLnJz..fe28610183a8f50cf1a155faf809eb359db30168_cnVzdC9yaGdpdGFseS9zcmMvbWVyY3VyaWFsLnJz 100644
--- a/rust/rhgitaly/src/mercurial.rs
+++ b/rust/rhgitaly/src/mercurial.rs
@@ -7,5 +7,6 @@
 //! Utilities for Mercurial content handling
 use std::cmp::min;
 use std::collections::VecDeque;
+use std::num::NonZeroU8;
 use tracing::warn;
 
@@ -10,4 +11,3 @@
 use tracing::warn;
 
-use hg::changelog::Changelog;
 use hg::errors::HgError;
@@ -13,3 +13,2 @@
 use hg::errors::HgError;
-use hg::manifest::{Manifest, ManifestEntry, Manifestlog};
 use hg::repo::Repo;
@@ -15,4 +14,6 @@
 use hg::repo::Repo;
+use hg::revlog::changelog::Changelog;
+use hg::revlog::manifest::{Manifest, ManifestEntry, Manifestlog};
 use hg::revlog::{Node, NodePrefix, RevlogError, NULL_REVISION};
 use hg::utils::hg_path::HgPath;
 
@@ -45,7 +46,11 @@
     pub revision_path: Option<(String, Vec<u8>)>,
 }
 
+pub const EXECUTABLE_FLAG: Option<NonZeroU8> = NonZeroU8::new(b'x');
+pub const LINK_FLAG: Option<NonZeroU8> = NonZeroU8::new(b'l');
+pub const TREE_FLAG: Option<NonZeroU8> = NonZeroU8::new(b't');
+
 /// Encode as Git would the file permissions recorded in a [`ManifestEntry`].
 fn git_perms(entry: &ManifestEntry) -> Result<i32, HgError> {
     match entry.flags {
         None => Ok(git::OBJECT_MODE_NON_EXECUTABLE),
@@ -48,11 +53,11 @@
 /// Encode as Git would the file permissions recorded in a [`ManifestEntry`].
 fn git_perms(entry: &ManifestEntry) -> Result<i32, HgError> {
     match entry.flags {
         None => Ok(git::OBJECT_MODE_NON_EXECUTABLE),
-        Some(b'x') => Ok(git::OBJECT_MODE_EXECUTABLE),
-        Some(b'l') => Ok(git::OBJECT_MODE_LINK),
-        // 't' is actually only used in treemanifest, but stil possible
-        Some(b't') => Ok(git::OBJECT_MODE_TREE),
+        EXECUTABLE_FLAG => Ok(git::OBJECT_MODE_EXECUTABLE),
+        LINK_FLAG => Ok(git::OBJECT_MODE_LINK),
+        // TREE_FLAG is actually only used in treemanifest, but stil possible
+        TREE_FLAG => Ok(git::OBJECT_MODE_TREE),
         Some(f) => Err(HgError::CorruptedRepository(format!(
             "Unsupported manifest flag {}",
             f
@@ -96,7 +101,9 @@
     if rev == NULL_REVISION {
         return Ok(None);
     }
-    let changelog_entry = changelog.entry_for_rev(rev.into())?;
+    // TODO submit upstream an `entry_for_rev` to avoid back-and-forth
+    // between Revision and UncheckedRevision
+    let changelog_entry = changelog.entry_for_unchecked_rev(rev.into())?;
     let manifest = manifestlog.data_for_node(changelog_entry.data()?.manifest_node()?.into())?;
     Ok(Some((*changelog_entry.as_revlog_entry().node(), manifest)))
 }
@@ -586,6 +593,14 @@
     changeset_node: Node,
     manifest_dir_iter: ManifestDirIterator<'a, 'm, IM>,
     current_subdir: &'m [u8],
+    /// Queue of `TreeEntry` messages that have to be emitted.
+    ///
+    /// Each manifest entry can give rise to several `TreeEntry` messages to yield,
+    /// because of intermediate directories. Hence we store them in this queue.
+    ///
+    /// Each call to `next()` pops either pops from the queue or consumes one or several
+    /// manifest entries, possibly pushing several more entries in the queue beside yielding
+    /// one.
     to_yield: VecDeque<Result<TreeEntry, HgError>>,
 }
 
@@ -599,14 +614,6 @@
             changeset_node,
             manifest_dir_iter: ManifestDirIterator::new(manifest, path),
             current_subdir: "".as_ref(),
-            /// Queue of `TreeEntry` messages that have to be emitted.
-            ///
-            /// Each manifest entry can give rise to several `TreeEntry` messages to yield,
-            /// because of intermediate directories. Hence we store them in this queue.
-            ///
-            /// Each call to `next()` pops either pops from the queue or consumes one or several
-            /// manifest entries, possibly pushing several more entries in the queue beside yielding
-            /// one.
             to_yield: VecDeque::new(),
         }
     }
@@ -695,9 +702,13 @@
     commit_oid: String,
     changeset_node: Node,
     manifest_dir_iter: ManifestDirIterator<'a, 'm, IM>,
-    /// This iterator also has the potential to yield several elements for a single
-    /// read manifest entry, however this queue is overvill, because it can at most yield two
-    /// TreeEntries (a Tree and a Blob), so we should later on replace with something lighter.
+    /// Queue of `TreeEntry` messages that have to be emitted.
+    ///
+    /// Each manifest entry can give rise to several `TreeEntry` messages to yield,
+    /// because of intermediate directories. Hence we store them in this queue.
+    ///
+    /// each call to `next()` either pops an element from the queue or reads next manifest
+    /// line.
     to_yield: VecDeque<Result<TreeEntry, HgError>>,
 }
 
@@ -710,13 +721,6 @@
             commit_oid,
             changeset_node,
             manifest_dir_iter: ManifestDirIterator::new(manifest, path),
-            /// Queue of `TreeEntry` messages that have to be emitted.
-            ///
-            /// Each manifest entry can give rise to several `TreeEntry` messages to yield,
-            /// because of intermediate directories. Hence we store them in this queue.
-            ///
-            /// each call to `next()` either pops an element from the queue or reads next manifest
-            /// line.
             to_yield: VecDeque::new(),
         }
     }
diff --git a/rust/rhgitaly/src/message.rs b/rust/rhgitaly/src/message.rs
index e3ac2d5ddc7af0a8c2ec2ed4fe7dcae1d580d0ed_cnVzdC9yaGdpdGFseS9zcmMvbWVzc2FnZS5ycw==..fe28610183a8f50cf1a155faf809eb359db30168_cnVzdC9yaGdpdGFseS9zcmMvbWVzc2FnZS5ycw== 100644
--- a/rust/rhgitaly/src/message.rs
+++ b/rust/rhgitaly/src/message.rs
@@ -9,6 +9,4 @@
     TreeEntryResponse,
 };
 use crate::mercurial::ObjectMetadata;
-use hg::changelog::Changelog;
-use hg::changelog::{ChangelogEntry, ChangelogRevisionData};
 use hg::errors::HgError;
@@ -14,4 +12,5 @@
 use hg::errors::HgError;
+use hg::revlog::changelog::{Changelog, ChangelogEntry, ChangelogRevisionData};
 use hg::revlog::{NodePrefix, RevlogError, NULL_REVISION};
 use prost_types::Timestamp;
 use std::fmt;
@@ -251,7 +250,7 @@
         return Ok(None);
     }
 
-    Ok(Some(commit(cl.entry_for_rev(rev.into())?)?))
+    Ok(Some(commit(cl.entry_for_unchecked_rev(rev.into())?)?))
 }
 
 /// Return the [`GitCommit`] message for a changeset given by Node prefix, or `None`
@@ -270,7 +269,7 @@
         // Note that at this stage we cannot tell apart NodePrefix due to
         // caller passing a hash from those read in state files (would be an
         // inconsistency for them not to resolve).
-        Err(RevlogError::InvalidRevision) => Ok(None),
+        Err(RevlogError::InvalidRevision(_)) => Ok(None),
         Err(e) => Err(e),
         Ok(r) => Ok(r),
     }
diff --git a/rust/rhgitaly/src/oid.rs b/rust/rhgitaly/src/oid.rs
index e3ac2d5ddc7af0a8c2ec2ed4fe7dcae1d580d0ed_cnVzdC9yaGdpdGFseS9zcmMvb2lkLnJz..fe28610183a8f50cf1a155faf809eb359db30168_cnVzdC9yaGdpdGFseS9zcmMvb2lkLnJz 100644
--- a/rust/rhgitaly/src/oid.rs
+++ b/rust/rhgitaly/src/oid.rs
@@ -10,8 +10,7 @@
 
 use base64::{engine::general_purpose::STANDARD as BASE64, Engine as _};
 
-use hg::revlog::Node;
-use hg::FromHexError;
+use hg::revlog::{FromHexError, Node};
 
 #[derive(Debug, Clone, PartialEq, Eq)]
 pub enum OidError {
diff --git a/rust/rhgitaly/src/repository.rs b/rust/rhgitaly/src/repository.rs
index e3ac2d5ddc7af0a8c2ec2ed4fe7dcae1d580d0ed_cnVzdC9yaGdpdGFseS9zcmMvcmVwb3NpdG9yeS5ycw==..fe28610183a8f50cf1a155faf809eb359db30168_cnVzdC9yaGdpdGFseS9zcmMvcmVwb3NpdG9yeS5ycw== 100644
--- a/rust/rhgitaly/src/repository.rs
+++ b/rust/rhgitaly/src/repository.rs
@@ -19,5 +19,4 @@
 use tonic::{Response, Status, Streaming};
 use tracing::span::Span;
 
-use hg::changelog::Changelog;
 use hg::repo::{Repo, RepoError};
@@ -23,4 +22,5 @@
 use hg::repo::{Repo, RepoError};
+use hg::revlog::changelog::Changelog;
 
 use super::config::Config;
 use super::gitaly::Repository;
diff --git a/rust/rhgitaly/src/service/analysis.rs b/rust/rhgitaly/src/service/analysis.rs
index e3ac2d5ddc7af0a8c2ec2ed4fe7dcae1d580d0ed_cnVzdC9yaGdpdGFseS9zcmMvc2VydmljZS9hbmFseXNpcy5ycw==..fe28610183a8f50cf1a155faf809eb359db30168_cnVzdC9yaGdpdGFseS9zcmMvc2VydmljZS9hbmFseXNpcy5ycw== 100644
--- a/rust/rhgitaly/src/service/analysis.rs
+++ b/rust/rhgitaly/src/service/analysis.rs
@@ -84,7 +84,7 @@
     let (node, path) = parse_blobs_generated_revision(&req_blob.revision)?;
     let data = lookup_blob(repo, node.into(), &path)
         .map_err(|e| match e {
-            RevlogError::InvalidRevision => Status::internal("unknown revision"),
+            RevlogError::InvalidRevision(_) => Status::internal("unknown revision"),
             e => Status::internal(format!("corrupted repository: {}", e)),
         })?
         .ok_or_else(|| Status::internal("path not found in given revision"))?
diff --git a/rust/rhgitaly/src/service/blob.rs b/rust/rhgitaly/src/service/blob.rs
index e3ac2d5ddc7af0a8c2ec2ed4fe7dcae1d580d0ed_cnVzdC9yaGdpdGFseS9zcmMvc2VydmljZS9ibG9iLnJz..fe28610183a8f50cf1a155faf809eb359db30168_cnVzdC9yaGdpdGFseS9zcmMvc2VydmljZS9ibG9iLnJz 100644
--- a/rust/rhgitaly/src/service/blob.rs
+++ b/rust/rhgitaly/src/service/blob.rs
@@ -155,7 +155,7 @@
                 Ok(None) => {
                     tx.send(Ok(GetBlobResponse::default()));
                 }
-                Err(RevlogError::InvalidRevision) => {
+                Err(RevlogError::InvalidRevision(_)) => {
                     tx.send(Ok(GetBlobResponse::default()));
                 }
                 Err(e) => {
@@ -220,7 +220,7 @@
                 stream_blob(tx, data, metadata);
             }
             Ok(None) => tx.send(Ok(empty_blobs_response(rev_path))),
-            Err(RevlogError::InvalidRevision) => {
+            Err(RevlogError::InvalidRevision(_)) => {
                 tx.send(Ok(GetBlobsResponse::default()));
             }
             Err(e) => {
diff --git a/rust/rhgitaly/src/service/commit.rs b/rust/rhgitaly/src/service/commit.rs
index e3ac2d5ddc7af0a8c2ec2ed4fe7dcae1d580d0ed_cnVzdC9yaGdpdGFseS9zcmMvc2VydmljZS9jb21taXQucnM=..fe28610183a8f50cf1a155faf809eb359db30168_cnVzdC9yaGdpdGFseS9zcmMvc2VydmljZS9jb21taXQucnM= 100644
--- a/rust/rhgitaly/src/service/commit.rs
+++ b/rust/rhgitaly/src/service/commit.rs
@@ -1,5 +1,4 @@
 use std::fmt::{Debug, Formatter};
-use std::iter::Iterator;
 use std::path::Path;
 use std::sync::Arc;
 
@@ -10,5 +9,4 @@
 };
 use tracing::{info, instrument};
 
-use hg::changelog::Changelog;
 use hg::errors::HgError;
@@ -14,4 +12,5 @@
 use hg::errors::HgError;
+use hg::revlog::changelog::Changelog;
 use hg::revlog::{GraphError, NodePrefix, RevlogError, NULL_REVISION};
 
 use crate::config::Config;
@@ -76,8 +75,8 @@
             }
             Ok(node_pref) => match cl.rev_from_node(node_pref) {
                 Ok(NULL_REVISION) => (),
-                Ok(rev) => commits.push(message::commit(cl.entry_for_rev(rev.into())?)?),
-                Err(RevlogError::InvalidRevision) => (),
+                Ok(rev) => commits.push(message::commit(cl.entry_for_unchecked_rev(rev.into())?)?),
+                Err(RevlogError::InvalidRevision(_)) => (),
                 Err(e) => {
                     return Err(e);
                 }
@@ -98,7 +97,7 @@
             Ok(Some(np)) => {
                 let rev = cl.rev_from_node(np)?;
                 commit_refs.push(list_commits_by_ref_name_response::CommitForRef {
-                    commit: Some(message::commit(cl.entry_for_rev(rev.into())?)?),
+                    commit: Some(message::commit(cl.entry_for_unchecked_rev(rev.into())?)?),
                     ref_name: ref_name.clone(),
                 });
             }
diff --git a/rust/rhgitaly/src/service/commit/find_commits.rs b/rust/rhgitaly/src/service/commit/find_commits.rs
index e3ac2d5ddc7af0a8c2ec2ed4fe7dcae1d580d0ed_cnVzdC9yaGdpdGFseS9zcmMvc2VydmljZS9jb21taXQvZmluZF9jb21taXRzLnJz..fe28610183a8f50cf1a155faf809eb359db30168_cnVzdC9yaGdpdGFseS9zcmMvc2VydmljZS9jb21taXQvZmluZF9jb21taXRzLnJz 100644
--- a/rust/rhgitaly/src/service/commit/find_commits.rs
+++ b/rust/rhgitaly/src/service/commit/find_commits.rs
@@ -6,7 +6,7 @@
 use tonic::Status;
 use tracing::info;
 
-use hg::changelog::Changelog;
+use hg::revlog::changelog::Changelog;
 use hg::revlog::{Graph, GraphError, NodePrefix, Revision, RevlogError, NULL_REVISION};
 use hg::AncestorsIterator;
 
@@ -56,7 +56,7 @@
             .get(offset..offset + limit)
             .map(|r| {
                 r.map_err(|e| RevlogError::Other(revlog_err_from_graph_err(e)))
-                    .and_then(|r| cl.entry_for_rev(r.into()))
+                    .and_then(|r| cl.entry_for_unchecked_rev(r.into()))
                     .and_then(|e| message::commit(e))
             }),
         |chunk, _is_first| FindCommitsResponse { commits: chunk },
diff --git a/rust/rhgitaly/src/service/commit/get_tree_entries.rs b/rust/rhgitaly/src/service/commit/get_tree_entries.rs
index e3ac2d5ddc7af0a8c2ec2ed4fe7dcae1d580d0ed_cnVzdC9yaGdpdGFseS9zcmMvc2VydmljZS9jb21taXQvZ2V0X3RyZWVfZW50cmllcy5ycw==..fe28610183a8f50cf1a155faf809eb359db30168_cnVzdC9yaGdpdGFseS9zcmMvc2VydmljZS9jb21taXQvZ2V0X3RyZWVfZW50cmllcy5ycw== 100644
--- a/rust/rhgitaly/src/service/commit/get_tree_entries.rs
+++ b/rust/rhgitaly/src/service/commit/get_tree_entries.rs
@@ -6,6 +6,5 @@
 use tonic::{Code, Status};
 use tracing::info;
 
-use hg::changelog::Changelog;
 use hg::errors::HgError;
 use hg::repo::Repo;
@@ -10,5 +9,6 @@
 use hg::errors::HgError;
 use hg::repo::Repo;
+use hg::revlog::changelog::Changelog;
 use hg::revlog::NodePrefix;
 
 use super::not_found_for_path;
diff --git a/rust/rhgitaly/src/service/commit/last_commits.rs b/rust/rhgitaly/src/service/commit/last_commits.rs
index e3ac2d5ddc7af0a8c2ec2ed4fe7dcae1d580d0ed_cnVzdC9yaGdpdGFseS9zcmMvc2VydmljZS9jb21taXQvbGFzdF9jb21taXRzLnJz..fe28610183a8f50cf1a155faf809eb359db30168_cnVzdC9yaGdpdGFseS9zcmMvc2VydmljZS9jb21taXQvbGFzdF9jb21taXRzLnJz 100644
--- a/rust/rhgitaly/src/service/commit/last_commits.rs
+++ b/rust/rhgitaly/src/service/commit/last_commits.rs
@@ -6,5 +6,4 @@
 use tonic::{codegen::BoxStream, Response, Status};
 use tracing::{info, warn};
 
-use hg::changelog::{Changelog, ChangelogEntry};
 use hg::repo::Repo;
@@ -10,4 +9,5 @@
 use hg::repo::Repo;
+use hg::revlog::changelog::{Changelog, ChangelogEntry};
 use hg::revlog::{NodePrefix, Revision, RevlogError, NULL_REVISION};
 use hg::utils::hg_path::HgPath;
 use hg::AncestorsIterator;
@@ -137,7 +137,7 @@
         // a bit of an edge cas for this error variant, but
         // the Gitaly error is the same as for non resolvable revisions,
         // so it fits
-        return Err(RevlogError::InvalidRevision);
+        return Err(RevlogError::InvalidRevision(rev.to_string()));
     }
     let maybe_entry = if literal_pathspec {
         lcfp_ancestors_walk(git::GitLiteralPathSpec::new(&req.path), cl, rev)
@@ -161,8 +161,8 @@
     rev: Revision,
 ) -> Result<Option<ChangelogEntry>, RevlogError> {
     if path_spec.matches_root() {
-        return Ok(Some(cl.entry_for_rev(rev.into())?));
+        return Ok(Some(cl.entry_for_unchecked_rev(rev.into())?));
     }
     for anc_rev in
         AncestorsIterator::new(cl, [rev], NULL_REVISION, true).map_err(revlog_err_from_graph_err)?
     {
@@ -165,8 +165,9 @@
     }
     for anc_rev in
         AncestorsIterator::new(cl, [rev], NULL_REVISION, true).map_err(revlog_err_from_graph_err)?
     {
-        let cl_entry = cl.entry_for_rev(anc_rev.map_err(revlog_err_from_graph_err)?.into())?;
+        let cl_entry =
+            cl.entry_for_unchecked_rev(anc_rev.map_err(revlog_err_from_graph_err)?.into())?;
         let cl_data = cl_entry.data()?;
         for cl_path in cl_data.files() {
             if path_spec.matches(cl_path.as_bytes()) {
@@ -226,7 +227,7 @@
                 if let Err(e) = list_lcft_in_thread(req, repo, cl, node_prefix, offset, limit, &tx)
                 {
                     let details = match e {
-                        RevlogError::InvalidRevision => "exit status 128".to_owned(),
+                        RevlogError::InvalidRevision(_) => "exit status 128".to_owned(),
                         e => format!("Repository corruption {:?}", e),
                     };
                     tx.send(Err(Status::internal(details)))
@@ -286,7 +287,7 @@
     }
 
     let manifestlog = repo.manifestlog()?;
-    let changelog_entry = cl.entry_for_rev(rev.into())?;
+    let changelog_entry = cl.entry_for_unchecked_rev(rev.into())?;
     let manifest = manifestlog.data_for_node(changelog_entry.data()?.manifest_node()?.into())?;
 
     let trimmed = if req_path.is_empty() {
@@ -360,7 +361,8 @@
             break;
         }
 
-        let cl_entry = cl.entry_for_rev(anc_rev.map_err(revlog_err_from_graph_err)?.into())?;
+        let cl_entry =
+            cl.entry_for_unchecked_rev(anc_rev.map_err(revlog_err_from_graph_err)?.into())?;
         changeset_files_match_subtrees_and_files(
             cl_entry.data()?.files(),
             parent_slash,
diff --git a/rust/rhgitaly/src/service/commit/tree_entry.rs b/rust/rhgitaly/src/service/commit/tree_entry.rs
index e3ac2d5ddc7af0a8c2ec2ed4fe7dcae1d580d0ed_cnVzdC9yaGdpdGFseS9zcmMvc2VydmljZS9jb21taXQvdHJlZV9lbnRyeS5ycw==..fe28610183a8f50cf1a155faf809eb359db30168_cnVzdC9yaGdpdGFseS9zcmMvc2VydmljZS9jb21taXQvdHJlZV9lbnRyeS5ycw== 100644
--- a/rust/rhgitaly/src/service/commit/tree_entry.rs
+++ b/rust/rhgitaly/src/service/commit/tree_entry.rs
@@ -1,7 +1,6 @@
 use std::fmt::{Debug, Formatter};
-use std::iter::Iterator;
 use std::sync::Arc;
 
 use tonic::Status;
 use tracing::info;
 
@@ -3,7 +2,6 @@
 use std::sync::Arc;
 
 use tonic::Status;
 use tracing::info;
 
-use hg::changelog::Changelog;
 use hg::repo::Repo;
@@ -9,4 +7,5 @@
 use hg::repo::Repo;
+use hg::revlog::changelog::Changelog;
 use hg::revlog::NodePrefix;
 use hg::utils::hg_path::HgPath;
 
diff --git a/rust/rhgitaly/src/service/ref.rs b/rust/rhgitaly/src/service/ref.rs
index e3ac2d5ddc7af0a8c2ec2ed4fe7dcae1d580d0ed_cnVzdC9yaGdpdGFseS9zcmMvc2VydmljZS9yZWYucnM=..fe28610183a8f50cf1a155faf809eb359db30168_cnVzdC9yaGdpdGFseS9zcmMvc2VydmljZS9yZWYucnM= 100644
--- a/rust/rhgitaly/src/service/ref.rs
+++ b/rust/rhgitaly/src/service/ref.rs
@@ -18,7 +18,7 @@
 use tonic::{metadata::Ascii, metadata::MetadataValue, Code, Request, Response, Status};
 use tracing::{info, instrument};
 
-use hg::changelog::Changelog;
+use hg::revlog::changelog::Changelog;
 use hg::NodePrefix;
 
 use crate::config::Config;
diff --git a/rust/rhgitaly/src/service/repository.rs b/rust/rhgitaly/src/service/repository.rs
index e3ac2d5ddc7af0a8c2ec2ed4fe7dcae1d580d0ed_cnVzdC9yaGdpdGFseS9zcmMvc2VydmljZS9yZXBvc2l0b3J5LnJz..fe28610183a8f50cf1a155faf809eb359db30168_cnVzdC9yaGdpdGFseS9zcmMvc2VydmljZS9yZXBvc2l0b3J5LnJz 100644
--- a/rust/rhgitaly/src/service/repository.rs
+++ b/rust/rhgitaly/src/service/repository.rs
@@ -389,7 +389,7 @@
                     .ancestors(&revs)
                     .map_err(|e| Status::internal(format!("GraphError: {:?}", e)))?
                     .first()
-                    .and_then(|rev| cl.node_from_rev((*rev).into()))
+                    .map(|rev| cl.node_from_rev(*rev))
                     .copied())
             },
         )
diff --git a/rust/rhgitaly/src/ssh.rs b/rust/rhgitaly/src/ssh.rs
index e3ac2d5ddc7af0a8c2ec2ed4fe7dcae1d580d0ed_cnVzdC9yaGdpdGFseS9zcmMvc3NoLnJz..fe28610183a8f50cf1a155faf809eb359db30168_cnVzdC9yaGdpdGFseS9zcmMvc3NoLnJz 100644
--- a/rust/rhgitaly/src/ssh.rs
+++ b/rust/rhgitaly/src/ssh.rs
@@ -67,6 +67,7 @@
         OpenOptions::new()
             .write(true)
             .create(true)
+            .truncate(true)
             .mode(0o600)
             .open(&path)
             .await?
diff --git a/rust/rhgitaly/src/streaming.rs b/rust/rhgitaly/src/streaming.rs
index e3ac2d5ddc7af0a8c2ec2ed4fe7dcae1d580d0ed_cnVzdC9yaGdpdGFseS9zcmMvc3RyZWFtaW5nLnJz..fe28610183a8f50cf1a155faf809eb359db30168_cnVzdC9yaGdpdGFseS9zcmMvc3RyZWFtaW5nLnJz 100644
--- a/rust/rhgitaly/src/streaming.rs
+++ b/rust/rhgitaly/src/streaming.rs
@@ -371,6 +371,7 @@
         let mut file = fs::OpenOptions::new()
             .write(true)
             .create(true)
+            .truncate(true)
             .open(&path)
             .await
             .map_err(dump_streaming_request_error_status)?;
diff --git a/rust/src-tarball.sh b/rust/src-tarball.sh
index e3ac2d5ddc7af0a8c2ec2ed4fe7dcae1d580d0ed_cnVzdC9zcmMtdGFyYmFsbC5zaA==..fe28610183a8f50cf1a155faf809eb359db30168_cnVzdC9zcmMtdGFyYmFsbC5zaA== 100755
--- a/rust/src-tarball.sh
+++ b/rust/src-tarball.sh
@@ -33,6 +33,9 @@
 # but that is the result of the relative path in hg-core/src/config/mod.rs,
 # we're lucky it does not climb up outside of our package root.
 cp ${DEPS_DIR}/mercurial/mercurial/configitems.toml \
+   ${DEPS_DIR}/mercurial/mercurial/bdiff.* \
+   ${DEPS_DIR}/mercurial/mercurial/bitmanipulation.h \
+   ${DEPS_DIR}/mercurial/mercurial/compat.h \
    ${DIST_HGITALY}/rust/mercurial/
 
 mkdir -p ${DIST_RHGITALY}/hgitaly