Migrate to Bazel modules

Mirror the structure used in Gerrit: split MODULE.bazel into
include() fragments under tools/ for bazlets, repos, and Java deps,
and consume jgit as an in-tree bazel_dep via local_path_override.

All maven_jar declarations are replaced by a single RJE
maven.install in tools/java_deps.MODULE.bazel publishing the shared
"external_deps" repository, consistent with Gerrit and JGit.

The modules/jgit submodule is bumped to a servlet-4 commit that
ships a proper MODULE.bazel so jgit can be consumed as a Bazel
module.

Force Gitiles' root-selected Maven versions for artifacts that may
also be contributed by JGit, keeping the shared Maven graph consistent
under Bzlmod.

Bazel version is bumped to 8.6.0 and rules_java is pinned to 8.16.1.

Java version is updated to Java 21 by default, and the obsolete
Java 17 Error Prone toolchain registration and definition are removed.

Bug: Issue 303819949
Change-Id: I854cc58ad6129a053fd98073ad04af99317bf8ce
diff --git a/.bazelrc b/.bazelrc
index 4e6427a..63ecdcc 100644
--- a/.bazelrc
+++ b/.bazelrc
@@ -1,24 +1,16 @@
-# TODO(davido): Migrate all dependencies from WORKSPACE to MODULE.bazel
-# https://issues.gerritcodereview.com/issues/303819949
-common --noenable_bzlmod
+common --lockfile_mode=error
 
 build --workspace_status_command="python3 ./tools/workspace_status.py"
 build --repository_cache=~/.gerritcodereview/bazel-cache/repository
-build --experimental_strict_action_env
+build --incompatible_strict_action_env
 build --action_env=PATH
 build --disk_cache=~/.gerritcodereview/bazel-cache/cas
 
-# Builds using remote_jdk17, executes using remote_jdk17 or local_jdk
-build --java_language_version=17
-build --java_runtime_version=remotejdk_17
-build --tool_java_language_version=17
-build --tool_java_runtime_version=remotejdk_17
-
 # Builds using remote_jdk21, executes using remote_jdk21 or local_jdk
-build:java21 --java_language_version=21
-build:java21 --java_runtime_version=remotejdk_21
-build:java21 --tool_java_language_version=21
-build:java21 --tool_java_runtime_version=remotejdk_21
+build --java_language_version=21
+build --java_runtime_version=remotejdk_21
+build --tool_java_language_version=21
+build --tool_java_runtime_version=remotejdk_21
 
 test --build_tests_only
 test --test_output=errors
diff --git a/.bazelversion b/.bazelversion
index e8be684..acd405b 100644
--- a/.bazelversion
+++ b/.bazelversion
@@ -1 +1 @@
-7.6.1
+8.6.0
diff --git a/Documentation/developer-guide.md b/Documentation/developer-guide.md
index 0a96b3a..156b8e0 100644
--- a/Documentation/developer-guide.md
+++ b/Documentation/developer-guide.md
@@ -34,6 +34,70 @@
 $ bazelisk test //...
 ```
 
+## Managing dependencies (Bzlmod)
+
+Gitiles uses [Bzlmod](https://bazel.build/external/overview#bzlmod) and no
+longer has a `WORKSPACE` file. The module graph is declared in `MODULE.bazel`
+at the repo root, which `include()`s three fragments under `tools/`:
+
+* `tools/bazlets.MODULE.bazel` — pins the
+  [bazlets](https://gerrit.googlesource.com/bazlets) git_override (provides
+  `pkg_war`, `genrule2`, `junit`, `javadoc`, etc.).
+* `tools/repos.MODULE.bazel` — `local_repository` entries for vendored
+  submodules (e.g. `java-prettify`).
+* `tools/java_deps.MODULE.bazel` — Maven dependency declarations via
+  [`rules_jvm_external`](https://github.com/bazel-contrib/rules_jvm_external),
+  publishing the shared `@external_deps` repository.
+
+JGit is consumed as an in-tree Bazel module from the `modules/jgit` submodule
+via `bazel_dep(name = "jgit") + local_path_override(...)`.
+
+### Updating a Bazel module
+
+To bump a `bazel_dep` (e.g. `rules_jvm_external`, `rules_java`, `protobuf`,
+`bazlets`), edit the appropriate `MODULE.bazel` fragment and refresh the
+resolved graph:
+
+```
+$ bazelisk mod deps --lockfile_mode=update
+```
+
+This rewrites `MODULE.bazel.lock`. Commit the updated lockfile alongside the
+`MODULE.bazel` change.
+
+To inspect the resolved module graph:
+
+```
+$ bazelisk mod graph
+```
+
+### Updating a Maven dependency
+
+Java/Maven artifacts are managed by `rules_jvm_external` in
+`tools/java_deps.MODULE.bazel`. All artifacts are exposed as
+`@external_deps//:<sanitized_group>_<sanitized_artifact>`, for example
+`@external_deps//:com_google_guava_guava`.
+
+To add, remove, or bump a Maven artifact:
+
+1. Edit the `artifacts = [...]` list in `tools/java_deps.MODULE.bazel`.
+2. If the artifact's GA coordinate is also contributed by JGit, add it to
+   `_GITILES_FORCED_ARTIFACTS` so the gitiles version wins
+   (`maven.amend_artifact(force_version = "true")` mirrors Gerrit's pattern).
+3. Re-pin the lockfile:
+
+   ```
+   $ REPIN=1 bazelisk run @external_deps//:pin
+   ```
+
+   This regenerates `external_deps.lock.json` at the repo root. Commit the
+   updated lockfile together with the `tools/java_deps.MODULE.bazel` change.
+
+`tools/java_deps.MODULE.bazel` runs with `version_conflict_policy = "pinned"`
+and `duplicate_version_warning = "error"`, so any unresolved version skew
+between gitiles and JGit fails the build &mdash; do not downgrade these
+flags to `"warn"`.
+
 ## Troubleshooting
 
 If you encounter build errors such as:
diff --git a/MODULE.bazel b/MODULE.bazel
new file mode 100644
index 0000000..a515299
--- /dev/null
+++ b/MODULE.bazel
@@ -0,0 +1,36 @@
+module(name = "gitiles")
+
+# Core Bazel deps.
+bazel_dep(name = "bazel_features", version = "1.45.0")
+bazel_dep(name = "platforms", version = "1.0.0")
+bazel_dep(name = "rules_jvm_external", version = "7.0")
+
+# Language rules.
+bazel_dep(name = "rules_java", version = "8.16.1")
+bazel_dep(name = "rules_python", version = "2.0.0-rc4")
+
+# In-tree modules.
+bazel_dep(name = "jgit")
+local_path_override(
+    module_name = "jgit",
+    path = "modules/jgit",
+)
+
+# Toolchain setup.
+bazel_dep(name = "rbe_autoconfig")
+git_override(
+    module_name = "rbe_autoconfig",
+    commit = "eb944ce4fc29a1608eae9adf0b0e0df2f9e05e33",
+    remote = "https://github.com/davido/rbe_autoconfig.git",
+)
+
+register_toolchains("//tools:error_prone_warnings_toolchain_java21_definition")
+
+# Bazlets pin and packaging support.
+include("//tools:bazlets.MODULE.bazel")
+
+# Repository rules for in-tree sources.
+include("//tools:repos.MODULE.bazel")
+
+# External dependency wiring is split out.
+include("//tools:java_deps.MODULE.bazel")
diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock
new file mode 100644
index 0000000..9c62115
--- /dev/null
+++ b/MODULE.bazel.lock
@@ -0,0 +1,1488 @@
+{
+  "lockFileVersion": 24,
+  "registryFileHashes": {
+    "https://bcr.bazel.build/bazel_registry.json": "8a28e4aff06ee60aed2a8c281907fb8bcbf3b753c91fb5a5c57da3215d5b3497",
+    "https://bcr.bazel.build/modules/abseil-cpp/20210324.2/MODULE.bazel": "7cd0312e064fde87c8d1cd79ba06c876bd23630c83466e9500321be55c96ace2",
+    "https://bcr.bazel.build/modules/abseil-cpp/20211102.0/MODULE.bazel": "70390338f7a5106231d20620712f7cccb659cd0e9d073d1991c038eb9fc57589",
+    "https://bcr.bazel.build/modules/abseil-cpp/20230125.1/MODULE.bazel": "89047429cb0207707b2dface14ba7f8df85273d484c2572755be4bab7ce9c3a0",
+    "https://bcr.bazel.build/modules/abseil-cpp/20230802.0.bcr.1/MODULE.bazel": "1c8cec495288dccd14fdae6e3f95f772c1c91857047a098fad772034264cc8cb",
+    "https://bcr.bazel.build/modules/abseil-cpp/20230802.0/MODULE.bazel": "d253ae36a8bd9ee3c5955384096ccb6baf16a1b1e93e858370da0a3b94f77c16",
+    "https://bcr.bazel.build/modules/abseil-cpp/20230802.1/MODULE.bazel": "fa92e2eb41a04df73cdabeec37107316f7e5272650f81d6cc096418fe647b915",
+    "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/MODULE.bazel": "37bcdb4440fbb61df6a1c296ae01b327f19e9bb521f9b8e26ec854b6f97309ed",
+    "https://bcr.bazel.build/modules/abseil-cpp/20240116.2/MODULE.bazel": "73939767a4686cd9a520d16af5ab440071ed75cec1a876bf2fcfaf1f71987a16",
+    "https://bcr.bazel.build/modules/abseil-cpp/20250127.0/MODULE.bazel": "d1086e248cda6576862b4b3fe9ad76a214e08c189af5b42557a6e1888812c5d5",
+    "https://bcr.bazel.build/modules/abseil-cpp/20250127.1/MODULE.bazel": "c4a89e7ceb9bf1e25cf84a9f830ff6b817b72874088bf5141b314726e46a57c1",
+    "https://bcr.bazel.build/modules/abseil-cpp/20250512.1/MODULE.bazel": "d209fdb6f36ffaf61c509fcc81b19e81b411a999a934a032e10cd009a0226215",
+    "https://bcr.bazel.build/modules/abseil-cpp/20250814.0/MODULE.bazel": "c43c16ca2c432566cdb78913964497259903ebe8fb7d9b57b38e9f1425b427b8",
+    "https://bcr.bazel.build/modules/abseil-cpp/20250814.1/MODULE.bazel": "51f2312901470cdab0dbdf3b88c40cd21c62a7ed58a3de45b365ddc5b11bcab2",
+    "https://bcr.bazel.build/modules/abseil-cpp/20250814.1/source.json": "cea3901d7e299da7320700abbaafe57a65d039f10d0d7ea601c4a66938ea4b0c",
+    "https://bcr.bazel.build/modules/abseil-py/2.1.0/MODULE.bazel": "5ebe5bf853769c65707e5c28f216798f7a4b1042015e6a36e6d03094d94bec8a",
+    "https://bcr.bazel.build/modules/abseil-py/2.1.0/source.json": "0e8fc4f088ce07099c1cd6594c20c7ddbb48b4b3c0849b7d94ba94be88ff042b",
+    "https://bcr.bazel.build/modules/apple_support/1.11.1/MODULE.bazel": "1843d7cd8a58369a444fc6000e7304425fba600ff641592161d9f15b179fb896",
+    "https://bcr.bazel.build/modules/apple_support/1.15.1/MODULE.bazel": "a0556fefca0b1bb2de8567b8827518f94db6a6e7e7d632b4c48dc5f865bc7c85",
+    "https://bcr.bazel.build/modules/apple_support/1.23.1/MODULE.bazel": "53763fed456a968cf919b3240427cf3a9d5481ec5466abc9d5dc51bc70087442",
+    "https://bcr.bazel.build/modules/apple_support/1.23.1/source.json": "d888b44312eb0ad2c21a91d026753f330caa48a25c9b2102fae75eb2b0dcfdd2",
+    "https://bcr.bazel.build/modules/aspect_bazel_lib/2.11.0/MODULE.bazel": "cb1ba9f9999ed0bc08600c221f532c1ddd8d217686b32ba7d45b0713b5131452",
+    "https://bcr.bazel.build/modules/aspect_bazel_lib/2.11.0/source.json": "92494d5aa43b96665397dd13ee16023097470fa85e276b93674d62a244de47ee",
+    "https://bcr.bazel.build/modules/aspect_bazel_lib/2.7.7/MODULE.bazel": "491f8681205e31bb57892d67442ce448cda4f472a8e6b3dc062865e29a64f89c",
+    "https://bcr.bazel.build/modules/aspect_rules_js/2.0.0/MODULE.bazel": "b45b507574aa60a92796e3e13c195cd5744b3b8aff516a9c0cb5ae6a048161c5",
+    "https://bcr.bazel.build/modules/aspect_rules_js/2.0.0/source.json": "a6b09288ab135225982a58ac0b5e2c032c331d88f80553d86596000e894e86b3",
+    "https://bcr.bazel.build/modules/aspect_rules_rollup/2.0.1/MODULE.bazel": "296e3a053658c2af989ba9bd62a205e6d1fa84bdd6dd5249196546e6b84770ec",
+    "https://bcr.bazel.build/modules/aspect_rules_rollup/2.0.1/source.json": "2fe8ac1ccb4de74bf884761e070010280b272d94e3997205b361b91c75409726",
+    "https://bcr.bazel.build/modules/bazel_features/1.1.0/MODULE.bazel": "cfd42ff3b815a5f39554d97182657f8c4b9719568eb7fded2b9135f084bf760b",
+    "https://bcr.bazel.build/modules/bazel_features/1.1.1/MODULE.bazel": "27b8c79ef57efe08efccbd9dd6ef70d61b4798320b8d3c134fd571f78963dbcd",
+    "https://bcr.bazel.build/modules/bazel_features/1.11.0/MODULE.bazel": "f9382337dd5a474c3b7d334c2f83e50b6eaedc284253334cf823044a26de03e8",
+    "https://bcr.bazel.build/modules/bazel_features/1.13.0/MODULE.bazel": "c14c33c7c3c730612bdbe14ebbb5e61936b6f11322ea95a6e91cd1ba962f94df",
+    "https://bcr.bazel.build/modules/bazel_features/1.15.0/MODULE.bazel": "d38ff6e517149dc509406aca0db3ad1efdd890a85e049585b7234d04238e2a4d",
+    "https://bcr.bazel.build/modules/bazel_features/1.17.0/MODULE.bazel": "039de32d21b816b47bd42c778e0454217e9c9caac4a3cf8e15c7231ee3ddee4d",
+    "https://bcr.bazel.build/modules/bazel_features/1.18.0/MODULE.bazel": "1be0ae2557ab3a72a57aeb31b29be347bcdc5d2b1eb1e70f39e3851a7e97041a",
+    "https://bcr.bazel.build/modules/bazel_features/1.19.0/MODULE.bazel": "59adcdf28230d220f0067b1f435b8537dd033bfff8db21335ef9217919c7fb58",
+    "https://bcr.bazel.build/modules/bazel_features/1.21.0/MODULE.bazel": "675642261665d8eea09989aa3b8afb5c37627f1be178382c320d1b46afba5e3b",
+    "https://bcr.bazel.build/modules/bazel_features/1.23.0/MODULE.bazel": "fd1ac84bc4e97a5a0816b7fd7d4d4f6d837b0047cf4cbd81652d616af3a6591a",
+    "https://bcr.bazel.build/modules/bazel_features/1.25.0/MODULE.bazel": "e2e60a10a6da64bbf533f15ca652bf61a033e41c2ed734d79a9a08ba87f68c1a",
+    "https://bcr.bazel.build/modules/bazel_features/1.27.0/MODULE.bazel": "621eeee06c4458a9121d1f104efb80f39d34deff4984e778359c60eaf1a8cb65",
+    "https://bcr.bazel.build/modules/bazel_features/1.28.0/MODULE.bazel": "4b4200e6cbf8fa335b2c3f43e1d6ef3e240319c33d43d60cc0fbd4b87ece299d",
+    "https://bcr.bazel.build/modules/bazel_features/1.3.0/MODULE.bazel": "cdcafe83ec318cda34e02948e81d790aab8df7a929cec6f6969f13a489ccecd9",
+    "https://bcr.bazel.build/modules/bazel_features/1.30.0/MODULE.bazel": "a14b62d05969a293b80257e72e597c2da7f717e1e69fa8b339703ed6731bec87",
+    "https://bcr.bazel.build/modules/bazel_features/1.33.0/MODULE.bazel": "8b8dc9d2a4c88609409c3191165bccec0e4cb044cd7a72ccbe826583303459f6",
+    "https://bcr.bazel.build/modules/bazel_features/1.39.0/MODULE.bazel": "28739425c1fc283c91931619749c832b555e60bcd1010b40d8441ce0a5cf726d",
+    "https://bcr.bazel.build/modules/bazel_features/1.4.1/MODULE.bazel": "e45b6bb2350aff3e442ae1111c555e27eac1d915e77775f6fdc4b351b758b5d7",
+    "https://bcr.bazel.build/modules/bazel_features/1.45.0/MODULE.bazel": "7daec6d87ab0703417486d4cb948af0b06f55d4d7c08cbb5978c80e79b538edf",
+    "https://bcr.bazel.build/modules/bazel_features/1.45.0/source.json": "635e4536e09ff125b8972e0fa239c135fde5f18701f7d5115680560651dfb41d",
+    "https://bcr.bazel.build/modules/bazel_features/1.9.0/MODULE.bazel": "885151d58d90d8d9c811eb75e3288c11f850e1d6b481a8c9f766adee4712358b",
+    "https://bcr.bazel.build/modules/bazel_features/1.9.1/MODULE.bazel": "8f679097876a9b609ad1f60249c49d68bfab783dd9be012faf9d82547b14815a",
+    "https://bcr.bazel.build/modules/bazel_lib/3.0.0/MODULE.bazel": "22b70b80ac89ad3f3772526cd9feee2fa412c2b01933fea7ed13238a448d370d",
+    "https://bcr.bazel.build/modules/bazel_lib/3.0.0/source.json": "895f21909c6fba01d7c17914bb6c8e135982275a1b18cdaa4e62272217ef1751",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.0.3/MODULE.bazel": "bcb0fd896384802d1ad283b4e4eb4d718eebd8cb820b0a2c3a347fb971afd9d8",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.1.1/MODULE.bazel": "1add3e7d93ff2e6998f9e118022c84d163917d912f5afafb3058e3d2f1545b5e",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.2.0/MODULE.bazel": "44fe84260e454ed94ad326352a698422dbe372b21a1ac9f3eab76eb531223686",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.2.1/MODULE.bazel": "f35baf9da0efe45fa3da1696ae906eea3d615ad41e2e3def4aeb4e8bc0ef9a7a",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.3.0/MODULE.bazel": "20228b92868bf5cfc41bda7afc8a8ba2a543201851de39d990ec957b513579c5",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.4.1/MODULE.bazel": "a0dcb779424be33100dcae821e9e27e4f2901d9dfd5333efe5ac6a8d7ab75e1d",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.4.2/MODULE.bazel": "3bd40978e7a1fac911d5989e6b09d8f64921865a45822d8b09e815eaa726a651",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.5.0/MODULE.bazel": "32880f5e2945ce6a03d1fbd588e9198c0a959bb42297b2cfaf1685b7bc32e138",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.6.1/MODULE.bazel": "8fdee2dbaace6c252131c00e1de4b165dc65af02ea278476187765e1a617b917",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.7.0/MODULE.bazel": "0db596f4563de7938de764cc8deeabec291f55e8ec15299718b93c4423e9796d",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/MODULE.bazel": "3120d80c5861aa616222ec015332e5f8d3171e062e3e804a2a0253e1be26e59b",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.8.1/MODULE.bazel": "88ade7293becda963e0e3ea33e7d54d3425127e0a326e0d17da085a5f1f03ff6",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.8.2/MODULE.bazel": "69ad6927098316848b34a9142bcc975e018ba27f08c4ff403f50c1b6e646ca67",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.9.0/MODULE.bazel": "72997b29dfd95c3fa0d0c48322d05590418edef451f8db8db5509c57875fb4b7",
+    "https://bcr.bazel.build/modules/bazel_skylib/1.9.0/source.json": "7ad77c1e8c1b84222d9b3f3cae016a76639435744c19330b0b37c0a3c9da7dc0",
+    "https://bcr.bazel.build/modules/bazel_worker_api/0.0.1/MODULE.bazel": "02a13b77321773b2042e70ee5e4c5e099c8ddee4cf2da9cd420442c36938d4bd",
+    "https://bcr.bazel.build/modules/bazel_worker_api/0.0.4/MODULE.bazel": "460aa12d01231a80cce03c548287b433b321d205b0028ae596728c35e5ee442e",
+    "https://bcr.bazel.build/modules/bazel_worker_api/0.0.8/MODULE.bazel": "396c1ef53835aafe3d42ce6619080531ee770648303731f16cfaa33fa056bf0c",
+    "https://bcr.bazel.build/modules/bazel_worker_api/0.0.8/source.json": "abaf8ac9d2ab2f47bda9af4c0c080ff7907378888e1f4bc62a0539dd13ba61e8",
+    "https://bcr.bazel.build/modules/bazel_worker_java/0.0.4/MODULE.bazel": "82494a01018bb7ef06d4a17ec4cd7a758721f10eb8b6c820a818e70d669500db",
+    "https://bcr.bazel.build/modules/bazel_worker_java/0.0.8/MODULE.bazel": "e76479eae70bd4e8f5f4c2dfc5d03ab971cfb18750246c7b3f3454c5c2ee6629",
+    "https://bcr.bazel.build/modules/bazel_worker_java/0.0.8/source.json": "9395c4679444bc47bf7e51a710366a4480aa371c6f6bed01868e2fabcf11acec",
+    "https://bcr.bazel.build/modules/buildozer/7.1.2/MODULE.bazel": "2e8dd40ede9c454042645fd8d8d0cd1527966aa5c919de86661e62953cd73d84",
+    "https://bcr.bazel.build/modules/buildozer/7.1.2/source.json": "c9028a501d2db85793a6996205c8de120944f50a0d570438fcae0457a5f9d1f8",
+    "https://bcr.bazel.build/modules/gazelle/0.32.0/MODULE.bazel": "b499f58a5d0d3537f3cf5b76d8ada18242f64ec474d8391247438bf04f58c7b8",
+    "https://bcr.bazel.build/modules/gazelle/0.33.0/MODULE.bazel": "a13a0f279b462b784fb8dd52a4074526c4a2afe70e114c7d09066097a46b3350",
+    "https://bcr.bazel.build/modules/gazelle/0.34.0/MODULE.bazel": "abdd8ce4d70978933209db92e436deb3a8b737859e9354fb5fd11fb5c2004c8a",
+    "https://bcr.bazel.build/modules/gazelle/0.36.0/MODULE.bazel": "e375d5d6e9a6ca59b0cb38b0540bc9a05b6aa926d322f2de268ad267a2ee74c0",
+    "https://bcr.bazel.build/modules/gazelle/0.40.0/MODULE.bazel": "42ba5378ebe845fca43989a53186ab436d956db498acde790685fe0e8f9c6146",
+    "https://bcr.bazel.build/modules/gazelle/0.47.0/MODULE.bazel": "b61bb007c4efad134aa30ee7f4a8e2a39b22aa5685f005edaa022fbd1de43ebc",
+    "https://bcr.bazel.build/modules/gazelle/0.47.0/source.json": "aeb2e5df14b7fb298625d75d08b9c65bdb0b56014c5eb89da9e5dd0572280ae6",
+    "https://bcr.bazel.build/modules/google_benchmark/1.8.2/MODULE.bazel": "a70cf1bba851000ba93b58ae2f6d76490a9feb74192e57ab8e8ff13c34ec50cb",
+    "https://bcr.bazel.build/modules/googletest/1.11.0/MODULE.bazel": "3a83f095183f66345ca86aa13c58b59f9f94a2f81999c093d4eeaa2d262d12f4",
+    "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/MODULE.bazel": "22c31a561553727960057361aa33bf20fb2e98584bc4fec007906e27053f80c6",
+    "https://bcr.bazel.build/modules/googletest/1.14.0/MODULE.bazel": "cfbcbf3e6eac06ef9d85900f64424708cc08687d1b527f0ef65aa7517af8118f",
+    "https://bcr.bazel.build/modules/googletest/1.15.2/MODULE.bazel": "6de1edc1d26cafb0ea1a6ab3f4d4192d91a312fd2d360b63adaa213cd00b2108",
+    "https://bcr.bazel.build/modules/googletest/1.17.0/MODULE.bazel": "dbec758171594a705933a29fcf69293d2468c49ec1f2ebca65c36f504d72df46",
+    "https://bcr.bazel.build/modules/googletest/1.17.0/source.json": "38e4454b25fc30f15439c0378e57909ab1fd0a443158aa35aec685da727cd713",
+    "https://bcr.bazel.build/modules/jsoncpp/1.9.5/MODULE.bazel": "31271aedc59e815656f5736f282bb7509a97c7ecb43e927ac1a37966e0578075",
+    "https://bcr.bazel.build/modules/jsoncpp/1.9.6/MODULE.bazel": "2f8d20d3b7d54143213c4dfc3d98225c42de7d666011528dc8fe91591e2e17b0",
+    "https://bcr.bazel.build/modules/jsoncpp/1.9.6/source.json": "a04756d367a2126c3541682864ecec52f92cdee80a35735a3cb249ce015ca000",
+    "https://bcr.bazel.build/modules/libpfm/4.11.0/MODULE.bazel": "45061ff025b301940f1e30d2c16bea596c25b176c8b6b3087e92615adbd52902",
+    "https://bcr.bazel.build/modules/nlohmann_json/3.6.1/MODULE.bazel": "6f7b417dcc794d9add9e556673ad25cb3ba835224290f4f848f8e2db1e1fca74",
+    "https://bcr.bazel.build/modules/nlohmann_json/3.6.1/source.json": "f448c6e8963fdfa7eb831457df83ad63d3d6355018f6574fb017e8169deb43a9",
+    "https://bcr.bazel.build/modules/package_metadata/0.0.2/MODULE.bazel": "fb8d25550742674d63d7b250063d4580ca530499f045d70748b1b142081ebb92",
+    "https://bcr.bazel.build/modules/package_metadata/0.0.3/MODULE.bazel": "77890552ecea9e284b5424c9de827a58099348763a4359e975c359a83d4faa83",
+    "https://bcr.bazel.build/modules/package_metadata/0.0.5/MODULE.bazel": "ef4f9439e3270fdd6b9fd4dbc3d2f29d13888e44c529a1b243f7a31dfbc2e8e4",
+    "https://bcr.bazel.build/modules/package_metadata/0.0.7/MODULE.bazel": "7adb03933fc8401f495800cf4eafcff0edc6da0ff55c7db223ef69d19f689486",
+    "https://bcr.bazel.build/modules/package_metadata/0.0.7/source.json": "50639625e937b56115012674c797cca7a05a96b4878c87d803c13dc2b31de8a0",
+    "https://bcr.bazel.build/modules/platforms/0.0.10/MODULE.bazel": "8cb8efaf200bdeb2150d93e162c40f388529a25852b332cec879373771e48ed5",
+    "https://bcr.bazel.build/modules/platforms/0.0.11/MODULE.bazel": "0daefc49732e227caa8bfa834d65dc52e8cc18a2faf80df25e8caea151a9413f",
+    "https://bcr.bazel.build/modules/platforms/0.0.4/MODULE.bazel": "9b328e31ee156f53f3c416a64f8491f7eb731742655a47c9eec4703a71644aee",
+    "https://bcr.bazel.build/modules/platforms/0.0.5/MODULE.bazel": "5733b54ea419d5eaf7997054bb55f6a1d0b5ff8aedf0176fef9eea44f3acda37",
+    "https://bcr.bazel.build/modules/platforms/0.0.6/MODULE.bazel": "ad6eeef431dc52aefd2d77ed20a4b353f8ebf0f4ecdd26a807d2da5aa8cd0615",
+    "https://bcr.bazel.build/modules/platforms/0.0.7/MODULE.bazel": "72fd4a0ede9ee5c021f6a8dd92b503e089f46c227ba2813ff183b71616034814",
+    "https://bcr.bazel.build/modules/platforms/0.0.8/MODULE.bazel": "9f142c03e348f6d263719f5074b21ef3adf0b139ee4c5133e2aa35664da9eb2d",
+    "https://bcr.bazel.build/modules/platforms/0.0.9/MODULE.bazel": "4a87a60c927b56ddd67db50c89acaa62f4ce2a1d2149ccb63ffd871d5ce29ebc",
+    "https://bcr.bazel.build/modules/platforms/1.0.0/MODULE.bazel": "f05feb42b48f1b3c225e4ccf351f367be0371411a803198ec34a389fb22aa580",
+    "https://bcr.bazel.build/modules/platforms/1.0.0/source.json": "f4ff1fd412e0246fd38c82328eb209130ead81d62dcd5a9e40910f867f733d96",
+    "https://bcr.bazel.build/modules/protobuf/21.7/MODULE.bazel": "a5a29bb89544f9b97edce05642fac225a808b5b7be74038ea3640fae2f8e66a7",
+    "https://bcr.bazel.build/modules/protobuf/23.1/MODULE.bazel": "88b393b3eb4101d18129e5db51847cd40a5517a53e81216144a8c32dfeeca52a",
+    "https://bcr.bazel.build/modules/protobuf/24.4/MODULE.bazel": "7bc7ce5f2abf36b3b7b7c8218d3acdebb9426aeb35c2257c96445756f970eb12",
+    "https://bcr.bazel.build/modules/protobuf/27.0/MODULE.bazel": "7873b60be88844a0a1d8f80b9d5d20cfbd8495a689b8763e76c6372998d3f64c",
+    "https://bcr.bazel.build/modules/protobuf/27.1/MODULE.bazel": "703a7b614728bb06647f965264967a8ef1c39e09e8f167b3ca0bb1fd80449c0d",
+    "https://bcr.bazel.build/modules/protobuf/27.2/MODULE.bazel": "32450b50673882e4c8c3d10a83f3bc82161b213ed2f80d17e38bece8f165c295",
+    "https://bcr.bazel.build/modules/protobuf/29.0-rc2.bcr.1/MODULE.bazel": "52f4126f63a2f0bbf36b99c2a87648f08467a4eaf92ba726bc7d6a500bbf770c",
+    "https://bcr.bazel.build/modules/protobuf/29.0-rc2/MODULE.bazel": "6241d35983510143049943fc0d57937937122baf1b287862f9dc8590fc4c37df",
+    "https://bcr.bazel.build/modules/protobuf/29.0-rc3/MODULE.bazel": "33c2dfa286578573afc55a7acaea3cada4122b9631007c594bf0729f41c8de92",
+    "https://bcr.bazel.build/modules/protobuf/29.0/MODULE.bazel": "319dc8bf4c679ff87e71b1ccfb5a6e90a6dbc4693501d471f48662ac46d04e4e",
+    "https://bcr.bazel.build/modules/protobuf/29.1/MODULE.bazel": "557c3457560ff49e122ed76c0bc3397a64af9574691cb8201b4e46d4ab2ecb95",
+    "https://bcr.bazel.build/modules/protobuf/29.3/MODULE.bazel": "77480eea5fb5541903e49683f24dc3e09f4a79e0eea247414887bb9fc0066e94",
+    "https://bcr.bazel.build/modules/protobuf/3.19.0/MODULE.bazel": "6b5fbb433f760a99a22b18b6850ed5784ef0e9928a72668b66e4d7ccd47db9b0",
+    "https://bcr.bazel.build/modules/protobuf/3.19.2/MODULE.bazel": "532ffe5f2186b69fdde039efe6df13ba726ff338c6bc82275ad433013fa10573",
+    "https://bcr.bazel.build/modules/protobuf/3.19.6/MODULE.bazel": "9233edc5e1f2ee276a60de3eaa47ac4132302ef9643238f23128fea53ea12858",
+    "https://bcr.bazel.build/modules/protobuf/31.1/MODULE.bazel": "379a389bb330b7b8c1cdf331cc90bf3e13de5614799b3b52cdb7c6f389f6b38e",
+    "https://bcr.bazel.build/modules/protobuf/32.1/MODULE.bazel": "89cd2866a9cb07fee9ff74c41ceace11554f32e0d849de4e23ac55515cfada4d",
+    "https://bcr.bazel.build/modules/protobuf/33.4/MODULE.bazel": "114775b816b38b6d0ca620450d6b02550c60ceedfdc8d9a229833b34a223dc42",
+    "https://bcr.bazel.build/modules/protobuf/33.4/source.json": "555f8686b4c7d6b5ba731fbea13bf656b4bfd9a7ff629c1d9d3f6e1d6155de79",
+    "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e",
+    "https://bcr.bazel.build/modules/pybind11_bazel/2.12.0/MODULE.bazel": "e6f4c20442eaa7c90d7190d8dc539d0ab422f95c65a57cc59562170c58ae3d34",
+    "https://bcr.bazel.build/modules/pybind11_bazel/2.12.0/source.json": "6900fdc8a9e95866b8c0d4ad4aba4d4236317b5c1cd04c502df3f0d33afed680",
+    "https://bcr.bazel.build/modules/re2/2023-09-01/MODULE.bazel": "cb3d511531b16cfc78a225a9e2136007a48cf8a677e4264baeab57fe78a80206",
+    "https://bcr.bazel.build/modules/re2/2024-07-02.bcr.1/MODULE.bazel": "b4963dda9b31080be1905ef085ecd7dd6cd47c05c79b9cdf83ade83ab2ab271a",
+    "https://bcr.bazel.build/modules/re2/2024-07-02.bcr.1/source.json": "2ff292be6ef3340325ce8a045ecc326e92cbfab47c7cbab4bd85d28971b97ac4",
+    "https://bcr.bazel.build/modules/re2/2024-07-02/MODULE.bazel": "0eadc4395959969297cbcf31a249ff457f2f1d456228c67719480205aa306daa",
+    "https://bcr.bazel.build/modules/rules_android/0.1.1/MODULE.bazel": "48809ab0091b07ad0182defb787c4c5328bd3a278938415c00a7b69b50c4d3a8",
+    "https://bcr.bazel.build/modules/rules_android/0.6.4/MODULE.bazel": "b4cde12d506dd65d82b2be39761f49f5797303343a3d5b4ee191c0cdf9ef387c",
+    "https://bcr.bazel.build/modules/rules_android/0.6.6/MODULE.bazel": "b0fb569752aab65ab1a9db0a8f6cfaf5aa1754965e17e95dcf0e4d88e192a68d",
+    "https://bcr.bazel.build/modules/rules_android/0.7.1/MODULE.bazel": "a806fc382a774252f228a40e3b11b9fcc6276f8778c7fb33e9f72937c6258363",
+    "https://bcr.bazel.build/modules/rules_android/0.7.1/source.json": "151440aed3f0f73a00d4ed5cec5d31f63a6fef9b95d8fab1eb1810150fa525f2",
+    "https://bcr.bazel.build/modules/rules_apple/3.16.0/MODULE.bazel": "0d1caf0b8375942ce98ea944be754a18874041e4e0459401d925577624d3a54a",
+    "https://bcr.bazel.build/modules/rules_apple/3.16.0/source.json": "d8b5fe461272018cc07cfafce11fe369c7525330804c37eec5a82f84cd475366",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.1/MODULE.bazel": "cb2aa0747f84c6c3a78dad4e2049c154f08ab9d166b1273835a8174940365647",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.10/MODULE.bazel": "ec1705118f7eaedd6e118508d3d26deba2a4e76476ada7e0e3965211be012002",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.13/MODULE.bazel": "0e8529ed7b323dad0775ff924d2ae5af7640b23553dfcd4d34344c7e7a867191",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.14/MODULE.bazel": "5e343a3aac88b8d7af3b1b6d2093b55c347b8eefc2e7d1442f7a02dc8fea48ac",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.15/MODULE.bazel": "6704c35f7b4a72502ee81f61bf88706b54f06b3cbe5558ac17e2e14666cd5dcc",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.16/MODULE.bazel": "7661303b8fc1b4d7f532e54e9d6565771fea666fbdf839e0a86affcd02defe87",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.17/MODULE.bazel": "2ae1d8f4238ec67d7185d8861cb0a2cdf4bc608697c331b95bf990e69b62e64a",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.2/MODULE.bazel": "6915987c90970493ab97393024c156ea8fb9f3bea953b2f3ec05c34f19b5695c",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.6/MODULE.bazel": "abf360251023dfe3efcef65ab9d56beefa8394d4176dd29529750e1c57eaa33f",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.8/MODULE.bazel": "964c85c82cfeb6f3855e6a07054fdb159aced38e99a5eecf7bce9d53990afa3e",
+    "https://bcr.bazel.build/modules/rules_cc/0.0.9/MODULE.bazel": "836e76439f354b89afe6a911a7adf59a6b2518fafb174483ad78a2a2fde7b1c5",
+    "https://bcr.bazel.build/modules/rules_cc/0.1.1/MODULE.bazel": "2f0222a6f229f0bf44cd711dc13c858dad98c62d52bd51d8fc3a764a83125513",
+    "https://bcr.bazel.build/modules/rules_cc/0.1.5/MODULE.bazel": "88dfc9361e8b5ae1008ac38f7cdfd45ad738e4fa676a3ad67d19204f045a1fd8",
+    "https://bcr.bazel.build/modules/rules_cc/0.2.0/MODULE.bazel": "b5c17f90458caae90d2ccd114c81970062946f49f355610ed89bebf954f5783c",
+    "https://bcr.bazel.build/modules/rules_cc/0.2.13/MODULE.bazel": "eecdd666eda6be16a8d9dc15e44b5c75133405e820f620a234acc4b1fdc5aa37",
+    "https://bcr.bazel.build/modules/rules_cc/0.2.14/MODULE.bazel": "353c99ed148887ee89c54a17d4100ae7e7e436593d104b668476019023b58df8",
+    "https://bcr.bazel.build/modules/rules_cc/0.2.17/MODULE.bazel": "1849602c86cb60da8613d2de887f9566a6d354a6df6d7009f9d04a14402f9a84",
+    "https://bcr.bazel.build/modules/rules_cc/0.2.17/source.json": "3832f45d145354049137c0090df04629d9c2b5493dc5c2bf46f1834040133a07",
+    "https://bcr.bazel.build/modules/rules_cc/0.2.8/MODULE.bazel": "f1df20f0bf22c28192a794f29b501ee2018fa37a3862a1a2132ae2940a23a642",
+    "https://bcr.bazel.build/modules/rules_foreign_cc/0.9.0/MODULE.bazel": "c9e8c682bf75b0e7c704166d79b599f93b72cfca5ad7477df596947891feeef6",
+    "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/MODULE.bazel": "40c97d1144356f52905566c55811f13b299453a14ac7769dfba2ac38192337a8",
+    "https://bcr.bazel.build/modules/rules_go/0.41.0/MODULE.bazel": "55861d8e8bb0e62cbd2896f60ff303f62ffcb0eddb74ecb0e5c0cbe36fc292c8",
+    "https://bcr.bazel.build/modules/rules_go/0.42.0/MODULE.bazel": "8cfa875b9aa8c6fce2b2e5925e73c1388173ea3c32a0db4d2b4804b453c14270",
+    "https://bcr.bazel.build/modules/rules_go/0.46.0/MODULE.bazel": "3477df8bdcc49e698b9d25f734c4f3a9f5931ff34ee48a2c662be168f5f2d3fd",
+    "https://bcr.bazel.build/modules/rules_go/0.50.1/MODULE.bazel": "b91a308dc5782bb0a8021ad4330c81fea5bda77f96b9e4c117b9b9c8f6665ee0",
+    "https://bcr.bazel.build/modules/rules_go/0.51.0-rc2/MODULE.bazel": "edfc3a9cea7bedb0eaaff37b0d7817c1a4bf72b3c615580b0ffcee6c52690fd4",
+    "https://bcr.bazel.build/modules/rules_go/0.53.0/MODULE.bazel": "a4ed760d3ac0dbc0d7b967631a9a3fd9100d28f7d9fcf214b4df87d4bfff5f9a",
+    "https://bcr.bazel.build/modules/rules_go/0.59.0/MODULE.bazel": "b7e43e7414a3139a7547d1b4909b29085fbe5182b6c58cbe1ed4c6272815aeae",
+    "https://bcr.bazel.build/modules/rules_go/0.59.0/source.json": "1df17bb7865cfc029492c30163cee891d0dd8658ea0d5bfdf252c4b6db5c1ef6",
+    "https://bcr.bazel.build/modules/rules_java/4.0.0/MODULE.bazel": "5a78a7ae82cd1a33cef56dc578c7d2a46ed0dca12643ee45edbb8417899e6f74",
+    "https://bcr.bazel.build/modules/rules_java/5.3.5/MODULE.bazel": "a4ec4f2db570171e3e5eb753276ee4b389bae16b96207e9d3230895c99644b86",
+    "https://bcr.bazel.build/modules/rules_java/6.0.0/MODULE.bazel": "8a43b7df601a7ec1af61d79345c17b31ea1fedc6711fd4abfd013ea612978e39",
+    "https://bcr.bazel.build/modules/rules_java/6.3.0/MODULE.bazel": "a97c7678c19f236a956ad260d59c86e10a463badb7eb2eda787490f4c969b963",
+    "https://bcr.bazel.build/modules/rules_java/6.4.0/MODULE.bazel": "e986a9fe25aeaa84ac17ca093ef13a4637f6107375f64667a15999f77db6c8f6",
+    "https://bcr.bazel.build/modules/rules_java/6.5.2/MODULE.bazel": "1d440d262d0e08453fa0c4d8f699ba81609ed0e9a9a0f02cd10b3e7942e61e31",
+    "https://bcr.bazel.build/modules/rules_java/7.1.0/MODULE.bazel": "30d9135a2b6561c761bd67bd4990da591e6bdc128790ce3e7afd6a3558b2fb64",
+    "https://bcr.bazel.build/modules/rules_java/7.10.0/MODULE.bazel": "530c3beb3067e870561739f1144329a21c851ff771cd752a49e06e3dc9c2e71a",
+    "https://bcr.bazel.build/modules/rules_java/7.12.2/MODULE.bazel": "579c505165ee757a4280ef83cda0150eea193eed3bef50b1004ba88b99da6de6",
+    "https://bcr.bazel.build/modules/rules_java/7.2.0/MODULE.bazel": "06c0334c9be61e6cef2c8c84a7800cef502063269a5af25ceb100b192453d4ab",
+    "https://bcr.bazel.build/modules/rules_java/7.3.2/MODULE.bazel": "50dece891cfdf1741ea230d001aa9c14398062f2b7c066470accace78e412bc2",
+    "https://bcr.bazel.build/modules/rules_java/7.4.0/MODULE.bazel": "a592852f8a3dd539e82ee6542013bf2cadfc4c6946be8941e189d224500a8934",
+    "https://bcr.bazel.build/modules/rules_java/7.6.1/MODULE.bazel": "2f14b7e8a1aa2f67ae92bc69d1ec0fa8d9f827c4e17ff5e5f02e91caa3b2d0fe",
+    "https://bcr.bazel.build/modules/rules_java/8.13.0/MODULE.bazel": "0444ebf737d144cf2bb2ccb368e7f1cce735264285f2a3711785827c1686625e",
+    "https://bcr.bazel.build/modules/rules_java/8.14.0/MODULE.bazel": "717717ed40cc69994596a45aec6ea78135ea434b8402fb91b009b9151dd65615",
+    "https://bcr.bazel.build/modules/rules_java/8.16.1/MODULE.bazel": "0f20b1cecaa8e52f60a8f071e59a20b4e3b9a67f6c56c802ea256f6face692d3",
+    "https://bcr.bazel.build/modules/rules_java/8.3.2/MODULE.bazel": "7336d5511ad5af0b8615fdc7477535a2e4e723a357b6713af439fe8cf0195017",
+    "https://bcr.bazel.build/modules/rules_java/8.5.1/MODULE.bazel": "d8a9e38cc5228881f7055a6079f6f7821a073df3744d441978e7a43e20226939",
+    "https://bcr.bazel.build/modules/rules_java/8.6.0/MODULE.bazel": "9c064c434606d75a086f15ade5edb514308cccd1544c2b2a89bbac4310e41c71",
+    "https://bcr.bazel.build/modules/rules_java/8.6.1/MODULE.bazel": "f4808e2ab5b0197f094cabce9f4b006a27766beb6a9975931da07099560ca9c2",
+    "https://bcr.bazel.build/modules/rules_java/8.6.3/MODULE.bazel": "e90505b7a931d194245ffcfb6ff4ca8ef9d46b4e830d12e64817752e0198e2ed",
+    "https://bcr.bazel.build/modules/rules_java/8.9.0/MODULE.bazel": "e17c876cb53dcd817b7b7f0d2985b710610169729e8c371b2221cacdcd3dce4a",
+    "https://bcr.bazel.build/modules/rules_java/9.3.0/MODULE.bazel": "f657c72d65ac449caae9abf2e68e66c0d36f9416848c4c4903d0b3234229e7f2",
+    "https://bcr.bazel.build/modules/rules_java/9.3.0/source.json": "59ae7e662c3c7042b88bbb42ad12483523e234c65ebe4c51611baa43e85cb248",
+    "https://bcr.bazel.build/modules/rules_jvm_external/4.4.2/MODULE.bazel": "a56b85e418c83eb1839819f0b515c431010160383306d13ec21959ac412d2fe7",
+    "https://bcr.bazel.build/modules/rules_jvm_external/5.1/MODULE.bazel": "33f6f999e03183f7d088c9be518a63467dfd0be94a11d0055fe2d210f89aa909",
+    "https://bcr.bazel.build/modules/rules_jvm_external/5.2/MODULE.bazel": "d9351ba35217ad0de03816ef3ed63f89d411349353077348a45348b096615036",
+    "https://bcr.bazel.build/modules/rules_jvm_external/5.3/MODULE.bazel": "bf93870767689637164657731849fb887ad086739bd5d360d90007a581d5527d",
+    "https://bcr.bazel.build/modules/rules_jvm_external/6.1/MODULE.bazel": "75b5fec090dbd46cf9b7d8ea08cf84a0472d92ba3585b476f44c326eda8059c4",
+    "https://bcr.bazel.build/modules/rules_jvm_external/6.10/MODULE.bazel": "33e636ca6bc9ee0fa090a38aa33c631ded2d8cf6fead4124181d1b35dc474f7c",
+    "https://bcr.bazel.build/modules/rules_jvm_external/6.2/MODULE.bazel": "36a6e52487a855f33cb960724eb56547fa87e2c98a0474c3acad94339d7f8e99",
+    "https://bcr.bazel.build/modules/rules_jvm_external/6.3/MODULE.bazel": "c998e060b85f71e00de5ec552019347c8bca255062c990ac02d051bb80a38df0",
+    "https://bcr.bazel.build/modules/rules_jvm_external/6.6/MODULE.bazel": "153042249c7060536dc95b6bb9f9bb8063b8a0b0cb7acdb381bddbc2374aed55",
+    "https://bcr.bazel.build/modules/rules_jvm_external/6.7/MODULE.bazel": "e717beabc4d091ecb2c803c2d341b88590e9116b8bf7947915eeb33aab4f96dd",
+    "https://bcr.bazel.build/modules/rules_jvm_external/6.9/MODULE.bazel": "07c5db05527db7744a54fcffd653e1550d40e0540207a7f7e6d0a4de5bef8274",
+    "https://bcr.bazel.build/modules/rules_jvm_external/7.0/MODULE.bazel": "421482bdbcf05709f933c96b867a599deb517f2804ceb3e74511880610cfbf71",
+    "https://bcr.bazel.build/modules/rules_jvm_external/7.0/source.json": "714cd003eadf5be5c83268311fe8e951db39f802babeaddc536b3560dc8f6faf",
+    "https://bcr.bazel.build/modules/rules_kotlin/1.9.0/MODULE.bazel": "ef85697305025e5a61f395d4eaede272a5393cee479ace6686dba707de804d59",
+    "https://bcr.bazel.build/modules/rules_kotlin/1.9.5/MODULE.bazel": "043a16a572f610558ec2030db3ff0c9938574e7dd9f58bded1bb07c0192ef025",
+    "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/MODULE.bazel": "d269a01a18ee74d0335450b10f62c9ed81f2321d7958a2934e44272fe82dcef3",
+    "https://bcr.bazel.build/modules/rules_kotlin/2.1.3/MODULE.bazel": "ce7def6d576aa8d3a9c6d10e13b4d157296229674371f67dbf788dae0afae3d5",
+    "https://bcr.bazel.build/modules/rules_kotlin/2.2.2/MODULE.bazel": "00d39c5e0fa78cd86193946265bb849e7878c24e44260f9525108428852b315c",
+    "https://bcr.bazel.build/modules/rules_kotlin/2.2.2/source.json": "7a32c2259c79ae0c9a036121f120de825e3ba5f0f3a209ffbbdccf4dc62489b9",
+    "https://bcr.bazel.build/modules/rules_license/0.0.3/MODULE.bazel": "627e9ab0247f7d1e05736b59dbb1b6871373de5ad31c3011880b4133cafd4bd0",
+    "https://bcr.bazel.build/modules/rules_license/0.0.7/MODULE.bazel": "088fbeb0b6a419005b89cf93fe62d9517c0a2b8bb56af3244af65ecfe37e7d5d",
+    "https://bcr.bazel.build/modules/rules_license/1.0.0/MODULE.bazel": "a7fda60eefdf3d8c827262ba499957e4df06f659330bbe6cdbdb975b768bb65c",
+    "https://bcr.bazel.build/modules/rules_license/1.0.0/source.json": "a52c89e54cc311196e478f8382df91c15f7a2bfdf4c6cd0e2675cc2ff0b56efb",
+    "https://bcr.bazel.build/modules/rules_nodejs/6.2.0/MODULE.bazel": "ec27907f55eb34705adb4e8257952162a2d4c3ed0f0b3b4c3c1aad1fac7be35e",
+    "https://bcr.bazel.build/modules/rules_nodejs/6.2.0/source.json": "a77c307175a82982f0847fd6a8660db5b21440d8a9d073642cb4afa7a18612ff",
+    "https://bcr.bazel.build/modules/rules_pkg/0.7.0/MODULE.bazel": "df99f03fc7934a4737122518bb87e667e62d780b610910f0447665a7e2be62dc",
+    "https://bcr.bazel.build/modules/rules_pkg/1.0.1/MODULE.bazel": "5b1df97dbc29623bccdf2b0dcd0f5cb08e2f2c9050aab1092fd39a41e82686ff",
+    "https://bcr.bazel.build/modules/rules_pkg/1.0.1/source.json": "bd82e5d7b9ce2d31e380dd9f50c111d678c3bdaca190cb76b0e1c71b05e1ba8a",
+    "https://bcr.bazel.build/modules/rules_proto/4.0.0/MODULE.bazel": "a7a7b6ce9bee418c1a760b3d84f83a299ad6952f9903c67f19e4edd964894e06",
+    "https://bcr.bazel.build/modules/rules_proto/5.3.0-21.7/MODULE.bazel": "e8dff86b0971688790ae75528fe1813f71809b5afd57facb44dad9e8eca631b7",
+    "https://bcr.bazel.build/modules/rules_proto/6.0.0-rc1/MODULE.bazel": "1e5b502e2e1a9e825eef74476a5a1ee524a92297085015a052510b09a1a09483",
+    "https://bcr.bazel.build/modules/rules_proto/6.0.0/MODULE.bazel": "b531d7f09f58dce456cd61b4579ce8c86b38544da75184eadaf0a7cb7966453f",
+    "https://bcr.bazel.build/modules/rules_proto/6.0.2/MODULE.bazel": "ce916b775a62b90b61888052a416ccdda405212b6aaeb39522f7dc53431a5e73",
+    "https://bcr.bazel.build/modules/rules_proto/7.0.2/MODULE.bazel": "bf81793bd6d2ad89a37a40693e56c61b0ee30f7a7fdbaf3eabbf5f39de47dea2",
+    "https://bcr.bazel.build/modules/rules_proto/7.1.0/MODULE.bazel": "002d62d9108f75bb807cd56245d45648f38275cb3a99dcd45dfb864c5d74cb96",
+    "https://bcr.bazel.build/modules/rules_proto/7.1.0/source.json": "39f89066c12c24097854e8f57ab8558929f9c8d474d34b2c00ac04630ad8940e",
+    "https://bcr.bazel.build/modules/rules_python/0.10.2/MODULE.bazel": "cc82bc96f2997baa545ab3ce73f196d040ffb8756fd2d66125a530031cd90e5f",
+    "https://bcr.bazel.build/modules/rules_python/0.23.1/MODULE.bazel": "49ffccf0511cb8414de28321f5fcf2a31312b47c40cc21577144b7447f2bf300",
+    "https://bcr.bazel.build/modules/rules_python/0.25.0/MODULE.bazel": "72f1506841c920a1afec76975b35312410eea3aa7b63267436bfb1dd91d2d382",
+    "https://bcr.bazel.build/modules/rules_python/0.28.0/MODULE.bazel": "cba2573d870babc976664a912539b320cbaa7114cd3e8f053c720171cde331ed",
+    "https://bcr.bazel.build/modules/rules_python/0.31.0/MODULE.bazel": "93a43dc47ee570e6ec9f5779b2e64c1476a6ce921c48cc9a1678a91dd5f8fd58",
+    "https://bcr.bazel.build/modules/rules_python/0.33.2/MODULE.bazel": "3e036c4ad8d804a4dad897d333d8dce200d943df4827cb849840055be8d2e937",
+    "https://bcr.bazel.build/modules/rules_python/0.37.1/MODULE.bazel": "3faeb2d9fa0a81f8980643ee33f212308f4d93eea4b9ce6f36d0b742e71e9500",
+    "https://bcr.bazel.build/modules/rules_python/0.37.2/MODULE.bazel": "b5ffde91410745750b6c13be1c5dc4555ef5bc50562af4a89fd77807fdde626a",
+    "https://bcr.bazel.build/modules/rules_python/0.4.0/MODULE.bazel": "9208ee05fd48bf09ac60ed269791cf17fb343db56c8226a720fbb1cdf467166c",
+    "https://bcr.bazel.build/modules/rules_python/0.40.0/MODULE.bazel": "9d1a3cd88ed7d8e39583d9ffe56ae8a244f67783ae89b60caafc9f5cf318ada7",
+    "https://bcr.bazel.build/modules/rules_python/1.0.0/MODULE.bazel": "898a3d999c22caa585eb062b600f88654bf92efb204fa346fb55f6f8edffca43",
+    "https://bcr.bazel.build/modules/rules_python/1.4.1/MODULE.bazel": "8991ad45bdc25018301d6b7e1d3626afc3c8af8aaf4bc04f23d0b99c938b73a6",
+    "https://bcr.bazel.build/modules/rules_python/1.6.0/MODULE.bazel": "7e04ad8f8d5bea40451cf80b1bd8262552aa73f841415d20db96b7241bd027d8",
+    "https://bcr.bazel.build/modules/rules_python/1.7.0/MODULE.bazel": "d01f995ecd137abf30238ad9ce97f8fc3ac57289c8b24bd0bf53324d937a14f8",
+    "https://bcr.bazel.build/modules/rules_python/2.0.0-rc4/MODULE.bazel": "ff5f5adb821e82114bdcc34f13a9bfba0d8c9022fb677d46045f473de162b08d",
+    "https://bcr.bazel.build/modules/rules_python/2.0.0-rc4/source.json": "3dd0c78a1815392e2c47c066ab60b2047d57424a6aed33a29848d81506029a07",
+    "https://bcr.bazel.build/modules/rules_robolectric/4.14.1.2/MODULE.bazel": "d44fec647d0aeb67b9f3b980cf68ba634976f3ae7ccd6c07d790b59b87a4f251",
+    "https://bcr.bazel.build/modules/rules_robolectric/4.14.1.2/source.json": "37c10335f2361c337c5c1f34ed36d2da70534c23088062b33a8bdaab68aa9dea",
+    "https://bcr.bazel.build/modules/rules_shell/0.1.2/MODULE.bazel": "66e4ca3ce084b04af0b9ff05ff14cab4e5df7503973818bb91cbc6cda08d32fc",
+    "https://bcr.bazel.build/modules/rules_shell/0.2.0/MODULE.bazel": "fda8a652ab3c7d8fee214de05e7a9916d8b28082234e8d2c0094505c5268ed3c",
+    "https://bcr.bazel.build/modules/rules_shell/0.3.0/MODULE.bazel": "de4402cd12f4cc8fda2354fce179fdb068c0b9ca1ec2d2b17b3e21b24c1a937b",
+    "https://bcr.bazel.build/modules/rules_shell/0.4.1/MODULE.bazel": "00e501db01bbf4e3e1dd1595959092c2fadf2087b2852d3f553b5370f5633592",
+    "https://bcr.bazel.build/modules/rules_shell/0.6.1/MODULE.bazel": "72e76b0eea4e81611ef5452aa82b3da34caca0c8b7b5c0c9584338aa93bae26b",
+    "https://bcr.bazel.build/modules/rules_shell/0.6.1/source.json": "20ec05cd5e592055e214b2da8ccb283c7f2a421ea0dc2acbf1aa792e11c03d0c",
+    "https://bcr.bazel.build/modules/rules_swift/1.16.0/MODULE.bazel": "4a09f199545a60d09895e8281362b1ff3bb08bbde69c6fc87aff5b92fcc916ca",
+    "https://bcr.bazel.build/modules/rules_swift/2.1.1/MODULE.bazel": "494900a80f944fc7aa61500c2073d9729dff0b764f0e89b824eb746959bc1046",
+    "https://bcr.bazel.build/modules/rules_swift/2.1.1/source.json": "40fc69dfaac64deddbb75bd99cdac55f4427d9ca0afbe408576a65428427a186",
+    "https://bcr.bazel.build/modules/stardoc/0.5.1/MODULE.bazel": "1a05d92974d0c122f5ccf09291442580317cdd859f07a8655f1db9a60374f9f8",
+    "https://bcr.bazel.build/modules/stardoc/0.5.3/MODULE.bazel": "c7f6948dae6999bf0db32c1858ae345f112cacf98f174c7a8bb707e41b974f1c",
+    "https://bcr.bazel.build/modules/stardoc/0.5.4/MODULE.bazel": "6569966df04610b8520957cb8e97cf2e9faac2c0309657c537ab51c16c18a2a4",
+    "https://bcr.bazel.build/modules/stardoc/0.5.6/MODULE.bazel": "c43dabc564990eeab55e25ed61c07a1aadafe9ece96a4efabb3f8bf9063b71ef",
+    "https://bcr.bazel.build/modules/stardoc/0.6.2/MODULE.bazel": "7060193196395f5dd668eda046ccbeacebfd98efc77fed418dbe2b82ffaa39fd",
+    "https://bcr.bazel.build/modules/stardoc/0.7.0/MODULE.bazel": "05e3d6d30c099b6770e97da986c53bd31844d7f13d41412480ea265ac9e8079c",
+    "https://bcr.bazel.build/modules/stardoc/0.7.1/MODULE.bazel": "3548faea4ee5dda5580f9af150e79d0f6aea934fc60c1cc50f4efdd9420759e7",
+    "https://bcr.bazel.build/modules/stardoc/0.7.2/MODULE.bazel": "fc152419aa2ea0f51c29583fab1e8c99ddefd5b3778421845606ee628629e0e5",
+    "https://bcr.bazel.build/modules/stardoc/0.7.2/source.json": "58b029e5e901d6802967754adf0a9056747e8176f017cfe3607c0851f4d42216",
+    "https://bcr.bazel.build/modules/swift_argument_parser/1.3.1.1/MODULE.bazel": "5e463fbfba7b1701d957555ed45097d7f984211330106ccd1352c6e0af0dcf91",
+    "https://bcr.bazel.build/modules/swift_argument_parser/1.3.1.1/source.json": "32bd87e5f4d7acc57c5b2ff7c325ae3061d5e242c0c4c214ae87e0f1c13e54cb",
+    "https://bcr.bazel.build/modules/toml.bzl/0.3.0/MODULE.bazel": "5016e5dd1ad2200e119a4b28b2b3935e276c4b480f2fe3e952bea7eeba88f578",
+    "https://bcr.bazel.build/modules/toml.bzl/0.3.0/source.json": "0cf7c878c419b37ddb55f3dd93dd7c0c409bd7c4efacb3da504e0748780b2fa9",
+    "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "7298990c00040a0e2f121f6c32544bab27d4452f80d9ce51349b1a28f3005c43",
+    "https://bcr.bazel.build/modules/upb/0.0.0-20230516-61a97ef/MODULE.bazel": "c0df5e35ad55e264160417fd0875932ee3c9dda63d9fccace35ac62f45e1b6f9",
+    "https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0",
+    "https://bcr.bazel.build/modules/zlib/1.2.12/MODULE.bazel": "3b1a8834ada2a883674be8cbd36ede1b6ec481477ada359cd2d3ddc562340b27",
+    "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.5/MODULE.bazel": "eec517b5bbe5492629466e11dae908d043364302283de25581e3eb944326c4ca",
+    "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.5/source.json": "22bc55c47af97246cfc093d0acf683a7869377de362b5d1c552c2c2e16b7a806",
+    "https://bcr.bazel.build/modules/zlib/1.3.1/MODULE.bazel": "751c9940dcfe869f5f7274e1295422a34623555916eb98c174c1e945594bf198"
+  },
+  "selectedYankedVersions": {},
+  "moduleExtensions": {
+    "@@aspect_rules_js+//npm:extensions.bzl%pnpm": {
+      "general": {
+        "bzlTransitiveDigest": "nm36CZxYNSi4NbaqZuUuY5SlbqUX4SJR0eCaeGf7ibQ=",
+        "usagesDigest": "VcsfDFwmBt+ECaA/4/v9Ozpk8OnXWBpmy21oeFuDhZg=",
+        "recordedFileInputs": {},
+        "recordedDirentsInputs": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "pnpm": {
+            "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_rule",
+            "attributes": {
+              "package": "pnpm",
+              "version": "8.6.7",
+              "root_package": "",
+              "link_workspace": "",
+              "link_packages": {},
+              "integrity": "sha512-vRIWpD/L4phf9Bk2o/O2TDR8fFoJnpYrp2TKqTIZF/qZ2/rgL3qKXzHofHgbXsinwMoSEigz28sqk3pQ+yMEQQ==",
+              "url": "",
+              "commit": "",
+              "patch_args": [
+                "-p0"
+              ],
+              "patches": [],
+              "custom_postinstall": "",
+              "npm_auth": "",
+              "npm_auth_basic": "",
+              "npm_auth_username": "",
+              "npm_auth_password": "",
+              "lifecycle_hooks": [],
+              "extra_build_content": "load(\"@aspect_rules_js//js:defs.bzl\", \"js_binary\")\njs_binary(name = \"pnpm\", data = glob([\"package/**\"]), entry_point = \"package/dist/pnpm.cjs\", visibility = [\"//visibility:public\"])",
+              "generate_bzl_library_targets": false,
+              "extract_full_archive": true,
+              "system_tar": "auto"
+            }
+          },
+          "pnpm__links": {
+            "repoRuleId": "@@aspect_rules_js+//npm/private:npm_import.bzl%npm_import_links",
+            "attributes": {
+              "package": "pnpm",
+              "version": "8.6.7",
+              "dev": false,
+              "root_package": "",
+              "link_packages": {},
+              "deps": {},
+              "transitive_closure": {},
+              "lifecycle_build_target": false,
+              "lifecycle_hooks_env": [],
+              "lifecycle_hooks_execution_requirements": [
+                "no-sandbox"
+              ],
+              "lifecycle_hooks_use_default_shell_env": false,
+              "bins": {},
+              "package_visibility": [
+                "//visibility:public"
+              ],
+              "replace_package": ""
+            }
+          }
+        },
+        "recordedRepoMappingEntries": [
+          [
+            "aspect_bazel_lib+",
+            "bazel_skylib",
+            "bazel_skylib+"
+          ],
+          [
+            "aspect_bazel_lib+",
+            "bazel_tools",
+            "bazel_tools"
+          ],
+          [
+            "aspect_rules_js+",
+            "aspect_bazel_lib",
+            "aspect_bazel_lib+"
+          ],
+          [
+            "aspect_rules_js+",
+            "bazel_features",
+            "bazel_features+"
+          ],
+          [
+            "aspect_rules_js+",
+            "bazel_skylib",
+            "bazel_skylib+"
+          ],
+          [
+            "aspect_rules_js+",
+            "bazel_tools",
+            "bazel_tools"
+          ],
+          [
+            "bazel_features+",
+            "bazel_features_globals",
+            "bazel_features++version_extension+bazel_features_globals"
+          ],
+          [
+            "bazel_features+",
+            "bazel_features_version",
+            "bazel_features++version_extension+bazel_features_version"
+          ]
+        ]
+      }
+    },
+    "@@pybind11_bazel+//:internal_configure.bzl%internal_configure_extension": {
+      "general": {
+        "bzlTransitiveDigest": "NFQjcZF+fAvf5fDH+pqsx4JrfzP9PuHBz6S6ZutIbnw=",
+        "usagesDigest": "D1r3lfzMuUBFxgG8V6o0bQTLMk3GkaGOaPzw53wrwyw=",
+        "recordedFileInputs": {
+          "@@pybind11_bazel+//MODULE.bazel": "e6f4c20442eaa7c90d7190d8dc539d0ab422f95c65a57cc59562170c58ae3d34"
+        },
+        "recordedDirentsInputs": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "pybind11": {
+            "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive",
+            "attributes": {
+              "build_file": "@@pybind11_bazel+//:pybind11-BUILD.bazel",
+              "strip_prefix": "pybind11-2.12.0",
+              "urls": [
+                "https://github.com/pybind/pybind11/archive/v2.12.0.zip"
+              ]
+            }
+          }
+        },
+        "recordedRepoMappingEntries": [
+          [
+            "pybind11_bazel+",
+            "bazel_tools",
+            "bazel_tools"
+          ]
+        ]
+      }
+    },
+    "@@rules_android+//bzlmod_extensions:apksig.bzl%apksig_extension": {
+      "general": {
+        "bzlTransitiveDigest": "By9qVNN7G4oL1vYOJXye7Dp/CbR2ar9oxAW8WXAVcVw=",
+        "usagesDigest": "zr/niBQ/s2fHozWAsg4vI70wAxcuFjG+QtM15qGkq9o=",
+        "recordedFileInputs": {},
+        "recordedDirentsInputs": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "apksig": {
+            "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive",
+            "attributes": {
+              "url": "https://android.googlesource.com/platform/tools/apksig/+archive/24e3075e68ebe17c0b529bb24bfda819db5e2f3b.tar.gz",
+              "build_file": "@@rules_android+//bzlmod_extensions:apksig.BUILD"
+            }
+          }
+        },
+        "recordedRepoMappingEntries": [
+          [
+            "rules_android+",
+            "bazel_tools",
+            "bazel_tools"
+          ]
+        ]
+      }
+    },
+    "@@rules_android+//bzlmod_extensions:com_android_dex.bzl%com_android_dex_extension": {
+      "general": {
+        "bzlTransitiveDigest": "rvWbJQc8jInfIAaXIMhSOqUlwM9HVeLey6q0ISvg08Y=",
+        "usagesDigest": "c1Y/KGGjUYCyd8zNIVTUh1bynVXRFz6xGKaSCBpQANM=",
+        "recordedFileInputs": {},
+        "recordedDirentsInputs": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "com_android_dex": {
+            "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive",
+            "attributes": {
+              "url": "https://android.googlesource.com/platform/dalvik/+archive/5a81c499a569731e2395f7c8d13c0e0d4e17a2b6.tar.gz",
+              "build_file": "@@rules_android+//bzlmod_extensions:com_android_dex.BUILD"
+            }
+          }
+        },
+        "recordedRepoMappingEntries": [
+          [
+            "rules_android+",
+            "bazel_tools",
+            "bazel_tools"
+          ]
+        ]
+      }
+    },
+    "@@rules_android+//rules/android_sdk_repository:rule.bzl%android_sdk_repository_extension": {
+      "general": {
+        "bzlTransitiveDigest": "+rMrzIrv7sImYmkbXJYv+gFpTJQ79X3MpwwMLI2A+oA=",
+        "usagesDigest": "iEGI2aNDMkHt9LXCdViLNUUOslpiVj2DrevWWXZEFnU=",
+        "recordedFileInputs": {},
+        "recordedDirentsInputs": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "androidsdk": {
+            "repoRuleId": "@@rules_android+//rules/android_sdk_repository:rule.bzl%_android_sdk_repository",
+            "attributes": {}
+          }
+        },
+        "recordedRepoMappingEntries": []
+      }
+    },
+    "@@rules_apple+//apple:apple.bzl%provisioning_profile_repository_extension": {
+      "general": {
+        "bzlTransitiveDigest": "2cBXTE/fvClSpGce+ynwObOpFH/7oWFzmeSUGe5Pbfw=",
+        "usagesDigest": "vsJl8Rw5NL+5Ag2wdUDoTeRF/5klkXO8545Iy7U1Q08=",
+        "recordedFileInputs": {},
+        "recordedDirentsInputs": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "local_provisioning_profiles": {
+            "repoRuleId": "@@rules_apple+//apple/internal:local_provisioning_profiles.bzl%provisioning_profile_repository",
+            "attributes": {}
+          }
+        },
+        "recordedRepoMappingEntries": [
+          [
+            "apple_support+",
+            "bazel_skylib",
+            "bazel_skylib+"
+          ],
+          [
+            "bazel_tools",
+            "rules_cc",
+            "rules_cc+"
+          ],
+          [
+            "rules_apple+",
+            "bazel_skylib",
+            "bazel_skylib+"
+          ],
+          [
+            "rules_apple+",
+            "bazel_tools",
+            "bazel_tools"
+          ],
+          [
+            "rules_apple+",
+            "build_bazel_apple_support",
+            "apple_support+"
+          ],
+          [
+            "rules_apple+",
+            "build_bazel_rules_swift",
+            "rules_swift+"
+          ],
+          [
+            "rules_cc+",
+            "bazel_tools",
+            "bazel_tools"
+          ],
+          [
+            "rules_cc+",
+            "cc_compatibility_proxy",
+            "rules_cc++compatibility_proxy+cc_compatibility_proxy"
+          ],
+          [
+            "rules_cc+",
+            "rules_cc",
+            "rules_cc+"
+          ],
+          [
+            "rules_cc++compatibility_proxy+cc_compatibility_proxy",
+            "rules_cc",
+            "rules_cc+"
+          ],
+          [
+            "rules_swift+",
+            "bazel_skylib",
+            "bazel_skylib+"
+          ],
+          [
+            "rules_swift+",
+            "bazel_tools",
+            "bazel_tools"
+          ],
+          [
+            "rules_swift+",
+            "build_bazel_apple_support",
+            "apple_support+"
+          ],
+          [
+            "rules_swift+",
+            "build_bazel_rules_swift",
+            "rules_swift+"
+          ],
+          [
+            "rules_swift+",
+            "build_bazel_rules_swift_local_config",
+            "rules_swift++non_module_deps+build_bazel_rules_swift_local_config"
+          ]
+        ]
+      }
+    },
+    "@@rules_apple+//apple:extensions.bzl%non_module_deps": {
+      "general": {
+        "bzlTransitiveDigest": "4xtddSlWIQdtVNVuvOI62fJfQVETHZCVWFvYYwQHMR4=",
+        "usagesDigest": "M3VqFpeTCo4qmrNKGZw0dxBHvTYDrfV3cscGzlSAhQ4=",
+        "recordedFileInputs": {},
+        "recordedDirentsInputs": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "xctestrunner": {
+            "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive",
+            "attributes": {
+              "urls": [
+                "https://github.com/google/xctestrunner/archive/b7698df3d435b6491b4b4c0f9fc7a63fbed5e3a6.tar.gz"
+              ],
+              "strip_prefix": "xctestrunner-b7698df3d435b6491b4b4c0f9fc7a63fbed5e3a6",
+              "sha256": "ae3a063c985a8633cb7eb566db21656f8db8eb9a0edb8c182312c7f0db53730d"
+            }
+          }
+        },
+        "recordedRepoMappingEntries": [
+          [
+            "rules_apple+",
+            "bazel_tools",
+            "bazel_tools"
+          ]
+        ]
+      }
+    },
+    "@@rules_nodejs+//nodejs:extensions.bzl%node": {
+      "general": {
+        "bzlTransitiveDigest": "0IJr1Jg3Dns9QKY65MtauFLtHjjP3n1DgN0+ZAjFYXo=",
+        "usagesDigest": "lYnf78fCR7lvI17f6EaZO0GCSdImBY/Loh6ocUce2GI=",
+        "recordedFileInputs": {},
+        "recordedDirentsInputs": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "nodejs_linux_amd64": {
+            "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories",
+            "attributes": {
+              "node_download_auth": {},
+              "node_repositories": {},
+              "node_urls": [
+                "https://nodejs.org/dist/v{version}/{filename}"
+              ],
+              "node_version": "18.20.3",
+              "include_headers": false,
+              "platform": "linux_amd64"
+            }
+          },
+          "nodejs_linux_arm64": {
+            "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories",
+            "attributes": {
+              "node_download_auth": {},
+              "node_repositories": {},
+              "node_urls": [
+                "https://nodejs.org/dist/v{version}/{filename}"
+              ],
+              "node_version": "18.20.3",
+              "include_headers": false,
+              "platform": "linux_arm64"
+            }
+          },
+          "nodejs_linux_s390x": {
+            "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories",
+            "attributes": {
+              "node_download_auth": {},
+              "node_repositories": {},
+              "node_urls": [
+                "https://nodejs.org/dist/v{version}/{filename}"
+              ],
+              "node_version": "18.20.3",
+              "include_headers": false,
+              "platform": "linux_s390x"
+            }
+          },
+          "nodejs_linux_ppc64le": {
+            "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories",
+            "attributes": {
+              "node_download_auth": {},
+              "node_repositories": {},
+              "node_urls": [
+                "https://nodejs.org/dist/v{version}/{filename}"
+              ],
+              "node_version": "18.20.3",
+              "include_headers": false,
+              "platform": "linux_ppc64le"
+            }
+          },
+          "nodejs_darwin_amd64": {
+            "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories",
+            "attributes": {
+              "node_download_auth": {},
+              "node_repositories": {},
+              "node_urls": [
+                "https://nodejs.org/dist/v{version}/{filename}"
+              ],
+              "node_version": "18.20.3",
+              "include_headers": false,
+              "platform": "darwin_amd64"
+            }
+          },
+          "nodejs_darwin_arm64": {
+            "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories",
+            "attributes": {
+              "node_download_auth": {},
+              "node_repositories": {},
+              "node_urls": [
+                "https://nodejs.org/dist/v{version}/{filename}"
+              ],
+              "node_version": "18.20.3",
+              "include_headers": false,
+              "platform": "darwin_arm64"
+            }
+          },
+          "nodejs_windows_amd64": {
+            "repoRuleId": "@@rules_nodejs+//nodejs:repositories.bzl%_nodejs_repositories",
+            "attributes": {
+              "node_download_auth": {},
+              "node_repositories": {},
+              "node_urls": [
+                "https://nodejs.org/dist/v{version}/{filename}"
+              ],
+              "node_version": "18.20.3",
+              "include_headers": false,
+              "platform": "windows_amd64"
+            }
+          },
+          "nodejs": {
+            "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_repo_host_os_alias.bzl%nodejs_repo_host_os_alias",
+            "attributes": {
+              "user_node_repository_name": "nodejs"
+            }
+          },
+          "nodejs_host": {
+            "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_repo_host_os_alias.bzl%nodejs_repo_host_os_alias",
+            "attributes": {
+              "user_node_repository_name": "nodejs"
+            }
+          },
+          "nodejs_toolchains": {
+            "repoRuleId": "@@rules_nodejs+//nodejs/private:nodejs_toolchains_repo.bzl%nodejs_toolchains_repo",
+            "attributes": {
+              "user_node_repository_name": "nodejs"
+            }
+          }
+        },
+        "recordedRepoMappingEntries": []
+      }
+    },
+    "@@rules_python+//python/uv:uv.bzl%uv": {
+      "general": {
+        "bzlTransitiveDigest": "I8FPZMevE2oI/peSpMBRVIN++WOtfjtJVjbPsBZQ87A=",
+        "usagesDigest": "OXgvoUllj9QNrz8LFWuF0Vyk3dC3KEkWq6DVuZwYP3o=",
+        "recordedFileInputs": {},
+        "recordedDirentsInputs": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "uv": {
+            "repoRuleId": "@@rules_python+//python/uv/private:uv_toolchains_repo.bzl%uv_toolchains_repo",
+            "attributes": {
+              "toolchain_type": "'@@rules_python+//python/uv:uv_toolchain_type'",
+              "toolchain_names": [
+                "none"
+              ],
+              "toolchain_implementations": {
+                "none": "'@@rules_python+//python:none'"
+              },
+              "toolchain_compatible_with": {
+                "none": [
+                  "@platforms//:incompatible"
+                ]
+              },
+              "toolchain_target_settings": {}
+            }
+          }
+        },
+        "recordedRepoMappingEntries": [
+          [
+            "rules_python+",
+            "bazel_tools",
+            "bazel_tools"
+          ],
+          [
+            "rules_python+",
+            "platforms",
+            "platforms"
+          ]
+        ]
+      }
+    },
+    "@@rules_swift+//swift:extensions.bzl%non_module_deps": {
+      "general": {
+        "bzlTransitiveDigest": "6axDCXf6fQoPav8hojnUBxGA0FAMqLvtpC1cRsisCdw=",
+        "usagesDigest": "mhACFnrdMv9Wi0Mt67bxocJqviRkDSV+Ee5Mqdj5akA=",
+        "recordedFileInputs": {},
+        "recordedDirentsInputs": {},
+        "envVariables": {},
+        "generatedRepoSpecs": {
+          "com_github_apple_swift_protobuf": {
+            "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive",
+            "attributes": {
+              "urls": [
+                "https://github.com/apple/swift-protobuf/archive/1.20.2.tar.gz"
+              ],
+              "sha256": "3fb50bd4d293337f202d917b6ada22f9548a0a0aed9d9a4d791e6fbd8a246ebb",
+              "strip_prefix": "swift-protobuf-1.20.2/",
+              "build_file": "@@rules_swift+//third_party:com_github_apple_swift_protobuf/BUILD.overlay"
+            }
+          },
+          "com_github_grpc_grpc_swift": {
+            "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive",
+            "attributes": {
+              "urls": [
+                "https://github.com/grpc/grpc-swift/archive/1.16.0.tar.gz"
+              ],
+              "sha256": "58b60431d0064969f9679411264b82e40a217ae6bd34e17096d92cc4e47556a5",
+              "strip_prefix": "grpc-swift-1.16.0/",
+              "build_file": "@@rules_swift+//third_party:com_github_grpc_grpc_swift/BUILD.overlay"
+            }
+          },
+          "com_github_apple_swift_docc_symbolkit": {
+            "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive",
+            "attributes": {
+              "urls": [
+                "https://github.com/apple/swift-docc-symbolkit/archive/refs/tags/swift-5.10-RELEASE.tar.gz"
+              ],
+              "sha256": "de1d4b6940468ddb53b89df7aa1a81323b9712775b0e33e8254fa0f6f7469a97",
+              "strip_prefix": "swift-docc-symbolkit-swift-5.10-RELEASE",
+              "build_file": "@@rules_swift+//third_party:com_github_apple_swift_docc_symbolkit/BUILD.overlay"
+            }
+          },
+          "com_github_apple_swift_nio": {
+            "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive",
+            "attributes": {
+              "urls": [
+                "https://github.com/apple/swift-nio/archive/2.42.0.tar.gz"
+              ],
+              "sha256": "e3304bc3fb53aea74a3e54bd005ede11f6dc357117d9b1db642d03aea87194a0",
+              "strip_prefix": "swift-nio-2.42.0/",
+              "build_file": "@@rules_swift+//third_party:com_github_apple_swift_nio/BUILD.overlay"
+            }
+          },
+          "com_github_apple_swift_nio_http2": {
+            "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive",
+            "attributes": {
+              "urls": [
+                "https://github.com/apple/swift-nio-http2/archive/1.26.0.tar.gz"
+              ],
+              "sha256": "f0edfc9d6a7be1d587e5b403f2d04264bdfae59aac1d74f7d974a9022c6d2b25",
+              "strip_prefix": "swift-nio-http2-1.26.0/",
+              "build_file": "@@rules_swift+//third_party:com_github_apple_swift_nio_http2/BUILD.overlay"
+            }
+          },
+          "com_github_apple_swift_nio_transport_services": {
+            "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive",
+            "attributes": {
+              "urls": [
+                "https://github.com/apple/swift-nio-transport-services/archive/1.15.0.tar.gz"
+              ],
+              "sha256": "f3498dafa633751a52b9b7f741f7ac30c42bcbeb3b9edca6d447e0da8e693262",
+              "strip_prefix": "swift-nio-transport-services-1.15.0/",
+              "build_file": "@@rules_swift+//third_party:com_github_apple_swift_nio_transport_services/BUILD.overlay"
+            }
+          },
+          "com_github_apple_swift_nio_extras": {
+            "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive",
+            "attributes": {
+              "urls": [
+                "https://github.com/apple/swift-nio-extras/archive/1.4.0.tar.gz"
+              ],
+              "sha256": "4684b52951d9d9937bb3e8ccd6b5daedd777021ef2519ea2f18c4c922843b52b",
+              "strip_prefix": "swift-nio-extras-1.4.0/",
+              "build_file": "@@rules_swift+//third_party:com_github_apple_swift_nio_extras/BUILD.overlay"
+            }
+          },
+          "com_github_apple_swift_log": {
+            "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive",
+            "attributes": {
+              "urls": [
+                "https://github.com/apple/swift-log/archive/1.4.4.tar.gz"
+              ],
+              "sha256": "48fe66426c784c0c20031f15dc17faf9f4c9037c192bfac2f643f65cb2321ba0",
+              "strip_prefix": "swift-log-1.4.4/",
+              "build_file": "@@rules_swift+//third_party:com_github_apple_swift_log/BUILD.overlay"
+            }
+          },
+          "com_github_apple_swift_nio_ssl": {
+            "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive",
+            "attributes": {
+              "urls": [
+                "https://github.com/apple/swift-nio-ssl/archive/2.23.0.tar.gz"
+              ],
+              "sha256": "4787c63f61dd04d99e498adc3d1a628193387e41efddf8de19b8db04544d016d",
+              "strip_prefix": "swift-nio-ssl-2.23.0/",
+              "build_file": "@@rules_swift+//third_party:com_github_apple_swift_nio_ssl/BUILD.overlay"
+            }
+          },
+          "com_github_apple_swift_collections": {
+            "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive",
+            "attributes": {
+              "urls": [
+                "https://github.com/apple/swift-collections/archive/1.0.4.tar.gz"
+              ],
+              "sha256": "d9e4c8a91c60fb9c92a04caccbb10ded42f4cb47b26a212bc6b39cc390a4b096",
+              "strip_prefix": "swift-collections-1.0.4/",
+              "build_file": "@@rules_swift+//third_party:com_github_apple_swift_collections/BUILD.overlay"
+            }
+          },
+          "com_github_apple_swift_atomics": {
+            "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive",
+            "attributes": {
+              "urls": [
+                "https://github.com/apple/swift-atomics/archive/1.1.0.tar.gz"
+              ],
+              "sha256": "1bee7f469f7e8dc49f11cfa4da07182fbc79eab000ec2c17bfdce468c5d276fb",
+              "strip_prefix": "swift-atomics-1.1.0/",
+              "build_file": "@@rules_swift+//third_party:com_github_apple_swift_atomics/BUILD.overlay"
+            }
+          },
+          "build_bazel_rules_swift_index_import": {
+            "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive",
+            "attributes": {
+              "build_file": "@@rules_swift+//third_party:build_bazel_rules_swift_index_import/BUILD.overlay",
+              "canonical_id": "index-import-5.8",
+              "urls": [
+                "https://github.com/MobileNativeFoundation/index-import/releases/download/5.8.0.1/index-import.tar.gz"
+              ],
+              "sha256": "28c1ffa39d99e74ed70623899b207b41f79214c498c603915aef55972a851a15"
+            }
+          },
+          "build_bazel_rules_swift_local_config": {
+            "repoRuleId": "@@rules_swift+//swift/internal:swift_autoconfiguration.bzl%swift_autoconfiguration",
+            "attributes": {}
+          }
+        },
+        "recordedRepoMappingEntries": [
+          [
+            "rules_swift+",
+            "bazel_tools",
+            "bazel_tools"
+          ],
+          [
+            "rules_swift+",
+            "build_bazel_rules_swift",
+            "rules_swift+"
+          ]
+        ]
+      }
+    }
+  },
+  "facts": {
+    "@@rules_go+//go:extensions.bzl%go_sdk": {
+      "1.22.4": {
+        "aix_ppc64": [
+          "go1.22.4.aix-ppc64.tar.gz",
+          "b9647fa9fc83a0cc5d4f092a19eaeaecf45f063a5aa7d4962fde65aeb7ae6ce1"
+        ],
+        "darwin_amd64": [
+          "go1.22.4.darwin-amd64.tar.gz",
+          "c95967f50aa4ace34af0c236cbdb49a9a3e80ee2ad09d85775cb4462a5c19ed3"
+        ],
+        "darwin_arm64": [
+          "go1.22.4.darwin-arm64.tar.gz",
+          "242b78dc4c8f3d5435d28a0d2cec9b4c1aa999b601fb8aa59fb4e5a1364bf827"
+        ],
+        "dragonfly_amd64": [
+          "go1.22.4.dragonfly-amd64.tar.gz",
+          "f2fbb51af4719d3616efb482d6ed2b96579b474156f85a7ddc6f126764feec4b"
+        ],
+        "freebsd_386": [
+          "go1.22.4.freebsd-386.tar.gz",
+          "7c54884bb9f274884651d41e61d1bc12738863ad1497e97ea19ad0e9aa6bf7b5"
+        ],
+        "freebsd_amd64": [
+          "go1.22.4.freebsd-amd64.tar.gz",
+          "88d44500e1701dd35797619774d6dd51bf60f45a8338b0a82ddc018e4e63fb78"
+        ],
+        "freebsd_arm64": [
+          "go1.22.4.freebsd-arm64.tar.gz",
+          "726dc093cf020277be45debf03c3b02b43c2efb3e2a5d4fba8f52579d65327dc"
+        ],
+        "freebsd_armv6l": [
+          "go1.22.4.freebsd-arm.tar.gz",
+          "3d9efe47db142a22679aba46b1772e3900b0d87ae13bd2b3bc80dbf2ac0b2cd6"
+        ],
+        "freebsd_riscv64": [
+          "go1.22.4.freebsd-riscv64.tar.gz",
+          "5f6b67e5e32f1d6ccb2d4dcb44934a5e2e870a877ba7443d86ec43cfc28afa71"
+        ],
+        "illumos_amd64": [
+          "go1.22.4.illumos-amd64.tar.gz",
+          "d56ecc2f85b6418a21ef83879594d0c42ab4f65391a676bb12254870e6690d63"
+        ],
+        "linux_386": [
+          "go1.22.4.linux-386.tar.gz",
+          "47a2a8d249a91eb8605c33bceec63aedda0441a43eac47b4721e3975ff916cec"
+        ],
+        "linux_amd64": [
+          "go1.22.4.linux-amd64.tar.gz",
+          "ba79d4526102575196273416239cca418a651e049c2b099f3159db85e7bade7d"
+        ],
+        "linux_arm64": [
+          "go1.22.4.linux-arm64.tar.gz",
+          "a8e177c354d2e4a1b61020aca3562e27ea3e8f8247eca3170e3fa1e0c2f9e771"
+        ],
+        "linux_armv6l": [
+          "go1.22.4.linux-armv6l.tar.gz",
+          "e2b143fbacbc9cbd448e9ef41ac3981f0488ce849af1cf37e2341d09670661de"
+        ],
+        "linux_loong64": [
+          "go1.22.4.linux-loong64.tar.gz",
+          "e2ff9436e4b34bf6926b06d97916e26d67a909a2effec17967245900f0816f1d"
+        ],
+        "linux_mips": [
+          "go1.22.4.linux-mips.tar.gz",
+          "73f0dcc60458c4770593b05a7bc01cc0d31fc98f948c0c2334812c7a1f2fc3f1"
+        ],
+        "linux_mips64": [
+          "go1.22.4.linux-mips64.tar.gz",
+          "417af97fc2630a647052375768be4c38adcc5af946352ea5b28613ea81ca5d45"
+        ],
+        "linux_mips64le": [
+          "go1.22.4.linux-mips64le.tar.gz",
+          "7486e2d7dd8c98eb44df815ace35a7fe7f30b7c02326e3741bd934077508139b"
+        ],
+        "linux_mipsle": [
+          "go1.22.4.linux-mipsle.tar.gz",
+          "69479c8aad301e459a8365b40cad1074a0dbba5defb9291669f94809c4c4be6e"
+        ],
+        "linux_ppc64": [
+          "go1.22.4.linux-ppc64.tar.gz",
+          "dd238847e65bc3e2745caca475a5db6522a2fcf85cf6c38fc36a06642b19efd7"
+        ],
+        "linux_ppc64le": [
+          "go1.22.4.linux-ppc64le.tar.gz",
+          "a3e5834657ef92523f570f798fed42f1f87bc18222a16815ec76b84169649ec4"
+        ],
+        "linux_riscv64": [
+          "go1.22.4.linux-riscv64.tar.gz",
+          "56a827ff7dc6245bcd7a1e9288dffaa1d8b0fd7468562264c1523daf3b4f1b4a"
+        ],
+        "linux_s390x": [
+          "go1.22.4.linux-s390x.tar.gz",
+          "7590c3e278e2dc6040aae0a39da3ca1eb2e3921673a7304cc34d588c45889eec"
+        ],
+        "netbsd_386": [
+          "go1.22.4.netbsd-386.tar.gz",
+          "ddd2eebe34471a2502de6c5dad04ab27c9fc80cbde7a9ad5b3c66ecec4504e1d"
+        ],
+        "netbsd_amd64": [
+          "go1.22.4.netbsd-amd64.tar.gz",
+          "33af79f6f935f6fbacc5d23876450b3567b79348fc065beef8e64081127dd234"
+        ],
+        "netbsd_arm64": [
+          "go1.22.4.netbsd-arm64.tar.gz",
+          "c9a2971dec9f6d320c6f2b049b2353c6d0a2d35e87b8a4b2d78a2f0d62545f8e"
+        ],
+        "netbsd_armv6l": [
+          "go1.22.4.netbsd-arm.tar.gz",
+          "fa3550ebd5375a70b3bcd342b5a71f4bd271dcbbfaf4eabefa2144ab5d8924b6"
+        ],
+        "openbsd_386": [
+          "go1.22.4.openbsd-386.tar.gz",
+          "d21af022331bfdc2b5b161d616c3a1a4573d33cf7a30416ee509a8f3641deb47"
+        ],
+        "openbsd_amd64": [
+          "go1.22.4.openbsd-amd64.tar.gz",
+          "72c0094c43f7e5722ec49c2a3e9dfa7a1123ac43a5f3a63eecf3e3795d3ff0ae"
+        ],
+        "openbsd_arm64": [
+          "go1.22.4.openbsd-arm64.tar.gz",
+          "a7ab8d4e0b02bf06ed144ba42c61c0e93ee00f2b433415dfd4ad4b6e79f31650"
+        ],
+        "openbsd_armv6l": [
+          "go1.22.4.openbsd-arm.tar.gz",
+          "1096831ea3c5ea3ca57d14251d9eda3786889531eb40d7d6775dcaa324d4b065"
+        ],
+        "openbsd_ppc64": [
+          "go1.22.4.openbsd-ppc64.tar.gz",
+          "9716327c8a628358798898dc5148c49dbbeb5196bf2cbf088e550721a6e4f60b"
+        ],
+        "plan9_386": [
+          "go1.22.4.plan9-386.tar.gz",
+          "a8dd4503c95c32a502a616ab78870a19889c9325fe9bd31eb16dd69346e4bfa8"
+        ],
+        "plan9_amd64": [
+          "go1.22.4.plan9-amd64.tar.gz",
+          "5423a25808d76fe5aca8607a2e5ac5673abf45446b168cb5e9d8519ee9fe39a1"
+        ],
+        "plan9_armv6l": [
+          "go1.22.4.plan9-arm.tar.gz",
+          "6af939ad583f5c85c09c53728ab7d38c3cc2b39167562d6c18a07c5c6608b370"
+        ],
+        "solaris_amd64": [
+          "go1.22.4.solaris-amd64.tar.gz",
+          "e8cabe69c03085725afdb32a6f9998191a3e55a747b270d835fd05000d56abba"
+        ],
+        "windows_386": [
+          "go1.22.4.windows-386.zip",
+          "aca4e2c37278a10f1c70dd0df142f7d66b50334fcee48978d409202d308d6d25"
+        ],
+        "windows_amd64": [
+          "go1.22.4.windows-amd64.zip",
+          "26321c4d945a0035d8a5bc4a1965b0df401ff8ceac66ce2daadabf9030419a98"
+        ],
+        "windows_arm64": [
+          "go1.22.4.windows-arm64.zip",
+          "8a2daa9ea28cbdafddc6171aefed384f4e5b6e714fb52116fe9ed25a132f37ed"
+        ],
+        "windows_armv6l": [
+          "go1.22.4.windows-arm.zip",
+          "5fcd0671a49cecf39b41021621ee1b6e7aa1370f37122b72e80d4fd4185833b6"
+        ]
+      },
+      "1.25.0": {
+        "aix_ppc64": [
+          "go1.25.0.aix-ppc64.tar.gz",
+          "e5234a7dac67bc86c528fe9752fc9d63557918627707a733ab4cac1a6faed2d4"
+        ],
+        "darwin_amd64": [
+          "go1.25.0.darwin-amd64.tar.gz",
+          "5bd60e823037062c2307c71e8111809865116714d6f6b410597cf5075dfd80ef"
+        ],
+        "darwin_arm64": [
+          "go1.25.0.darwin-arm64.tar.gz",
+          "544932844156d8172f7a28f77f2ac9c15a23046698b6243f633b0a0b00c0749c"
+        ],
+        "dragonfly_amd64": [
+          "go1.25.0.dragonfly-amd64.tar.gz",
+          "5ed3cf9a810a1483822538674f1336c06b51aa1b94d6d545a1a0319a48177120"
+        ],
+        "freebsd_386": [
+          "go1.25.0.freebsd-386.tar.gz",
+          "abea5d5c6697e6b5c224731f2158fe87c602996a2a233ac0c4730cd57bf8374e"
+        ],
+        "freebsd_amd64": [
+          "go1.25.0.freebsd-amd64.tar.gz",
+          "86e6fe0a29698d7601c4442052dac48bd58d532c51cccb8f1917df648138730b"
+        ],
+        "freebsd_arm": [
+          "go1.25.0.freebsd-arm.tar.gz",
+          "d90b78e41921f72f30e8bbc81d9dec2cff7ff384a33d8d8debb24053e4336bfe"
+        ],
+        "freebsd_arm64": [
+          "go1.25.0.freebsd-arm64.tar.gz",
+          "451d0da1affd886bfb291b7c63a6018527b269505db21ce6e14724f22ab0662e"
+        ],
+        "freebsd_riscv64": [
+          "go1.25.0.freebsd-riscv64.tar.gz",
+          "7b565f76bd8bda46549eeaaefe0e53b251e644c230577290c0f66b1ecdb3cdbe"
+        ],
+        "illumos_amd64": [
+          "go1.25.0.illumos-amd64.tar.gz",
+          "b1e1fdaab1ad25aa1c08d7a36c97d45d74b98b89c3f78c6d2145f77face54a2c"
+        ],
+        "linux_386": [
+          "go1.25.0.linux-386.tar.gz",
+          "8c602dd9d99bc9453b3995d20ce4baf382cc50855900a0ece5de9929df4a993a"
+        ],
+        "linux_amd64": [
+          "go1.25.0.linux-amd64.tar.gz",
+          "2852af0cb20a13139b3448992e69b868e50ed0f8a1e5940ee1de9e19a123b613"
+        ],
+        "linux_arm64": [
+          "go1.25.0.linux-arm64.tar.gz",
+          "05de75d6994a2783699815ee553bd5a9327d8b79991de36e38b66862782f54ae"
+        ],
+        "linux_armv6l": [
+          "go1.25.0.linux-armv6l.tar.gz",
+          "a5a8f8198fcf00e1e485b8ecef9ee020778bf32a408a4e8873371bfce458cd09"
+        ],
+        "linux_loong64": [
+          "go1.25.0.linux-loong64.tar.gz",
+          "cab86b1cf761b1cb3bac86a8877cfc92e7b036fc0d3084123d77013d61432afc"
+        ],
+        "linux_mips": [
+          "go1.25.0.linux-mips.tar.gz",
+          "d66b6fb74c3d91b9829dc95ec10ca1f047ef5e89332152f92e136cf0e2da5be1"
+        ],
+        "linux_mips64": [
+          "go1.25.0.linux-mips64.tar.gz",
+          "4082e4381a8661bc2a839ff94ba3daf4f6cde20f8fb771b5b3d4762dc84198a2"
+        ],
+        "linux_mips64le": [
+          "go1.25.0.linux-mips64le.tar.gz",
+          "70002c299ec7f7175ac2ef673b1b347eecfa54ae11f34416a6053c17f855afcc"
+        ],
+        "linux_mipsle": [
+          "go1.25.0.linux-mipsle.tar.gz",
+          "b00a3a39eff099f6df9f1c7355bf28e4589d0586f42d7d4a394efb763d145a73"
+        ],
+        "linux_ppc64": [
+          "go1.25.0.linux-ppc64.tar.gz",
+          "df166f33bd98160662560a72ff0b4ba731f969a80f088922bddcf566a88c1ec1"
+        ],
+        "linux_ppc64le": [
+          "go1.25.0.linux-ppc64le.tar.gz",
+          "0f18a89e7576cf2c5fa0b487a1635d9bcbf843df5f110e9982c64df52a983ad0"
+        ],
+        "linux_riscv64": [
+          "go1.25.0.linux-riscv64.tar.gz",
+          "c018ff74a2c48d55c8ca9b07c8e24163558ffec8bea08b326d6336905d956b67"
+        ],
+        "linux_s390x": [
+          "go1.25.0.linux-s390x.tar.gz",
+          "34e5a2e19f2292fbaf8783e3a241e6e49689276aef6510a8060ea5ef54eee408"
+        ],
+        "netbsd_386": [
+          "go1.25.0.netbsd-386.tar.gz",
+          "f8586cdb7aa855657609a5c5f6dbf523efa00c2bbd7c76d3936bec80aa6c0aba"
+        ],
+        "netbsd_amd64": [
+          "go1.25.0.netbsd-amd64.tar.gz",
+          "ae8dc1469385b86a157a423bb56304ba45730de8a897615874f57dd096db2c2a"
+        ],
+        "netbsd_arm": [
+          "go1.25.0.netbsd-arm.tar.gz",
+          "1ff7e4cc764425fc9dd6825eaee79d02b3c7cafffbb3691687c8d672ade76cb7"
+        ],
+        "netbsd_arm64": [
+          "go1.25.0.netbsd-arm64.tar.gz",
+          "e1b310739f26724216aa6d7d7208c4031f9ff54c9b5b9a796ddc8bebcb4a5f16"
+        ],
+        "openbsd_386": [
+          "go1.25.0.openbsd-386.tar.gz",
+          "4802a9b20e533da91adb84aab42e94aa56cfe3e5475d0550bed3385b182e69d8"
+        ],
+        "openbsd_amd64": [
+          "go1.25.0.openbsd-amd64.tar.gz",
+          "c016cd984bebe317b19a4f297c4f50def120dc9788490540c89f28e42f1dabe1"
+        ],
+        "openbsd_arm": [
+          "go1.25.0.openbsd-arm.tar.gz",
+          "a1e31d0bf22172ddde42edf5ec811ef81be43433df0948ece52fecb247ccfd8d"
+        ],
+        "openbsd_arm64": [
+          "go1.25.0.openbsd-arm64.tar.gz",
+          "343ea8edd8c218196e15a859c6072d0dd3246fbbb168481ab665eb4c4140458d"
+        ],
+        "openbsd_ppc64": [
+          "go1.25.0.openbsd-ppc64.tar.gz",
+          "694c14da1bcaeb5e3332d49bdc2b6d155067648f8fe1540c5de8f3cf8e157154"
+        ],
+        "openbsd_riscv64": [
+          "go1.25.0.openbsd-riscv64.tar.gz",
+          "aa510ad25cf54c06cd9c70b6d80ded69cb20188ac6e1735655eef29ff7e7885f"
+        ],
+        "plan9_386": [
+          "go1.25.0.plan9-386.tar.gz",
+          "46f8cef02086cf04bf186c5912776b56535178d4cb319cd19c9fdbdd29231986"
+        ],
+        "plan9_amd64": [
+          "go1.25.0.plan9-amd64.tar.gz",
+          "29b34391d84095e44608a228f63f2f88113a37b74a79781353ec043dfbcb427b"
+        ],
+        "plan9_arm": [
+          "go1.25.0.plan9-arm.tar.gz",
+          "0a047107d13ebe7943aaa6d54b1d7bbd2e45e68ce449b52915a818da715799c2"
+        ],
+        "solaris_amd64": [
+          "go1.25.0.solaris-amd64.tar.gz",
+          "9977f9e4351984364a3b2b78f8b88bfd1d339812356d5237678514594b7d3611"
+        ],
+        "windows_386": [
+          "go1.25.0.windows-386.zip",
+          "df9f39db82a803af0db639e3613a36681ab7a42866b1384b3f3a1045663961a7"
+        ],
+        "windows_amd64": [
+          "go1.25.0.windows-amd64.zip",
+          "89efb4f9b30812eee083cc1770fdd2913c14d301064f6454851428f9707d190b"
+        ],
+        "windows_arm64": [
+          "go1.25.0.windows-arm64.zip",
+          "27bab004c72b3d7bd05a69b6ec0fc54a309b4b78cc569dd963d8b3ec28bfdb8c"
+        ]
+      }
+    },
+    "@@rules_python+//python/extensions:pip.bzl%pip": {
+      "dist_hashes": {
+        "https://pypi.org/simple": {
+          "backports-tarfile": {
+            "https://files.pythonhosted.org/packages/86/72/cd9b395f25e290e633655a100af28cb253e4393396264a98bd5f5951d50f/backports_tarfile-1.2.0.tar.gz": "d75e02c268746e1b8144c278978b6e98e85de6ad16f8e4b0844a154557eca991",
+            "https://files.pythonhosted.org/packages/b9/fa/123043af240e49752f1c4bd24da5053b6bd00cad78c2be53c0d1e8b975bc/backports.tarfile-1.2.0-py3-none-any.whl": "77e284d754527b01fb1e6fa8a1afe577858ebe4e9dad8919e34c862cb399bc34"
+          },
+          "certifi": {
+            "https://files.pythonhosted.org/packages/4c/5b/b6ce21586237c77ce67d01dc5507039d444b630dd76611bbca2d8e5dcd91/certifi-2025.10.5.tar.gz": "47c09d31ccf2acf0be3f701ea53595ee7e0b8fa08801c6624be771df09ae7b43",
+            "https://files.pythonhosted.org/packages/e4/37/af0d2ef3967ac0d6113837b44a4f0bfe1328c2b9763bd5b1744520e5cfed/certifi-2025.10.5-py3-none-any.whl": "0f212c2744a9bb6de0c56639a6f68afe01ecd92d91f14ae897c4fe7bbeeef0de"
+          },
+          "charset-normalizer": {
+            "https://files.pythonhosted.org/packages/00/bd/ef9c88464b126fa176f4ef4a317ad9b6f4d30b2cffbc43386062367c3e2c/charset_normalizer-3.4.3-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl": "8999f965f922ae054125286faf9f11bc6932184b93011d138925a1773830bbe9",
+            "https://files.pythonhosted.org/packages/02/f7/3611b32318b30974131db62b4043f335861d4d9b49adc6d57c1149cc49d4/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_aarch64.whl": "ccf600859c183d70eb47e05a44cd80a4ce77394d1ac0f79dbd2dd90a69a3a049",
+            "https://files.pythonhosted.org/packages/04/9a/914d294daa4809c57667b77470533e65def9c0be1ef8b4c1183a99170e9d/charset_normalizer-3.4.3-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl": "fb731e5deb0c7ef82d698b0f4c5bb724633ee2a489401594c5c88b02e6cb15f7",
+            "https://files.pythonhosted.org/packages/05/35/bb59b1cd012d7196fc81c2f5879113971efc226a63812c9cf7f89fe97c40/charset_normalizer-3.4.3-cp38-cp38-win_amd64.whl": "5d8d01eac18c423815ed4f4a2ec3b439d654e55ee4ad610e153cf02faf67ea40",
+            "https://files.pythonhosted.org/packages/05/6b/e2539a0a4be302b481e8cafb5af8792da8093b486885a1ae4d15d452bcec/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_ppc64le.whl": "42e5088973e56e31e4fa58eb6bd709e42fc03799c11c42929592889a2e54c491",
+            "https://files.pythonhosted.org/packages/06/57/84722eefdd338c04cf3030ada66889298eaedf3e7a30a624201e0cbe424a/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_s390x.whl": "30a96e1e1f865f78b030d65241c1ee850cdf422d869e9028e2fc1d5e4db73b92",
+            "https://files.pythonhosted.org/packages/0c/52/8b0c6c3e53f7e546a5e49b9edb876f379725914e1130297f3b423c7b71c5/charset_normalizer-3.4.3-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl": "c60e092517a73c632ec38e290eba714e9627abe9d301c8c8a12ec32c314a2a4b",
+            "https://files.pythonhosted.org/packages/16/ab/0233c3231af734f5dfcf0844aa9582d5a1466c985bbed6cedab85af9bfe3/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl": "1606f4a55c0fd363d754049cdf400175ee96c992b1f8018b993941f221221c5f",
+            "https://files.pythonhosted.org/packages/17/e5/5e67ab85e6d22b04641acb5399c8684f4d37caf7558a53859f0283a650e9/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl": "2001a39612b241dae17b4687898843f254f8748b796a2e16f1051a17078d991d",
+            "https://files.pythonhosted.org/packages/1a/79/ae516e678d6e32df2e7e740a7be51dc80b700e2697cb70054a0f1ac2c955/charset_normalizer-3.4.3-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl": "3653fad4fe3ed447a596ae8638b437f827234f01a8cd801842e43f3d0a6b281b",
+            "https://files.pythonhosted.org/packages/20/30/5f64fe3981677fe63fa987b80e6c01042eb5ff653ff7cec1b7bd9268e54e/charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_ppc64le.whl": "2c322db9c8c89009a990ef07c3bcc9f011a3269bc06782f916cd3d9eed7c9312",
+            "https://files.pythonhosted.org/packages/21/40/5188be1e3118c82dcb7c2a5ba101b783822cfb413a0268ed3be0468532de/charset_normalizer-3.4.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl": "cc9370a2da1ac13f0153780040f465839e6cccb4a1e44810124b4e22483c93fe",
+            "https://files.pythonhosted.org/packages/22/82/63a45bfc36f73efe46731a3a71cb84e2112f7e0b049507025ce477f0f052/charset_normalizer-3.4.3-cp38-cp38-macosx_10_9_universal2.whl": "0f2be7e0cf7754b9a30eb01f4295cc3d4358a479843b31f328afd210e2c7598c",
+            "https://files.pythonhosted.org/packages/2a/91/26c3036e62dfe8de8061182d33be5025e2424002125c9500faff74a6735e/charset_normalizer-3.4.3-cp310-cp310-win32.whl": "d79c198e27580c8e958906f803e63cddb77653731be08851c7df0b1a14a8fc0f",
+            "https://files.pythonhosted.org/packages/2f/36/77da9c6a328c54d17b960c89eccacfab8271fdaaa228305330915b88afa9/charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_x86_64.whl": "1e8ac75d72fa3775e0b7cb7e4629cec13b7514d928d15ef8ea06bca03ef01cae",
+            "https://files.pythonhosted.org/packages/31/e7/883ee5676a2ef217a40ce0bffcc3d0dfbf9e64cbcfbdf822c52981c3304b/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_s390x.whl": "cc34f233c9e71701040d772aa7490318673aa7164a0efe3172b2981218c26d93",
+            "https://files.pythonhosted.org/packages/33/9e/eca49d35867ca2db336b6ca27617deed4653b97ebf45dfc21311ce473c37/charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_x86_64.whl": "78deba4d8f9590fe4dae384aeff04082510a709957e968753ff3c48399f6f92a",
+            "https://files.pythonhosted.org/packages/37/60/5d0d74bc1e1380f0b72c327948d9c2aca14b46a9efd87604e724260f384c/charset_normalizer-3.4.3-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl": "07a0eae9e2787b586e129fdcbe1af6997f8d0e5abaa0bc98c0e20e124d67e601",
+            "https://files.pythonhosted.org/packages/39/c6/99271dc37243a4f925b09090493fb96c9333d7992c6187f5cfe5312008d2/charset_normalizer-3.4.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl": "23b6b24d74478dc833444cbd927c338349d6ae852ba53a0d02a2de1fce45b96e",
+            "https://files.pythonhosted.org/packages/39/f5/3b3836ca6064d0992c58c7561c6b6eee1b3892e9665d650c803bd5614522/charset_normalizer-3.4.3-cp312-cp312-win_amd64.whl": "86df271bf921c2ee3818f0522e9a5b8092ca2ad8b065ece5d7d9d0e9f4849bcc",
+            "https://files.pythonhosted.org/packages/3a/a4/b3b6c76e7a635748c4421d2b92c7b8f90a432f98bda5082049af37ffc8e3/charset_normalizer-3.4.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl": "00237675befef519d9af72169d8604a067d92755e84fe76492fef5441db05b91",
+            "https://files.pythonhosted.org/packages/3b/38/20a1f44e4851aa1c9105d6e7110c9d020e093dfa5836d712a5f074a12bf7/charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_ppc64le.whl": "4ca4c094de7771a98d7fbd67d9e5dbf1eb73efa4f744a730437d8a3a5cf994f0",
+            "https://files.pythonhosted.org/packages/45/8c/dcef87cfc2b3f002a6478f38906f9040302c68aebe21468090e39cde1445/charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_x86_64.whl": "88ab34806dea0671532d3f82d82b85e8fc23d7b2dd12fa837978dad9bb392a34",
+            "https://files.pythonhosted.org/packages/4c/92/27dbe365d34c68cfe0ca76f1edd70e8705d82b378cb54ebbaeabc2e3029d/charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_ppc64le.whl": "939578d9d8fd4299220161fdd76e86c6a251987476f5243e8864a7844476ba14",
+            "https://files.pythonhosted.org/packages/50/10/c117806094d2c956ba88958dab680574019abc0c02bcf57b32287afca544/charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_x86_64.whl": "a2d08ac246bb48479170408d6c19f6385fa743e7157d716e144cad849b2dd94b",
+            "https://files.pythonhosted.org/packages/50/ee/f4704bad8201de513fdc8aac1cabc87e38c5818c93857140e06e772b5892/charset_normalizer-3.4.3-cp312-cp312-win32.whl": "fb6fecfd65564f208cbf0fba07f107fb661bcd1a7c389edbced3f7a493f70e37",
+            "https://files.pythonhosted.org/packages/59/c0/a74f3bd167d311365e7973990243f32c35e7a94e45103125275b9e6c479f/charset_normalizer-3.4.3-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl": "252098c8c7a873e17dd696ed98bbe91dbacd571da4b87df3736768efa7a792e4",
+            "https://files.pythonhosted.org/packages/60/f5/4659a4cb3c4ec146bec80c32d8bb16033752574c20b1252ee842a95d1a1e/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl": "1bb60174149316da1c35fa5233681f7c0f9f514509b8e399ab70fea5f17e45c9",
+            "https://files.pythonhosted.org/packages/61/c5/dc3ba772489c453621ffc27e8978a98fe7e41a93e787e5e5bde797f1dddb/charset_normalizer-3.4.3-cp38-cp38-win32.whl": "ec557499516fc90fd374bf2e32349a2887a876fbf162c160e3c01b6849eaf557",
+            "https://files.pythonhosted.org/packages/61/f1/190d9977e0084d3f1dc169acd060d479bbbc71b90bf3e7bf7b9927dec3eb/charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_aarch64.whl": "96b2b3d1a83ad55310de8c7b4a2d04d9277d5591f40761274856635acc5fcb30",
+            "https://files.pythonhosted.org/packages/63/86/9cbd533bd37883d467fcd1bd491b3547a3532d0fbb46de2b99feeebf185e/charset_normalizer-3.4.3-cp39-cp39-win32.whl": "16a8770207946ac75703458e2c743631c79c59c5890c80011d536248f8eaa432",
+            "https://files.pythonhosted.org/packages/64/d1/f9d141c893ef5d4243bc75c130e95af8fd4bc355beff06e9b1e941daad6e/charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_ppc64le.whl": "5b413b0b1bfd94dbf4023ad6945889f374cd24e3f62de58d6bb102c4d9ae534a",
+            "https://files.pythonhosted.org/packages/64/d4/9eb4ff2c167edbbf08cdd28e19078bf195762e9bd63371689cab5ecd3d0d/charset_normalizer-3.4.3-cp311-cp311-win32.whl": "6cf8fd4c04756b6b60146d98cd8a77d0cdae0e1ca20329da2ac85eed779b6849",
+            "https://files.pythonhosted.org/packages/65/1a/7425c952944a6521a9cfa7e675343f83fd82085b8af2b1373a2409c683dc/charset_normalizer-3.4.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl": "d0e909868420b7049dafd3a31d45125b31143eec59235311fc4c57ea26a4acd2",
+            "https://files.pythonhosted.org/packages/65/ca/2135ac97709b400c7654b4b764daf5c5567c2da45a30cdd20f9eefe2d658/charset_normalizer-3.4.3-cp313-cp313-macosx_10_13_universal2.whl": "14c2a87c65b351109f6abfc424cab3927b3bdece6f706e4d12faaf3d52ee5efe",
+            "https://files.pythonhosted.org/packages/70/99/f1c3bdcfaa9c45b3ce96f70b14f070411366fa19549c1d4832c935d8e2c3/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_x86_64.whl": "18343b2d246dc6761a249ba1fb13f9ee9a2bcd95decc767319506056ea4ad4dc",
+            "https://files.pythonhosted.org/packages/71/11/98a04c3c97dd34e49c7d247083af03645ca3730809a5509443f3c37f7c99/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl": "41d1fc408ff5fdfb910200ec0e74abc40387bccb3252f3f27c0676731df2b2c8",
+            "https://files.pythonhosted.org/packages/72/2a/aff5dd112b2f14bcc3462c312dce5445806bfc8ab3a7328555da95330e4b/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_x86_64.whl": "d716a916938e03231e86e43782ca7878fb602a125a91e7acb8b5112e2e96ac16",
+            "https://files.pythonhosted.org/packages/77/d9/cbcf1a2a5c7d7856f11e7ac2d782aec12bdfea60d104e60e0aa1c97849dc/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_ppc64le.whl": "fdabf8315679312cfa71302f9bd509ded4f2f263fb5b765cf1433b39106c3cc9",
+            "https://files.pythonhosted.org/packages/7a/03/cbb6fac9d3e57f7e07ce062712ee80d80a5ab46614684078461917426279/charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_aarch64.whl": "d95bfb53c211b57198bb91c46dd5a2d8018b3af446583aab40074bf7988401cb",
+            "https://files.pythonhosted.org/packages/7d/a8/c6ec5d389672521f644505a257f50544c074cf5fc292d5390331cd6fc9c3/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl": "0cacf8f7297b0c4fcb74227692ca46b4a5852f8f4f24b3c766dd94a1075c4884",
+            "https://files.pythonhosted.org/packages/7e/61/19b36f4bd67f2793ab6a99b979b4e4f3d8fc754cbdffb805335df4337126/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_ppc64le.whl": "53cd68b185d98dde4ad8990e56a58dea83a4162161b1ea9272e5c9182ce415e0",
+            "https://files.pythonhosted.org/packages/7e/95/42aa2156235cbc8fa61208aded06ef46111c4d3f0de233107b3f38631803/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl": "416175faf02e4b0810f1f38bcb54682878a4af94059a1cd63b8747244420801f",
+            "https://files.pythonhosted.org/packages/7f/b5/991245018615474a60965a7c9cd2b4efbaabd16d582a5547c47ee1c7730b/charset_normalizer-3.4.3-cp311-cp311-macosx_10_9_universal2.whl": "b256ee2e749283ef3ddcff51a675ff43798d92d746d1a6e4631bf8c707d22d0b",
+            "https://files.pythonhosted.org/packages/82/10/0fd19f20c624b278dddaf83b8464dcddc2456cb4b02bb902a6da126b87a1/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl": "3cfb2aad70f2c6debfbcb717f23b7eb55febc0bb23dcffc0f076009da10c6392",
+            "https://files.pythonhosted.org/packages/83/2d/5fd176ceb9b2fc619e63405525573493ca23441330fcdaee6bef9460e924/charset_normalizer-3.4.3.tar.gz": "6fce4b8500244f6fcb71465d4a4930d132ba9ab8e71a7859e6a5d59851068d14",
+            "https://files.pythonhosted.org/packages/85/9a/d891f63722d9158688de58d050c59dc3da560ea7f04f4c53e769de5140f5/charset_normalizer-3.4.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl": "74d77e25adda8581ffc1c720f1c81ca082921329452eba58b16233ab1842141c",
+            "https://files.pythonhosted.org/packages/86/9e/f552f7a00611f168b9a5865a1414179b2c6de8235a4fa40189f6f79a1753/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl": "30d006f98569de3459c2fc1f2acde170b7b2bd265dc1943e87e1a4efe1b67c31",
+            "https://files.pythonhosted.org/packages/87/df/b7737ff046c974b183ea9aa111b74185ac8c3a326c6262d413bd5a1b8c69/charset_normalizer-3.4.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl": "0e78314bdc32fa80696f72fa16dc61168fda4d6a0c014e0380f9d02f0e5d8a07",
+            "https://files.pythonhosted.org/packages/8a/1f/f041989e93b001bc4e44bb1669ccdcf54d3f00e628229a85b08d330615c5/charset_normalizer-3.4.3-py3-none-any.whl": "ce571ab16d890d23b5c278547ba694193a45011ff86a9162a71307ed9f86759a",
+            "https://files.pythonhosted.org/packages/8e/91/b5a06ad970ddc7a0e513112d40113e834638f4ca1120eb727a249fb2715e/charset_normalizer-3.4.3-cp314-cp314-macosx_10_13_universal2.whl": "3cd35b7e8aedeb9e34c41385fda4f73ba609e561faedfae0a9e75e44ac558a15",
+            "https://files.pythonhosted.org/packages/99/04/baae2a1ea1893a01635d475b9261c889a18fd48393634b6270827869fa34/charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_s390x.whl": "fd10de089bcdcd1be95a2f73dbe6254798ec1bda9f450d5828c96f93e2536b9c",
+            "https://files.pythonhosted.org/packages/9a/8f/ae790790c7b64f925e5c953b924aaa42a243fb778fed9e41f147b2a5715a/charset_normalizer-3.4.3-cp313-cp313-win_amd64.whl": "cf1ebb7d78e1ad8ec2a8c4732c7be2e736f6e5123a4146c5b89c9d1f585f8cef",
+            "https://files.pythonhosted.org/packages/a0/e4/5a075de8daa3ec0745a9a3b54467e0c2967daaaf2cec04c845f73493e9a1/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl": "18b97b8404387b96cdbd30ad660f6407799126d26a39ca65729162fd810a99aa",
+            "https://files.pythonhosted.org/packages/a3/ad/b0081f2f99a4b194bcbb1934ef3b12aa4d9702ced80a37026b7607c72e58/charset_normalizer-3.4.3-cp313-cp313-win32.whl": "6fb70de56f1859a3f71261cbe41005f56a7842cc348d3aeb26237560bfa5e0ce",
+            "https://files.pythonhosted.org/packages/a4/fa/384d2c0f57edad03d7bec3ebefb462090d8905b4ff5a2d2525f3bb711fac/charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_s390x.whl": "02425242e96bcf29a49711b0ca9f37e451da7c70562bc10e8ed992a5a7a25cc0",
+            "https://files.pythonhosted.org/packages/ae/02/e29e22b4e02839a0e4a06557b1999d0a47db3567e82989b5bb21f3fbbd9f/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_aarch64.whl": "027b776c26d38b7f15b26a5da1044f376455fb3766df8fc38563b4efbc515154",
+            "https://files.pythonhosted.org/packages/b0/a8/6f5bcf1bcf63cb45625f7c5cadca026121ff8a6c8a3256d8d8cd59302663/charset_normalizer-3.4.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl": "257f26fed7d7ff59921b78244f3cd93ed2af1800ff048c33f624c87475819dd7",
+            "https://files.pythonhosted.org/packages/b7/8c/9839225320046ed279c6e839d51f028342eb77c91c89b8ef2549f951f3ec/charset_normalizer-3.4.3-cp314-cp314-win32.whl": "c6dbd0ccdda3a2ba7c2ecd9d77b37f3b5831687d8dc1b6ca5f56a4880cc7b7ce",
+            "https://files.pythonhosted.org/packages/c1/35/6525b21aa0db614cf8b5792d232021dca3df7f90a1944db934efa5d20bb1/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_x86_64.whl": "320e8e66157cc4e247d9ddca8e21f427efc7a04bbd0ac8a9faf56583fa543f9f",
+            "https://files.pythonhosted.org/packages/c2/a9/3865b02c56f300a6f94fc631ef54f0a8a29da74fb45a773dfd3dcd380af7/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_aarch64.whl": "6aab0f181c486f973bc7262a97f5aca3ee7e1437011ef0c2ec04b5a11d16c927",
+            "https://files.pythonhosted.org/packages/c2/ca/9a0983dd5c8e9733565cf3db4df2b0a2e9a82659fd8aa2a868ac6e4a991f/charset_normalizer-3.4.3-cp39-cp39-macosx_10_9_universal2.whl": "70bfc5f2c318afece2f5838ea5e4c3febada0be750fcf4775641052bbba14d05",
+            "https://files.pythonhosted.org/packages/c4/72/d3d0e9592f4e504f9dea08b8db270821c909558c353dc3b457ed2509f2fb/charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_aarch64.whl": "1ef99f0456d3d46a50945c98de1774da86f8e992ab5c77865ea8b8195341fc19",
+            "https://files.pythonhosted.org/packages/c5/35/9c99739250742375167bc1b1319cd1cec2bf67438a70d84b2e1ec4c9daa3/charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_s390x.whl": "b5e3b2d152e74e100a9e9573837aba24aab611d39428ded46f4e4022ea7d1942",
+            "https://files.pythonhosted.org/packages/c7/2a/ae245c41c06299ec18262825c1569c5d3298fc920e4ddf56ab011b417efd/charset_normalizer-3.4.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl": "13faeacfe61784e2559e690fc53fa4c5ae97c6fcedb8eb6fb8d0a15b475d2c64",
+            "https://files.pythonhosted.org/packages/ce/d6/7e805c8e5c46ff9729c49950acc4ee0aeb55efb8b3a56687658ad10c3216/charset_normalizer-3.4.3-cp39-cp39-win_amd64.whl": "d22dbedd33326a4a5190dd4fe9e9e693ef12160c77382d9e87919bce54f3d4ca",
+            "https://files.pythonhosted.org/packages/ce/ec/1edc30a377f0a02689342f214455c3f6c2fbedd896a1d2f856c002fc3062/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl": "b89bc04de1d83006373429975f8ef9e7932534b8cc9ca582e4db7d20d91816db",
+            "https://files.pythonhosted.org/packages/d6/98/f3b8013223728a99b908c9344da3aa04ee6e3fa235f19409033eda92fb78/charset_normalizer-3.4.3-cp310-cp310-macosx_10_9_universal2.whl": "fb7f67a1bfa6e40b438170ebdc8158b78dc465a5a67b6dde178a46987b244a72",
+            "https://files.pythonhosted.org/packages/e1/ef/dd08b2cac9284fd59e70f7d97382c33a3d0a926e45b15fc21b3308324ffd/charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_s390x.whl": "511729f456829ef86ac41ca78c63a5cb55240ed23b4b737faca0eb1abb1c41bc",
+            "https://files.pythonhosted.org/packages/e2/c6/f05db471f81af1fa01839d44ae2a8bfeec8d2a8b4590f16c4e7393afd323/charset_normalizer-3.4.3-cp310-cp310-win_amd64.whl": "c6e490913a46fa054e03699c70019ab869e990270597018cef1d8562132c2669",
+            "https://files.pythonhosted.org/packages/e2/e6/63bb0e10f90a8243c5def74b5b105b3bbbfb3e7bb753915fe333fb0c11ea/charset_normalizer-3.4.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl": "585f3b2a80fbd26b048a0be90c5aae8f06605d3c92615911c3a2b03a8a3b796f",
+            "https://files.pythonhosted.org/packages/e4/69/132eab043356bba06eb333cc2cc60c6340857d0a2e4ca6dc2b51312886b3/charset_normalizer-3.4.3-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl": "34a7f768e3f985abdb42841e20e17b330ad3aaf4bb7e7aeeb73db2e70f077b99",
+            "https://files.pythonhosted.org/packages/e9/5e/14c94999e418d9b87682734589404a25854d5f5d0408df68bc15b6ff54bb/charset_normalizer-3.4.3-cp312-cp312-macosx_10_13_universal2.whl": "e28e334d3ff134e88989d90ba04b47d84382a828c061d0d1027b1b12a62b39b1",
+            "https://files.pythonhosted.org/packages/ee/7a/36fbcf646e41f710ce0a563c1c9a343c6edf9be80786edeb15b6f62e17db/charset_normalizer-3.4.3-cp314-cp314-win_amd64.whl": "73dc19b562516fc9bcf6e5d6e596df0b4eb98d87e4f79f3ae71840e6ed21361c",
+            "https://files.pythonhosted.org/packages/f0/c9/a2c9c2a355a8594ce2446085e2ec97fd44d323c684ff32042e2a6b718e1d/charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_aarch64.whl": "c6f162aabe9a91a309510d74eeb6507fab5fff92337a15acbe77753d88d9dcf0",
+            "https://files.pythonhosted.org/packages/f1/e5/38421987f6c697ee3722981289d554957c4be652f963d71c5e46a262e135/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl": "8dcfc373f888e4fb39a7bc57e93e3b845e7f462dacc008d9749568b1c4ece096",
+            "https://files.pythonhosted.org/packages/f4/9c/996a4a028222e7761a96634d1820de8a744ff4327a00ada9c8942033089b/charset_normalizer-3.4.3-cp311-cp311-win_amd64.whl": "31a9a6f775f9bcd865d88ee350f0ffb0e25936a7f930ca98995c05abf1faf21c",
+            "https://files.pythonhosted.org/packages/f6/42/6f45efee8697b89fda4d50580f292b8f7f9306cb2971d4b53f8914e4d890/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_s390x.whl": "bd28b817ea8c70215401f657edef3a8aa83c29d447fb0b622c35403780ba11d5",
+            "https://files.pythonhosted.org/packages/fc/eb/a2ffb08547f4e1e5415fb69eb7db25932c52a52bed371429648db4d84fb1/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl": "c6fd51128a41297f5409deab284fecbe5305ebd7e5a1f959bee1c054622b7018"
+          },
+          "docutils": {
+            "https://files.pythonhosted.org/packages/4a/c0/89fe6215b443b919cb98a5002e107cb5026854ed1ccb6b5833e0768419d1/docutils-0.22.2.tar.gz": "9fdb771707c8784c8f2728b67cb2c691305933d68137ef95a75db5f4dfbc213d",
+            "https://files.pythonhosted.org/packages/66/dd/f95350e853a4468ec37478414fc04ae2d61dad7a947b3015c3dcc51a09b9/docutils-0.22.2-py3-none-any.whl": "b0e98d679283fc3bb0ead8a5da7f501baa632654e7056e9c5846842213d674d8"
+          },
+          "idna": {
+            "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl": "946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3",
+            "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz": "12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"
+          },
+          "importlib-metadata": {
+            "https://files.pythonhosted.org/packages/20/b0/36bd937216ec521246249be3bf9855081de4c5e06a0c9b4219dbeda50373/importlib_metadata-8.7.0-py3-none-any.whl": "e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd",
+            "https://files.pythonhosted.org/packages/76/66/650a33bd90f786193e4de4b3ad86ea60b53c89b669a5c7be931fac31cdb0/importlib_metadata-8.7.0.tar.gz": "d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000"
+          },
+          "jaraco-classes": {
+            "https://files.pythonhosted.org/packages/06/c0/ed4a27bc5571b99e3cff68f8a9fa5b56ff7df1c2251cc715a652ddd26402/jaraco.classes-3.4.0.tar.gz": "47a024b51d0239c0dd8c8540c6c7f484be3b8fcf0b2d85c13825780d3b3f3acd",
+            "https://files.pythonhosted.org/packages/7f/66/b15ce62552d84bbfcec9a4873ab79d993a1dd4edb922cbfccae192bd5b5f/jaraco.classes-3.4.0-py3-none-any.whl": "f662826b6bed8cace05e7ff873ce0f9283b5c924470fe664fff1c2f00f581790"
+          },
+          "jaraco-context": {
+            "https://files.pythonhosted.org/packages/df/ad/f3777b81bf0b6e7bc7514a1656d3e637b2e8e15fab2ce3235730b3e7a4e6/jaraco_context-6.0.1.tar.gz": "9bae4ea555cf0b14938dc0aee7c9f32ed303aa20a3b73e7dc80111628792d1b3",
+            "https://files.pythonhosted.org/packages/ff/db/0c52c4cf5e4bd9f5d7135ec7669a3a767af21b3a308e1ed3674881e52b62/jaraco.context-6.0.1-py3-none-any.whl": "f797fc481b490edb305122c9181830a3a5b76d84ef6d1aef2fb9b47ab956f9e4"
+          },
+          "jaraco-functools": {
+            "https://files.pythonhosted.org/packages/b4/09/726f168acad366b11e420df31bf1c702a54d373a83f968d94141a8c3fde0/jaraco_functools-4.3.0-py3-none-any.whl": "227ff8ed6f7b8f62c56deff101545fa7543cf2c8e7b82a7c2116e672f29c26e8",
+            "https://files.pythonhosted.org/packages/f7/ed/1aa2d585304ec07262e1a83a9889880701079dde796ac7b1d1826f40c63d/jaraco_functools-4.3.0.tar.gz": "cfd13ad0dd2c47a3600b439ef72d8615d482cedcff1632930d6f28924d92f294"
+          },
+          "keyring": {
+            "https://files.pythonhosted.org/packages/70/09/d904a6e96f76ff214be59e7aa6ef7190008f52a0ab6689760a98de0bf37d/keyring-25.6.0.tar.gz": "0b39998aa941431eb3d9b0d4b2460bc773b9df6fed7621c2dfb291a7e0187a66",
+            "https://files.pythonhosted.org/packages/d3/32/da7f44bcb1105d3e88a0b74ebdca50c59121d2ddf71c9e34ba47df7f3a56/keyring-25.6.0-py3-none-any.whl": "552a3f7af126ece7ed5c89753650eec89c7eaae8617d0aa4d9ad2b75111266bd"
+          },
+          "markdown-it-py": {
+            "https://files.pythonhosted.org/packages/5b/f5/4ec618ed16cc4f8fb3b701563655a69816155e79e24a17b651541804721d/markdown_it_py-4.0.0.tar.gz": "cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3",
+            "https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl": "87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147"
+          },
+          "mdurl": {
+            "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl": "84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8",
+            "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz": "bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"
+          },
+          "more-itertools": {
+            "https://files.pythonhosted.org/packages/a4/8e/469e5a4a2f5855992e425f3cb33804cc07bf18d48f2db061aec61ce50270/more_itertools-10.8.0-py3-none-any.whl": "52d4362373dcf7c52546bc4af9a86ee7c4579df9a8dc268be0a2f949d376cc9b",
+            "https://files.pythonhosted.org/packages/ea/5d/38b681d3fce7a266dd9ab73c66959406d565b3e85f21d5e66e1181d93721/more_itertools-10.8.0.tar.gz": "f638ddf8a1a0d134181275fb5d58b086ead7c6a72429ad725c67503f13ba30bd"
+          },
+          "nh3": {
+            "https://files.pythonhosted.org/packages/0c/e0/cf1543e798ba86d838952e8be4cb8d18e22999be2a24b112a671f1c04fd6/nh3-0.3.0-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl": "ec6cfdd2e0399cb79ba4dcffb2332b94d9696c52272ff9d48a630c5dca5e325a",
+            "https://files.pythonhosted.org/packages/10/71/2fb1834c10fab6d9291d62c95192ea2f4c7518bd32ad6c46aab5d095cb87/nh3-0.3.0-cp313-cp313t-musllinux_1_2_i686.whl": "0649464ac8eee018644aacbc103874ccbfac80e3035643c3acaab4287e36e7f5",
+            "https://files.pythonhosted.org/packages/23/1e/80a8c517655dd40bb13363fc4d9e66b2f13245763faab1a20f1df67165a7/nh3-0.3.0-cp313-cp313t-win_amd64.whl": "423201bbdf3164a9e09aa01e540adbb94c9962cc177d5b1cbb385f5e1e79216e",
+            "https://files.pythonhosted.org/packages/2f/d6/f1c6e091cbe8700401c736c2bc3980c46dca770a2cf6a3b48a175114058e/nh3-0.3.0-cp313-cp313t-win32.whl": "7275fdffaab10cc5801bf026e3c089d8de40a997afc9e41b981f7ac48c5aa7d5",
+            "https://files.pythonhosted.org/packages/33/c1/8f8ccc2492a000b6156dce68a43253fcff8b4ce70ab4216d08f90a2ac998/nh3-0.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl": "1adeb1062a1c2974bc75b8d1ecb014c5fd4daf2df646bbe2831f7c23659793f9",
+            "https://files.pythonhosted.org/packages/39/2c/6394301428b2017a9d5644af25f487fa557d06bc8a491769accec7524d9a/nh3-0.3.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl": "f416c35efee3e6a6c9ab7716d9e57aa0a49981be915963a82697952cba1353e1",
+            "https://files.pythonhosted.org/packages/4c/3c/cba7b26ccc0ef150c81646478aa32f9c9535234f54845603c838a1dc955c/nh3-0.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl": "80fe20171c6da69c7978ecba33b638e951b85fb92059259edd285ff108b82a6d",
+            "https://files.pythonhosted.org/packages/4e/9a/344b9f9c4bd1c2413a397f38ee6a3d5db30f1a507d4976e046226f12b297/nh3-0.3.0-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl": "37d3003d98dedca6cd762bf88f2e70b67f05100f6b949ffe540e189cc06887f9",
+            "https://files.pythonhosted.org/packages/5b/76/3165e84e5266d146d967a6cc784ff2fbf6ddd00985a55ec006b72bc39d5d/nh3-0.3.0-cp38-abi3-win_arm64.whl": "d97d3efd61404af7e5721a0e74d81cdbfc6e5f97e11e731bb6d090e30a7b62b2",
+            "https://files.pythonhosted.org/packages/5c/86/a96b1453c107b815f9ab8fac5412407c33cc5c7580a4daf57aabeb41b774/nh3-0.3.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl": "ce5e7185599f89b0e391e2f29cc12dc2e206167380cea49b33beda4891be2fe1",
+            "https://files.pythonhosted.org/packages/63/da/c5fd472b700ba37d2df630a9e0d8cc156033551ceb8b4c49cc8a5f606b68/nh3-0.3.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl": "ba0caa8aa184196daa6e574d997a33867d6d10234018012d35f86d46024a2a95",
+            "https://files.pythonhosted.org/packages/66/3f/cd37f76c8ca277b02a84aa20d7bd60fbac85b4e2cbdae77cb759b22de58b/nh3-0.3.0-cp38-abi3-musllinux_1_2_aarch64.whl": "634e34e6162e0408e14fb61d5e69dbaea32f59e847cfcfa41b66100a6b796f62",
+            "https://files.pythonhosted.org/packages/6a/1b/b15bd1ce201a1a610aeb44afd478d55ac018b4475920a3118ffd806e2483/nh3-0.3.0-cp38-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl": "e9e6a7e4d38f7e8dda9edd1433af5170c597336c1a74b4693c5cb75ab2b30f2a",
+            "https://files.pythonhosted.org/packages/8c/ae/324b165d904dc1672eee5f5661c0a68d4bab5b59fbb07afb6d8d19a30b45/nh3-0.3.0-cp38-abi3-win_amd64.whl": "bae63772408fd63ad836ec569a7c8f444dd32863d0c67f6e0b25ebbd606afa95",
+            "https://files.pythonhosted.org/packages/8f/14/079670fb2e848c4ba2476c5a7a2d1319826053f4f0368f61fca9bb4227ae/nh3-0.3.0-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl": "7852f038a054e0096dac12b8141191e02e93e0b4608c4b993ec7d4ffafea4e49",
+            "https://files.pythonhosted.org/packages/97/03/03f79f7e5178eb1ad5083af84faff471e866801beb980cc72943a4397368/nh3-0.3.0-cp38-abi3-musllinux_1_2_i686.whl": "c7a32a7f0d89f7d30cb8f4a84bdbd56d1eb88b78a2434534f62c71dac538c450",
+            "https://files.pythonhosted.org/packages/97/33/11e7273b663839626f714cb68f6eb49899da5a0d9b6bc47b41fe870259c2/nh3-0.3.0-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl": "389d93d59b8214d51c400fb5b07866c2a4f79e4e14b071ad66c92184fec3a392",
+            "https://files.pythonhosted.org/packages/9a/e0/af86d2a974c87a4ba7f19bc3b44a8eaa3da480de264138fec82fe17b340b/nh3-0.3.0-cp313-cp313t-win_arm64.whl": "16f8670201f7e8e0e05ed1a590eb84bfa51b01a69dd5caf1d3ea57733de6a52f",
+            "https://files.pythonhosted.org/packages/a3/e5/ac7fc565f5d8bce7f979d1afd68e8cb415020d62fa6507133281c7d49f91/nh3-0.3.0-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl": "af5aa8127f62bbf03d68f67a956627b1bd0469703a35b3dad28d0c1195e6c7fb",
+            "https://files.pythonhosted.org/packages/ad/7f/7c6b8358cf1222921747844ab0eef81129e9970b952fcb814df417159fb9/nh3-0.3.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl": "7c915060a2c8131bef6a29f78debc29ba40859b6dbe2362ef9e5fd44f11487c2",
+            "https://files.pythonhosted.org/packages/b4/11/340b7a551916a4b2b68c54799d710f86cf3838a4abaad8e74d35360343bb/nh3-0.3.0-cp313-cp313t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl": "a537ece1bf513e5a88d8cff8a872e12fe8d0f42ef71dd15a5e7520fecd191bbb",
+            "https://files.pythonhosted.org/packages/c3/a4/96cff0977357f60f06ec4368c4c7a7a26cccfe7c9fcd54f5378bf0428fd3/nh3-0.3.0.tar.gz": "d8ba24cb31525492ea71b6aac11a4adac91d828aadeff7c4586541bf5dc34d2f",
+            "https://files.pythonhosted.org/packages/c9/50/76936ec021fe1f3270c03278b8af5f2079038116b5d0bfe8538ffe699d69/nh3-0.3.0-cp38-abi3-win32.whl": "6d68fa277b4a3cf04e5c4b84dd0c6149ff7d56c12b3e3fab304c525b850f613d",
+            "https://files.pythonhosted.org/packages/ce/55/1974bcc16884a397ee699cebd3914e1f59be64ab305533347ca2d983756f/nh3-0.3.0-cp38-abi3-musllinux_1_2_x86_64.whl": "3f1b4f8a264a0c86ea01da0d0c390fe295ea0bcacc52c2103aca286f6884f518",
+            "https://files.pythonhosted.org/packages/ee/db/7aa11b44bae4e7474feb1201d8dee04fabe5651c7cb51409ebda94a4ed67/nh3-0.3.0-cp38-abi3-musllinux_1_2_armv7l.whl": "b0612ccf5de8a480cf08f047b08f9d3fecc12e63d2ee91769cb19d7290614c23",
+            "https://files.pythonhosted.org/packages/f3/ba/59e204d90727c25b253856e456ea61265ca810cda8ee802c35f3fadaab00/nh3-0.3.0-cp313-cp313t-musllinux_1_2_armv7l.whl": "e90883f9f85288f423c77b3f5a6f4486375636f25f793165112679a7b6363b35"
+          },
+          "pkginfo": {
+            "https://files.pythonhosted.org/packages/24/03/e26bf3d6453b7fda5bd2b84029a426553bb373d6277ef6b5ac8863421f87/pkginfo-1.12.1.2.tar.gz": "5cd957824ac36f140260964eba3c6be6442a8359b8c48f4adf90210f33a04b7b",
+            "https://files.pythonhosted.org/packages/fa/3d/f4f2ba829efb54b6cd2d91349c7463316a9cc55a43fc980447416c88540f/pkginfo-1.12.1.2-py3-none-any.whl": "c783ac885519cab2c34927ccfa6bf64b5a704d7c69afaea583dd9b7afe969343"
+          },
+          "pygments": {
+            "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz": "636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887",
+            "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl": "86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b"
+          },
+          "readme-renderer": {
+            "https://files.pythonhosted.org/packages/5a/a9/104ec9234c8448c4379768221ea6df01260cd6c2ce13182d4eac531c8342/readme_renderer-44.0.tar.gz": "8712034eabbfa6805cacf1402b4eeb2a73028f72d1166d6f5cb7f9c047c5d1e1",
+            "https://files.pythonhosted.org/packages/e1/67/921ec3024056483db83953ae8e48079ad62b92db7880013ca77632921dd0/readme_renderer-44.0-py3-none-any.whl": "2fbca89b81a08526aadf1357a8c2ae889ec05fb03f5da67f9769c9a592166151"
+          },
+          "requests": {
+            "https://files.pythonhosted.org/packages/34/64/8860370b167a9721e8956ae116825caff829224fbca0ca6e7bf8ddef8430/requests-2.33.0.tar.gz": "c7ebc5e8b0f21837386ad0e1c8fe8b829fa5f544d8df3b2253bff14ef29d7652",
+            "https://files.pythonhosted.org/packages/56/5d/c814546c2333ceea4ba42262d8c4d55763003e767fa169adc693bd524478/requests-2.33.0-py3-none-any.whl": "3324635456fa185245e24865e810cecec7b4caf933d7eb133dcde67d48cee69b"
+          },
+          "requests-toolbelt": {
+            "https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl": "cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06",
+            "https://files.pythonhosted.org/packages/f3/61/d7545dafb7ac2230c70d38d31cbfe4cc64f7144dc41f6e4e4b78ecd9f5bb/requests-toolbelt-1.0.0.tar.gz": "7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"
+          },
+          "rfc3986": {
+            "https://files.pythonhosted.org/packages/85/40/1520d68bfa07ab5a6f065a186815fb6610c86fe957bc065754e47f7b0840/rfc3986-2.0.0.tar.gz": "97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c",
+            "https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl": "50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd"
+          },
+          "rich": {
+            "https://files.pythonhosted.org/packages/e3/30/3c4d035596d3cf444529e0b2953ad0466f6049528a879d27534700580395/rich-14.1.0-py3-none-any.whl": "536f5f1785986d6dbdea3c75205c473f970777b4a0d6c6dd1b696aa05a3fa04f",
+            "https://files.pythonhosted.org/packages/fe/75/af448d8e52bf1d8fa6a9d089ca6c07ff4453d86c65c145d0a300bb073b9b/rich-14.1.0.tar.gz": "e497a48b844b0320d45007cdebfeaeed8db2a4f4bcf49f15e455cfc4af11eaa8"
+          },
+          "twine": {
+            "https://files.pythonhosted.org/packages/5d/ec/00f9d5fd040ae29867355e559a94e9a8429225a0284a3f5f091a3878bfc0/twine-5.1.1-py3-none-any.whl": "215dbe7b4b94c2c50a7315c0275d2258399280fbb7d04182c7e55e24b5f93997",
+            "https://files.pythonhosted.org/packages/77/68/bd982e5e949ef8334e6f7dcf76ae40922a8750aa2e347291ae1477a4782b/twine-5.1.1.tar.gz": "9aa0825139c02b3434d913545c7b847a21c835e11597f5255842d457da2322db"
+          },
+          "urllib3": {
+            "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl": "bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4",
+            "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz": "1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed"
+          },
+          "zipp": {
+            "https://files.pythonhosted.org/packages/2e/54/647ade08bf0db230bfea292f893923872fd20be6ac6f53b2b936ba839d75/zipp-3.23.0-py3-none-any.whl": "071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e",
+            "https://files.pythonhosted.org/packages/e3/02/0f2892c661036d50ede074e376733dca2ae7c6eb617489437771209d4180/zipp-3.23.0.tar.gz": "a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166"
+          }
+        }
+      },
+      "fact_version": "v1",
+      "index_urls": {
+        "https://pypi.org/simple/": {
+          "backports_tarfile": "/simple/backports-tarfile/",
+          "certifi": "/simple/certifi/",
+          "charset_normalizer": "/simple/charset-normalizer/",
+          "docutils": "/simple/docutils/",
+          "idna": "/simple/idna/",
+          "importlib_metadata": "/simple/importlib-metadata/",
+          "jaraco_classes": "/simple/jaraco-classes/",
+          "jaraco_context": "/simple/jaraco-context/",
+          "jaraco_functools": "/simple/jaraco-functools/",
+          "keyring": "/simple/keyring/",
+          "markdown_it_py": "/simple/markdown-it-py/",
+          "mdurl": "/simple/mdurl/",
+          "more_itertools": "/simple/more-itertools/",
+          "nh3": "/simple/nh3/",
+          "pkginfo": "/simple/pkginfo/",
+          "pygments": "/simple/pygments/",
+          "readme_renderer": "/simple/readme-renderer/",
+          "requests": "/simple/requests/",
+          "requests_toolbelt": "/simple/requests-toolbelt/",
+          "rfc3986": "/simple/rfc3986/",
+          "rich": "/simple/rich/",
+          "twine": "/simple/twine/",
+          "urllib3": "/simple/urllib3/",
+          "zipp": "/simple/zipp/"
+        }
+      }
+    }
+  }
+}
diff --git a/WORKSPACE b/WORKSPACE
deleted file mode 100644
index 459ce39..0000000
--- a/WORKSPACE
+++ /dev/null
@@ -1,353 +0,0 @@
-workspace(name = "gitiles")
-
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
-
-http_archive(
-    name = "rules_python",
-    sha256 = "e5470e92a18aa51830db99a4d9c492cc613761d5bdb7131c04bd92b9834380f6",
-    strip_prefix = "rules_python-4b84ad270387a7c439ebdccfd530e2339601ef27",
-    urls = ["https://github.com/bazelbuild/rules_python/archive/4b84ad270387a7c439ebdccfd530e2339601ef27.tar.gz"],
-)
-
-load("//tools:bazlets.bzl", "load_bazlets")
-
-load_bazlets(
-    commit = "de7597593918677465f8ef4330a62f0b9a50f81c",
-    # local_path = "/home/<user>/projects/bazlets",
-)
-
-load(
-    "@com_googlesource_gerrit_bazlets//tools:maven_jar.bzl",
-    "maven_jar",
-)
-
-# JGit external repository consumed from git submodule
-local_repository(
-    name = "jgit",
-    path = "modules/jgit",
-)
-
-# Java-Prettify external repository consumed from git submodule
-local_repository(
-    name = "java-prettify",
-    path = "modules/java-prettify",
-)
-
-register_toolchains("//tools:error_prone_warnings_toolchain_java17_definition")
-
-register_toolchains("//tools:error_prone_warnings_toolchain_java21_definition")
-
-maven_jar(
-    name = "error-prone-annotations",
-    artifact = "com.google.errorprone:error_prone_annotations:2.46.0",
-    sha1 = "4ecb5d2392c38c46e6cb65e1bf60be708d97005d",
-)
-
-maven_jar(
-    name = "commons-codec",
-    artifact = "commons-codec:commons-codec:1.18.0",
-    sha1 = "ee45d1cf6ec2cc2b809ff04b4dc7aec858e0df8f",
-)
-
-maven_jar(
-    name = "commons-io",
-    artifact = "commons-io:commons-io:2.21.0",
-    sha1 = "52a6f68fe5afe335cde95461dd5c3412f04996f7",
-)
-
-maven_jar(
-    name = "commons-lang3",
-    artifact = "org.apache.commons:commons-lang3:3.18.0",
-    sha1 = "fb14946f0e39748a6571de0635acbe44e7885491",
-)
-
-maven_jar(
-    name = "commons-text",
-    artifact = "org.apache.commons:commons-text:1.10.0",
-    sha1 = "3363381aef8cef2dbc1023b3e3a9433b08b64e01",
-)
-
-maven_jar(
-    name = "gson",
-    artifact = "com.google.code.gson:gson:2.13.2",
-    sha1 = "48b8230771e573b54ce6e867a9001e75977fe78e",
-)
-
-maven_jar(
-    name = "guava",
-    artifact = "com.google.guava:guava:33.5.0-jre",
-    sha1 = "8699de25f2f979108d6c1b804a7ba38cda1116bc",
-)
-
-maven_jar(
-    name = "guava-failureaccess",
-    artifact = "com.google.guava:failureaccess:1.0.3",
-    sha1 = "aeaffd00d57023a2c947393ed251f0354f0985fc",
-)
-
-maven_jar(
-    name = "jsr305",
-    artifact = "com.google.code.findbugs:jsr305:3.0.1",
-    attach_source = False,
-    sha1 = "f7be08ec23c21485b9b5a1cf1654c2ec8c58168d",
-)
-
-COMMONMARK_VERSION = "0.24.0"
-
-# When upgrading commonmark it should also be updated in plugins/gitiles
-maven_jar(
-    name = "commonmark",
-    artifact = "org.commonmark:commonmark:" + COMMONMARK_VERSION,
-    sha1 = "59af01016ece382b55b4acb6a5190b08879c637c",
-)
-
-maven_jar(
-    name = "cm-autolink",
-    artifact = "org.commonmark:commonmark-ext-autolink:" + COMMONMARK_VERSION,
-    sha1 = "703e28852088ff1b4b3a06622416fd807147bd84",
-)
-
-maven_jar(
-    name = "autolink",
-    artifact = "org.nibor.autolink:autolink:0.11.0",
-    sha1 = "32abc7854d5801d19ff16be92362fa4c511d9a70",
-)
-
-maven_jar(
-    name = "gfm-strikethrough",
-    artifact = "org.commonmark:commonmark-ext-gfm-strikethrough:" + COMMONMARK_VERSION,
-    sha1 = "9e9c1e5b50340643099d52c6b841f60fb6f54c27",
-)
-
-maven_jar(
-    name = "gfm-tables",
-    artifact = "org.commonmark:commonmark-ext-gfm-tables:" + COMMONMARK_VERSION,
-    sha1 = "8a30c4e89ce33450c47604325751bec613bce541",
-)
-
-maven_jar(
-    name = "servlet-api",
-    artifact = "javax.servlet:javax.servlet-api:4.0.1",
-    sha1 = "a27082684a2ff0bf397666c3943496c44541d1ca",
-)
-
-maven_jar(
-    name = "truth",
-    artifact = "com.google.truth:truth:1.4.4",
-    sha1 = "33810058273a2a3b6ce6d1f8c8621bfc85493f67",
-)
-
-# Indirect dependency of truth
-maven_jar(
-    name = "diffutils",
-    artifact = "io.github.java-diff-utils:java-diff-utils:4.16",
-    sha1 = "cca1e7dc2460d0afeebc3fc4a3386eadede08c5a",
-)
-
-maven_jar(
-    name = "soy",
-    artifact = "com.google.template:soy:2024-01-30",
-    sha1 = "6e9ccb00926325c7a9293ed05a2eaf56ea15d60e",
-)
-
-FLOGGER_VERS = "0.7.4"
-
-maven_jar(
-    name = "log4j",
-    artifact = "ch.qos.reload4j:reload4j:1.2.25",
-    sha1 = "45921e383a1001c2a599fc4c6cf59af80cdd1cf1",
-)
-
-maven_jar(
-    name = "flogger",
-    artifact = "com.google.flogger:flogger:" + FLOGGER_VERS,
-    sha1 = "cec29ed8b58413c2e935d86b12d6b696dc285419",
-)
-
-maven_jar(
-    name = "flogger-log4j-backend",
-    artifact = "com.google.flogger:flogger-log4j-backend:" + FLOGGER_VERS,
-    sha1 = "7486b1c0138647cd7714eccb8ce37b5f2ae20a76",
-)
-
-maven_jar(
-    name = "flogger-google-extensions",
-    artifact = "com.google.flogger:google-extensions:" + FLOGGER_VERS,
-    sha1 = "c49493bd815e3842b8406e21117119d560399977",
-)
-
-maven_jar(
-    name = "flogger-system-backend",
-    artifact = "com.google.flogger:flogger-system-backend:" + FLOGGER_VERS,
-    sha1 = "4bee7ebbd97c63ca7fb17529aeb49a57b670d061",
-)
-
-maven_jar(
-    name = "html-types",
-    artifact = "com.google.common.html.types:types:1.0.8",
-    sha1 = "9e9cf7bc4b2a60efeb5f5581fe46d17c068e0777",
-)
-
-maven_jar(
-    name = "protobuf",
-    artifact = "com.google.protobuf:protobuf-java:4.33.4",
-    sha1 = "16535c6547fa14b105611f663659b7f24758d692",
-)
-
-maven_jar(
-    name = "icu4j",
-    artifact = "com.ibm.icu:icu4j:78.2",
-    sha1 = "31b9d9a35d283432d0ce1a8b6e2631dcfd046ab8",
-)
-
-maven_jar(
-    name = "javaewah",
-    artifact = "com.googlecode.javaewah:JavaEWAH:1.2.3",
-    sha1 = "13a27c856e0c8808cee9a64032c58eee11c3adc9",
-)
-
-# When upgrading commons_compress, upgrade tukaani_xz to the
-# corresponding version
-maven_jar(
-    name = "commons-compress",
-    artifact = "org.apache.commons:commons-compress:1.28.0",
-    sha1 = "e482f2c7a88dac3c497e96aa420b6a769f59c8d7",
-)
-
-# Transitive dependency of commons_compress. Should only be
-# upgraded at the same time as commons_compress.
-maven_jar(
-    name = "tukaani-xz",
-    artifact = "org.tukaani:xz:1.11",
-    attach_source = False,
-    sha1 = "bdfd1774efb216f506f4f3c5b08c205b308c50aa",
-)
-
-maven_jar(
-    name = "junit",
-    artifact = "junit:junit:4.13.2",
-    sha1 = "8ac9e16d933b6fb43bc7f576336b8f4d7eb5ba12",
-)
-
-maven_jar(
-    name = "hamcrest",
-    artifact = "org.hamcrest:hamcrest:3.0",
-    sha1 = "8fd9b78a8e6a6510a078a9e30e9e86a6035cfaf7",
-)
-
-maven_jar(
-    name = "mockito",
-    artifact = "org.mockito:mockito-core:5.21.0",
-    sha1 = "121287b8287464a5a7af2e47d5dbc49ca38a892f",
-)
-
-BYTE_BUDDY_VERSION = "1.18.2"
-
-maven_jar(
-    name = "bytebuddy",
-    artifact = "net.bytebuddy:byte-buddy:" + BYTE_BUDDY_VERSION,
-    sha1 = "7ac991b4bd502e2567efcdecc0d2e9b3f7dd3859",
-)
-
-maven_jar(
-    name = "bytebuddy-agent",
-    artifact = "net.bytebuddy:byte-buddy-agent:" + BYTE_BUDDY_VERSION,
-    sha1 = "62f38a6faf7f069d661b79a07d566f504b0b20c4",
-)
-
-maven_jar(
-    name = "objenesis",
-    artifact = "org.objenesis:objenesis:3.0.1",
-    sha1 = "11cfac598df9dc48bb9ed9357ed04212694b7808",
-)
-
-SL_VERS = "2.0.17"
-
-maven_jar(
-    name = "log-api",
-    artifact = "org.slf4j:slf4j-api:" + SL_VERS,
-    sha1 = "d9e58ac9c7779ba3bf8142aff6c830617a7fe60f",
-)
-
-maven_jar(
-    name = "slf4j-simple",
-    artifact = "org.slf4j:slf4j-simple:" + SL_VERS,
-    sha1 = "9872a3fd794ffe7b18d17747926a64d61526ca96",
-)
-
-JETTY_VERSION = "9.4.57.v20241219"
-
-maven_jar(
-    name = "servlet",
-    artifact = "org.eclipse.jetty:jetty-servlet:" + JETTY_VERSION,
-    sha1 = "3e648eebddbf5ad0c0f7698e50c6a69c4a77fd95",
-)
-
-maven_jar(
-    name = "security",
-    artifact = "org.eclipse.jetty:jetty-security:" + JETTY_VERSION,
-    sha1 = "2b545f68d45b947fdc6e279a0e8ae3630ec10e05",
-)
-
-maven_jar(
-    name = "server",
-    artifact = "org.eclipse.jetty:jetty-server:" + JETTY_VERSION,
-    sha1 = "ad3baf52b98b4a32f5714fe2e58ac0e502b4e4d8",
-)
-
-maven_jar(
-    name = "continuation",
-    artifact = "org.eclipse.jetty:jetty-continuation:" + JETTY_VERSION,
-    sha1 = "c2bf5c810049fe23945f737a3c4743da81baa62d",
-)
-
-maven_jar(
-    name = "http",
-    artifact = "org.eclipse.jetty:jetty-http:" + JETTY_VERSION,
-    sha1 = "c7a3a9c599346708894cf355e03105937f45f427",
-)
-
-maven_jar(
-    name = "io",
-    artifact = "org.eclipse.jetty:jetty-io:" + JETTY_VERSION,
-    sha1 = "bd0ca6e5c4314972cd91f427fa09dedfe3b84ff5",
-)
-
-maven_jar(
-    name = "util",
-    artifact = "org.eclipse.jetty:jetty-util:" + JETTY_VERSION,
-    sha1 = "7bf7ea75644ac064199e1e32c66ccd312239f2dc",
-)
-
-OW2_VERS = "9.9.1"
-
-maven_jar(
-    name = "ow2-asm",
-    artifact = "org.ow2.asm:asm:" + OW2_VERS,
-    sha1 = "2ceea6ab43bcae1979b2a6d85fc0ca429877e5ab",
-)
-
-maven_jar(
-    name = "ow2-asm-analysis",
-    artifact = "org.ow2.asm:asm-analysis:" + OW2_VERS,
-    sha1 = "1ab8d9316ef7a67240087919a708246c37ed1660",
-)
-
-maven_jar(
-    name = "ow2-asm-commons",
-    artifact = "org.ow2.asm:asm-commons:" + OW2_VERS,
-    sha1 = "ab35de4c537184a09339069f1a3b3aacf2289149",
-)
-
-maven_jar(
-    name = "ow2-asm-tree",
-    artifact = "org.ow2.asm:asm-tree:" + OW2_VERS,
-    sha1 = "b6b1b3366296163b4b1f540731aad0a2baa484d8",
-)
-
-maven_jar(
-    name = "ow2-asm-util",
-    artifact = "org.ow2.asm:asm-util:" + OW2_VERS,
-    sha1 = "e51f5b0ae0b0c1960687ae970a2a3434d39d8abb",
-)
-
diff --git a/external_deps.lock.json b/external_deps.lock.json
new file mode 100755
index 0000000..cc642b5
--- /dev/null
+++ b/external_deps.lock.json
@@ -0,0 +1,2959 @@
+{
+  "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL",
+  "__INPUT_ARTIFACTS_HASH": {
+    "args4j:args4j": -1711497468,
+    "ch.qos.reload4j:reload4j": 591128666,
+    "com.google.code.findbugs:jsr305": -1992157670,
+    "com.google.code.gson:gson": -1238147550,
+    "com.google.common.html.types:types": 1474029483,
+    "com.google.errorprone:error_prone_annotations": -1409032738,
+    "com.google.errorprone:error_prone_type_annotations": -1223112919,
+    "com.google.flogger:flogger": 1438433005,
+    "com.google.flogger:flogger-log4j-backend": 994526713,
+    "com.google.flogger:flogger-system-backend": -1489094368,
+    "com.google.flogger:google-extensions": -1598339013,
+    "com.google.guava:failureaccess": -2032498474,
+    "com.google.guava:guava": -1756621521,
+    "com.google.protobuf:protobuf-java": 1906581597,
+    "com.google.template:soy": -1478719887,
+    "com.google.truth:truth": -790731381,
+    "com.googlecode.javaewah:JavaEWAH": 1917029137,
+    "com.ibm.icu:icu4j": -802150924,
+    "com.jcraft:jsch": 1133842314,
+    "com.jcraft:jzlib": 864660349,
+    "commons-codec:commons-codec": -1724312797,
+    "commons-io:commons-io": -1271816170,
+    "commons-logging:commons-logging": -1374531806,
+    "io.github.java-diff-utils:java-diff-utils": 1296992014,
+    "javax.servlet:javax.servlet-api": 669233360,
+    "junit:junit": -744267592,
+    "net.bytebuddy:byte-buddy": 1769080559,
+    "net.bytebuddy:byte-buddy-agent": -798782745,
+    "net.java.dev.jna:jna": 929040997,
+    "net.java.dev.jna:jna-platform": 1235639073,
+    "net.sf.jopt-simple:jopt-simple": 906822697,
+    "org.apache.commons:commons-compress": -1289113474,
+    "org.apache.commons:commons-lang3": 109544183,
+    "org.apache.commons:commons-math3": -1738699872,
+    "org.apache.commons:commons-text": -1491671838,
+    "org.apache.httpcomponents:httpclient": 1643860045,
+    "org.apache.httpcomponents:httpcore": -1696303652,
+    "org.apache.sshd:sshd-osgi": 1671034928,
+    "org.apache.sshd:sshd-sftp": 2079258759,
+    "org.assertj:assertj-core": -1145412507,
+    "org.bouncycastle:bcpg-jdk18on": -1572213535,
+    "org.bouncycastle:bcpkix-jdk18on": 146639060,
+    "org.bouncycastle:bcprov-jdk18on": -1405390253,
+    "org.bouncycastle:bcutil-jdk18on": -469511060,
+    "org.commonmark:commonmark": 1129543740,
+    "org.commonmark:commonmark-ext-autolink": -1853742120,
+    "org.commonmark:commonmark-ext-gfm-strikethrough": 350394231,
+    "org.commonmark:commonmark-ext-gfm-tables": 1881582931,
+    "org.eclipse.jetty.ee8:jetty-ee8-nested": 674982267,
+    "org.eclipse.jetty.ee8:jetty-ee8-security": -882431918,
+    "org.eclipse.jetty.ee8:jetty-ee8-servlet": -8438293,
+    "org.eclipse.jetty:jetty-continuation": -943403027,
+    "org.eclipse.jetty:jetty-http": 1984891007,
+    "org.eclipse.jetty:jetty-io": 1765684893,
+    "org.eclipse.jetty:jetty-security": 1160320567,
+    "org.eclipse.jetty:jetty-server": 280305722,
+    "org.eclipse.jetty:jetty-servlet": -2080040568,
+    "org.eclipse.jetty:jetty-session": 1652849423,
+    "org.eclipse.jetty:jetty-util": -1520256775,
+    "org.eclipse.jetty:jetty-util-ajax": 1261604218,
+    "org.hamcrest:hamcrest": 1547523135,
+    "org.mockito:mockito-core": -133446801,
+    "org.nibor.autolink:autolink": -342487050,
+    "org.objenesis:objenesis": 424286517,
+    "org.openjdk.jmh:jmh-core": 983716932,
+    "org.openjdk.jmh:jmh-generator-annprocess": -1162360421,
+    "org.ow2.asm:asm": 1206815935,
+    "org.ow2.asm:asm-analysis": 53497832,
+    "org.ow2.asm:asm-commons": 1607605466,
+    "org.ow2.asm:asm-tree": -1365652182,
+    "org.ow2.asm:asm-util": 838800782,
+    "org.slf4j:jcl-over-slf4j": 1978020546,
+    "org.slf4j:slf4j-api": -1197003692,
+    "org.slf4j:slf4j-simple": -1048191370,
+    "org.tukaani:xz": -1965585737,
+    "repositories": -1949687017
+  },
+  "__RESOLVED_ARTIFACTS_HASH": {
+    "aopalliance:aopalliance": 1403132272,
+    "aopalliance:aopalliance:jar:sources": -1259601821,
+    "args4j:args4j": -209094749,
+    "args4j:args4j:jar:sources": -1304112715,
+    "ch.qos.reload4j:reload4j": 1783411967,
+    "ch.qos.reload4j:reload4j:jar:sources": -1653798191,
+    "com.google.auto.value:auto-value-annotations": 641018093,
+    "com.google.auto.value:auto-value-annotations:jar:sources": -315473772,
+    "com.google.code.findbugs:jsr305": -998441376,
+    "com.google.code.findbugs:jsr305:jar:sources": -640520676,
+    "com.google.code.gson:gson": 1522732267,
+    "com.google.code.gson:gson:jar:sources": 907899269,
+    "com.google.common.html.types:types": 1531053716,
+    "com.google.common.html.types:types:jar:sources": -1323749402,
+    "com.google.errorprone:error_prone_annotations": 804114225,
+    "com.google.errorprone:error_prone_annotations:jar:sources": -2115535816,
+    "com.google.escapevelocity:escapevelocity": 888206709,
+    "com.google.escapevelocity:escapevelocity:jar:sources": -256903009,
+    "com.google.flogger:flogger": -2002947650,
+    "com.google.flogger:flogger-log4j-backend": 1033355759,
+    "com.google.flogger:flogger-log4j-backend:jar:sources": -1725551063,
+    "com.google.flogger:flogger-system-backend": -66111486,
+    "com.google.flogger:flogger-system-backend:jar:sources": -947391636,
+    "com.google.flogger:flogger:jar:sources": -304728051,
+    "com.google.flogger:google-extensions": 63987883,
+    "com.google.flogger:google-extensions:jar:sources": 911611109,
+    "com.google.guava:failureaccess": 1715931538,
+    "com.google.guava:failureaccess:jar:sources": 1303858893,
+    "com.google.guava:guava": -1141481523,
+    "com.google.guava:guava:jar:sources": 1246910673,
+    "com.google.guava:listenablefuture": 1079558157,
+    "com.google.inject:guice": -1013571143,
+    "com.google.inject:guice:jar:sources": -1090577816,
+    "com.google.j2objc:j2objc-annotations": -1008747351,
+    "com.google.j2objc:j2objc-annotations:jar:sources": -1518668002,
+    "com.google.jsinterop:jsinterop-annotations": 1636460091,
+    "com.google.jsinterop:jsinterop-annotations:jar:sources": 694679492,
+    "com.google.protobuf:protobuf-java": 1957269082,
+    "com.google.protobuf:protobuf-java:jar:sources": 1812626912,
+    "com.google.template:soy": 1782842896,
+    "com.google.template:soy:jar:sources": 895044971,
+    "com.google.truth:truth": 298561406,
+    "com.google.truth:truth:jar:sources": 494258718,
+    "com.googlecode.javaewah:JavaEWAH": 536180633,
+    "com.googlecode.javaewah:JavaEWAH:jar:sources": 1003442530,
+    "com.ibm.icu:icu4j": -1725310050,
+    "com.ibm.icu:icu4j:jar:sources": 163265109,
+    "com.jcraft:jsch": 1084501210,
+    "com.jcraft:jsch:jar:sources": -586408740,
+    "com.jcraft:jzlib": -1423321085,
+    "com.jcraft:jzlib:jar:sources": 1440827148,
+    "com.sun.jdmk:jmxtools": 2035346891,
+    "com.sun.jmx:jmxri": 2035346891,
+    "commons-codec:commons-codec": -28659539,
+    "commons-codec:commons-codec:jar:sources": -499809306,
+    "commons-io:commons-io": 1539755249,
+    "commons-io:commons-io:jar:sources": 614234247,
+    "commons-logging:commons-logging": -102005530,
+    "commons-logging:commons-logging:jar:sources": 147282524,
+    "io.github.java-diff-utils:java-diff-utils": -1180802694,
+    "io.github.java-diff-utils:java-diff-utils:jar:sources": 1551226070,
+    "jakarta.inject:jakarta.inject-api": 188991469,
+    "jakarta.inject:jakarta.inject-api:jar:sources": -1584622703,
+    "javax.activation:activation": -1387662613,
+    "javax.activation:activation:jar:sources": -848464236,
+    "javax.annotation:jsr250-api": 847275234,
+    "javax.annotation:jsr250-api:jar:sources": 1496215386,
+    "javax.inject:javax.inject": 698155243,
+    "javax.inject:javax.inject:jar:sources": 1222576539,
+    "javax.jms:jms": -1633916017,
+    "javax.mail:mail": -1332817445,
+    "javax.mail:mail:jar:sources": -1052603396,
+    "javax.servlet:javax.servlet-api": 735808080,
+    "javax.servlet:javax.servlet-api:jar:sources": -2015355058,
+    "junit:junit": -1256429642,
+    "junit:junit:jar:sources": 940567721,
+    "log4j:log4j": 1480359174,
+    "log4j:log4j:jar:sources": -1597124054,
+    "net.bytebuddy:byte-buddy": -1943217257,
+    "net.bytebuddy:byte-buddy-agent": -541514388,
+    "net.bytebuddy:byte-buddy-agent:jar:sources": 619393093,
+    "net.bytebuddy:byte-buddy:jar:sources": 828868541,
+    "net.java.dev.jna:jna": 154162148,
+    "net.java.dev.jna:jna-platform": 2091983071,
+    "net.java.dev.jna:jna-platform:jar:sources": -840497222,
+    "net.java.dev.jna:jna:jar:sources": -1131590933,
+    "net.sf.jopt-simple:jopt-simple": -1677351973,
+    "net.sf.jopt-simple:jopt-simple:jar:sources": 1072431863,
+    "org.apache.commons:commons-compress": 427141114,
+    "org.apache.commons:commons-compress:jar:sources": -1888643111,
+    "org.apache.commons:commons-lang3": -850748327,
+    "org.apache.commons:commons-lang3:jar:sources": 1059297009,
+    "org.apache.commons:commons-math3": -1383243934,
+    "org.apache.commons:commons-math3:jar:sources": -2132756896,
+    "org.apache.commons:commons-text": 1458185425,
+    "org.apache.commons:commons-text:jar:sources": -596520490,
+    "org.apache.httpcomponents:httpclient": 726829008,
+    "org.apache.httpcomponents:httpclient:jar:sources": -779528763,
+    "org.apache.httpcomponents:httpcore": 67453319,
+    "org.apache.httpcomponents:httpcore:jar:sources": 2134002822,
+    "org.apache.sshd:sshd-common": -810602894,
+    "org.apache.sshd:sshd-common:jar:sources": 1845660681,
+    "org.apache.sshd:sshd-core": 1227849176,
+    "org.apache.sshd:sshd-core:jar:sources": -375406182,
+    "org.apache.sshd:sshd-osgi": 1926592780,
+    "org.apache.sshd:sshd-osgi:jar:sources": -1265230417,
+    "org.apache.sshd:sshd-sftp": -409122480,
+    "org.apache.sshd:sshd-sftp:jar:sources": -490397747,
+    "org.assertj:assertj-core": 1683037634,
+    "org.assertj:assertj-core:jar:sources": -697161745,
+    "org.bouncycastle:bcpg-jdk18on": -1258294405,
+    "org.bouncycastle:bcpg-jdk18on:jar:sources": -1733408473,
+    "org.bouncycastle:bcpkix-jdk18on": -294727450,
+    "org.bouncycastle:bcpkix-jdk18on:jar:sources": 1412420619,
+    "org.bouncycastle:bcprov-jdk18on": 1743462207,
+    "org.bouncycastle:bcprov-jdk18on:jar:sources": 1198104999,
+    "org.bouncycastle:bcutil-jdk18on": 968717615,
+    "org.bouncycastle:bcutil-jdk18on:jar:sources": -1508579276,
+    "org.checkerframework:checker-compat-qual": -1467964223,
+    "org.checkerframework:checker-compat-qual:jar:sources": 187825033,
+    "org.commonmark:commonmark": 965353610,
+    "org.commonmark:commonmark-ext-autolink": -1259954266,
+    "org.commonmark:commonmark-ext-autolink:jar:sources": 2044805555,
+    "org.commonmark:commonmark-ext-gfm-strikethrough": -523313366,
+    "org.commonmark:commonmark-ext-gfm-strikethrough:jar:sources": 992870423,
+    "org.commonmark:commonmark-ext-gfm-tables": -1205584749,
+    "org.commonmark:commonmark-ext-gfm-tables:jar:sources": 1341057091,
+    "org.commonmark:commonmark:jar:sources": -1511261547,
+    "org.eclipse.jetty.ee8:jetty-ee8-nested": 2090733466,
+    "org.eclipse.jetty.ee8:jetty-ee8-nested:jar:sources": -595669194,
+    "org.eclipse.jetty.ee8:jetty-ee8-security": 1351184077,
+    "org.eclipse.jetty.ee8:jetty-ee8-security:jar:sources": 2004231816,
+    "org.eclipse.jetty.ee8:jetty-ee8-servlet": -2011833684,
+    "org.eclipse.jetty.ee8:jetty-ee8-servlet:jar:sources": 717717325,
+    "org.eclipse.jetty.toolchain:jetty-servlet-api": 1364182673,
+    "org.eclipse.jetty.toolchain:jetty-servlet-api:jar:sources": 736604807,
+    "org.eclipse.jetty:jetty-continuation": -801959154,
+    "org.eclipse.jetty:jetty-continuation:jar:sources": 16318779,
+    "org.eclipse.jetty:jetty-http": -293230884,
+    "org.eclipse.jetty:jetty-http:jar:sources": -1107669868,
+    "org.eclipse.jetty:jetty-io": -783344138,
+    "org.eclipse.jetty:jetty-io:jar:sources": 1011133100,
+    "org.eclipse.jetty:jetty-security": -109984940,
+    "org.eclipse.jetty:jetty-security:jar:sources": -256108816,
+    "org.eclipse.jetty:jetty-server": -1931992277,
+    "org.eclipse.jetty:jetty-server:jar:sources": 887545786,
+    "org.eclipse.jetty:jetty-servlet": -2078937455,
+    "org.eclipse.jetty:jetty-servlet:jar:sources": 607287657,
+    "org.eclipse.jetty:jetty-session": 191900471,
+    "org.eclipse.jetty:jetty-session:jar:sources": -1619577899,
+    "org.eclipse.jetty:jetty-util": 2108090903,
+    "org.eclipse.jetty:jetty-util-ajax": -328137831,
+    "org.eclipse.jetty:jetty-util-ajax:jar:sources": -1012027683,
+    "org.eclipse.jetty:jetty-util:jar:sources": -1854246232,
+    "org.hamcrest:hamcrest": 1282317766,
+    "org.hamcrest:hamcrest-core": 649657847,
+    "org.hamcrest:hamcrest-core:jar:sources": -1646511374,
+    "org.hamcrest:hamcrest:jar:sources": 1394599014,
+    "org.json:json": 1663569851,
+    "org.json:json:jar:sources": -2053182891,
+    "org.jspecify:jspecify": 117231129,
+    "org.jspecify:jspecify:jar:sources": -2134060298,
+    "org.mockito:mockito-core": -1754672709,
+    "org.mockito:mockito-core:jar:sources": 1004603810,
+    "org.nibor.autolink:autolink": -443901116,
+    "org.nibor.autolink:autolink:jar:sources": -1863403724,
+    "org.objenesis:objenesis": 151808184,
+    "org.objenesis:objenesis:jar:sources": -1043837187,
+    "org.openjdk.jmh:jmh-core": 262505124,
+    "org.openjdk.jmh:jmh-core:jar:sources": 814651627,
+    "org.openjdk.jmh:jmh-generator-annprocess": 554503664,
+    "org.openjdk.jmh:jmh-generator-annprocess:jar:sources": -59690191,
+    "org.ow2.asm:asm": 1614653533,
+    "org.ow2.asm:asm-analysis": 865618371,
+    "org.ow2.asm:asm-analysis:jar:sources": 860015432,
+    "org.ow2.asm:asm-commons": 33716409,
+    "org.ow2.asm:asm-commons:jar:sources": 899206392,
+    "org.ow2.asm:asm-tree": -1173653421,
+    "org.ow2.asm:asm-tree:jar:sources": 590990274,
+    "org.ow2.asm:asm-util": 1667785410,
+    "org.ow2.asm:asm-util:jar:sources": 902318962,
+    "org.ow2.asm:asm:jar:sources": 340034775,
+    "org.slf4j:jcl-over-slf4j": 1546873594,
+    "org.slf4j:jcl-over-slf4j:jar:sources": 494484499,
+    "org.slf4j:slf4j-api": -1521593912,
+    "org.slf4j:slf4j-api:jar:sources": -1050183387,
+    "org.slf4j:slf4j-simple": -662389614,
+    "org.slf4j:slf4j-simple:jar:sources": 1767487902,
+    "org.tukaani:xz": 1388636806,
+    "org.tukaani:xz:jar:sources": 1425609501
+  },
+  "artifacts": {
+    "aopalliance:aopalliance": {
+      "shasums": {
+        "jar": "0addec670fedcd3f113c5c8091d783280d23f75e3acb841b61a9cdb079376a08",
+        "sources": "e6ef91d439ada9045f419c77543ebe0416c3cdfc5b063448343417a3e4a72123"
+      },
+      "version": "1.0"
+    },
+    "args4j:args4j": {
+      "shasums": {
+        "jar": "5a13b0f7ff519183e55b8f453b8faaa23b92ccf0443f1fac515fedf2246bdc18",
+        "sources": "179ee53818ef244600238091c7c6333340e86bb83c605b2fb104a427571e0d1e"
+      },
+      "version": "2.37"
+    },
+    "ch.qos.reload4j:reload4j": {
+      "shasums": {
+        "jar": "e71115175c4b080cf51dd72097165ea001ff9fafdc4f79d88049d0b1ecca979c",
+        "sources": "2efc56cc6e7b463f2718a2e8f6e44347b195ed18afe707a222392ca1e653e097"
+      },
+      "version": "1.2.25"
+    },
+    "com.google.auto.value:auto-value-annotations": {
+      "shasums": {
+        "jar": "5a055ce4255333b3346e1a8703da5bf8ff049532286fdcd31712d624abe111dd",
+        "sources": "d7941e5f19bb38afcfa85350d57e5245856c23c98c2bbe32f6d31b5577f2bc33"
+      },
+      "version": "1.11.0"
+    },
+    "com.google.code.findbugs:jsr305": {
+      "shasums": {
+        "jar": "c885ce34249682bc0236b4a7d56efcc12048e6135a5baf7a9cde8ad8cda13fcd",
+        "sources": "56c80429d828bfaaefbf0358334c2629228a0ca25c073707be589e9d6c9406e6"
+      },
+      "version": "3.0.1"
+    },
+    "com.google.code.gson:gson": {
+      "shasums": {
+        "jar": "dd0ce1b55a3ed2080cb70f9c655850cda86c206862310009dcb5e5c95265a5e0",
+        "sources": "058974b69cb7b0a04712278e11870e84ee8cd8fb5f551bd8401e72ba6638bfef"
+      },
+      "version": "2.13.2"
+    },
+    "com.google.common.html.types:types": {
+      "shasums": {
+        "jar": "7d81d47117284457c8760f9372a47d6cdf45398d9e9a3dfbfd108fc57937aebe",
+        "sources": "67bd953b29c5ed25e1b02885aed8de17b8c0bd4c97059e89d27dd88c636efc06"
+      },
+      "version": "1.0.8"
+    },
+    "com.google.errorprone:error_prone_annotations": {
+      "shasums": {
+        "jar": "b67be81ff4b956401146e14eaf1526bc435a9480f2546e91eb45b796631a8a99",
+        "sources": "04767f1e647ef132c5a7c24fb67ecf169ac90dd92024393669e95f86ef2161d7"
+      },
+      "version": "2.46.0"
+    },
+    "com.google.escapevelocity:escapevelocity": {
+      "shasums": {
+        "jar": "37e76e4466836dedb864fb82355cd01c3bd21325ab642d89a0f759291b171231",
+        "sources": "eedf6622d49dc16cf9efb023c21b92305f8c645f17212a3fd874ba507372e213"
+      },
+      "version": "1.1"
+    },
+    "com.google.flogger:flogger": {
+      "shasums": {
+        "jar": "77aac11b3c26e1e184dcfe79c55ac6e27967a6dfe1c04146125176940bc64a55",
+        "sources": "b981c9fa749046c51daae47b75aa981d4244c86e54d287ab87f37390d080db01"
+      },
+      "version": "0.7.4"
+    },
+    "com.google.flogger:flogger-log4j-backend": {
+      "shasums": {
+        "jar": "922835d7c0dabb6fbd54acdc0c04af2fbea1eacd870e96b799538aae9e3324a6",
+        "sources": "5ec4c2627f427013e72144ce8135d07f808cbd9a85e45bcbe1f3ce859781af85"
+      },
+      "version": "0.7.4"
+    },
+    "com.google.flogger:flogger-system-backend": {
+      "shasums": {
+        "jar": "fd66f2615a9d8fe1b2274f1b5005a5555a0cd63cdfdab2ca9500e6eb81dc5f63",
+        "sources": "9fb7fc65b567b52ae150096bdddff5e8939e1a10e23e885c0bb8aba5e0fb2b7c"
+      },
+      "version": "0.7.4"
+    },
+    "com.google.flogger:google-extensions": {
+      "shasums": {
+        "jar": "b278fd4ed0e3019e9bf54b1e3a79cd4b6474376f01e4021db5d4d89eeef38ced",
+        "sources": "47b87d9b4151e3f294fcb046112eed37469e24f0f65aa96c88528b789c8a150e"
+      },
+      "version": "0.7.4"
+    },
+    "com.google.guava:failureaccess": {
+      "shasums": {
+        "jar": "cbfc3906b19b8f55dd7cfd6dfe0aa4532e834250d7f080bd8d211a3e246b59cb",
+        "sources": "6fef4dfd2eb9f961655f2a3c4ea87c023618d9fcbfb6b104c17862e5afe66b97"
+      },
+      "version": "1.0.3"
+    },
+    "com.google.guava:guava": {
+      "shasums": {
+        "jar": "1e301f0c52ac248b0b14fdc3d12283c77252d4d6f48521d572e7d8c4c2cc4ac7",
+        "sources": "79423ae87a2203950e0e3ce2a00682b3b8d8557e631bbf662dba5494fe3b55cb"
+      },
+      "version": "33.5.0-jre"
+    },
+    "com.google.guava:listenablefuture": {
+      "shasums": {
+        "jar": "b372a037d4230aa57fbeffdef30fd6123f9c0c2db85d0aced00c91b974f33f99"
+      },
+      "version": "9999.0-empty-to-avoid-conflict-with-guava"
+    },
+    "com.google.inject:guice": {
+      "shasums": {
+        "jar": "de5b0e359bd7b03ca42806b368846efd95484380fe05ae2a4ea71bc338c59c00",
+        "sources": "34628dd3720066e77e29c418968f31481059583cbf0f15803d583f756f31a933"
+      },
+      "version": "7.0.0"
+    },
+    "com.google.j2objc:j2objc-annotations": {
+      "shasums": {
+        "jar": "84d3a150518485f8140ea99b8a985656749629f6433c92b80c75b36aba3b099b",
+        "sources": "295938307f4016b3f128f7347101b236ada1394808104519c9e93cd61b64602b"
+      },
+      "version": "3.1"
+    },
+    "com.google.jsinterop:jsinterop-annotations": {
+      "shasums": {
+        "jar": "b2cc45519d62a1144f8cd932fa0c2c30a944c3ae9f060934587a337d81b391c8",
+        "sources": "082d7a7cba06f0543b7d0085929897f343054acd8491a4d7020ab433d4f6daf5"
+      },
+      "version": "1.0.1"
+    },
+    "com.google.protobuf:protobuf-java": {
+      "shasums": {
+        "jar": "3ca892fd6ea8b37d01bb6917dbc0bf2637548b756753f65a28d4f1d4d982347f",
+        "sources": "ed30fe6a51c7c15a6f123448304c97185f2039f2aeca9d5e3b4f53de3a4c813c"
+      },
+      "version": "4.33.4"
+    },
+    "com.google.template:soy": {
+      "shasums": {
+        "jar": "f68ae7f2daa8c343075210a21014ccdf042435a2d5c0dacb39f7a78b8ea88491",
+        "sources": "0e886bf691a90d0fbe9e19e3a0eec5c7e72e4386f209e86988b6e867ba1e4441"
+      },
+      "version": "2024-01-30"
+    },
+    "com.google.truth:truth": {
+      "shasums": {
+        "jar": "52c86cddadc31bc8457c1e15689fc6b75e2e97ce2a83d8b54b795d556d489f8c",
+        "sources": "32da2ce3fd5f2622cda8bdecc316ee1634b376a8a330c910e4e46831f2c7a4f3"
+      },
+      "version": "1.4.4"
+    },
+    "com.googlecode.javaewah:JavaEWAH": {
+      "shasums": {
+        "jar": "d65226949713c4c61a784f41c51167e7b0316f93764398ebba9e4336b3d954c2",
+        "sources": "abf457c01352b9e44212b131dbae4c2a878668820d168dc981b65170980eca71"
+      },
+      "version": "1.2.3"
+    },
+    "com.ibm.icu:icu4j": {
+      "shasums": {
+        "jar": "70627c3ff4b9077f6c3dc2156fb480821f9c1a041b645373f2a0391aae3552a1",
+        "sources": "18bdaaf05f8820f9ed4fa81da6c6f70de78980986e942cf54e6111d013208978"
+      },
+      "version": "78.2"
+    },
+    "com.jcraft:jsch": {
+      "shasums": {
+        "jar": "d492b15a6d2ea3f1cc39c422c953c40c12289073dbe8360d98c0f6f9ec74fc44",
+        "sources": "e01ff2d282aa1b492bbb6187b3e363cd20a6ef51a6f23ae0ec4be179570a8480"
+      },
+      "version": "0.1.55"
+    },
+    "com.jcraft:jzlib": {
+      "shasums": {
+        "jar": "89b1360f407381bf61fde411019d8cbd009ebb10cff715f3669017a031027560",
+        "sources": "35ebd67941ce7024e6e7d80b60a4252a9687fa0f909a7079ac904bef6c1658cf"
+      },
+      "version": "1.1.3"
+    },
+    "com.sun.jdmk:jmxtools": {
+      "shasums": {
+        "jar": null
+      },
+      "version": "1.2.1"
+    },
+    "com.sun.jmx:jmxri": {
+      "shasums": {
+        "jar": null
+      },
+      "version": "1.2.1"
+    },
+    "commons-codec:commons-codec": {
+      "shasums": {
+        "jar": "ba005f304cef92a3dede24a38ad5ac9b8afccf0d8f75839d6c1338634cf7f6e4",
+        "sources": "6c50e3dd81284139baddf94b3d0f78d25135eea0853f6495267196cdcf5949e3"
+      },
+      "version": "1.18.0"
+    },
+    "commons-io:commons-io": {
+      "shasums": {
+        "jar": "7d643a2afea8b058b762aa6fb90e5b256f6c729739f8b3784c3370ddc609e88d",
+        "sources": "5fd4d4493dd1eee5c6f314159dbac7fda1988a4ab037feacbeb2ecb3033c43b4"
+      },
+      "version": "2.21.0"
+    },
+    "commons-logging:commons-logging": {
+      "shasums": {
+        "jar": "f8ead8943401081dea0aa824b5b1ba40a0e4ed297a572a0f02258150a0b62357",
+        "sources": "6e821e03cfc64e509cc162d428af84697b6c4188eb14c0b137c75b69649976ef"
+      },
+      "version": "1.3.6"
+    },
+    "io.github.java-diff-utils:java-diff-utils": {
+      "shasums": {
+        "jar": "620403030d676a4a27f780a3acec7438dee1b1651a1c804fa6bb11bb07399a6f",
+        "sources": "1307a36819f8dac34187402947e2a9e850b9e7ce95dd5044524e4860c3378ab0"
+      },
+      "version": "4.16"
+    },
+    "jakarta.inject:jakarta.inject-api": {
+      "shasums": {
+        "jar": "f7dc98062fccf14126abb751b64fab12c312566e8cbdc8483598bffcea93af7c",
+        "sources": "44f4c73fda69f8b7d87136f0f789f042f54e8ff506d40aa126199baf3752d1c9"
+      },
+      "version": "2.0.1"
+    },
+    "javax.activation:activation": {
+      "shasums": {
+        "jar": "2881c79c9d6ef01c58e62beea13e9d1ac8b8baa16f2fc198ad6e6776defdcdd3",
+        "sources": "d1ce2ec5b4fa82d2424e38bb4efd75539f87b7e22e8c38c95cef541ef82fb037"
+      },
+      "version": "1.1"
+    },
+    "javax.annotation:jsr250-api": {
+      "shasums": {
+        "jar": "a1a922d0d9b6d183ed3800dfac01d1e1eb159f0e8c6f94736931c1def54a941f",
+        "sources": "025c47d76c60199381be07012a0c5f9e74661aac5bd67f5aec847741c5b7f838"
+      },
+      "version": "1.0"
+    },
+    "javax.inject:javax.inject": {
+      "shasums": {
+        "jar": "91c77044a50c481636c32d916fd89c9118a72195390452c81065080f957de7ff",
+        "sources": "c4b87ee2911c139c3daf498a781967f1eb2e75bc1a8529a2e7b328a15d0e433e"
+      },
+      "version": "1"
+    },
+    "javax.jms:jms": {
+      "shasums": {
+        "jar": null
+      },
+      "version": "1.1"
+    },
+    "javax.mail:mail": {
+      "shasums": {
+        "jar": "96868f82264ebd9b7d41f04d78cbe87ab75d68a7bbf8edfb82416aabe9b54b6c",
+        "sources": "a20f7b4b98307424cb065ed4478dbce0a5831dfa48e1dea08d3d775632a9e1a6"
+      },
+      "version": "1.4"
+    },
+    "javax.servlet:javax.servlet-api": {
+      "shasums": {
+        "jar": "83a03dd877d3674576f0da7b90755c8524af099ccf0607fc61aa971535ad7c60",
+        "sources": "a2826761ae88535afb0a3a049eacc846494e22627a1dcf14de37b956ca8748d6"
+      },
+      "version": "4.0.1"
+    },
+    "junit:junit": {
+      "shasums": {
+        "jar": "8e495b634469d64fb8acfa3495a065cbacc8a0fff55ce1e31007be4c16dc57d3",
+        "sources": "34181df6482d40ea4c046b063cb53c7ffae94bdf1b1d62695bdf3adf9dea7e3a"
+      },
+      "version": "4.13.2"
+    },
+    "log4j:log4j": {
+      "shasums": {
+        "jar": "9f5f5799707881451a39c1b2dd22b4e43b97a80698db7daf1c9697f545e24387",
+        "sources": "23f8fdedc16ab857767b981fd5881843a75655c284ae8ee00ef9ecbf6ae47b16"
+      },
+      "version": "1.2.15"
+    },
+    "net.bytebuddy:byte-buddy": {
+      "shasums": {
+        "jar": "f55b145f4caada9b2943e49762ea3171b02599c4c7e230fba8afc66a4a5135de",
+        "sources": "4f239fbfbd23ee67770780b3bf65d54ba3e623fb5399bdef0f7b1ce90c763296"
+      },
+      "version": "1.18.2"
+    },
+    "net.bytebuddy:byte-buddy-agent": {
+      "shasums": {
+        "jar": "d91e2d6d1b777687ab14a52b18b08aca32c4c91274131c99907674c661402a76",
+        "sources": "e3ca95452f80677b48b26040f731dc9b34608394f25857480fbf2b11e4a1626a"
+      },
+      "version": "1.18.2"
+    },
+    "net.java.dev.jna:jna": {
+      "shasums": {
+        "jar": "260c4b1e22b1db9e110ee441c4f13ce115f841fa48c41d78750986214b395557",
+        "sources": "0b9224e215b3c6a464959e3f994ddd64c14d46fb4014facd6afa1cc18e469466"
+      },
+      "version": "5.18.1"
+    },
+    "net.java.dev.jna:jna-platform": {
+      "shasums": {
+        "jar": "ad14c1b1ec4f43d396231219dfa635ebf828f738eac9f890ea1bc07795892d9a",
+        "sources": "5ffcac4b35114c6539ab9485592a90153ddeefb60e675dd9e8a2ee24e54ec1bc"
+      },
+      "version": "5.18.1"
+    },
+    "net.sf.jopt-simple:jopt-simple": {
+      "shasums": {
+        "jar": "df26cc58f235f477db07f753ba5a3ab243ebe5789d9f89ecf68dd62ea9a66c28",
+        "sources": "06b283801a5a94ef697b7f2c79a048c4e2f848b3daddda61cab74d882bdd97a5"
+      },
+      "version": "5.0.4"
+    },
+    "org.apache.commons:commons-compress": {
+      "shasums": {
+        "jar": "e1522945218456f3649a39bc4afd70ce4bd466221519dba7d378f2141a4642ca",
+        "sources": "6de9de4559f12bba6d41789c72f6a2a424514f2d2a3f7f49e2a3c52414db9632"
+      },
+      "version": "1.28.0"
+    },
+    "org.apache.commons:commons-lang3": {
+      "shasums": {
+        "jar": "4eeeae8d20c078abb64b015ec158add383ac581571cddc45c68f0c9ae0230720",
+        "sources": "b15732a13e40df7f07c30f2cb8572874798e8dde581f1398943d2ad3765bafaa"
+      },
+      "version": "3.18.0"
+    },
+    "org.apache.commons:commons-math3": {
+      "shasums": {
+        "jar": "1e56d7b058d28b65abd256b8458e3885b674c1d588fa43cd7d1cbb9c7ef2b308",
+        "sources": "e2ff85a3c360d56c51a7021614a194f3fbaf224054642ac535016f118322934d"
+      },
+      "version": "3.6.1"
+    },
+    "org.apache.commons:commons-text": {
+      "shasums": {
+        "jar": "770cd903fa7b604d1f7ef7ba17f84108667294b2b478be8ed1af3bffb4ae0018",
+        "sources": "e767596163da9b22e8fc83ff954e41e19e96744df7625b06f8daac3c4d60f79d"
+      },
+      "version": "1.10.0"
+    },
+    "org.apache.httpcomponents:httpclient": {
+      "shasums": {
+        "jar": "c8bc7e1c51a6d4ce72f40d2ebbabf1c4b68bfe76e732104b04381b493478e9d6",
+        "sources": "55b01f9f4cbec9ac646866a4b64b176570d79e293a556796b5b0263d047ef8e6"
+      },
+      "version": "4.5.14"
+    },
+    "org.apache.httpcomponents:httpcore": {
+      "shasums": {
+        "jar": "6c9b3dd142a09dc468e23ad39aad6f75a0f2b85125104469f026e52a474e464f",
+        "sources": "705f8cf3671093b6c1db16bbf6971a7ef400e3819784f1af53e5bc3e67b5a9a0"
+      },
+      "version": "4.4.16"
+    },
+    "org.apache.sshd:sshd-common": {
+      "shasums": {
+        "jar": "4be43cffd261eb8138da20f87bd2d5609022df85b67bf8329cee2db488c0a1a4",
+        "sources": "5c3bc05281054b61a3443f04f32f795aa9423819b2beb117303bfe6e41ba7450"
+      },
+      "version": "2.17.1"
+    },
+    "org.apache.sshd:sshd-core": {
+      "shasums": {
+        "jar": "b30769bbc053da28949ed1404abed546598ccf3de9100945b627f5b3a0fe003c",
+        "sources": "f69e73fd7c424a8c7d58d38a6333b4efe1984aa0b59741c4c24419aea41eb747"
+      },
+      "version": "2.17.1"
+    },
+    "org.apache.sshd:sshd-osgi": {
+      "shasums": {
+        "jar": "77c7c19d86dd59c63cedc9fea79708df264ea779c30076ce5dcfc51dc941a78b",
+        "sources": "b51cb4bc79d4b63b5ba1f72bb8e71b24f85597f1d1a8de4f49b5adb452d3a6cb"
+      },
+      "version": "2.17.1"
+    },
+    "org.apache.sshd:sshd-sftp": {
+      "shasums": {
+        "jar": "84727e3ac45458e1efde1058269964e2526aa3d520584870ba007adb20534b3c",
+        "sources": "6282c3628c62cfcec6578611b0c106f206fc418385b06b899cb8fb79aece5200"
+      },
+      "version": "2.17.1"
+    },
+    "org.assertj:assertj-core": {
+      "shasums": {
+        "jar": "c4a445426c3c2861666863b842cc4ec7bbb1c4226fefd370b6d2fe83d6c4ff0f",
+        "sources": "5ba6de05730cf76021001f8437f35db4cb5b513465d4ace8c3a6fcd68d9a19ee"
+      },
+      "version": "3.27.7"
+    },
+    "org.bouncycastle:bcpg-jdk18on": {
+      "shasums": {
+        "jar": "c0e6303a0d7589040f400950ecee87a14b81312e84ed15e5390ebb0c4566ddab",
+        "sources": "a8baa033c57614d36c3d2339a8c8e5902a8a2ed8cb7387cdb2b919e5a4b15f30"
+      },
+      "version": "1.84"
+    },
+    "org.bouncycastle:bcpkix-jdk18on": {
+      "shasums": {
+        "jar": "c87f16ed9e5ec61bc94151e9f3646ac44e50cd448121ce84367fa4b7ec7ec1bb",
+        "sources": "fe00c12243c28ead30ad6c7742be40ff005ab29f493c350b83b637fe4a9b5597"
+      },
+      "version": "1.84"
+    },
+    "org.bouncycastle:bcprov-jdk18on": {
+      "shasums": {
+        "jar": "64d6c5a6121fcd927152dd182cbed39afe0fda641a970d9bcc0c9cb1858b2731",
+        "sources": "e5f04550f7740e588edcbd1654c59277cd7ee8725d8b674e44f7f8f4b9c5674a"
+      },
+      "version": "1.84"
+    },
+    "org.bouncycastle:bcutil-jdk18on": {
+      "shasums": {
+        "jar": "b374e16963421fb9cfb01cc20d7ad8fd2f8b8188e3eef0ec0a8965e245f7619a",
+        "sources": "192b719273dc33e8fd6edc3b30b126760b6740cf2e1ac3cc7cf845c7ffec9f2b"
+      },
+      "version": "1.84"
+    },
+    "org.checkerframework:checker-compat-qual": {
+      "shasums": {
+        "jar": "d76b9afea61c7c082908023f0cbc1427fab9abd2df915c8b8a3e7a509bccbc6d",
+        "sources": "68011773fd60cfc7772508134086787210ba2a1443e3f9c3f5d4233a226c3346"
+      },
+      "version": "2.5.3"
+    },
+    "org.commonmark:commonmark": {
+      "shasums": {
+        "jar": "679338e0b7fc15c02d275d598654b01a149893bc28a87992e90123c8d06af25b",
+        "sources": "6380700a0c031e8ec2e3d1a582f9028037eb775ad543485f99cb1c29341936eb"
+      },
+      "version": "0.24.0"
+    },
+    "org.commonmark:commonmark-ext-autolink": {
+      "shasums": {
+        "jar": "013ba4f3ba4850a1de35935d1501587c518f764331d279805da33473e79f5f33",
+        "sources": "37709c64e0d9b84cb80fb9795cb74a4bf018cdb9c1f31f343e10e96dd0db1d1f"
+      },
+      "version": "0.24.0"
+    },
+    "org.commonmark:commonmark-ext-gfm-strikethrough": {
+      "shasums": {
+        "jar": "7385cb637f04dc4cbda4ddca9c2fcd2af7ac536a50e4c8d2c77f4748bb14bf41",
+        "sources": "f9f1d0627ccd9994b3aa5c1cdbb247a3383983fd36b56753d1abe3994a3d7a5f"
+      },
+      "version": "0.24.0"
+    },
+    "org.commonmark:commonmark-ext-gfm-tables": {
+      "shasums": {
+        "jar": "b54dc332f931e6d07c2766144c087b08f3693677e368151a67020b4e95bb4b99",
+        "sources": "15525448cb137992c00ece73d320f45187a187bc906ba967ccc958f42e92c3b9"
+      },
+      "version": "0.24.0"
+    },
+    "org.eclipse.jetty.ee8:jetty-ee8-nested": {
+      "shasums": {
+        "jar": "d595ec4d116824a1d9cc921ce08d964dffd191512895c263db491316b9aa84e7",
+        "sources": "e77d8e809be22063041080736a34dc50204f2742f7838bd8d59d82d45e85f43e"
+      },
+      "version": "12.1.9"
+    },
+    "org.eclipse.jetty.ee8:jetty-ee8-security": {
+      "shasums": {
+        "jar": "92af8672681672da01d41901a293ff970b47cbae052500f4fb4b1890ef03eab2",
+        "sources": "373d7aa39c2d687fb2d8b7d0272ea282f45088688243bea97c7427b49ec64a36"
+      },
+      "version": "12.1.9"
+    },
+    "org.eclipse.jetty.ee8:jetty-ee8-servlet": {
+      "shasums": {
+        "jar": "82a66f9558a8b215c031aea35c436d30e0b4720abf662763bfc051b2febac525",
+        "sources": "3413e3d21b6b12ea45b6e2bb59657398248f0de6ce9072d6218a8151d251abfc"
+      },
+      "version": "12.1.9"
+    },
+    "org.eclipse.jetty.toolchain:jetty-servlet-api": {
+      "shasums": {
+        "jar": "89916c0360ad8be8b0b6bab41d9f0d5d03b742abb5e13aeeac06817c14fdf037",
+        "sources": "f6a7790d55a14a7c1d542d8b0246939ac720fe99e92fae3108c067c4266180fc"
+      },
+      "version": "4.0.9"
+    },
+    "org.eclipse.jetty:jetty-continuation": {
+      "shasums": {
+        "jar": "ba6c5faadfcd4ef8066b96e07a5c865af2b950a78d1354853ec6df0253140165",
+        "sources": "dd9f4d6b3cea76e9d4993ae18d04c60e6f780563c544282478dc79418f148dbc"
+      },
+      "version": "9.4.57.v20241219"
+    },
+    "org.eclipse.jetty:jetty-http": {
+      "shasums": {
+        "jar": "02c6514977f0051dfdecf8d0799acf7a88fd8008a5fd9320a92f2e5db45d297b",
+        "sources": "1851f55b408241a6ae692730dd9bda9d1ecf7f0be6a9ccc471affa5bf8d07b9c"
+      },
+      "version": "9.4.57.v20241219"
+    },
+    "org.eclipse.jetty:jetty-io": {
+      "shasums": {
+        "jar": "f6246a2cf0abcee7f0971217c0ce4cd30d8ce15a91530363457113907ab38690",
+        "sources": "f21960b5fe18c1fa4281aa0ba1ce8f2f7d4d8f00e64e08d536b6d6577ca92489"
+      },
+      "version": "9.4.57.v20241219"
+    },
+    "org.eclipse.jetty:jetty-security": {
+      "shasums": {
+        "jar": "af923d4f395a73bf8ddcb754f42d7617c6b7055e37e5a6b625ed894f73107ae9",
+        "sources": "0f8718fe938f0c8a5c3098129b67d13381c1fef0d56765627ccc2e017fc2654b"
+      },
+      "version": "9.4.57.v20241219"
+    },
+    "org.eclipse.jetty:jetty-server": {
+      "shasums": {
+        "jar": "ba957ae07da647023cfa52c923732aea1c67f5273a594cee1863365dfebb9a02",
+        "sources": "089098dce0a947401a52bd00056427e1a2e348a71340a00e496c3139c14bafcb"
+      },
+      "version": "9.4.57.v20241219"
+    },
+    "org.eclipse.jetty:jetty-servlet": {
+      "shasums": {
+        "jar": "c5e9517974dec9e4606b2d810f4995ea81091b1e24bd9640cb45d8b2aefd722c",
+        "sources": "d3214106ebbfa9034aa041ea26caa080a99c494ae6275f88c95bc63796bc0367"
+      },
+      "version": "9.4.57.v20241219"
+    },
+    "org.eclipse.jetty:jetty-session": {
+      "shasums": {
+        "jar": "121a9c2c9ba7274d751fe3e0d5408612c95b46df2ed20910cfecced5ae7b1659",
+        "sources": "0480336a1919fe4d8e043363804a261c02c86ab26691bd33d0cd9ea1949e790d"
+      },
+      "version": "12.1.9"
+    },
+    "org.eclipse.jetty:jetty-util": {
+      "shasums": {
+        "jar": "6ccbf678716778e316cc097d8aada4fe2a2e16c0bbfd8a1763204d6724b423f4",
+        "sources": "77d5935c637276d08da2e1141a7fe4d9db4a2d072b6b418b625b261009d0cb4c"
+      },
+      "version": "9.4.57.v20241219"
+    },
+    "org.eclipse.jetty:jetty-util-ajax": {
+      "shasums": {
+        "jar": "964c0c798d61367c79a3afc31d6818a9c583c6be19ab0f1256ae30c583db8397",
+        "sources": "52566a3796e2d7d09dd6065f0e084ec6df809649b5b47fcde655f7affae34683"
+      },
+      "version": "12.1.9"
+    },
+    "org.hamcrest:hamcrest": {
+      "shasums": {
+        "jar": "5d66b6a4a680755cb6ed7cb104fa7835ef644667586ff0737adeb977c39ecdbc",
+        "sources": "7a4050b1898f7e1aa395cf2be78fb6683f9e2766fcb8e1507926b204fa24d1bf"
+      },
+      "version": "3.0"
+    },
+    "org.hamcrest:hamcrest-core": {
+      "shasums": {
+        "jar": "66fdef91e9739348df7a096aa384a5685f4e875584cce89386a7a47251c4d8e9",
+        "sources": "e223d2d8fbafd66057a8848cc94222d63c3cedd652cc48eddc0ab5c39c0f84df"
+      },
+      "version": "1.3"
+    },
+    "org.json:json": {
+      "shasums": {
+        "jar": "7004007a9fd87fe1d86f673b472c0372e5bc50bacb724c029a6112d7c4b4a640",
+        "sources": "2d691f65af26914b05460b43f0dec3cd3178ffe40121adf03a4045c68154e6c9"
+      },
+      "version": "20230618"
+    },
+    "org.jspecify:jspecify": {
+      "shasums": {
+        "jar": "1fad6e6be7557781e4d33729d49ae1cdc8fdda6fe477bb0cc68ce351eafdfbab",
+        "sources": "adf0898191d55937fb3192ba971826f4f294292c4a960740f3c27310e7b70296"
+      },
+      "version": "1.0.0"
+    },
+    "org.mockito:mockito-core": {
+      "shasums": {
+        "jar": "03db23de742cbca42aa3d6127fdace560fac37b036d931870801f84c288bd286",
+        "sources": "d1b3d1cfe46502804a5e73fe21f6bf385697c317efedd6b582431ef1dc7068f7"
+      },
+      "version": "5.21.0"
+    },
+    "org.nibor.autolink:autolink": {
+      "shasums": {
+        "jar": "39c6588948ab31b98ab1fea4a6abab37243f387cb48cb50ae599410effb70038",
+        "sources": "08db5e7510f752de55fd91c05e7a3199f6789633dc423ce313bd3f71eebdf9cf"
+      },
+      "version": "0.11.0"
+    },
+    "org.objenesis:objenesis": {
+      "shasums": {
+        "jar": "7a8ff780b9ff48415d7c705f60030b0acaa616e7f823c98eede3b63508d4e984",
+        "sources": "675682fcfe074b27bca4761aeb412ba487a1eff0aa515cd13731fea8552cc3f8"
+      },
+      "version": "3.0.1"
+    },
+    "org.openjdk.jmh:jmh-core": {
+      "shasums": {
+        "jar": "dc0eaf2bbf0036a70b60798c785d6e03a9daf06b68b8edb0f1ba9eb3421baeb3",
+        "sources": "fd4beda07b3b94cd0e32199401bbb2d9ed3371a770c8c320761b9442ff3e8e05"
+      },
+      "version": "1.37"
+    },
+    "org.openjdk.jmh:jmh-generator-annprocess": {
+      "shasums": {
+        "jar": "6a5604b5b804e0daca1145df1077609321687734a8b49387e49f10557c186c77",
+        "sources": "cc1b661fb209ae1a433e331e8e78bab680674153b0a6ac69d47d11c60fb5e47e"
+      },
+      "version": "1.37"
+    },
+    "org.ow2.asm:asm": {
+      "shasums": {
+        "jar": "6f3828a215c920059a5efa2fb55c233d6c54ec5cadca99ce1b1bdd10077c7ddd",
+        "sources": "057e39aa1800b25bc8944846a376509990f49b7fe1e07192b1d6e48e1a780eb2"
+      },
+      "version": "9.9.1"
+    },
+    "org.ow2.asm:asm-analysis": {
+      "shasums": {
+        "jar": "6260bffc8ec008dd1b713702c7994e2c94d188a3da5bef9e87278a16df6a7522",
+        "sources": "ff731d401ea2407759ea19b4b025800d32495a51a912f2553d987cddda424773"
+      },
+      "version": "9.9.1"
+    },
+    "org.ow2.asm:asm-commons": {
+      "shasums": {
+        "jar": "c2319e014ce7199f2b7f7d56d6bb991863168c3f4b6cd6c9f542a4937ef7ef88",
+        "sources": "196e1b24b51f35fe9b09c930e159830dcded8b113ab2b7394d8ac353752d8a00"
+      },
+      "version": "9.9.1"
+    },
+    "org.ow2.asm:asm-tree": {
+      "shasums": {
+        "jar": "0f3555096b720b820bbacab0b515589bee0200bee099bda14c561738ae837ba1",
+        "sources": "9d1fe261fa1d29904ca9dbc76878396e76bc225191676a8c16ad2669a205321a"
+      },
+      "version": "9.9.1"
+    },
+    "org.ow2.asm:asm-util": {
+      "shasums": {
+        "jar": "c5ebbbeaf68126af094b42fa4800f59bc4413abd02d95b9aefad722cd257e207",
+        "sources": "dd19b2285e6dad31a3b1c8bc2e55d8248d83eef0f7ba28372db288444705ae86"
+      },
+      "version": "9.9.1"
+    },
+    "org.slf4j:jcl-over-slf4j": {
+      "shasums": {
+        "jar": "ec5c36d57d2dbe100f84878f944575cb7871da32c7a115b8d7e0721277045d67",
+        "sources": "d0a96716020e44f95f1d94c4d2deeda009056847a125453010d4258db6b53776"
+      },
+      "version": "2.0.18"
+    },
+    "org.slf4j:slf4j-api": {
+      "shasums": {
+        "jar": "7b751d952061954d5abfed7181c1f645d336091b679891591d63329c622eb832",
+        "sources": "db0d08d8efa05ad19d174d747bd9d8e68dbb02b596812fe7b3a681656e346694"
+      },
+      "version": "2.0.17"
+    },
+    "org.slf4j:slf4j-simple": {
+      "shasums": {
+        "jar": "ddfea59ac074c6d3e24ac2c38622d2d963895e17f70b38ed4bdae4d780be6964",
+        "sources": "30b660e79419bfcebd678e75bdfe3644eaf325f50253a68395d93634da5953df"
+      },
+      "version": "2.0.17"
+    },
+    "org.tukaani:xz": {
+      "shasums": {
+        "jar": "0a4077f6aeae2865532a564807af8d30c26acc6f63b7928d93bd7ab1f2190449",
+        "sources": "aab470d8c28e718859f9c1f333ed693f926cd44d8e55851c0dda27dd4a6d568c"
+      },
+      "version": "1.11"
+    }
+  },
+  "dependencies": {
+    "com.google.code.gson:gson": [
+      "com.google.errorprone:error_prone_annotations"
+    ],
+    "com.google.common.html.types:types": [
+      "com.google.code.findbugs:jsr305",
+      "com.google.errorprone:error_prone_annotations",
+      "com.google.guava:guava",
+      "com.google.jsinterop:jsinterop-annotations",
+      "com.google.protobuf:protobuf-java",
+      "javax.annotation:jsr250-api"
+    ],
+    "com.google.escapevelocity:escapevelocity": [
+      "com.google.guava:guava"
+    ],
+    "com.google.flogger:flogger": [
+      "org.checkerframework:checker-compat-qual"
+    ],
+    "com.google.flogger:flogger-log4j-backend": [
+      "com.google.flogger:flogger",
+      "com.google.flogger:flogger-system-backend",
+      "log4j:log4j"
+    ],
+    "com.google.flogger:flogger-system-backend": [
+      "com.google.flogger:flogger",
+      "org.checkerframework:checker-compat-qual"
+    ],
+    "com.google.flogger:google-extensions": [
+      "com.google.flogger:flogger",
+      "com.google.flogger:flogger-system-backend"
+    ],
+    "com.google.guava:guava": [
+      "com.google.errorprone:error_prone_annotations",
+      "com.google.guava:failureaccess",
+      "com.google.guava:listenablefuture",
+      "com.google.j2objc:j2objc-annotations",
+      "org.jspecify:jspecify"
+    ],
+    "com.google.inject:guice": [
+      "aopalliance:aopalliance",
+      "com.google.guava:guava",
+      "jakarta.inject:jakarta.inject-api"
+    ],
+    "com.google.template:soy": [
+      "args4j:args4j",
+      "com.google.code.findbugs:jsr305",
+      "com.google.code.gson:gson",
+      "com.google.common.html.types:types",
+      "com.google.errorprone:error_prone_annotations",
+      "com.google.escapevelocity:escapevelocity",
+      "com.google.flogger:flogger",
+      "com.google.flogger:flogger-system-backend",
+      "com.google.flogger:google-extensions",
+      "com.google.guava:guava",
+      "com.google.inject:guice",
+      "com.google.protobuf:protobuf-java",
+      "com.ibm.icu:icu4j",
+      "javax.inject:javax.inject",
+      "org.json:json",
+      "org.ow2.asm:asm",
+      "org.ow2.asm:asm-analysis",
+      "org.ow2.asm:asm-commons",
+      "org.ow2.asm:asm-util"
+    ],
+    "com.google.truth:truth": [
+      "com.google.auto.value:auto-value-annotations",
+      "com.google.errorprone:error_prone_annotations",
+      "com.google.guava:guava",
+      "junit:junit",
+      "org.jspecify:jspecify",
+      "org.ow2.asm:asm"
+    ],
+    "javax.mail:mail": [
+      "javax.activation:activation"
+    ],
+    "junit:junit": [
+      "org.hamcrest:hamcrest-core"
+    ],
+    "log4j:log4j": [
+      "com.sun.jdmk:jmxtools",
+      "com.sun.jmx:jmxri",
+      "javax.jms:jms",
+      "javax.mail:mail"
+    ],
+    "net.java.dev.jna:jna-platform": [
+      "net.java.dev.jna:jna"
+    ],
+    "org.apache.commons:commons-compress": [
+      "commons-codec:commons-codec",
+      "commons-io:commons-io",
+      "org.apache.commons:commons-lang3"
+    ],
+    "org.apache.commons:commons-text": [
+      "org.apache.commons:commons-lang3"
+    ],
+    "org.apache.httpcomponents:httpclient": [
+      "commons-codec:commons-codec",
+      "commons-logging:commons-logging",
+      "org.apache.httpcomponents:httpcore"
+    ],
+    "org.apache.sshd:sshd-common": [
+      "org.slf4j:jcl-over-slf4j",
+      "org.slf4j:slf4j-api"
+    ],
+    "org.apache.sshd:sshd-core": [
+      "org.apache.sshd:sshd-common",
+      "org.slf4j:jcl-over-slf4j",
+      "org.slf4j:slf4j-api"
+    ],
+    "org.apache.sshd:sshd-osgi": [
+      "org.slf4j:jcl-over-slf4j",
+      "org.slf4j:slf4j-api"
+    ],
+    "org.apache.sshd:sshd-sftp": [
+      "org.apache.sshd:sshd-core",
+      "org.slf4j:jcl-over-slf4j",
+      "org.slf4j:slf4j-api"
+    ],
+    "org.assertj:assertj-core": [
+      "net.bytebuddy:byte-buddy"
+    ],
+    "org.bouncycastle:bcpg-jdk18on": [
+      "org.bouncycastle:bcprov-jdk18on",
+      "org.bouncycastle:bcutil-jdk18on"
+    ],
+    "org.bouncycastle:bcpkix-jdk18on": [
+      "org.bouncycastle:bcutil-jdk18on"
+    ],
+    "org.bouncycastle:bcutil-jdk18on": [
+      "org.bouncycastle:bcprov-jdk18on"
+    ],
+    "org.commonmark:commonmark-ext-autolink": [
+      "org.commonmark:commonmark",
+      "org.nibor.autolink:autolink"
+    ],
+    "org.commonmark:commonmark-ext-gfm-strikethrough": [
+      "org.commonmark:commonmark"
+    ],
+    "org.commonmark:commonmark-ext-gfm-tables": [
+      "org.commonmark:commonmark"
+    ],
+    "org.eclipse.jetty.ee8:jetty-ee8-nested": [
+      "org.eclipse.jetty.toolchain:jetty-servlet-api",
+      "org.eclipse.jetty:jetty-http",
+      "org.eclipse.jetty:jetty-security",
+      "org.eclipse.jetty:jetty-server",
+      "org.eclipse.jetty:jetty-session",
+      "org.slf4j:slf4j-api"
+    ],
+    "org.eclipse.jetty.ee8:jetty-ee8-security": [
+      "org.eclipse.jetty.ee8:jetty-ee8-nested",
+      "org.slf4j:slf4j-api"
+    ],
+    "org.eclipse.jetty.ee8:jetty-ee8-servlet": [
+      "org.eclipse.jetty.ee8:jetty-ee8-nested",
+      "org.eclipse.jetty.ee8:jetty-ee8-security",
+      "org.slf4j:slf4j-api"
+    ],
+    "org.eclipse.jetty:jetty-http": [
+      "org.eclipse.jetty:jetty-io",
+      "org.eclipse.jetty:jetty-util"
+    ],
+    "org.eclipse.jetty:jetty-io": [
+      "org.eclipse.jetty:jetty-util"
+    ],
+    "org.eclipse.jetty:jetty-security": [
+      "org.eclipse.jetty:jetty-server"
+    ],
+    "org.eclipse.jetty:jetty-server": [
+      "javax.servlet:javax.servlet-api",
+      "org.eclipse.jetty:jetty-http",
+      "org.eclipse.jetty:jetty-io"
+    ],
+    "org.eclipse.jetty:jetty-servlet": [
+      "org.eclipse.jetty:jetty-security",
+      "org.eclipse.jetty:jetty-util-ajax"
+    ],
+    "org.eclipse.jetty:jetty-session": [
+      "org.eclipse.jetty:jetty-server",
+      "org.slf4j:slf4j-api"
+    ],
+    "org.eclipse.jetty:jetty-util-ajax": [
+      "org.eclipse.jetty:jetty-util",
+      "org.slf4j:slf4j-api"
+    ],
+    "org.mockito:mockito-core": [
+      "net.bytebuddy:byte-buddy",
+      "net.bytebuddy:byte-buddy-agent",
+      "org.objenesis:objenesis"
+    ],
+    "org.openjdk.jmh:jmh-core": [
+      "net.sf.jopt-simple:jopt-simple",
+      "org.apache.commons:commons-math3"
+    ],
+    "org.openjdk.jmh:jmh-generator-annprocess": [
+      "org.openjdk.jmh:jmh-core"
+    ],
+    "org.ow2.asm:asm-analysis": [
+      "org.ow2.asm:asm-tree"
+    ],
+    "org.ow2.asm:asm-commons": [
+      "org.ow2.asm:asm",
+      "org.ow2.asm:asm-tree"
+    ],
+    "org.ow2.asm:asm-tree": [
+      "org.ow2.asm:asm"
+    ],
+    "org.ow2.asm:asm-util": [
+      "org.ow2.asm:asm",
+      "org.ow2.asm:asm-analysis",
+      "org.ow2.asm:asm-tree"
+    ],
+    "org.slf4j:jcl-over-slf4j": [
+      "org.slf4j:slf4j-api"
+    ],
+    "org.slf4j:slf4j-simple": [
+      "org.slf4j:slf4j-api"
+    ]
+  },
+  "packages": {
+    "aopalliance:aopalliance": [
+      "org.aopalliance.aop",
+      "org.aopalliance.intercept"
+    ],
+    "args4j:args4j": [
+      "org.kohsuke.args4j",
+      "org.kohsuke.args4j.spi"
+    ],
+    "ch.qos.reload4j:reload4j": [
+      "org.apache.log4j",
+      "org.apache.log4j.chainsaw",
+      "org.apache.log4j.config",
+      "org.apache.log4j.helpers",
+      "org.apache.log4j.jdbc",
+      "org.apache.log4j.net",
+      "org.apache.log4j.or",
+      "org.apache.log4j.or.jms",
+      "org.apache.log4j.or.sax",
+      "org.apache.log4j.pattern",
+      "org.apache.log4j.rewrite",
+      "org.apache.log4j.spi",
+      "org.apache.log4j.varia",
+      "org.apache.log4j.xml"
+    ],
+    "com.google.auto.value:auto-value-annotations": [
+      "com.google.auto.value",
+      "com.google.auto.value.extension.memoized",
+      "com.google.auto.value.extension.serializable",
+      "com.google.auto.value.extension.toprettystring"
+    ],
+    "com.google.code.findbugs:jsr305": [
+      "javax.annotation",
+      "javax.annotation.concurrent",
+      "javax.annotation.meta"
+    ],
+    "com.google.code.gson:gson": [
+      "com.google.gson",
+      "com.google.gson.annotations",
+      "com.google.gson.internal",
+      "com.google.gson.internal.bind",
+      "com.google.gson.internal.bind.util",
+      "com.google.gson.internal.reflect",
+      "com.google.gson.internal.sql",
+      "com.google.gson.reflect",
+      "com.google.gson.stream"
+    ],
+    "com.google.common.html.types:types": [
+      "com.google.common.html.types",
+      "com.google.common.html.types.testing",
+      "com.google.common.html.types.testing.assertions"
+    ],
+    "com.google.errorprone:error_prone_annotations": [
+      "com.google.errorprone.annotations",
+      "com.google.errorprone.annotations.concurrent"
+    ],
+    "com.google.escapevelocity:escapevelocity": [
+      "com.google.escapevelocity"
+    ],
+    "com.google.flogger:flogger": [
+      "com.google.common.flogger",
+      "com.google.common.flogger.backend",
+      "com.google.common.flogger.context",
+      "com.google.common.flogger.parameter",
+      "com.google.common.flogger.parser",
+      "com.google.common.flogger.util"
+    ],
+    "com.google.flogger:flogger-log4j-backend": [
+      "com.google.common.flogger.backend.log4j"
+    ],
+    "com.google.flogger:flogger-system-backend": [
+      "com.google.common.flogger.backend.system"
+    ],
+    "com.google.flogger:google-extensions": [
+      "com.google.common.flogger"
+    ],
+    "com.google.guava:failureaccess": [
+      "com.google.common.util.concurrent.internal"
+    ],
+    "com.google.guava:guava": [
+      "com.google.common.annotations",
+      "com.google.common.base",
+      "com.google.common.base.internal",
+      "com.google.common.cache",
+      "com.google.common.collect",
+      "com.google.common.escape",
+      "com.google.common.eventbus",
+      "com.google.common.graph",
+      "com.google.common.hash",
+      "com.google.common.html",
+      "com.google.common.io",
+      "com.google.common.math",
+      "com.google.common.net",
+      "com.google.common.primitives",
+      "com.google.common.reflect",
+      "com.google.common.util.concurrent",
+      "com.google.common.xml",
+      "com.google.thirdparty.publicsuffix"
+    ],
+    "com.google.inject:guice": [
+      "com.google.inject",
+      "com.google.inject.binder",
+      "com.google.inject.internal",
+      "com.google.inject.internal.aop",
+      "com.google.inject.internal.util",
+      "com.google.inject.matcher",
+      "com.google.inject.multibindings",
+      "com.google.inject.name",
+      "com.google.inject.spi",
+      "com.google.inject.util"
+    ],
+    "com.google.j2objc:j2objc-annotations": [
+      "com.google.j2objc.annotations"
+    ],
+    "com.google.jsinterop:jsinterop-annotations": [
+      "jsinterop.annotations"
+    ],
+    "com.google.protobuf:protobuf-java": [
+      "com.google.protobuf",
+      "com.google.protobuf.compiler"
+    ],
+    "com.google.template:soy": [
+      "com.google.template.soy",
+      "com.google.template.soy.base",
+      "com.google.template.soy.base.internal",
+      "com.google.template.soy.basetree",
+      "com.google.template.soy.basicdirectives",
+      "com.google.template.soy.basicfunctions",
+      "com.google.template.soy.bididirectives",
+      "com.google.template.soy.bidifunctions",
+      "com.google.template.soy.conformance",
+      "com.google.template.soy.coredirectives",
+      "com.google.template.soy.css",
+      "com.google.template.soy.data",
+      "com.google.template.soy.data.internal",
+      "com.google.template.soy.data.internalutils",
+      "com.google.template.soy.data.ordainers",
+      "com.google.template.soy.data.restricted",
+      "com.google.template.soy.error",
+      "com.google.template.soy.examples",
+      "com.google.template.soy.exprtree",
+      "com.google.template.soy.i18ndirectives",
+      "com.google.template.soy.incrementaldomsrc",
+      "com.google.template.soy.internal.base",
+      "com.google.template.soy.internal.exemptions",
+      "com.google.template.soy.internal.i18n",
+      "com.google.template.soy.internal.proto",
+      "com.google.template.soy.internal.targetexpr",
+      "com.google.template.soy.internal.util",
+      "com.google.template.soy.javagencode",
+      "com.google.template.soy.javagencode.javatypes",
+      "com.google.template.soy.jbcsrc",
+      "com.google.template.soy.jbcsrc.api",
+      "com.google.template.soy.jbcsrc.internal",
+      "com.google.template.soy.jbcsrc.restricted",
+      "com.google.template.soy.jbcsrc.runtime",
+      "com.google.template.soy.jbcsrc.shared",
+      "com.google.template.soy.jssrc",
+      "com.google.template.soy.jssrc.dsl",
+      "com.google.template.soy.jssrc.internal",
+      "com.google.template.soy.jssrc.restricted",
+      "com.google.template.soy.logging",
+      "com.google.template.soy.msgs",
+      "com.google.template.soy.msgs.internal",
+      "com.google.template.soy.msgs.restricted",
+      "com.google.template.soy.parseinfo",
+      "com.google.template.soy.parsepasses.contextautoesc",
+      "com.google.template.soy.passes",
+      "com.google.template.soy.passes.htmlmatcher",
+      "com.google.template.soy.plugin.internal",
+      "com.google.template.soy.plugin.java",
+      "com.google.template.soy.plugin.java.internal",
+      "com.google.template.soy.plugin.java.restricted",
+      "com.google.template.soy.plugin.javascript.restricted",
+      "com.google.template.soy.plugin.python.restricted",
+      "com.google.template.soy.plugin.restricted",
+      "com.google.template.soy.pysrc",
+      "com.google.template.soy.pysrc.internal",
+      "com.google.template.soy.pysrc.restricted",
+      "com.google.template.soy.shared",
+      "com.google.template.soy.shared.internal",
+      "com.google.template.soy.shared.internal.gencode",
+      "com.google.template.soy.shared.restricted",
+      "com.google.template.soy.sharedpasses.opti",
+      "com.google.template.soy.sharedpasses.render",
+      "com.google.template.soy.soyparse",
+      "com.google.template.soy.soytree",
+      "com.google.template.soy.soytree.defn",
+      "com.google.template.soy.templatecall",
+      "com.google.template.soy.tofu",
+      "com.google.template.soy.tofu.internal",
+      "com.google.template.soy.treebuilder",
+      "com.google.template.soy.types",
+      "com.google.template.soy.types.ast",
+      "com.google.template.soy.xliffmsgplugin"
+    ],
+    "com.google.truth:truth": [
+      "com.google.common.truth"
+    ],
+    "com.googlecode.javaewah:JavaEWAH": [
+      "com.googlecode.javaewah",
+      "com.googlecode.javaewah.datastructure",
+      "com.googlecode.javaewah.symmetric",
+      "com.googlecode.javaewah32",
+      "com.googlecode.javaewah32.symmetric"
+    ],
+    "com.ibm.icu:icu4j": [
+      "com.ibm.icu.dev.tool.docs",
+      "com.ibm.icu.impl",
+      "com.ibm.icu.impl.breakiter",
+      "com.ibm.icu.impl.coll",
+      "com.ibm.icu.impl.data",
+      "com.ibm.icu.impl.duration",
+      "com.ibm.icu.impl.duration.impl",
+      "com.ibm.icu.impl.locale",
+      "com.ibm.icu.impl.number",
+      "com.ibm.icu.impl.number.parse",
+      "com.ibm.icu.impl.number.range",
+      "com.ibm.icu.impl.personname",
+      "com.ibm.icu.impl.text",
+      "com.ibm.icu.impl.units",
+      "com.ibm.icu.lang",
+      "com.ibm.icu.math",
+      "com.ibm.icu.message2",
+      "com.ibm.icu.number",
+      "com.ibm.icu.segmenter",
+      "com.ibm.icu.text",
+      "com.ibm.icu.util"
+    ],
+    "com.jcraft:jsch": [
+      "com.jcraft.jsch",
+      "com.jcraft.jsch.jce",
+      "com.jcraft.jsch.jcraft",
+      "com.jcraft.jsch.jgss"
+    ],
+    "com.jcraft:jzlib": [
+      "com.jcraft.jzlib"
+    ],
+    "commons-codec:commons-codec": [
+      "org.apache.commons.codec",
+      "org.apache.commons.codec.binary",
+      "org.apache.commons.codec.cli",
+      "org.apache.commons.codec.digest",
+      "org.apache.commons.codec.language",
+      "org.apache.commons.codec.language.bm",
+      "org.apache.commons.codec.net"
+    ],
+    "commons-io:commons-io": [
+      "org.apache.commons.io",
+      "org.apache.commons.io.build",
+      "org.apache.commons.io.channels",
+      "org.apache.commons.io.charset",
+      "org.apache.commons.io.comparator",
+      "org.apache.commons.io.file",
+      "org.apache.commons.io.file.attribute",
+      "org.apache.commons.io.file.spi",
+      "org.apache.commons.io.filefilter",
+      "org.apache.commons.io.function",
+      "org.apache.commons.io.input",
+      "org.apache.commons.io.input.buffer",
+      "org.apache.commons.io.monitor",
+      "org.apache.commons.io.output",
+      "org.apache.commons.io.serialization"
+    ],
+    "commons-logging:commons-logging": [
+      "org.apache.commons.logging",
+      "org.apache.commons.logging.impl"
+    ],
+    "io.github.java-diff-utils:java-diff-utils": [
+      "com.github.difflib",
+      "com.github.difflib.algorithm",
+      "com.github.difflib.algorithm.myers",
+      "com.github.difflib.patch",
+      "com.github.difflib.text",
+      "com.github.difflib.text.deltamerge",
+      "com.github.difflib.unifieddiff"
+    ],
+    "jakarta.inject:jakarta.inject-api": [
+      "jakarta.inject"
+    ],
+    "javax.activation:activation": [
+      "com.sun.activation.registries",
+      "com.sun.activation.viewers",
+      "javax.activation"
+    ],
+    "javax.annotation:jsr250-api": [
+      "javax.annotation",
+      "javax.annotation.security"
+    ],
+    "javax.inject:javax.inject": [
+      "javax.inject"
+    ],
+    "javax.mail:mail": [
+      "com.sun.mail.handlers",
+      "com.sun.mail.iap",
+      "com.sun.mail.imap",
+      "com.sun.mail.imap.protocol",
+      "com.sun.mail.pop3",
+      "com.sun.mail.smtp",
+      "com.sun.mail.util",
+      "javax.mail",
+      "javax.mail.event",
+      "javax.mail.internet",
+      "javax.mail.search",
+      "javax.mail.util"
+    ],
+    "javax.servlet:javax.servlet-api": [
+      "javax.servlet",
+      "javax.servlet.annotation",
+      "javax.servlet.descriptor",
+      "javax.servlet.http"
+    ],
+    "junit:junit": [
+      "junit.extensions",
+      "junit.framework",
+      "junit.runner",
+      "junit.textui",
+      "org.junit",
+      "org.junit.experimental",
+      "org.junit.experimental.categories",
+      "org.junit.experimental.max",
+      "org.junit.experimental.results",
+      "org.junit.experimental.runners",
+      "org.junit.experimental.theories",
+      "org.junit.experimental.theories.internal",
+      "org.junit.experimental.theories.suppliers",
+      "org.junit.function",
+      "org.junit.internal",
+      "org.junit.internal.builders",
+      "org.junit.internal.management",
+      "org.junit.internal.matchers",
+      "org.junit.internal.requests",
+      "org.junit.internal.runners",
+      "org.junit.internal.runners.model",
+      "org.junit.internal.runners.rules",
+      "org.junit.internal.runners.statements",
+      "org.junit.matchers",
+      "org.junit.rules",
+      "org.junit.runner",
+      "org.junit.runner.manipulation",
+      "org.junit.runner.notification",
+      "org.junit.runners",
+      "org.junit.runners.model",
+      "org.junit.runners.parameterized",
+      "org.junit.validator"
+    ],
+    "log4j:log4j": [
+      "org.apache.log4j",
+      "org.apache.log4j.chainsaw",
+      "org.apache.log4j.config",
+      "org.apache.log4j.helpers",
+      "org.apache.log4j.jdbc",
+      "org.apache.log4j.jmx",
+      "org.apache.log4j.lf5",
+      "org.apache.log4j.lf5.util",
+      "org.apache.log4j.lf5.viewer",
+      "org.apache.log4j.lf5.viewer.categoryexplorer",
+      "org.apache.log4j.lf5.viewer.configure",
+      "org.apache.log4j.net",
+      "org.apache.log4j.nt",
+      "org.apache.log4j.or",
+      "org.apache.log4j.or.jms",
+      "org.apache.log4j.or.sax",
+      "org.apache.log4j.spi",
+      "org.apache.log4j.varia",
+      "org.apache.log4j.xml"
+    ],
+    "net.bytebuddy:byte-buddy": [
+      "net.bytebuddy",
+      "net.bytebuddy.agent.builder",
+      "net.bytebuddy.asm",
+      "net.bytebuddy.build",
+      "net.bytebuddy.description",
+      "net.bytebuddy.description.annotation",
+      "net.bytebuddy.description.enumeration",
+      "net.bytebuddy.description.field",
+      "net.bytebuddy.description.method",
+      "net.bytebuddy.description.modifier",
+      "net.bytebuddy.description.module",
+      "net.bytebuddy.description.type",
+      "net.bytebuddy.dynamic",
+      "net.bytebuddy.dynamic.loading",
+      "net.bytebuddy.dynamic.scaffold",
+      "net.bytebuddy.dynamic.scaffold.inline",
+      "net.bytebuddy.dynamic.scaffold.subclass",
+      "net.bytebuddy.implementation",
+      "net.bytebuddy.implementation.attribute",
+      "net.bytebuddy.implementation.auxiliary",
+      "net.bytebuddy.implementation.bind",
+      "net.bytebuddy.implementation.bind.annotation",
+      "net.bytebuddy.implementation.bytecode",
+      "net.bytebuddy.implementation.bytecode.assign",
+      "net.bytebuddy.implementation.bytecode.assign.primitive",
+      "net.bytebuddy.implementation.bytecode.assign.reference",
+      "net.bytebuddy.implementation.bytecode.collection",
+      "net.bytebuddy.implementation.bytecode.constant",
+      "net.bytebuddy.implementation.bytecode.member",
+      "net.bytebuddy.jar.asm",
+      "net.bytebuddy.jar.asm.commons",
+      "net.bytebuddy.jar.asm.signature",
+      "net.bytebuddy.jar.asmjdkbridge",
+      "net.bytebuddy.matcher",
+      "net.bytebuddy.pool",
+      "net.bytebuddy.utility",
+      "net.bytebuddy.utility.dispatcher",
+      "net.bytebuddy.utility.nullability",
+      "net.bytebuddy.utility.privilege",
+      "net.bytebuddy.utility.visitor"
+    ],
+    "net.bytebuddy:byte-buddy-agent": [
+      "net.bytebuddy.agent",
+      "net.bytebuddy.agent.utility.nullability"
+    ],
+    "net.java.dev.jna:jna": [
+      "com.sun.jna",
+      "com.sun.jna.internal",
+      "com.sun.jna.ptr",
+      "com.sun.jna.win32"
+    ],
+    "net.java.dev.jna:jna-platform": [
+      "com.sun.jna.platform",
+      "com.sun.jna.platform.bsd",
+      "com.sun.jna.platform.dnd",
+      "com.sun.jna.platform.linux",
+      "com.sun.jna.platform.mac",
+      "com.sun.jna.platform.unix",
+      "com.sun.jna.platform.unix.aix",
+      "com.sun.jna.platform.unix.solaris",
+      "com.sun.jna.platform.win32",
+      "com.sun.jna.platform.win32.COM",
+      "com.sun.jna.platform.win32.COM.tlb",
+      "com.sun.jna.platform.win32.COM.tlb.imp",
+      "com.sun.jna.platform.win32.COM.util",
+      "com.sun.jna.platform.win32.COM.util.annotation",
+      "com.sun.jna.platform.wince"
+    ],
+    "net.sf.jopt-simple:jopt-simple": [
+      "joptsimple",
+      "joptsimple.internal",
+      "joptsimple.util"
+    ],
+    "org.apache.commons:commons-compress": [
+      "org.apache.commons.compress",
+      "org.apache.commons.compress.archivers",
+      "org.apache.commons.compress.archivers.ar",
+      "org.apache.commons.compress.archivers.arj",
+      "org.apache.commons.compress.archivers.cpio",
+      "org.apache.commons.compress.archivers.dump",
+      "org.apache.commons.compress.archivers.examples",
+      "org.apache.commons.compress.archivers.jar",
+      "org.apache.commons.compress.archivers.sevenz",
+      "org.apache.commons.compress.archivers.tar",
+      "org.apache.commons.compress.archivers.zip",
+      "org.apache.commons.compress.changes",
+      "org.apache.commons.compress.compressors",
+      "org.apache.commons.compress.compressors.brotli",
+      "org.apache.commons.compress.compressors.bzip2",
+      "org.apache.commons.compress.compressors.deflate",
+      "org.apache.commons.compress.compressors.deflate64",
+      "org.apache.commons.compress.compressors.gzip",
+      "org.apache.commons.compress.compressors.lz4",
+      "org.apache.commons.compress.compressors.lz77support",
+      "org.apache.commons.compress.compressors.lzma",
+      "org.apache.commons.compress.compressors.lzw",
+      "org.apache.commons.compress.compressors.pack200",
+      "org.apache.commons.compress.compressors.snappy",
+      "org.apache.commons.compress.compressors.xz",
+      "org.apache.commons.compress.compressors.z",
+      "org.apache.commons.compress.compressors.zstandard",
+      "org.apache.commons.compress.harmony",
+      "org.apache.commons.compress.harmony.archive.internal.nls",
+      "org.apache.commons.compress.harmony.pack200",
+      "org.apache.commons.compress.harmony.unpack200",
+      "org.apache.commons.compress.harmony.unpack200.bytecode",
+      "org.apache.commons.compress.harmony.unpack200.bytecode.forms",
+      "org.apache.commons.compress.java.util.jar",
+      "org.apache.commons.compress.parallel",
+      "org.apache.commons.compress.utils"
+    ],
+    "org.apache.commons:commons-lang3": [
+      "org.apache.commons.lang3",
+      "org.apache.commons.lang3.arch",
+      "org.apache.commons.lang3.builder",
+      "org.apache.commons.lang3.compare",
+      "org.apache.commons.lang3.concurrent",
+      "org.apache.commons.lang3.concurrent.locks",
+      "org.apache.commons.lang3.event",
+      "org.apache.commons.lang3.exception",
+      "org.apache.commons.lang3.function",
+      "org.apache.commons.lang3.math",
+      "org.apache.commons.lang3.mutable",
+      "org.apache.commons.lang3.reflect",
+      "org.apache.commons.lang3.stream",
+      "org.apache.commons.lang3.text",
+      "org.apache.commons.lang3.text.translate",
+      "org.apache.commons.lang3.time",
+      "org.apache.commons.lang3.tuple",
+      "org.apache.commons.lang3.util"
+    ],
+    "org.apache.commons:commons-math3": [
+      "org.apache.commons.math3",
+      "org.apache.commons.math3.analysis",
+      "org.apache.commons.math3.analysis.differentiation",
+      "org.apache.commons.math3.analysis.function",
+      "org.apache.commons.math3.analysis.integration",
+      "org.apache.commons.math3.analysis.integration.gauss",
+      "org.apache.commons.math3.analysis.interpolation",
+      "org.apache.commons.math3.analysis.polynomials",
+      "org.apache.commons.math3.analysis.solvers",
+      "org.apache.commons.math3.complex",
+      "org.apache.commons.math3.dfp",
+      "org.apache.commons.math3.distribution",
+      "org.apache.commons.math3.distribution.fitting",
+      "org.apache.commons.math3.exception",
+      "org.apache.commons.math3.exception.util",
+      "org.apache.commons.math3.filter",
+      "org.apache.commons.math3.fitting",
+      "org.apache.commons.math3.fitting.leastsquares",
+      "org.apache.commons.math3.fraction",
+      "org.apache.commons.math3.genetics",
+      "org.apache.commons.math3.geometry",
+      "org.apache.commons.math3.geometry.enclosing",
+      "org.apache.commons.math3.geometry.euclidean.oned",
+      "org.apache.commons.math3.geometry.euclidean.threed",
+      "org.apache.commons.math3.geometry.euclidean.twod",
+      "org.apache.commons.math3.geometry.euclidean.twod.hull",
+      "org.apache.commons.math3.geometry.hull",
+      "org.apache.commons.math3.geometry.partitioning",
+      "org.apache.commons.math3.geometry.partitioning.utilities",
+      "org.apache.commons.math3.geometry.spherical.oned",
+      "org.apache.commons.math3.geometry.spherical.twod",
+      "org.apache.commons.math3.linear",
+      "org.apache.commons.math3.ml.clustering",
+      "org.apache.commons.math3.ml.clustering.evaluation",
+      "org.apache.commons.math3.ml.distance",
+      "org.apache.commons.math3.ml.neuralnet",
+      "org.apache.commons.math3.ml.neuralnet.oned",
+      "org.apache.commons.math3.ml.neuralnet.sofm",
+      "org.apache.commons.math3.ml.neuralnet.sofm.util",
+      "org.apache.commons.math3.ml.neuralnet.twod",
+      "org.apache.commons.math3.ml.neuralnet.twod.util",
+      "org.apache.commons.math3.ode",
+      "org.apache.commons.math3.ode.events",
+      "org.apache.commons.math3.ode.nonstiff",
+      "org.apache.commons.math3.ode.sampling",
+      "org.apache.commons.math3.optim",
+      "org.apache.commons.math3.optim.linear",
+      "org.apache.commons.math3.optim.nonlinear.scalar",
+      "org.apache.commons.math3.optim.nonlinear.scalar.gradient",
+      "org.apache.commons.math3.optim.nonlinear.scalar.noderiv",
+      "org.apache.commons.math3.optim.nonlinear.vector",
+      "org.apache.commons.math3.optim.nonlinear.vector.jacobian",
+      "org.apache.commons.math3.optim.univariate",
+      "org.apache.commons.math3.optimization",
+      "org.apache.commons.math3.optimization.direct",
+      "org.apache.commons.math3.optimization.fitting",
+      "org.apache.commons.math3.optimization.general",
+      "org.apache.commons.math3.optimization.linear",
+      "org.apache.commons.math3.optimization.univariate",
+      "org.apache.commons.math3.primes",
+      "org.apache.commons.math3.random",
+      "org.apache.commons.math3.special",
+      "org.apache.commons.math3.stat",
+      "org.apache.commons.math3.stat.clustering",
+      "org.apache.commons.math3.stat.correlation",
+      "org.apache.commons.math3.stat.descriptive",
+      "org.apache.commons.math3.stat.descriptive.moment",
+      "org.apache.commons.math3.stat.descriptive.rank",
+      "org.apache.commons.math3.stat.descriptive.summary",
+      "org.apache.commons.math3.stat.inference",
+      "org.apache.commons.math3.stat.interval",
+      "org.apache.commons.math3.stat.ranking",
+      "org.apache.commons.math3.stat.regression",
+      "org.apache.commons.math3.transform",
+      "org.apache.commons.math3.util"
+    ],
+    "org.apache.commons:commons-text": [
+      "org.apache.commons.text",
+      "org.apache.commons.text.diff",
+      "org.apache.commons.text.io",
+      "org.apache.commons.text.lookup",
+      "org.apache.commons.text.matcher",
+      "org.apache.commons.text.numbers",
+      "org.apache.commons.text.similarity",
+      "org.apache.commons.text.translate"
+    ],
+    "org.apache.httpcomponents:httpclient": [
+      "org.apache.http.auth",
+      "org.apache.http.auth.params",
+      "org.apache.http.client",
+      "org.apache.http.client.config",
+      "org.apache.http.client.entity",
+      "org.apache.http.client.methods",
+      "org.apache.http.client.params",
+      "org.apache.http.client.protocol",
+      "org.apache.http.client.utils",
+      "org.apache.http.conn",
+      "org.apache.http.conn.params",
+      "org.apache.http.conn.routing",
+      "org.apache.http.conn.scheme",
+      "org.apache.http.conn.socket",
+      "org.apache.http.conn.ssl",
+      "org.apache.http.conn.util",
+      "org.apache.http.cookie",
+      "org.apache.http.cookie.params",
+      "org.apache.http.impl.auth",
+      "org.apache.http.impl.client",
+      "org.apache.http.impl.conn",
+      "org.apache.http.impl.conn.tsccm",
+      "org.apache.http.impl.cookie",
+      "org.apache.http.impl.execchain"
+    ],
+    "org.apache.httpcomponents:httpcore": [
+      "org.apache.http",
+      "org.apache.http.annotation",
+      "org.apache.http.concurrent",
+      "org.apache.http.config",
+      "org.apache.http.entity",
+      "org.apache.http.impl",
+      "org.apache.http.impl.bootstrap",
+      "org.apache.http.impl.entity",
+      "org.apache.http.impl.io",
+      "org.apache.http.impl.pool",
+      "org.apache.http.io",
+      "org.apache.http.message",
+      "org.apache.http.params",
+      "org.apache.http.pool",
+      "org.apache.http.protocol",
+      "org.apache.http.ssl",
+      "org.apache.http.util"
+    ],
+    "org.apache.sshd:sshd-common": [
+      "org.apache.sshd.client.auth",
+      "org.apache.sshd.client.auth.hostbased",
+      "org.apache.sshd.client.auth.password",
+      "org.apache.sshd.client.auth.pubkey",
+      "org.apache.sshd.client.config.hosts",
+      "org.apache.sshd.client.config.keys",
+      "org.apache.sshd.common",
+      "org.apache.sshd.common.auth",
+      "org.apache.sshd.common.channel",
+      "org.apache.sshd.common.cipher",
+      "org.apache.sshd.common.compression",
+      "org.apache.sshd.common.config",
+      "org.apache.sshd.common.config.keys",
+      "org.apache.sshd.common.config.keys.impl",
+      "org.apache.sshd.common.config.keys.loader",
+      "org.apache.sshd.common.config.keys.loader.openssh",
+      "org.apache.sshd.common.config.keys.loader.openssh.kdf",
+      "org.apache.sshd.common.config.keys.loader.pem",
+      "org.apache.sshd.common.config.keys.loader.ssh2",
+      "org.apache.sshd.common.config.keys.u2f",
+      "org.apache.sshd.common.config.keys.writer",
+      "org.apache.sshd.common.config.keys.writer.openssh",
+      "org.apache.sshd.common.digest",
+      "org.apache.sshd.common.file",
+      "org.apache.sshd.common.file.nativefs",
+      "org.apache.sshd.common.file.nonefs",
+      "org.apache.sshd.common.file.root",
+      "org.apache.sshd.common.file.util",
+      "org.apache.sshd.common.file.virtualfs",
+      "org.apache.sshd.common.future",
+      "org.apache.sshd.common.io",
+      "org.apache.sshd.common.kex",
+      "org.apache.sshd.common.kex.extension",
+      "org.apache.sshd.common.kex.extension.parser",
+      "org.apache.sshd.common.keyprovider",
+      "org.apache.sshd.common.mac",
+      "org.apache.sshd.common.net",
+      "org.apache.sshd.common.random",
+      "org.apache.sshd.common.session",
+      "org.apache.sshd.common.session.helpers",
+      "org.apache.sshd.common.signature",
+      "org.apache.sshd.common.util",
+      "org.apache.sshd.common.util.buffer",
+      "org.apache.sshd.common.util.buffer.keys",
+      "org.apache.sshd.common.util.closeable",
+      "org.apache.sshd.common.util.functors",
+      "org.apache.sshd.common.util.helper",
+      "org.apache.sshd.common.util.io",
+      "org.apache.sshd.common.util.io.der",
+      "org.apache.sshd.common.util.io.functors",
+      "org.apache.sshd.common.util.io.input",
+      "org.apache.sshd.common.util.io.output",
+      "org.apache.sshd.common.util.io.resource",
+      "org.apache.sshd.common.util.logging",
+      "org.apache.sshd.common.util.net",
+      "org.apache.sshd.common.util.security",
+      "org.apache.sshd.common.util.security.bouncycastle",
+      "org.apache.sshd.common.util.security.eddsa",
+      "org.apache.sshd.common.util.security.eddsa.bouncycastle",
+      "org.apache.sshd.common.util.security.eddsa.generic",
+      "org.apache.sshd.common.util.threads",
+      "org.apache.sshd.server",
+      "org.apache.sshd.server.keyprovider",
+      "org.apache.sshd.server.shell"
+    ],
+    "org.apache.sshd:sshd-core": [
+      "org.apache.sshd.agent",
+      "org.apache.sshd.agent.common",
+      "org.apache.sshd.agent.local",
+      "org.apache.sshd.agent.unix",
+      "org.apache.sshd.certificate",
+      "org.apache.sshd.client",
+      "org.apache.sshd.client.auth",
+      "org.apache.sshd.client.auth.hostbased",
+      "org.apache.sshd.client.auth.keyboard",
+      "org.apache.sshd.client.auth.password",
+      "org.apache.sshd.client.auth.pubkey",
+      "org.apache.sshd.client.channel",
+      "org.apache.sshd.client.channel.exit",
+      "org.apache.sshd.client.config",
+      "org.apache.sshd.client.future",
+      "org.apache.sshd.client.global",
+      "org.apache.sshd.client.kex",
+      "org.apache.sshd.client.keyverifier",
+      "org.apache.sshd.client.session",
+      "org.apache.sshd.client.session.forward",
+      "org.apache.sshd.client.simple",
+      "org.apache.sshd.client.subsystem",
+      "org.apache.sshd.common",
+      "org.apache.sshd.common.auth",
+      "org.apache.sshd.common.channel",
+      "org.apache.sshd.common.channel.exception",
+      "org.apache.sshd.common.channel.throttle",
+      "org.apache.sshd.common.config",
+      "org.apache.sshd.common.forward",
+      "org.apache.sshd.common.future",
+      "org.apache.sshd.common.global",
+      "org.apache.sshd.common.helpers",
+      "org.apache.sshd.common.io",
+      "org.apache.sshd.common.io.nio2",
+      "org.apache.sshd.common.kex",
+      "org.apache.sshd.common.kex.dh",
+      "org.apache.sshd.common.kex.extension",
+      "org.apache.sshd.common.session",
+      "org.apache.sshd.common.session.helpers",
+      "org.apache.sshd.core",
+      "org.apache.sshd.server",
+      "org.apache.sshd.server.auth",
+      "org.apache.sshd.server.auth.gss",
+      "org.apache.sshd.server.auth.hostbased",
+      "org.apache.sshd.server.auth.keyboard",
+      "org.apache.sshd.server.auth.password",
+      "org.apache.sshd.server.auth.pubkey",
+      "org.apache.sshd.server.channel",
+      "org.apache.sshd.server.command",
+      "org.apache.sshd.server.config",
+      "org.apache.sshd.server.config.keys",
+      "org.apache.sshd.server.forward",
+      "org.apache.sshd.server.global",
+      "org.apache.sshd.server.jaas",
+      "org.apache.sshd.server.kex",
+      "org.apache.sshd.server.session",
+      "org.apache.sshd.server.shell",
+      "org.apache.sshd.server.subsystem",
+      "org.apache.sshd.server.x11"
+    ],
+    "org.apache.sshd:sshd-osgi": [
+      "org.apache.sshd.agent",
+      "org.apache.sshd.agent.common",
+      "org.apache.sshd.agent.local",
+      "org.apache.sshd.agent.unix",
+      "org.apache.sshd.certificate",
+      "org.apache.sshd.client",
+      "org.apache.sshd.client.auth",
+      "org.apache.sshd.client.auth.hostbased",
+      "org.apache.sshd.client.auth.keyboard",
+      "org.apache.sshd.client.auth.password",
+      "org.apache.sshd.client.auth.pubkey",
+      "org.apache.sshd.client.channel",
+      "org.apache.sshd.client.channel.exit",
+      "org.apache.sshd.client.config",
+      "org.apache.sshd.client.config.hosts",
+      "org.apache.sshd.client.config.keys",
+      "org.apache.sshd.client.future",
+      "org.apache.sshd.client.global",
+      "org.apache.sshd.client.kex",
+      "org.apache.sshd.client.keyverifier",
+      "org.apache.sshd.client.session",
+      "org.apache.sshd.client.session.forward",
+      "org.apache.sshd.client.simple",
+      "org.apache.sshd.client.subsystem",
+      "org.apache.sshd.common",
+      "org.apache.sshd.common.auth",
+      "org.apache.sshd.common.channel",
+      "org.apache.sshd.common.channel.exception",
+      "org.apache.sshd.common.channel.throttle",
+      "org.apache.sshd.common.cipher",
+      "org.apache.sshd.common.compression",
+      "org.apache.sshd.common.config",
+      "org.apache.sshd.common.config.keys",
+      "org.apache.sshd.common.config.keys.impl",
+      "org.apache.sshd.common.config.keys.loader",
+      "org.apache.sshd.common.config.keys.loader.openssh",
+      "org.apache.sshd.common.config.keys.loader.openssh.kdf",
+      "org.apache.sshd.common.config.keys.loader.pem",
+      "org.apache.sshd.common.config.keys.loader.ssh2",
+      "org.apache.sshd.common.config.keys.u2f",
+      "org.apache.sshd.common.config.keys.writer",
+      "org.apache.sshd.common.config.keys.writer.openssh",
+      "org.apache.sshd.common.digest",
+      "org.apache.sshd.common.file",
+      "org.apache.sshd.common.file.nativefs",
+      "org.apache.sshd.common.file.nonefs",
+      "org.apache.sshd.common.file.root",
+      "org.apache.sshd.common.file.util",
+      "org.apache.sshd.common.file.virtualfs",
+      "org.apache.sshd.common.forward",
+      "org.apache.sshd.common.future",
+      "org.apache.sshd.common.global",
+      "org.apache.sshd.common.helpers",
+      "org.apache.sshd.common.io",
+      "org.apache.sshd.common.io.nio2",
+      "org.apache.sshd.common.kex",
+      "org.apache.sshd.common.kex.dh",
+      "org.apache.sshd.common.kex.extension",
+      "org.apache.sshd.common.kex.extension.parser",
+      "org.apache.sshd.common.keyprovider",
+      "org.apache.sshd.common.mac",
+      "org.apache.sshd.common.net",
+      "org.apache.sshd.common.random",
+      "org.apache.sshd.common.session",
+      "org.apache.sshd.common.session.helpers",
+      "org.apache.sshd.common.signature",
+      "org.apache.sshd.common.util",
+      "org.apache.sshd.common.util.buffer",
+      "org.apache.sshd.common.util.buffer.keys",
+      "org.apache.sshd.common.util.closeable",
+      "org.apache.sshd.common.util.functors",
+      "org.apache.sshd.common.util.helper",
+      "org.apache.sshd.common.util.io",
+      "org.apache.sshd.common.util.io.der",
+      "org.apache.sshd.common.util.io.functors",
+      "org.apache.sshd.common.util.io.input",
+      "org.apache.sshd.common.util.io.output",
+      "org.apache.sshd.common.util.io.resource",
+      "org.apache.sshd.common.util.logging",
+      "org.apache.sshd.common.util.net",
+      "org.apache.sshd.common.util.security",
+      "org.apache.sshd.common.util.security.bouncycastle",
+      "org.apache.sshd.common.util.security.eddsa",
+      "org.apache.sshd.common.util.security.eddsa.bouncycastle",
+      "org.apache.sshd.common.util.security.eddsa.generic",
+      "org.apache.sshd.common.util.threads",
+      "org.apache.sshd.core",
+      "org.apache.sshd.server",
+      "org.apache.sshd.server.auth",
+      "org.apache.sshd.server.auth.gss",
+      "org.apache.sshd.server.auth.hostbased",
+      "org.apache.sshd.server.auth.keyboard",
+      "org.apache.sshd.server.auth.password",
+      "org.apache.sshd.server.auth.pubkey",
+      "org.apache.sshd.server.channel",
+      "org.apache.sshd.server.command",
+      "org.apache.sshd.server.config",
+      "org.apache.sshd.server.config.keys",
+      "org.apache.sshd.server.forward",
+      "org.apache.sshd.server.global",
+      "org.apache.sshd.server.jaas",
+      "org.apache.sshd.server.kex",
+      "org.apache.sshd.server.keyprovider",
+      "org.apache.sshd.server.session",
+      "org.apache.sshd.server.shell",
+      "org.apache.sshd.server.subsystem",
+      "org.apache.sshd.server.x11"
+    ],
+    "org.apache.sshd:sshd-sftp": [
+      "org.apache.sshd.sftp",
+      "org.apache.sshd.sftp.client",
+      "org.apache.sshd.sftp.client.extensions",
+      "org.apache.sshd.sftp.client.extensions.helpers",
+      "org.apache.sshd.sftp.client.extensions.openssh",
+      "org.apache.sshd.sftp.client.extensions.openssh.helpers",
+      "org.apache.sshd.sftp.client.fs",
+      "org.apache.sshd.sftp.client.fs.impl",
+      "org.apache.sshd.sftp.client.impl",
+      "org.apache.sshd.sftp.common",
+      "org.apache.sshd.sftp.common.extensions",
+      "org.apache.sshd.sftp.common.extensions.openssh",
+      "org.apache.sshd.sftp.server"
+    ],
+    "org.assertj:assertj-core": [
+      "org.assertj.core.annotation",
+      "org.assertj.core.annotations",
+      "org.assertj.core.api",
+      "org.assertj.core.api.exception",
+      "org.assertj.core.api.filter",
+      "org.assertj.core.api.iterable",
+      "org.assertj.core.api.junit.jupiter",
+      "org.assertj.core.api.recursive",
+      "org.assertj.core.api.recursive.assertion",
+      "org.assertj.core.api.recursive.comparison",
+      "org.assertj.core.condition",
+      "org.assertj.core.configuration",
+      "org.assertj.core.data",
+      "org.assertj.core.description",
+      "org.assertj.core.error",
+      "org.assertj.core.error.array2d",
+      "org.assertj.core.error.future",
+      "org.assertj.core.error.uri",
+      "org.assertj.core.extractor",
+      "org.assertj.core.groups",
+      "org.assertj.core.internal",
+      "org.assertj.core.internal.annotation",
+      "org.assertj.core.matcher",
+      "org.assertj.core.presentation",
+      "org.assertj.core.util",
+      "org.assertj.core.util.diff",
+      "org.assertj.core.util.diff.myers",
+      "org.assertj.core.util.introspection",
+      "org.assertj.core.util.xml"
+    ],
+    "org.bouncycastle:bcpg-jdk18on": [
+      "org.bouncycastle.apache.bzip2",
+      "org.bouncycastle.bcpg",
+      "org.bouncycastle.bcpg.attr",
+      "org.bouncycastle.bcpg.sig",
+      "org.bouncycastle.gpg",
+      "org.bouncycastle.gpg.keybox",
+      "org.bouncycastle.gpg.keybox.bc",
+      "org.bouncycastle.gpg.keybox.jcajce",
+      "org.bouncycastle.openpgp",
+      "org.bouncycastle.openpgp.api",
+      "org.bouncycastle.openpgp.api.bc",
+      "org.bouncycastle.openpgp.api.exception",
+      "org.bouncycastle.openpgp.api.jcajce",
+      "org.bouncycastle.openpgp.api.util",
+      "org.bouncycastle.openpgp.bc",
+      "org.bouncycastle.openpgp.examples",
+      "org.bouncycastle.openpgp.jcajce",
+      "org.bouncycastle.openpgp.operator",
+      "org.bouncycastle.openpgp.operator.bc",
+      "org.bouncycastle.openpgp.operator.jcajce"
+    ],
+    "org.bouncycastle:bcpkix-jdk18on": [
+      "org.bouncycastle.cert",
+      "org.bouncycastle.cert.bc",
+      "org.bouncycastle.cert.cmp",
+      "org.bouncycastle.cert.crmf",
+      "org.bouncycastle.cert.crmf.bc",
+      "org.bouncycastle.cert.crmf.jcajce",
+      "org.bouncycastle.cert.dane",
+      "org.bouncycastle.cert.dane.fetcher",
+      "org.bouncycastle.cert.jcajce",
+      "org.bouncycastle.cert.ocsp",
+      "org.bouncycastle.cert.ocsp.jcajce",
+      "org.bouncycastle.cert.path",
+      "org.bouncycastle.cert.path.validations",
+      "org.bouncycastle.cert.selector",
+      "org.bouncycastle.cert.selector.jcajce",
+      "org.bouncycastle.cmc",
+      "org.bouncycastle.cms",
+      "org.bouncycastle.cms.bc",
+      "org.bouncycastle.cms.jcajce",
+      "org.bouncycastle.dvcs",
+      "org.bouncycastle.eac",
+      "org.bouncycastle.eac.jcajce",
+      "org.bouncycastle.eac.operator",
+      "org.bouncycastle.eac.operator.jcajce",
+      "org.bouncycastle.est",
+      "org.bouncycastle.est.jcajce",
+      "org.bouncycastle.its",
+      "org.bouncycastle.its.bc",
+      "org.bouncycastle.its.jcajce",
+      "org.bouncycastle.its.operator",
+      "org.bouncycastle.mime",
+      "org.bouncycastle.mime.encoding",
+      "org.bouncycastle.mime.smime",
+      "org.bouncycastle.mozilla",
+      "org.bouncycastle.mozilla.jcajce",
+      "org.bouncycastle.openssl",
+      "org.bouncycastle.openssl.bc",
+      "org.bouncycastle.openssl.jcajce",
+      "org.bouncycastle.operator",
+      "org.bouncycastle.operator.bc",
+      "org.bouncycastle.operator.jcajce",
+      "org.bouncycastle.pkcs",
+      "org.bouncycastle.pkcs.bc",
+      "org.bouncycastle.pkcs.jcajce",
+      "org.bouncycastle.pkix",
+      "org.bouncycastle.pkix.jcajce",
+      "org.bouncycastle.pkix.util",
+      "org.bouncycastle.pkix.util.filter",
+      "org.bouncycastle.tsp",
+      "org.bouncycastle.tsp.cms",
+      "org.bouncycastle.tsp.ers",
+      "org.bouncycastle.voms"
+    ],
+    "org.bouncycastle:bcprov-jdk18on": [
+      "org.bouncycastle",
+      "org.bouncycastle.asn1",
+      "org.bouncycastle.asn1.anssi",
+      "org.bouncycastle.asn1.bc",
+      "org.bouncycastle.asn1.cryptopro",
+      "org.bouncycastle.asn1.gm",
+      "org.bouncycastle.asn1.nist",
+      "org.bouncycastle.asn1.ocsp",
+      "org.bouncycastle.asn1.pkcs",
+      "org.bouncycastle.asn1.sec",
+      "org.bouncycastle.asn1.teletrust",
+      "org.bouncycastle.asn1.ua",
+      "org.bouncycastle.asn1.util",
+      "org.bouncycastle.asn1.x500",
+      "org.bouncycastle.asn1.x500.style",
+      "org.bouncycastle.asn1.x509",
+      "org.bouncycastle.asn1.x509.qualified",
+      "org.bouncycastle.asn1.x509.sigi",
+      "org.bouncycastle.asn1.x9",
+      "org.bouncycastle.crypto",
+      "org.bouncycastle.crypto.agreement",
+      "org.bouncycastle.crypto.agreement.ecjpake",
+      "org.bouncycastle.crypto.agreement.jpake",
+      "org.bouncycastle.crypto.agreement.kdf",
+      "org.bouncycastle.crypto.agreement.srp",
+      "org.bouncycastle.crypto.commitments",
+      "org.bouncycastle.crypto.constraints",
+      "org.bouncycastle.crypto.digests",
+      "org.bouncycastle.crypto.ec",
+      "org.bouncycastle.crypto.encodings",
+      "org.bouncycastle.crypto.engines",
+      "org.bouncycastle.crypto.examples",
+      "org.bouncycastle.crypto.fpe",
+      "org.bouncycastle.crypto.generators",
+      "org.bouncycastle.crypto.hash2curve",
+      "org.bouncycastle.crypto.hash2curve.data",
+      "org.bouncycastle.crypto.hash2curve.impl",
+      "org.bouncycastle.crypto.hpke",
+      "org.bouncycastle.crypto.io",
+      "org.bouncycastle.crypto.kems",
+      "org.bouncycastle.crypto.kems.mlkem",
+      "org.bouncycastle.crypto.macs",
+      "org.bouncycastle.crypto.modes",
+      "org.bouncycastle.crypto.modes.gcm",
+      "org.bouncycastle.crypto.modes.kgcm",
+      "org.bouncycastle.crypto.paddings",
+      "org.bouncycastle.crypto.params",
+      "org.bouncycastle.crypto.parsers",
+      "org.bouncycastle.crypto.prng",
+      "org.bouncycastle.crypto.prng.drbg",
+      "org.bouncycastle.crypto.signers",
+      "org.bouncycastle.crypto.signers.mldsa",
+      "org.bouncycastle.crypto.signers.slhdsa",
+      "org.bouncycastle.crypto.threshold",
+      "org.bouncycastle.crypto.tls",
+      "org.bouncycastle.crypto.util",
+      "org.bouncycastle.i18n",
+      "org.bouncycastle.i18n.filter",
+      "org.bouncycastle.iana",
+      "org.bouncycastle.internal.asn1.bsi",
+      "org.bouncycastle.internal.asn1.cms",
+      "org.bouncycastle.internal.asn1.cryptlib",
+      "org.bouncycastle.internal.asn1.eac",
+      "org.bouncycastle.internal.asn1.edec",
+      "org.bouncycastle.internal.asn1.gnu",
+      "org.bouncycastle.internal.asn1.iana",
+      "org.bouncycastle.internal.asn1.isara",
+      "org.bouncycastle.internal.asn1.isismtt",
+      "org.bouncycastle.internal.asn1.iso",
+      "org.bouncycastle.internal.asn1.kisa",
+      "org.bouncycastle.internal.asn1.microsoft",
+      "org.bouncycastle.internal.asn1.misc",
+      "org.bouncycastle.internal.asn1.nsri",
+      "org.bouncycastle.internal.asn1.ntt",
+      "org.bouncycastle.internal.asn1.oiw",
+      "org.bouncycastle.internal.asn1.rosstandart",
+      "org.bouncycastle.jcajce",
+      "org.bouncycastle.jcajce.interfaces",
+      "org.bouncycastle.jcajce.io",
+      "org.bouncycastle.jcajce.provider.asymmetric",
+      "org.bouncycastle.jcajce.provider.asymmetric.compositesignatures",
+      "org.bouncycastle.jcajce.provider.asymmetric.dh",
+      "org.bouncycastle.jcajce.provider.asymmetric.dsa",
+      "org.bouncycastle.jcajce.provider.asymmetric.dstu",
+      "org.bouncycastle.jcajce.provider.asymmetric.ec",
+      "org.bouncycastle.jcajce.provider.asymmetric.ecgost",
+      "org.bouncycastle.jcajce.provider.asymmetric.ecgost12",
+      "org.bouncycastle.jcajce.provider.asymmetric.edec",
+      "org.bouncycastle.jcajce.provider.asymmetric.elgamal",
+      "org.bouncycastle.jcajce.provider.asymmetric.gost",
+      "org.bouncycastle.jcajce.provider.asymmetric.ies",
+      "org.bouncycastle.jcajce.provider.asymmetric.mldsa",
+      "org.bouncycastle.jcajce.provider.asymmetric.mlkem",
+      "org.bouncycastle.jcajce.provider.asymmetric.rsa",
+      "org.bouncycastle.jcajce.provider.asymmetric.slhdsa",
+      "org.bouncycastle.jcajce.provider.asymmetric.util",
+      "org.bouncycastle.jcajce.provider.asymmetric.x509",
+      "org.bouncycastle.jcajce.provider.config",
+      "org.bouncycastle.jcajce.provider.digest",
+      "org.bouncycastle.jcajce.provider.drbg",
+      "org.bouncycastle.jcajce.provider.kdf",
+      "org.bouncycastle.jcajce.provider.kdf.hkdf",
+      "org.bouncycastle.jcajce.provider.kdf.pbkdf2",
+      "org.bouncycastle.jcajce.provider.kdf.scrypt",
+      "org.bouncycastle.jcajce.provider.keystore",
+      "org.bouncycastle.jcajce.provider.keystore.bc",
+      "org.bouncycastle.jcajce.provider.keystore.bcfks",
+      "org.bouncycastle.jcajce.provider.keystore.pkcs12",
+      "org.bouncycastle.jcajce.provider.keystore.util",
+      "org.bouncycastle.jcajce.provider.symmetric",
+      "org.bouncycastle.jcajce.provider.symmetric.util",
+      "org.bouncycastle.jcajce.provider.util",
+      "org.bouncycastle.jcajce.spec",
+      "org.bouncycastle.jcajce.util",
+      "org.bouncycastle.jce",
+      "org.bouncycastle.jce.exception",
+      "org.bouncycastle.jce.interfaces",
+      "org.bouncycastle.jce.netscape",
+      "org.bouncycastle.jce.provider",
+      "org.bouncycastle.jce.spec",
+      "org.bouncycastle.ldap",
+      "org.bouncycastle.math",
+      "org.bouncycastle.math.ec",
+      "org.bouncycastle.math.ec.custom.djb",
+      "org.bouncycastle.math.ec.custom.gm",
+      "org.bouncycastle.math.ec.custom.sec",
+      "org.bouncycastle.math.ec.endo",
+      "org.bouncycastle.math.ec.rfc7748",
+      "org.bouncycastle.math.ec.rfc8032",
+      "org.bouncycastle.math.ec.tools",
+      "org.bouncycastle.math.field",
+      "org.bouncycastle.math.raw",
+      "org.bouncycastle.pqc.asn1",
+      "org.bouncycastle.pqc.crypto",
+      "org.bouncycastle.pqc.crypto.cmce",
+      "org.bouncycastle.pqc.crypto.crystals.dilithium",
+      "org.bouncycastle.pqc.crypto.falcon",
+      "org.bouncycastle.pqc.crypto.frodo",
+      "org.bouncycastle.pqc.crypto.hqc",
+      "org.bouncycastle.pqc.crypto.lms",
+      "org.bouncycastle.pqc.crypto.mayo",
+      "org.bouncycastle.pqc.crypto.mldsa",
+      "org.bouncycastle.pqc.crypto.mlkem",
+      "org.bouncycastle.pqc.crypto.newhope",
+      "org.bouncycastle.pqc.crypto.ntru",
+      "org.bouncycastle.pqc.crypto.ntruplus",
+      "org.bouncycastle.pqc.crypto.ntruprime",
+      "org.bouncycastle.pqc.crypto.saber",
+      "org.bouncycastle.pqc.crypto.slhdsa",
+      "org.bouncycastle.pqc.crypto.snova",
+      "org.bouncycastle.pqc.crypto.sphincs",
+      "org.bouncycastle.pqc.crypto.util",
+      "org.bouncycastle.pqc.crypto.xmss",
+      "org.bouncycastle.pqc.crypto.xwing",
+      "org.bouncycastle.pqc.jcajce.interfaces",
+      "org.bouncycastle.pqc.jcajce.provider",
+      "org.bouncycastle.pqc.jcajce.provider.bike",
+      "org.bouncycastle.pqc.jcajce.provider.cmce",
+      "org.bouncycastle.pqc.jcajce.provider.dilithium",
+      "org.bouncycastle.pqc.jcajce.provider.falcon",
+      "org.bouncycastle.pqc.jcajce.provider.frodo",
+      "org.bouncycastle.pqc.jcajce.provider.hqc",
+      "org.bouncycastle.pqc.jcajce.provider.kyber",
+      "org.bouncycastle.pqc.jcajce.provider.lms",
+      "org.bouncycastle.pqc.jcajce.provider.mayo",
+      "org.bouncycastle.pqc.jcajce.provider.newhope",
+      "org.bouncycastle.pqc.jcajce.provider.ntru",
+      "org.bouncycastle.pqc.jcajce.provider.ntruplus",
+      "org.bouncycastle.pqc.jcajce.provider.ntruprime",
+      "org.bouncycastle.pqc.jcajce.provider.picnic",
+      "org.bouncycastle.pqc.jcajce.provider.saber",
+      "org.bouncycastle.pqc.jcajce.provider.snova",
+      "org.bouncycastle.pqc.jcajce.provider.sphincs",
+      "org.bouncycastle.pqc.jcajce.provider.sphincsplus",
+      "org.bouncycastle.pqc.jcajce.provider.util",
+      "org.bouncycastle.pqc.jcajce.provider.xmss",
+      "org.bouncycastle.pqc.jcajce.spec",
+      "org.bouncycastle.pqc.legacy.bike",
+      "org.bouncycastle.pqc.legacy.picnic",
+      "org.bouncycastle.pqc.legacy.rainbow",
+      "org.bouncycastle.pqc.legacy.sphincsplus",
+      "org.bouncycastle.pqc.math.ntru",
+      "org.bouncycastle.pqc.math.ntru.parameters",
+      "org.bouncycastle.util",
+      "org.bouncycastle.util.encoders",
+      "org.bouncycastle.util.io",
+      "org.bouncycastle.util.io.pem",
+      "org.bouncycastle.util.test",
+      "org.bouncycastle.x509",
+      "org.bouncycastle.x509.extension",
+      "org.bouncycastle.x509.util"
+    ],
+    "org.bouncycastle:bcutil-jdk18on": [
+      "org.bouncycastle.asn1.bsi",
+      "org.bouncycastle.asn1.cmc",
+      "org.bouncycastle.asn1.cmp",
+      "org.bouncycastle.asn1.cms",
+      "org.bouncycastle.asn1.cms.ecc",
+      "org.bouncycastle.asn1.crmf",
+      "org.bouncycastle.asn1.cryptlib",
+      "org.bouncycastle.asn1.dvcs",
+      "org.bouncycastle.asn1.eac",
+      "org.bouncycastle.asn1.edec",
+      "org.bouncycastle.asn1.esf",
+      "org.bouncycastle.asn1.ess",
+      "org.bouncycastle.asn1.est",
+      "org.bouncycastle.asn1.gnu",
+      "org.bouncycastle.asn1.iana",
+      "org.bouncycastle.asn1.icao",
+      "org.bouncycastle.asn1.isara",
+      "org.bouncycastle.asn1.isismtt",
+      "org.bouncycastle.asn1.isismtt.ocsp",
+      "org.bouncycastle.asn1.isismtt.x509",
+      "org.bouncycastle.asn1.iso",
+      "org.bouncycastle.asn1.kisa",
+      "org.bouncycastle.asn1.microsoft",
+      "org.bouncycastle.asn1.misc",
+      "org.bouncycastle.asn1.mod",
+      "org.bouncycastle.asn1.mozilla",
+      "org.bouncycastle.asn1.nsri",
+      "org.bouncycastle.asn1.ntt",
+      "org.bouncycastle.asn1.oiw",
+      "org.bouncycastle.asn1.rosstandart",
+      "org.bouncycastle.asn1.smime",
+      "org.bouncycastle.asn1.tsp",
+      "org.bouncycastle.oer",
+      "org.bouncycastle.oer.its",
+      "org.bouncycastle.oer.its.etsi102941",
+      "org.bouncycastle.oer.its.etsi102941.basetypes",
+      "org.bouncycastle.oer.its.etsi103097",
+      "org.bouncycastle.oer.its.etsi103097.extension",
+      "org.bouncycastle.oer.its.ieee1609dot2",
+      "org.bouncycastle.oer.its.ieee1609dot2.basetypes",
+      "org.bouncycastle.oer.its.ieee1609dot2dot1",
+      "org.bouncycastle.oer.its.template.etsi102941",
+      "org.bouncycastle.oer.its.template.etsi102941.basetypes",
+      "org.bouncycastle.oer.its.template.etsi103097",
+      "org.bouncycastle.oer.its.template.etsi103097.extension",
+      "org.bouncycastle.oer.its.template.ieee1609dot2",
+      "org.bouncycastle.oer.its.template.ieee1609dot2.basetypes",
+      "org.bouncycastle.oer.its.template.ieee1609dot2dot1"
+    ],
+    "org.checkerframework:checker-compat-qual": [
+      "org.checkerframework.checker.nullness.compatqual"
+    ],
+    "org.commonmark:commonmark": [
+      "org.commonmark",
+      "org.commonmark.internal",
+      "org.commonmark.internal.inline",
+      "org.commonmark.internal.renderer",
+      "org.commonmark.internal.renderer.text",
+      "org.commonmark.internal.util",
+      "org.commonmark.node",
+      "org.commonmark.parser",
+      "org.commonmark.parser.beta",
+      "org.commonmark.parser.block",
+      "org.commonmark.parser.delimiter",
+      "org.commonmark.renderer",
+      "org.commonmark.renderer.html",
+      "org.commonmark.renderer.markdown",
+      "org.commonmark.renderer.text",
+      "org.commonmark.text"
+    ],
+    "org.commonmark:commonmark-ext-autolink": [
+      "org.commonmark.ext.autolink",
+      "org.commonmark.ext.autolink.internal"
+    ],
+    "org.commonmark:commonmark-ext-gfm-strikethrough": [
+      "org.commonmark.ext.gfm.strikethrough",
+      "org.commonmark.ext.gfm.strikethrough.internal"
+    ],
+    "org.commonmark:commonmark-ext-gfm-tables": [
+      "org.commonmark.ext.gfm.tables",
+      "org.commonmark.ext.gfm.tables.internal"
+    ],
+    "org.eclipse.jetty.ee8:jetty-ee8-nested": [
+      "org.eclipse.jetty.ee8.nested",
+      "org.eclipse.jetty.ee8.nested.jmx"
+    ],
+    "org.eclipse.jetty.ee8:jetty-ee8-security": [
+      "org.eclipse.jetty.ee8.security",
+      "org.eclipse.jetty.ee8.security.authentication"
+    ],
+    "org.eclipse.jetty.ee8:jetty-ee8-servlet": [
+      "org.eclipse.jetty.ee8.servlet",
+      "org.eclipse.jetty.ee8.servlet.jmx",
+      "org.eclipse.jetty.ee8.servlet.listener"
+    ],
+    "org.eclipse.jetty.toolchain:jetty-servlet-api": [
+      "javax.servlet",
+      "javax.servlet.annotation",
+      "javax.servlet.descriptor",
+      "javax.servlet.http"
+    ],
+    "org.eclipse.jetty:jetty-continuation": [
+      "org.eclipse.jetty.continuation"
+    ],
+    "org.eclipse.jetty:jetty-http": [
+      "org.eclipse.jetty.http",
+      "org.eclipse.jetty.http.compression",
+      "org.eclipse.jetty.http.pathmap"
+    ],
+    "org.eclipse.jetty:jetty-io": [
+      "org.eclipse.jetty.io",
+      "org.eclipse.jetty.io.jmx",
+      "org.eclipse.jetty.io.ssl"
+    ],
+    "org.eclipse.jetty:jetty-security": [
+      "org.eclipse.jetty.security",
+      "org.eclipse.jetty.security.authentication"
+    ],
+    "org.eclipse.jetty:jetty-server": [
+      "org.eclipse.jetty.server",
+      "org.eclipse.jetty.server.handler",
+      "org.eclipse.jetty.server.handler.gzip",
+      "org.eclipse.jetty.server.handler.jmx",
+      "org.eclipse.jetty.server.jmx",
+      "org.eclipse.jetty.server.nio",
+      "org.eclipse.jetty.server.resource",
+      "org.eclipse.jetty.server.session"
+    ],
+    "org.eclipse.jetty:jetty-servlet": [
+      "org.eclipse.jetty.servlet",
+      "org.eclipse.jetty.servlet.jmx",
+      "org.eclipse.jetty.servlet.listener"
+    ],
+    "org.eclipse.jetty:jetty-session": [
+      "org.eclipse.jetty.session"
+    ],
+    "org.eclipse.jetty:jetty-util": [
+      "org.eclipse.jetty.util",
+      "org.eclipse.jetty.util.annotation",
+      "org.eclipse.jetty.util.component",
+      "org.eclipse.jetty.util.compression",
+      "org.eclipse.jetty.util.log",
+      "org.eclipse.jetty.util.preventers",
+      "org.eclipse.jetty.util.resource",
+      "org.eclipse.jetty.util.security",
+      "org.eclipse.jetty.util.ssl",
+      "org.eclipse.jetty.util.statistic",
+      "org.eclipse.jetty.util.thread",
+      "org.eclipse.jetty.util.thread.strategy"
+    ],
+    "org.eclipse.jetty:jetty-util-ajax": [
+      "org.eclipse.jetty.util.ajax"
+    ],
+    "org.hamcrest:hamcrest": [
+      "org.hamcrest",
+      "org.hamcrest.beans",
+      "org.hamcrest.collection",
+      "org.hamcrest.comparator",
+      "org.hamcrest.core",
+      "org.hamcrest.internal",
+      "org.hamcrest.io",
+      "org.hamcrest.number",
+      "org.hamcrest.object",
+      "org.hamcrest.text",
+      "org.hamcrest.xml"
+    ],
+    "org.hamcrest:hamcrest-core": [
+      "org.hamcrest",
+      "org.hamcrest.core",
+      "org.hamcrest.internal"
+    ],
+    "org.json:json": [
+      "org.json"
+    ],
+    "org.jspecify:jspecify": [
+      "org.jspecify.annotations"
+    ],
+    "org.mockito:mockito-core": [
+      "org.mockito",
+      "org.mockito.configuration",
+      "org.mockito.creation.instance",
+      "org.mockito.exceptions.base",
+      "org.mockito.exceptions.misusing",
+      "org.mockito.exceptions.stacktrace",
+      "org.mockito.exceptions.verification",
+      "org.mockito.exceptions.verification.junit",
+      "org.mockito.exceptions.verification.opentest4j",
+      "org.mockito.hamcrest",
+      "org.mockito.internal",
+      "org.mockito.internal.configuration",
+      "org.mockito.internal.configuration.injection",
+      "org.mockito.internal.configuration.injection.filter",
+      "org.mockito.internal.configuration.injection.scanner",
+      "org.mockito.internal.configuration.plugins",
+      "org.mockito.internal.creation",
+      "org.mockito.internal.creation.bytebuddy",
+      "org.mockito.internal.creation.bytebuddy.access",
+      "org.mockito.internal.creation.bytebuddy.codegen",
+      "org.mockito.internal.creation.instance",
+      "org.mockito.internal.creation.proxy",
+      "org.mockito.internal.creation.settings",
+      "org.mockito.internal.creation.util",
+      "org.mockito.internal.debugging",
+      "org.mockito.internal.exceptions",
+      "org.mockito.internal.exceptions.stacktrace",
+      "org.mockito.internal.exceptions.util",
+      "org.mockito.internal.framework",
+      "org.mockito.internal.hamcrest",
+      "org.mockito.internal.handler",
+      "org.mockito.internal.invocation",
+      "org.mockito.internal.invocation.finder",
+      "org.mockito.internal.invocation.mockref",
+      "org.mockito.internal.junit",
+      "org.mockito.internal.listeners",
+      "org.mockito.internal.matchers",
+      "org.mockito.internal.matchers.apachecommons",
+      "org.mockito.internal.matchers.text",
+      "org.mockito.internal.progress",
+      "org.mockito.internal.reporting",
+      "org.mockito.internal.runners",
+      "org.mockito.internal.runners.util",
+      "org.mockito.internal.session",
+      "org.mockito.internal.stubbing",
+      "org.mockito.internal.stubbing.answers",
+      "org.mockito.internal.stubbing.defaultanswers",
+      "org.mockito.internal.util",
+      "org.mockito.internal.util.collections",
+      "org.mockito.internal.util.concurrent",
+      "org.mockito.internal.util.io",
+      "org.mockito.internal.util.reflection",
+      "org.mockito.internal.verification",
+      "org.mockito.internal.verification.api",
+      "org.mockito.internal.verification.argumentmatching",
+      "org.mockito.internal.verification.checkers",
+      "org.mockito.invocation",
+      "org.mockito.junit",
+      "org.mockito.listeners",
+      "org.mockito.mock",
+      "org.mockito.plugins",
+      "org.mockito.quality",
+      "org.mockito.session",
+      "org.mockito.stubbing",
+      "org.mockito.verification"
+    ],
+    "org.nibor.autolink:autolink": [
+      "org.nibor.autolink",
+      "org.nibor.autolink.internal"
+    ],
+    "org.objenesis:objenesis": [
+      "org.objenesis",
+      "org.objenesis.instantiator",
+      "org.objenesis.instantiator.android",
+      "org.objenesis.instantiator.annotations",
+      "org.objenesis.instantiator.basic",
+      "org.objenesis.instantiator.gcj",
+      "org.objenesis.instantiator.perc",
+      "org.objenesis.instantiator.sun",
+      "org.objenesis.instantiator.util",
+      "org.objenesis.strategy"
+    ],
+    "org.openjdk.jmh:jmh-core": [
+      "org.openjdk.jmh",
+      "org.openjdk.jmh.annotations",
+      "org.openjdk.jmh.generators.core",
+      "org.openjdk.jmh.infra",
+      "org.openjdk.jmh.profile",
+      "org.openjdk.jmh.results",
+      "org.openjdk.jmh.results.format",
+      "org.openjdk.jmh.runner",
+      "org.openjdk.jmh.runner.format",
+      "org.openjdk.jmh.runner.link",
+      "org.openjdk.jmh.runner.options",
+      "org.openjdk.jmh.util",
+      "org.openjdk.jmh.util.lines"
+    ],
+    "org.openjdk.jmh:jmh-generator-annprocess": [
+      "org.openjdk.jmh.generators",
+      "org.openjdk.jmh.generators.annotations"
+    ],
+    "org.ow2.asm:asm": [
+      "org.objectweb.asm",
+      "org.objectweb.asm.signature"
+    ],
+    "org.ow2.asm:asm-analysis": [
+      "org.objectweb.asm.tree.analysis"
+    ],
+    "org.ow2.asm:asm-commons": [
+      "org.objectweb.asm.commons"
+    ],
+    "org.ow2.asm:asm-tree": [
+      "org.objectweb.asm.tree"
+    ],
+    "org.ow2.asm:asm-util": [
+      "org.objectweb.asm.util"
+    ],
+    "org.slf4j:jcl-over-slf4j": [
+      "org.apache.commons.logging",
+      "org.apache.commons.logging.impl"
+    ],
+    "org.slf4j:slf4j-api": [
+      "org.slf4j",
+      "org.slf4j.event",
+      "org.slf4j.helpers",
+      "org.slf4j.spi"
+    ],
+    "org.slf4j:slf4j-simple": [
+      "org.slf4j.simple"
+    ],
+    "org.tukaani:xz": [
+      "org.tukaani.xz",
+      "org.tukaani.xz.check",
+      "org.tukaani.xz.common",
+      "org.tukaani.xz.delta",
+      "org.tukaani.xz.index",
+      "org.tukaani.xz.lz",
+      "org.tukaani.xz.lzma",
+      "org.tukaani.xz.rangecoder",
+      "org.tukaani.xz.simple"
+    ]
+  },
+  "repositories": {
+    "https://repo1.maven.org/maven2/": [
+      "aopalliance:aopalliance",
+      "aopalliance:aopalliance:jar:sources",
+      "args4j:args4j",
+      "args4j:args4j:jar:sources",
+      "ch.qos.reload4j:reload4j",
+      "ch.qos.reload4j:reload4j:jar:sources",
+      "com.google.auto.value:auto-value-annotations",
+      "com.google.auto.value:auto-value-annotations:jar:sources",
+      "com.google.code.findbugs:jsr305",
+      "com.google.code.findbugs:jsr305:jar:sources",
+      "com.google.code.gson:gson",
+      "com.google.code.gson:gson:jar:sources",
+      "com.google.common.html.types:types",
+      "com.google.common.html.types:types:jar:sources",
+      "com.google.errorprone:error_prone_annotations",
+      "com.google.errorprone:error_prone_annotations:jar:sources",
+      "com.google.escapevelocity:escapevelocity",
+      "com.google.escapevelocity:escapevelocity:jar:sources",
+      "com.google.flogger:flogger",
+      "com.google.flogger:flogger-log4j-backend",
+      "com.google.flogger:flogger-log4j-backend:jar:sources",
+      "com.google.flogger:flogger-system-backend",
+      "com.google.flogger:flogger-system-backend:jar:sources",
+      "com.google.flogger:flogger:jar:sources",
+      "com.google.flogger:google-extensions",
+      "com.google.flogger:google-extensions:jar:sources",
+      "com.google.guava:failureaccess",
+      "com.google.guava:failureaccess:jar:sources",
+      "com.google.guava:guava",
+      "com.google.guava:guava:jar:sources",
+      "com.google.guava:listenablefuture",
+      "com.google.inject:guice",
+      "com.google.inject:guice:jar:sources",
+      "com.google.j2objc:j2objc-annotations",
+      "com.google.j2objc:j2objc-annotations:jar:sources",
+      "com.google.jsinterop:jsinterop-annotations",
+      "com.google.jsinterop:jsinterop-annotations:jar:sources",
+      "com.google.protobuf:protobuf-java",
+      "com.google.protobuf:protobuf-java:jar:sources",
+      "com.google.template:soy",
+      "com.google.template:soy:jar:sources",
+      "com.google.truth:truth",
+      "com.google.truth:truth:jar:sources",
+      "com.googlecode.javaewah:JavaEWAH",
+      "com.googlecode.javaewah:JavaEWAH:jar:sources",
+      "com.ibm.icu:icu4j",
+      "com.ibm.icu:icu4j:jar:sources",
+      "com.jcraft:jsch",
+      "com.jcraft:jsch:jar:sources",
+      "com.jcraft:jzlib",
+      "com.jcraft:jzlib:jar:sources",
+      "commons-codec:commons-codec",
+      "commons-codec:commons-codec:jar:sources",
+      "commons-io:commons-io",
+      "commons-io:commons-io:jar:sources",
+      "commons-logging:commons-logging",
+      "commons-logging:commons-logging:jar:sources",
+      "io.github.java-diff-utils:java-diff-utils",
+      "io.github.java-diff-utils:java-diff-utils:jar:sources",
+      "jakarta.inject:jakarta.inject-api",
+      "jakarta.inject:jakarta.inject-api:jar:sources",
+      "javax.activation:activation",
+      "javax.activation:activation:jar:sources",
+      "javax.annotation:jsr250-api",
+      "javax.annotation:jsr250-api:jar:sources",
+      "javax.inject:javax.inject",
+      "javax.inject:javax.inject:jar:sources",
+      "javax.mail:mail",
+      "javax.mail:mail:jar:sources",
+      "javax.servlet:javax.servlet-api",
+      "javax.servlet:javax.servlet-api:jar:sources",
+      "junit:junit",
+      "junit:junit:jar:sources",
+      "log4j:log4j",
+      "log4j:log4j:jar:sources",
+      "net.bytebuddy:byte-buddy",
+      "net.bytebuddy:byte-buddy-agent",
+      "net.bytebuddy:byte-buddy-agent:jar:sources",
+      "net.bytebuddy:byte-buddy:jar:sources",
+      "net.java.dev.jna:jna",
+      "net.java.dev.jna:jna-platform",
+      "net.java.dev.jna:jna-platform:jar:sources",
+      "net.java.dev.jna:jna:jar:sources",
+      "net.sf.jopt-simple:jopt-simple",
+      "net.sf.jopt-simple:jopt-simple:jar:sources",
+      "org.apache.commons:commons-compress",
+      "org.apache.commons:commons-compress:jar:sources",
+      "org.apache.commons:commons-lang3",
+      "org.apache.commons:commons-lang3:jar:sources",
+      "org.apache.commons:commons-math3",
+      "org.apache.commons:commons-math3:jar:sources",
+      "org.apache.commons:commons-text",
+      "org.apache.commons:commons-text:jar:sources",
+      "org.apache.httpcomponents:httpclient",
+      "org.apache.httpcomponents:httpclient:jar:sources",
+      "org.apache.httpcomponents:httpcore",
+      "org.apache.httpcomponents:httpcore:jar:sources",
+      "org.apache.sshd:sshd-common",
+      "org.apache.sshd:sshd-common:jar:sources",
+      "org.apache.sshd:sshd-core",
+      "org.apache.sshd:sshd-core:jar:sources",
+      "org.apache.sshd:sshd-osgi",
+      "org.apache.sshd:sshd-osgi:jar:sources",
+      "org.apache.sshd:sshd-sftp",
+      "org.apache.sshd:sshd-sftp:jar:sources",
+      "org.assertj:assertj-core",
+      "org.assertj:assertj-core:jar:sources",
+      "org.bouncycastle:bcpg-jdk18on",
+      "org.bouncycastle:bcpg-jdk18on:jar:sources",
+      "org.bouncycastle:bcpkix-jdk18on",
+      "org.bouncycastle:bcpkix-jdk18on:jar:sources",
+      "org.bouncycastle:bcprov-jdk18on",
+      "org.bouncycastle:bcprov-jdk18on:jar:sources",
+      "org.bouncycastle:bcutil-jdk18on",
+      "org.bouncycastle:bcutil-jdk18on:jar:sources",
+      "org.checkerframework:checker-compat-qual",
+      "org.checkerframework:checker-compat-qual:jar:sources",
+      "org.commonmark:commonmark",
+      "org.commonmark:commonmark-ext-autolink",
+      "org.commonmark:commonmark-ext-autolink:jar:sources",
+      "org.commonmark:commonmark-ext-gfm-strikethrough",
+      "org.commonmark:commonmark-ext-gfm-strikethrough:jar:sources",
+      "org.commonmark:commonmark-ext-gfm-tables",
+      "org.commonmark:commonmark-ext-gfm-tables:jar:sources",
+      "org.commonmark:commonmark:jar:sources",
+      "org.eclipse.jetty.ee8:jetty-ee8-nested",
+      "org.eclipse.jetty.ee8:jetty-ee8-nested:jar:sources",
+      "org.eclipse.jetty.ee8:jetty-ee8-security",
+      "org.eclipse.jetty.ee8:jetty-ee8-security:jar:sources",
+      "org.eclipse.jetty.ee8:jetty-ee8-servlet",
+      "org.eclipse.jetty.ee8:jetty-ee8-servlet:jar:sources",
+      "org.eclipse.jetty.toolchain:jetty-servlet-api",
+      "org.eclipse.jetty.toolchain:jetty-servlet-api:jar:sources",
+      "org.eclipse.jetty:jetty-continuation",
+      "org.eclipse.jetty:jetty-continuation:jar:sources",
+      "org.eclipse.jetty:jetty-http",
+      "org.eclipse.jetty:jetty-http:jar:sources",
+      "org.eclipse.jetty:jetty-io",
+      "org.eclipse.jetty:jetty-io:jar:sources",
+      "org.eclipse.jetty:jetty-security",
+      "org.eclipse.jetty:jetty-security:jar:sources",
+      "org.eclipse.jetty:jetty-server",
+      "org.eclipse.jetty:jetty-server:jar:sources",
+      "org.eclipse.jetty:jetty-servlet",
+      "org.eclipse.jetty:jetty-servlet:jar:sources",
+      "org.eclipse.jetty:jetty-session",
+      "org.eclipse.jetty:jetty-session:jar:sources",
+      "org.eclipse.jetty:jetty-util",
+      "org.eclipse.jetty:jetty-util-ajax",
+      "org.eclipse.jetty:jetty-util-ajax:jar:sources",
+      "org.eclipse.jetty:jetty-util:jar:sources",
+      "org.hamcrest:hamcrest",
+      "org.hamcrest:hamcrest-core",
+      "org.hamcrest:hamcrest-core:jar:sources",
+      "org.hamcrest:hamcrest:jar:sources",
+      "org.json:json",
+      "org.json:json:jar:sources",
+      "org.jspecify:jspecify",
+      "org.jspecify:jspecify:jar:sources",
+      "org.mockito:mockito-core",
+      "org.mockito:mockito-core:jar:sources",
+      "org.nibor.autolink:autolink",
+      "org.nibor.autolink:autolink:jar:sources",
+      "org.objenesis:objenesis",
+      "org.objenesis:objenesis:jar:sources",
+      "org.openjdk.jmh:jmh-core",
+      "org.openjdk.jmh:jmh-core:jar:sources",
+      "org.openjdk.jmh:jmh-generator-annprocess",
+      "org.openjdk.jmh:jmh-generator-annprocess:jar:sources",
+      "org.ow2.asm:asm",
+      "org.ow2.asm:asm-analysis",
+      "org.ow2.asm:asm-analysis:jar:sources",
+      "org.ow2.asm:asm-commons",
+      "org.ow2.asm:asm-commons:jar:sources",
+      "org.ow2.asm:asm-tree",
+      "org.ow2.asm:asm-tree:jar:sources",
+      "org.ow2.asm:asm-util",
+      "org.ow2.asm:asm-util:jar:sources",
+      "org.ow2.asm:asm:jar:sources",
+      "org.slf4j:jcl-over-slf4j",
+      "org.slf4j:jcl-over-slf4j:jar:sources",
+      "org.slf4j:slf4j-api",
+      "org.slf4j:slf4j-api:jar:sources",
+      "org.slf4j:slf4j-simple",
+      "org.slf4j:slf4j-simple:jar:sources",
+      "org.tukaani:xz",
+      "org.tukaani:xz:jar:sources"
+    ]
+  },
+  "services": {
+    "com.google.flogger:flogger-log4j-backend": {
+      "com.google.common.flogger.backend.system.BackendFactory": [
+        "com.google.common.flogger.backend.log4j.Log4jBackendFactory"
+      ]
+    },
+    "org.apache.sshd:sshd-common": {
+      "java.nio.file.spi.FileSystemProvider": [
+        "org.apache.sshd.common.file.root.RootedFileSystemProvider"
+      ]
+    },
+    "org.apache.sshd:sshd-common:jar:sources": {
+      "java.nio.file.spi.FileSystemProvider": [
+        "org.apache.sshd.common.file.root.RootedFileSystemProvider"
+      ]
+    },
+    "org.apache.sshd:sshd-osgi": {
+      "java.nio.file.spi.FileSystemProvider": [
+        "org.apache.sshd.common.file.root.RootedFileSystemProvider"
+      ]
+    },
+    "org.apache.sshd:sshd-sftp": {
+      "java.nio.file.spi.FileSystemProvider": [
+        "org.apache.sshd.sftp.client.fs.SftpFileSystemProvider"
+      ],
+      "org.apache.sshd.server.subsystem.SubsystemFactory": [
+        "org.apache.sshd.sftp.server.SftpSubsystemFactory"
+      ]
+    },
+    "org.apache.sshd:sshd-sftp:jar:sources": {
+      "java.nio.file.spi.FileSystemProvider": [
+        "org.apache.sshd.sftp.client.fs.SftpFileSystemProvider"
+      ],
+      "org.apache.sshd.server.subsystem.SubsystemFactory": [
+        "org.apache.sshd.sftp.server.SftpSubsystemFactory"
+      ]
+    },
+    "org.bouncycastle:bcprov-jdk18on": {
+      "java.security.Provider": [
+        "org.bouncycastle.jce.provider.BouncyCastleProvider",
+        "org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider"
+      ]
+    },
+    "org.bouncycastle:bcprov-jdk18on:jar:sources": {
+      "java.security.Provider": [
+        "org.bouncycastle.jce.provider.BouncyCastleProvider",
+        "org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider"
+      ]
+    },
+    "org.eclipse.jetty:jetty-http": {
+      "org.eclipse.jetty.http.HttpFieldPreEncoder": [
+        "org.eclipse.jetty.http.Http1FieldPreEncoder"
+      ]
+    },
+    "org.eclipse.jetty:jetty-http:jar:sources": {
+      "org.eclipse.jetty.http.HttpFieldPreEncoder": [
+        "org.eclipse.jetty.http.Http1FieldPreEncoder"
+      ]
+    },
+    "org.openjdk.jmh:jmh-generator-annprocess": {
+      "javax.annotation.processing.Processor": [
+        "org.openjdk.jmh.generators.BenchmarkProcessor"
+      ]
+    },
+    "org.openjdk.jmh:jmh-generator-annprocess:jar:sources": {
+      "javax.annotation.processing.Processor": [
+        "org.openjdk.jmh.generators.BenchmarkProcessor"
+      ]
+    },
+    "org.slf4j:jcl-over-slf4j": {
+      "org.apache.commons.logging.LogFactory": [
+        "org.apache.commons.logging.impl.SLF4JLogFactory"
+      ]
+    },
+    "org.slf4j:jcl-over-slf4j:jar:sources": {
+      "org.apache.commons.logging.LogFactory": [
+        "org.apache.commons.logging.impl.SLF4JLogFactory"
+      ]
+    },
+    "org.slf4j:slf4j-simple": {
+      "org.slf4j.spi.SLF4JServiceProvider": [
+        "org.slf4j.simple.SimpleServiceProvider"
+      ]
+    },
+    "org.slf4j:slf4j-simple:jar:sources": {
+      "org.slf4j.spi.SLF4JServiceProvider": [
+        "org.slf4j.simple.SimpleServiceProvider"
+      ]
+    }
+  },
+  "skipped": [
+    "com.sun.jdmk:jmxtools",
+    "com.sun.jmx:jmxri",
+    "javax.jms:jms"
+  ],
+  "version": "3"
+}
diff --git a/lib/BUILD b/lib/BUILD
index 6a25509..a36e385 100644
--- a/lib/BUILD
+++ b/lib/BUILD
@@ -5,29 +5,29 @@
 )
 
 [java_library(
-    name = n,
-    exports = ["@%s//jar" % n],
-) for n in [
-    "autolink",
-    "commonmark",
-    "commons-codec",
-    "commons-io",
-    "commons-lang3",
-    "commons-text",
-    "cm-autolink",
-    "gfm-strikethrough",
-    "gfm-tables",
-    "html-types",
-    "jsr305",
-    "servlet-api",
-    "gson",
-    "guava",
-    "guava-failureaccess",
-    "ow2-asm",
-    "ow2-asm-analysis",
-    "ow2-asm-commons",
-    "ow2-asm-tree",
-    "ow2-asm-util",
+    name = local_name,
+    exports = [coord],
+) for local_name, coord in [
+    ("autolink", "@external_deps//:org_nibor_autolink_autolink"),
+    ("commonmark", "@external_deps//:org_commonmark_commonmark"),
+    ("commons-codec", "@external_deps//:commons_codec_commons_codec"),
+    ("commons-io", "@external_deps//:commons_io_commons_io"),
+    ("commons-lang3", "@external_deps//:org_apache_commons_commons_lang3"),
+    ("commons-text", "@external_deps//:org_apache_commons_commons_text"),
+    ("cm-autolink", "@external_deps//:org_commonmark_commonmark_ext_autolink"),
+    ("gfm-strikethrough", "@external_deps//:org_commonmark_commonmark_ext_gfm_strikethrough"),
+    ("gfm-tables", "@external_deps//:org_commonmark_commonmark_ext_gfm_tables"),
+    ("html-types", "@external_deps//:com_google_common_html_types_types"),
+    ("jsr305", "@external_deps//:com_google_code_findbugs_jsr305"),
+    ("servlet-api", "@external_deps//:javax_servlet_javax_servlet_api"),
+    ("gson", "@external_deps//:com_google_code_gson_gson"),
+    ("guava", "@external_deps//:com_google_guava_guava"),
+    ("guava-failureaccess", "@external_deps//:com_google_guava_failureaccess"),
+    ("ow2-asm", "@external_deps//:org_ow2_asm_asm"),
+    ("ow2-asm-analysis", "@external_deps//:org_ow2_asm_asm_analysis"),
+    ("ow2-asm-commons", "@external_deps//:org_ow2_asm_asm_commons"),
+    ("ow2-asm-tree", "@external_deps//:org_ow2_asm_asm_tree"),
+    ("ow2-asm-util", "@external_deps//:org_ow2_asm_asm_util"),
 ]]
 
 java_library(
@@ -38,14 +38,14 @@
 
 java_library(
     name = "slf4j-api",
-    exports = ["@log-api//jar"],
+    exports = ["@external_deps//:org_slf4j_slf4j_api"],
 )
 
 java_library(
     name = "slf4j-simple",
     runtime_deps = [
         ":slf4j-api",
-        "@slf4j-simple//jar",
+        "@external_deps//:org_slf4j_slf4j_simple",
     ],
 )
 
@@ -55,7 +55,7 @@
     exports = ["@jgit//org.eclipse.jgit:jgit"],
     runtime_deps = [
         ":slf4j-api",
-        "@javaewah//jar",
+        "@external_deps//:com_googlecode_javaewah_JavaEWAH",
     ],
 )
 
@@ -83,16 +83,16 @@
 
 java_library(
     name = "tukaani-xz",
-    exports = ["@tukaani-xz//jar"],
+    exports = ["@external_deps//:org_tukaani_xz"],
 )
 
 java_library(
     name = "commons-compress",
-    exports = ["@commons-compress//jar"],
+    exports = ["@external_deps//:org_apache_commons_commons_compress"],
 )
 
 java_library(
     name = "errorprone-annotations",
     visibility = ["//visibility:public"],
-    exports = ["@error-prone-annotations//jar"],
-)
\ No newline at end of file
+    exports = ["@external_deps//:com_google_errorprone_error_prone_annotations"],
+)
diff --git a/lib/flogger/BUILD b/lib/flogger/BUILD
index 06fb211..57c6e5a 100644
--- a/lib/flogger/BUILD
+++ b/lib/flogger/BUILD
@@ -4,10 +4,10 @@
     name = "flogger",
     visibility = ["//visibility:public"],
     exports = [
-        "@flogger-google-extensions//jar",
-        "@flogger-log4j-backend//jar",
-        "@flogger-system-backend//jar",
-        "@flogger//jar",
-        "@log4j//jar",
+        "@external_deps//:ch_qos_reload4j_reload4j",
+        "@external_deps//:com_google_flogger_flogger",
+        "@external_deps//:com_google_flogger_flogger_log4j_backend",
+        "@external_deps//:com_google_flogger_flogger_system_backend",
+        "@external_deps//:com_google_flogger_google_extensions",
     ],
 )
diff --git a/lib/jetty/BUILD b/lib/jetty/BUILD
index 3a35ef5..a857b58 100644
--- a/lib/jetty/BUILD
+++ b/lib/jetty/BUILD
@@ -9,7 +9,7 @@
     exports = [
         ":security",
         "//lib:servlet-api",
-        "@servlet//jar",
+        "@external_deps//:org_eclipse_jetty_jetty_servlet",
     ],
 )
 
@@ -17,7 +17,7 @@
     name = "security",
     exports = [
         ":server",
-        "@security//jar",
+        "@external_deps//:org_eclipse_jetty_jetty_security",
     ],
 )
 
@@ -26,20 +26,20 @@
     exports = [
         ":continuation",
         ":http",
-        "@server//jar",
+        "@external_deps//:org_eclipse_jetty_jetty_server",
     ],
 )
 
 java_library(
     name = "continuation",
-    exports = ["@continuation//jar"],
+    exports = ["@external_deps//:org_eclipse_jetty_jetty_continuation"],
 )
 
 java_library(
     name = "http",
     exports = [
         ":io",
-        "@http//jar",
+        "@external_deps//:org_eclipse_jetty_jetty_http",
     ],
 )
 
@@ -47,11 +47,11 @@
     name = "io",
     exports = [
         ":util",
-        "@io//jar",
+        "@external_deps//:org_eclipse_jetty_jetty_io",
     ],
 )
 
 java_library(
     name = "util",
-    exports = ["@util//jar"],
+    exports = ["@external_deps//:org_eclipse_jetty_jetty_util"],
 )
diff --git a/lib/junit/BUILD b/lib/junit/BUILD
index f3e9cca..ce338ec 100644
--- a/lib/junit/BUILD
+++ b/lib/junit/BUILD
@@ -6,10 +6,10 @@
 
 java_library(
     name = "junit",
-    exports = ["@junit//jar"],
+    exports = ["@external_deps//:junit_junit"],
 )
 
 java_library(
     name = "hamcrest",
-    exports = ["@hamcrest//jar"],
+    exports = ["@external_deps//:org_hamcrest_hamcrest"],
 )
diff --git a/lib/soy/BUILD b/lib/soy/BUILD
index f6f0b8e..3b08e29 100644
--- a/lib/soy/BUILD
+++ b/lib/soy/BUILD
@@ -7,16 +7,16 @@
 java_library(
     name = "soy",
     exports = [
-        "@soy//jar",
+        "@external_deps//:com_google_template_soy",
     ],
     runtime_deps = [
-        "@html-types//jar",
-        "@icu4j//jar",
-        "@ow2-asm-analysis//jar",
-        "@ow2-asm-commons//jar",
-        "@ow2-asm-tree//jar",
-        "@ow2-asm-util//jar",
-        "@ow2-asm//jar",
-        "@protobuf//jar",
+        "@external_deps//:com_google_common_html_types_types",
+        "@external_deps//:com_google_protobuf_protobuf_java",
+        "@external_deps//:com_ibm_icu_icu4j",
+        "@external_deps//:org_ow2_asm_asm",
+        "@external_deps//:org_ow2_asm_asm_analysis",
+        "@external_deps//:org_ow2_asm_asm_commons",
+        "@external_deps//:org_ow2_asm_asm_tree",
+        "@external_deps//:org_ow2_asm_asm_util",
     ],
 )
diff --git a/lib/truth/BUILD b/lib/truth/BUILD
index 5a57e6d..0e455ea 100644
--- a/lib/truth/BUILD
+++ b/lib/truth/BUILD
@@ -3,7 +3,7 @@
 java_library(
     name = "truth",
     visibility = ["//visibility:public"],
-    exports = ["@truth//jar"],
+    exports = ["@external_deps//:com_google_truth_truth"],
     runtime_deps = [
         ":diffutils",
         "//lib:guava",
@@ -14,5 +14,5 @@
 java_library(
     name = "diffutils",
     visibility = ["//visibility:private"],
-    exports = ["@diffutils//jar"],
+    exports = ["@external_deps//:io_github_java_diff_utils_java_diff_utils"],
 )
diff --git a/modules/java-prettify b/modules/java-prettify
index 32fa081..1c0ef60 160000
--- a/modules/java-prettify
+++ b/modules/java-prettify
@@ -1 +1 @@
-Subproject commit 32fa081a797a97beaf77a4f2efca26c39168e72f
+Subproject commit 1c0ef60424995a24452ce5ccd54f60c7eb9a5051
diff --git a/modules/jgit b/modules/jgit
index d6923d6..eeba63e 160000
--- a/modules/jgit
+++ b/modules/jgit
@@ -1 +1 @@
-Subproject commit d6923d6994dfb89e7d547467d41006559cd182c3
+Subproject commit eeba63ed4ebfe817628da5a221305b0c72af7b04
diff --git a/tools/BUILD b/tools/BUILD
index 004f1c3..9beefdf 100644
--- a/tools/BUILD
+++ b/tools/BUILD
@@ -5,19 +5,6 @@
 load("@rules_java//java:defs.bzl", "java_package_configuration")
 
 default_java_toolchain(
-    name = "error_prone_warnings_toolchain_java17",
-
-    configuration = dict(),
-    java_runtime = "@rules_java//toolchains:remotejdk_17",
-    package_configuration = [
-        ":error_prone",
-    ],
-    source_version = "17",
-    target_version = "17",
-    visibility = ["//visibility:public"],
-)
-
-default_java_toolchain(
     name = "error_prone_warnings_toolchain_java21",
 
     configuration = dict(),
diff --git a/tools/bazlets.MODULE.bazel b/tools/bazlets.MODULE.bazel
new file mode 100644
index 0000000..7bd8804
--- /dev/null
+++ b/tools/bazlets.MODULE.bazel
@@ -0,0 +1,7 @@
+# Bazlets dependency pin kept outside the root module declaration.
+bazel_dep(name = "com_googlesource_gerrit_bazlets")
+git_override(
+    module_name = "com_googlesource_gerrit_bazlets",
+    commit = "ba9fd0c042269b80db52cb4308cb701d5c82cce0",
+    remote = "https://gerrit.googlesource.com/bazlets",
+)
diff --git a/tools/bazlets.bzl b/tools/bazlets.bzl
deleted file mode 100644
index 90336ca..0000000
--- a/tools/bazlets.bzl
+++ /dev/null
@@ -1,18 +0,0 @@
-load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
-
-NAME = "com_googlesource_gerrit_bazlets"
-
-def load_bazlets(
-        commit = None,
-        local_path = None):
-    if not local_path:
-        git_repository(
-            name = NAME,
-            remote = "https://gerrit.googlesource.com/bazlets",
-            commit = commit,
-        )
-    else:
-        native.local_repository(
-            name = NAME,
-            path = local_path,
-        )
diff --git a/tools/java_deps.MODULE.bazel b/tools/java_deps.MODULE.bazel
new file mode 100644
index 0000000..5dea951
--- /dev/null
+++ b/tools/java_deps.MODULE.bazel
@@ -0,0 +1,140 @@
+# Module-file fragment for Java/Maven external dependencies.
+#
+# This file is included from the root MODULE.bazel via include().
+# It contains the rules_jvm_external configuration for Gitiles.
+#
+# NOTE: MODULE/.MODULE.bazel files are evaluated in the bzlmod resolution phase
+# and do not allow load() or function definitions. Keep this file self-contained.
+
+COMMONMARK_VERSION = "0.24.0"
+
+FLOGGER_VERSION = "0.7.4"
+
+SLF4J_VERSION = "2.0.17"
+
+JETTY_VERSION = "9.4.57.v20241219"
+
+OW2_ASM_VERSION = "9.9.1"
+
+BYTE_BUDDY_VERSION = "1.18.2"
+
+# Root-level dependency versions declared by Gitiles must take precedence over
+# versions contributed by layered modules (e.g. JGit) when resolving the shared
+# maven.install("external_deps") repository.
+#
+# rules_jvm_external currently lacks a mechanism for the root module to globally
+# enforce its declared versions across the layered Maven graph when using
+# bzlmod. In particular, version_conflict_policy = "pinned" still fails early
+# with duplicate artifacts when multiple modules contribute different versions.
+#
+# As a workaround, we explicitly force the root-selected versions here via
+# maven.amend_artifact(force_version = "true") for GA coordinates that may also
+# be introduced transitively by JGit.
+#
+# TODO(davido): Remove this workaround once global root version enforcement is
+# supported in rules_jvm_external:
+# https://github.com/bazel-contrib/rules_jvm_external/issues/1549
+_GITILES_FORCED_ARTIFACTS = [
+    "com.google.code.gson:gson",
+    "commons-codec:commons-codec",
+    "commons-io:commons-io",
+    "net.bytebuddy:byte-buddy",
+    "net.bytebuddy:byte-buddy-agent",
+    "org.apache.commons:commons-lang3",
+    "org.eclipse.jetty:jetty-http",
+    "org.eclipse.jetty:jetty-io",
+    "org.eclipse.jetty:jetty-security",
+    "org.eclipse.jetty:jetty-server",
+    "org.eclipse.jetty:jetty-servlet",
+    "org.eclipse.jetty:jetty-util",
+    "org.mockito:mockito-core",
+    "org.objenesis:objenesis",
+    "org.slf4j:slf4j-api",
+    "org.slf4j:slf4j-simple",
+    "org.tukaani:xz",
+]
+
+maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")
+
+[
+    maven.amend_artifact(
+        name = "external_deps",
+        coordinates = coord,
+        force_version = "true",
+    )
+    for coord in _GITILES_FORCED_ARTIFACTS
+]
+
+maven.install(
+    name = "external_deps",
+    artifacts = [
+        "ch.qos.reload4j:reload4j:1.2.25",
+        "com.google.code.findbugs:jsr305:3.0.1",
+        "com.google.code.gson:gson:2.13.2",
+        "com.google.common.html.types:types:1.0.8",
+        "com.google.errorprone:error_prone_annotations:2.46.0",
+        "com.google.flogger:flogger:" + FLOGGER_VERSION,
+        "com.google.flogger:flogger-log4j-backend:" + FLOGGER_VERSION,
+        "com.google.flogger:flogger-system-backend:" + FLOGGER_VERSION,
+        "com.google.flogger:google-extensions:" + FLOGGER_VERSION,
+        "com.google.guava:failureaccess:1.0.3",
+        "com.google.guava:guava:33.5.0-jre",
+        "com.google.protobuf:protobuf-java:4.33.4",
+        "com.google.template:soy:2024-01-30",
+        "com.google.truth:truth:1.4.4",
+        "com.googlecode.javaewah:JavaEWAH:1.2.3",
+        "com.ibm.icu:icu4j:78.2",
+        "commons-codec:commons-codec:1.18.0",
+        "commons-io:commons-io:2.21.0",
+        "io.github.java-diff-utils:java-diff-utils:4.16",
+        "javax.servlet:javax.servlet-api:4.0.1",
+        "junit:junit:4.13.2",
+        "net.bytebuddy:byte-buddy:" + BYTE_BUDDY_VERSION,
+        "net.bytebuddy:byte-buddy-agent:" + BYTE_BUDDY_VERSION,
+        "org.apache.commons:commons-compress:1.28.0",
+        "org.apache.commons:commons-lang3:3.18.0",
+        "org.apache.commons:commons-text:1.10.0",
+        "org.commonmark:commonmark:" + COMMONMARK_VERSION,
+        "org.commonmark:commonmark-ext-autolink:" + COMMONMARK_VERSION,
+        "org.commonmark:commonmark-ext-gfm-strikethrough:" + COMMONMARK_VERSION,
+        "org.commonmark:commonmark-ext-gfm-tables:" + COMMONMARK_VERSION,
+        "org.eclipse.jetty:jetty-continuation:" + JETTY_VERSION,
+        "org.eclipse.jetty:jetty-http:" + JETTY_VERSION,
+        "org.eclipse.jetty:jetty-io:" + JETTY_VERSION,
+        "org.eclipse.jetty:jetty-security:" + JETTY_VERSION,
+        "org.eclipse.jetty:jetty-server:" + JETTY_VERSION,
+        "org.eclipse.jetty:jetty-servlet:" + JETTY_VERSION,
+        "org.eclipse.jetty:jetty-util:" + JETTY_VERSION,
+        "org.hamcrest:hamcrest:3.0",
+        "org.mockito:mockito-core:5.21.0",
+        "org.nibor.autolink:autolink:0.11.0",
+        "org.objenesis:objenesis:3.0.1",
+        "org.ow2.asm:asm:" + OW2_ASM_VERSION,
+        "org.ow2.asm:asm-analysis:" + OW2_ASM_VERSION,
+        "org.ow2.asm:asm-commons:" + OW2_ASM_VERSION,
+        "org.ow2.asm:asm-tree:" + OW2_ASM_VERSION,
+        "org.ow2.asm:asm-util:" + OW2_ASM_VERSION,
+        "org.slf4j:slf4j-api:" + SLF4J_VERSION,
+        "org.slf4j:slf4j-simple:" + SLF4J_VERSION,
+        "org.tukaani:xz:1.11",
+    ],
+    # CRITICAL: Must remain "error".
+    # This guarantees fail-fast behavior if multiple versions of the same
+    # artifact are introduced by contributing modules. Downgrading this to
+    # "warn" would allow version skew from JGit to silently leak into Gitiles.
+    duplicate_version_warning = "error",
+    fail_if_repin_required = True,
+    fail_on_missing_checksum = True,
+    fetch_sources = True,
+    known_contributing_modules = [
+        "gitiles",
+        "jgit",
+    ],
+    lock_file = "//:external_deps.lock.json",
+    repositories = [
+        "https://repo1.maven.org/maven2",
+    ],
+    strict_visibility = True,
+    version_conflict_policy = "pinned",
+)
+use_repo(maven, "external_deps")
diff --git a/tools/repos.MODULE.bazel b/tools/repos.MODULE.bazel
new file mode 100644
index 0000000..c2ac5af
--- /dev/null
+++ b/tools/repos.MODULE.bazel
@@ -0,0 +1,15 @@
+# Repository rules for in-tree or vendored sources.
+#
+# This module fragment is included from MODULE.bazel to keep repository
+# declarations separate from the module dependency graph.
+
+local_repository = use_repo_rule(
+    "@bazel_tools//tools/build_defs/repo:local.bzl",
+    "local_repository",
+)
+
+# Java-Prettify external repository consumed from git submodule.
+local_repository(
+    name = "java-prettify",
+    path = "modules/java-prettify",
+)
diff --git a/tools/workspace_status.py b/tools/workspace_status.py
index bd0689a..de1467e 100644
--- a/tools/workspace_status.py
+++ b/tools/workspace_status.py
@@ -16,7 +16,7 @@
 import sys
 
 ROOT = os.path.abspath(__file__)
-while not os.path.exists(os.path.join(ROOT, 'WORKSPACE')):
+while not os.path.exists(os.path.join(ROOT, 'MODULE.bazel')):
     ROOT = os.path.dirname(ROOT)
 CMD = ['git', 'describe', '--always', '--match', 'v[0-9].*', '--dirty']