Migrate to bazelmod

Change-Id: If3607f839a42c9fcaa0e6372606396001f488129
diff --git a/BUILD b/BUILD
index 1be89ee..5097e3d 100644
--- a/BUILD
+++ b/BUILD
@@ -1,58 +1,32 @@
 load(
-    "//tools/bzl:plugin.bzl",
-    "PLUGIN_DEPS",
-    "PLUGIN_TEST_DEPS",
+    "@com_googlesource_gerrit_bazlets//:gerrit_plugin.bzl",
     "gerrit_plugin",
+    "gerrit_plugin_dependency_tests",
+    "gerrit_plugin_tests",
 )
 
-load("//tools/bzl:junit.bzl", "junit_tests")
+PLUGIN = "metrics-reporter-cloudwatch"
+
+EXT_DEPS = [
+    "io.github.azagniotov:dropwizard-metrics-cloudwatch",
+    "io.dropwizard.metrics:metrics-jvm",
+    "software.amazon.awssdk:cloudwatch",
+]
 
 gerrit_plugin(
-    name = "metrics-reporter-cloudwatch",
     srcs = glob(["src/main/java/**/*.java"]),
+    ext_deps = EXT_DEPS,
     manifest_entries = [
         "Gerrit-PluginName: metrics-reporter-cloudwatch",
         "Gerrit-Module: com.googlesource.gerrit.plugins.metricsreportercloudwatch.GerritCloudwatchModule",
     ],
+    plugin = PLUGIN,
     resources = glob(["src/main/resources/**/*"]),
-    deps = [
-        "@dropwizard_metrics_cloudwatch//jar",
-        "@dropwizard_metrics_jvm//jar",
-        "@awssdk_cloudwatch//jar",
-        "@awssdk_aws_core//jar",
-        "@awssdk_regions//jar",
-        "@aws_java_sdk_core//jar",
-        "@awssdk_auth//jar",
-        "@awssdk_sdk_core//jar",
-        "@awssdk_utils//jar",
-        "@awssdk_http_client_spi//jar",
-        "@awssdk_profiles//jar",
-        "@awssdk_query_protocol//jar",
-        "@awssdk_protocol_core//jar",
-        "@io_netty_all//jar",
-        "@awssdk_netty_nio_client//jar",
-        "@awssdk_metrics_spi//jar",
-        "@reactivestreams//jar",
-        "@jackson_core//jar",
-        "@jackson_annotations//jar",
-        "@jackson_databind//jar",
-    ],
 )
 
-junit_tests(
-    name = "metrics-reporter-cloudwatch_tests",
+gerrit_plugin_tests(
     srcs = glob(["src/test/java/**/*.java"]),
+    ext_deps = EXT_DEPS,
+    plugin = PLUGIN,
     resources = glob(["src/test/resources/**/*"]),
-    deps = [
-        ":metrics-reporter-cloudwatch__plugin_test_deps",
-    ],
-)
-
-java_library(
-    name = "metrics-reporter-cloudwatch__plugin_test_deps",
-    testonly = 1,
-    visibility = ["//visibility:public"],
-    exports = PLUGIN_DEPS + PLUGIN_TEST_DEPS + [
-        ":metrics-reporter-cloudwatch__plugin",
-    ],
 )
diff --git a/MODULE.bazel b/MODULE.bazel
new file mode 100644
index 0000000..2f679b3
--- /dev/null
+++ b/MODULE.bazel
@@ -0,0 +1,31 @@
+module(name = "gerrit-metrics-reporter-cloudwatch")
+
+bazel_dep(name = "rules_jvm_external", version = "7.0")
+
+maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")
+maven.install(
+    name = "metrics-reporter-cloudwatch_plugin_deps",
+    artifacts = [
+        "io.github.azagniotov:dropwizard-metrics-cloudwatch:2.0.5",
+        "io.dropwizard.metrics:metrics-jvm:4.1.10.1",
+        "software.amazon.awssdk:cloudwatch:2.13.54",
+    ],
+    duplicate_version_warning = "error",
+    excluded_artifacts = [
+        "commons-codec:commons-codec",
+        "commons-logging:commons-logging",
+        "io.dropwizard.metrics:metrics-core",
+        "org.apache.httpcomponents:httpclient",
+        "org.apache.httpcomponents:httpcore",
+        "org.slf4j:slf4j-api",
+    ],
+    fail_if_repin_required = True,
+    fail_on_missing_checksum = True,
+    fetch_sources = True,
+    lock_file = "//:metrics-reporter-cloudwatch_plugin_deps.lock.json",
+    repositories = [
+        "https://repo1.maven.org/maven2",
+    ],
+    version_conflict_policy = "pinned",
+)
+use_repo(maven, "metrics-reporter-cloudwatch_plugin_deps")
diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock
new file mode 100644
index 0000000..98ccbf8
--- /dev/null
+++ b/MODULE.bazel.lock
@@ -0,0 +1,538 @@
+{
+  "lockFileVersion": 26,
+  "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.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.21.0/MODULE.bazel": "ac1824ed5edf17dee2fdd4927ada30c9f8c3b520be1b5fd02a5da15bc10bff3e",
+    "https://bcr.bazel.build/modules/apple_support/1.21.1/MODULE.bazel": "5809fa3efab15d1f3c3c635af6974044bac8a4919c62238cce06acee8a8c11f1",
+    "https://bcr.bazel.build/modules/apple_support/1.24.2/MODULE.bazel": "0e62471818affb9f0b26f128831d5c40b074d32e6dda5a0d3852847215a41ca4",
+    "https://bcr.bazel.build/modules/apple_support/1.24.2/source.json": "2c22c9827093250406c5568da6c54e6fdf0ef06238def3d99c71b12feb057a8d",
+    "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.10.0/MODULE.bazel": "f75e8807570484a99be90abcd52b5e1f390362c258bcb73106f4544957a48101",
+    "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.4.1/MODULE.bazel": "e45b6bb2350aff3e442ae1111c555e27eac1d915e77775f6fdc4b351b758b5d7",
+    "https://bcr.bazel.build/modules/bazel_features/1.42.1/MODULE.bazel": "275a59b5406ff18c01739860aa70ad7ccb3cfb474579411decca11c93b951080",
+    "https://bcr.bazel.build/modules/bazel_features/1.42.1/source.json": "fcd4396b2df85f64f2b3bb436ad870793ecf39180f1d796f913cc9276d355309",
+    "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.8.2/source.json": "34a3c8bcf233b835eb74be9d628899bb32999d3e0eadef1947a0a562a2b16ffb",
+    "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/8.5.1/MODULE.bazel": "a35d9561b3fc5b18797c330793e99e3b834a473d5fbd3d7d7634aafc9bdb6f8f",
+    "https://bcr.bazel.build/modules/buildozer/8.5.1/source.json": "e3386e6ff4529f2442800dee47ad28d3e6487f36a1f75ae39ae56c70f0cd2fbd",
+    "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.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/4.1.0/MODULE.bazel": "76e10fd4a48038d3fc7c5dc6e63b7063bbf5304a2e3bd42edda6ec660eebea68",
+    "https://bcr.bazel.build/modules/rules_apple/4.1.0/source.json": "8ee81e1708756f81b343a5eb2b2f0b953f1d25c4ab3d4a68dc02754872e80715",
+    "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.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.2/MODULE.bazel": "557ddc3a96858ec0d465a87c0a931054d7dcfd6583af2c7ed3baf494407fd8d0",
+    "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.3.0/MODULE.bazel": "a97c7678c19f236a956ad260d59c86e10a463badb7eb2eda787490f4c969b963",
+    "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.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.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.1.0/MODULE.bazel": "ee63f27e36a3fada80342869361182f120a9819c74320e8e65b1e04ba0cd7a9d",
+    "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/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.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.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_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/1.0.0/MODULE.bazel": "898a3d999c22caa585eb062b600f88654bf92efb204fa346fb55f6f8edffca43",
+    "https://bcr.bazel.build/modules/rules_python/1.3.0/MODULE.bazel": "8361d57eafb67c09b75bf4bbe6be360e1b8f4f18118ab48037f2bd50aa2ccb13",
+    "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/1.7.0/source.json": "028a084b65dcf8f4dc4f82f8778dbe65df133f234b316828a82e060d81bdce32",
+    "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.4.0/MODULE.bazel": "1639617eb1ede28d774d967a738b4a68b0accb40650beadb57c21846beab5efd",
+    "https://bcr.bazel.build/modules/rules_swift/3.1.2/MODULE.bazel": "72c8f5cf9d26427cee6c76c8e3853eb46ce6b0412a081b2b6db6e8ad56267400",
+    "https://bcr.bazel.build/modules/rules_swift/3.1.2/source.json": "e85761f3098a6faf40b8187695e3de6d97944e98abd0d8ce579cb2daf6319a66",
+    "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.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.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.2/MODULE.bazel": "75aab2373a4bbe2a1260b9bf2a1ebbdbf872d3bd36f80bff058dccd82e89422f",
+    "https://bcr.bazel.build/modules/swift_argument_parser/1.3.1.2/source.json": "5fba48bbe0ba48761f9e9f75f92876cafb5d07c0ce059cc7a8027416de94a05b",
+    "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": {
+    "@@pybind11_bazel+//:internal_configure.bzl%internal_configure_extension": {
+      "general": {
+        "bzlTransitiveDigest": "b+RP7Sgl8KN0VHamrgTqzGLuYPcQ/Mo4ptNkkHUIIlA=",
+        "usagesDigest": "D1r3lfzMuUBFxgG8V6o0bQTLMk3GkaGOaPzw53wrwyw=",
+        "recordedInputs": [
+          "REPO_MAPPING:pybind11_bazel+,bazel_tools bazel_tools",
+          "FILE:@@pybind11_bazel+//MODULE.bazel e6f4c20442eaa7c90d7190d8dc539d0ab422f95c65a57cc59562170c58ae3d34"
+        ],
+        "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"
+              ]
+            }
+          }
+        }
+      }
+    },
+    "@@rules_android+//bzlmod_extensions:apksig.bzl%apksig_extension": {
+      "general": {
+        "bzlTransitiveDigest": "IiT2UgJGnHaKiyP2A1yh3U/QWN4W9g/Byolrm78hC/s=",
+        "usagesDigest": "zr/niBQ/s2fHozWAsg4vI70wAxcuFjG+QtM15qGkq9o=",
+        "recordedInputs": [
+          "REPO_MAPPING:rules_android+,bazel_tools bazel_tools"
+        ],
+        "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"
+            }
+          }
+        }
+      }
+    },
+    "@@rules_android+//bzlmod_extensions:com_android_dex.bzl%com_android_dex_extension": {
+      "general": {
+        "bzlTransitiveDigest": "toD4gOZwGNfBEM+xec6eRi3BM2Z9EZ4oQrORZQH3sNY=",
+        "usagesDigest": "c1Y/KGGjUYCyd8zNIVTUh1bynVXRFz6xGKaSCBpQANM=",
+        "recordedInputs": [
+          "REPO_MAPPING:rules_android+,bazel_tools bazel_tools"
+        ],
+        "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"
+            }
+          }
+        }
+      }
+    },
+    "@@rules_android+//rules/android_sdk_repository:rule.bzl%android_sdk_repository_extension": {
+      "general": {
+        "bzlTransitiveDigest": "+rMrzIrv7sImYmkbXJYv+gFpTJQ79X3MpwwMLI2A+oA=",
+        "usagesDigest": "iEGI2aNDMkHt9LXCdViLNUUOslpiVj2DrevWWXZEFnU=",
+        "recordedInputs": [],
+        "generatedRepoSpecs": {
+          "androidsdk": {
+            "repoRuleId": "@@rules_android+//rules/android_sdk_repository:rule.bzl%_android_sdk_repository",
+            "attributes": {}
+          }
+        }
+      }
+    },
+    "@@rules_python+//python/extensions:config.bzl%config": {
+      "general": {
+        "bzlTransitiveDigest": "iibnRYgg8LpcfmH7EAnVwYePC3jsVaJ6Id8XxUjSZps=",
+        "usagesDigest": "ZVSXMAGpD+xzVNPuvF1IoLBkty7TROO0+akMapt1pAg=",
+        "recordedInputs": [
+          "REPO_MAPPING:rules_python+,bazel_tools bazel_tools",
+          "REPO_MAPPING:rules_python+,pypi__build rules_python++config+pypi__build",
+          "REPO_MAPPING:rules_python+,pypi__click rules_python++config+pypi__click",
+          "REPO_MAPPING:rules_python+,pypi__colorama rules_python++config+pypi__colorama",
+          "REPO_MAPPING:rules_python+,pypi__importlib_metadata rules_python++config+pypi__importlib_metadata",
+          "REPO_MAPPING:rules_python+,pypi__installer rules_python++config+pypi__installer",
+          "REPO_MAPPING:rules_python+,pypi__more_itertools rules_python++config+pypi__more_itertools",
+          "REPO_MAPPING:rules_python+,pypi__packaging rules_python++config+pypi__packaging",
+          "REPO_MAPPING:rules_python+,pypi__pep517 rules_python++config+pypi__pep517",
+          "REPO_MAPPING:rules_python+,pypi__pip rules_python++config+pypi__pip",
+          "REPO_MAPPING:rules_python+,pypi__pip_tools rules_python++config+pypi__pip_tools",
+          "REPO_MAPPING:rules_python+,pypi__pyproject_hooks rules_python++config+pypi__pyproject_hooks",
+          "REPO_MAPPING:rules_python+,pypi__setuptools rules_python++config+pypi__setuptools",
+          "REPO_MAPPING:rules_python+,pypi__tomli rules_python++config+pypi__tomli",
+          "REPO_MAPPING:rules_python+,pypi__wheel rules_python++config+pypi__wheel",
+          "REPO_MAPPING:rules_python+,pypi__zipp rules_python++config+pypi__zipp"
+        ],
+        "generatedRepoSpecs": {
+          "rules_python_internal": {
+            "repoRuleId": "@@rules_python+//python/private:internal_config_repo.bzl%internal_config_repo",
+            "attributes": {
+              "transition_setting_generators": {},
+              "transition_settings": []
+            }
+          },
+          "pypi__build": {
+            "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive",
+            "attributes": {
+              "url": "https://files.pythonhosted.org/packages/e2/03/f3c8ba0a6b6e30d7d18c40faab90807c9bb5e9a1e3b2fe2008af624a9c97/build-1.2.1-py3-none-any.whl",
+              "sha256": "75e10f767a433d9a86e50d83f418e83efc18ede923ee5ff7df93b6cb0306c5d4",
+              "type": "zip",
+              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude to avoid non-determinism.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/*.pyc.*\",  # During pyc creation, temp files named *.pyc.NNN are created\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
+            }
+          },
+          "pypi__click": {
+            "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive",
+            "attributes": {
+              "url": "https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl",
+              "sha256": "ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28",
+              "type": "zip",
+              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude to avoid non-determinism.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/*.pyc.*\",  # During pyc creation, temp files named *.pyc.NNN are created\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
+            }
+          },
+          "pypi__colorama": {
+            "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive",
+            "attributes": {
+              "url": "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl",
+              "sha256": "4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6",
+              "type": "zip",
+              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude to avoid non-determinism.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/*.pyc.*\",  # During pyc creation, temp files named *.pyc.NNN are created\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
+            }
+          },
+          "pypi__importlib_metadata": {
+            "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive",
+            "attributes": {
+              "url": "https://files.pythonhosted.org/packages/2d/0a/679461c511447ffaf176567d5c496d1de27cbe34a87df6677d7171b2fbd4/importlib_metadata-7.1.0-py3-none-any.whl",
+              "sha256": "30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570",
+              "type": "zip",
+              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude to avoid non-determinism.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/*.pyc.*\",  # During pyc creation, temp files named *.pyc.NNN are created\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
+            }
+          },
+          "pypi__installer": {
+            "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive",
+            "attributes": {
+              "url": "https://files.pythonhosted.org/packages/e5/ca/1172b6638d52f2d6caa2dd262ec4c811ba59eee96d54a7701930726bce18/installer-0.7.0-py3-none-any.whl",
+              "sha256": "05d1933f0a5ba7d8d6296bb6d5018e7c94fa473ceb10cf198a92ccea19c27b53",
+              "type": "zip",
+              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude to avoid non-determinism.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/*.pyc.*\",  # During pyc creation, temp files named *.pyc.NNN are created\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
+            }
+          },
+          "pypi__more_itertools": {
+            "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive",
+            "attributes": {
+              "url": "https://files.pythonhosted.org/packages/50/e2/8e10e465ee3987bb7c9ab69efb91d867d93959095f4807db102d07995d94/more_itertools-10.2.0-py3-none-any.whl",
+              "sha256": "686b06abe565edfab151cb8fd385a05651e1fdf8f0a14191e4439283421f8684",
+              "type": "zip",
+              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude to avoid non-determinism.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/*.pyc.*\",  # During pyc creation, temp files named *.pyc.NNN are created\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
+            }
+          },
+          "pypi__packaging": {
+            "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive",
+            "attributes": {
+              "url": "https://files.pythonhosted.org/packages/49/df/1fceb2f8900f8639e278b056416d49134fb8d84c5942ffaa01ad34782422/packaging-24.0-py3-none-any.whl",
+              "sha256": "2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5",
+              "type": "zip",
+              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude to avoid non-determinism.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/*.pyc.*\",  # During pyc creation, temp files named *.pyc.NNN are created\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
+            }
+          },
+          "pypi__pep517": {
+            "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive",
+            "attributes": {
+              "url": "https://files.pythonhosted.org/packages/25/6e/ca4a5434eb0e502210f591b97537d322546e4833dcb4d470a48c375c5540/pep517-0.13.1-py3-none-any.whl",
+              "sha256": "31b206f67165b3536dd577c5c3f1518e8fbaf38cbc57efff8369a392feff1721",
+              "type": "zip",
+              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude to avoid non-determinism.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/*.pyc.*\",  # During pyc creation, temp files named *.pyc.NNN are created\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
+            }
+          },
+          "pypi__pip": {
+            "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive",
+            "attributes": {
+              "url": "https://files.pythonhosted.org/packages/8a/6a/19e9fe04fca059ccf770861c7d5721ab4c2aebc539889e97c7977528a53b/pip-24.0-py3-none-any.whl",
+              "sha256": "ba0d021a166865d2265246961bec0152ff124de910c5cc39f1156ce3fa7c69dc",
+              "type": "zip",
+              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude to avoid non-determinism.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/*.pyc.*\",  # During pyc creation, temp files named *.pyc.NNN are created\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
+            }
+          },
+          "pypi__pip_tools": {
+            "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive",
+            "attributes": {
+              "url": "https://files.pythonhosted.org/packages/0d/dc/38f4ce065e92c66f058ea7a368a9c5de4e702272b479c0992059f7693941/pip_tools-7.4.1-py3-none-any.whl",
+              "sha256": "4c690e5fbae2f21e87843e89c26191f0d9454f362d8acdbd695716493ec8b3a9",
+              "type": "zip",
+              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude to avoid non-determinism.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/*.pyc.*\",  # During pyc creation, temp files named *.pyc.NNN are created\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
+            }
+          },
+          "pypi__pyproject_hooks": {
+            "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive",
+            "attributes": {
+              "url": "https://files.pythonhosted.org/packages/ae/f3/431b9d5fe7d14af7a32340792ef43b8a714e7726f1d7b69cc4e8e7a3f1d7/pyproject_hooks-1.1.0-py3-none-any.whl",
+              "sha256": "7ceeefe9aec63a1064c18d939bdc3adf2d8aa1988a510afec15151578b232aa2",
+              "type": "zip",
+              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude to avoid non-determinism.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/*.pyc.*\",  # During pyc creation, temp files named *.pyc.NNN are created\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
+            }
+          },
+          "pypi__setuptools": {
+            "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive",
+            "attributes": {
+              "url": "https://files.pythonhosted.org/packages/90/99/158ad0609729111163fc1f674a5a42f2605371a4cf036d0441070e2f7455/setuptools-78.1.1-py3-none-any.whl",
+              "sha256": "c3a9c4211ff4c309edb8b8c4f1cbfa7ae324c4ba9f91ff254e3d305b9fd54561",
+              "type": "zip",
+              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude to avoid non-determinism.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/*.pyc.*\",  # During pyc creation, temp files named *.pyc.NNN are created\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
+            }
+          },
+          "pypi__tomli": {
+            "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive",
+            "attributes": {
+              "url": "https://files.pythonhosted.org/packages/97/75/10a9ebee3fd790d20926a90a2547f0bf78f371b2f13aa822c759680ca7b9/tomli-2.0.1-py3-none-any.whl",
+              "sha256": "939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc",
+              "type": "zip",
+              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude to avoid non-determinism.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/*.pyc.*\",  # During pyc creation, temp files named *.pyc.NNN are created\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
+            }
+          },
+          "pypi__wheel": {
+            "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive",
+            "attributes": {
+              "url": "https://files.pythonhosted.org/packages/7d/cd/d7460c9a869b16c3dd4e1e403cce337df165368c71d6af229a74699622ce/wheel-0.43.0-py3-none-any.whl",
+              "sha256": "55c570405f142630c6b9f72fe09d9b67cf1477fcf543ae5b8dcb1f5b7377da81",
+              "type": "zip",
+              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude to avoid non-determinism.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/*.pyc.*\",  # During pyc creation, temp files named *.pyc.NNN are created\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
+            }
+          },
+          "pypi__zipp": {
+            "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive",
+            "attributes": {
+              "url": "https://files.pythonhosted.org/packages/da/55/a03fd7240714916507e1fcf7ae355bd9d9ed2e6db492595f1a67f61681be/zipp-3.18.2-py3-none-any.whl",
+              "sha256": "dce197b859eb796242b0622af1b8beb0a722d52aa2f57133ead08edd5bf5374e",
+              "type": "zip",
+              "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n    name = \"lib\",\n    srcs = glob([\"**/*.py\"]),\n    data = glob([\"**/*\"], exclude=[\n        # These entries include those put into user-installed dependencies by\n        # data_exclude to avoid non-determinism.\n        \"**/*.py\",\n        \"**/*.pyc\",\n        \"**/*.pyc.*\",  # During pyc creation, temp files named *.pyc.NNN are created\n        \"**/*.dist-info/RECORD\",\n        \"BUILD\",\n        \"WORKSPACE\",\n    ]),\n    # This makes this directory a top-level in the python import\n    # search path for anything that depends on this.\n    imports = [\".\"],\n)\n"
+            }
+          }
+        }
+      }
+    },
+    "@@rules_python+//python/uv:uv.bzl%uv": {
+      "general": {
+        "bzlTransitiveDigest": "ijW9KS7qsIY+yBVvJ+Nr1mzwQox09j13DnE3iIwaeTM=",
+        "usagesDigest": "H8dQoNZcoqP+Mu0tHZTi4KHATzvNkM5ePuEqoQdklIU=",
+        "recordedInputs": [
+          "REPO_MAPPING:rules_python+,bazel_tools bazel_tools",
+          "REPO_MAPPING:rules_python+,platforms platforms"
+        ],
+        "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": {}
+            }
+          }
+        }
+      }
+    }
+  },
+  "facts": {}
+}
diff --git a/external_plugin_deps.MODULE.bazel b/external_plugin_deps.MODULE.bazel
new file mode 100644
index 0000000..bb80754
--- /dev/null
+++ b/external_plugin_deps.MODULE.bazel
@@ -0,0 +1,19 @@
+# Module fragment for wiring this plugin's Bazel module into the
+# Gerrit in-tree build when using Bzlmod.
+#
+# This file is included from Gerrit's plugins/external_plugin_deps.MODULE.bazel.
+# It wires the plugin module into the root dependency graph and exposes
+# any repositories it creates (for example via rules_jvm_external).
+#
+# NOTE: This file must be self-contained: bindings do not cross include()
+# boundaries, so it re-declares the rules_jvm_external extension handle.
+
+maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")
+
+bazel_dep(name = "gerrit-metrics-reporter-cloudwatch")
+local_path_override(
+    module_name = "gerrit-metrics-reporter-cloudwatch",
+    path = "plugins/metrics-reporter-cloudwatch",
+)
+
+use_repo(maven, "metrics-reporter-cloudwatch_plugin_deps")
diff --git a/external_plugin_deps.bzl b/external_plugin_deps.bzl
deleted file mode 100644
index b20ee27..0000000
--- a/external_plugin_deps.bzl
+++ /dev/null
@@ -1,123 +0,0 @@
-load("//tools/bzl:maven_jar.bzl", "maven_jar")
-
-def external_plugin_deps():
-  maven_jar(
-    name = 'dropwizard_metrics_cloudwatch',
-    artifact = 'io.github.azagniotov:dropwizard-metrics-cloudwatch:2.0.5',
-    sha1 = '7fed805d8fb31e54d75597a2b4f5b958eecad0ab',
-  )
-
-  maven_jar(
-    name = 'dropwizard_metrics_jvm',
-    artifact = 'io.dropwizard.metrics:metrics-jvm:4.1.10.1',
-    sha1 = '88d9e476c2944a9f0158474dc2b7064c96e26317',
-  )
-
-  maven_jar(
-    name = 'reactivestreams',
-    artifact = 'org.reactivestreams:reactive-streams:1.0.3',
-    sha1 = 'd9fb7a7926ffa635b3dcaa5049fb2bfa25b3e7d0',
-  )
-
-  maven_jar(
-    name = 'awssdk_cloudwatch',
-    artifact = 'software.amazon.awssdk:cloudwatch:2.13.54',
-    sha1 = '46e4f3dd21f1b6a61f08ae7195f0f025e207af5f',
-  )
-
-  maven_jar(
-    name = 'awssdk_auth',
-    artifact = 'software.amazon.awssdk:auth:2.13.54',
-    sha1 = '68b522302874b580ecd5563fe58e492136a24c81',
-  )
-
-  maven_jar(
-    name = 'awssdk_sdk_core',
-    artifact = 'software.amazon.awssdk:sdk-core:2.13.54',
-    sha1 = '10163b0cbe76600891e74516b958ee7628e70e2a',
-  )
-
-  maven_jar(
-    name = 'awssdk_aws_core',
-    artifact = 'software.amazon.awssdk:aws-core:2.13.54',
-    sha1 = '356c0c26afa7fb2a1edb921fc16e9de6a533f559',
-  )
-
-  maven_jar(
-    name = 'awssdk_profiles',
-    artifact = 'software.amazon.awssdk:profiles:2.13.54',
-    sha1 = '705146ffaa1aab5442791d57238b4ba304787e16',
-  )
-
-  maven_jar(
-    name = 'awssdk_regions',
-    artifact = 'software.amazon.awssdk:regions:2.13.54',
-    sha1 = '0de5b12c51d5332720fcb32581af3bd3ff88b21c',
-  )
-
-  maven_jar(
-    name = 'awssdk_metrics_spi',
-    artifact = 'software.amazon.awssdk:metrics-spi:2.13.54',
-    sha1 = '0610a43ba773be1a05fdf05416bb671d0eaa9916',
-  )
-
-  maven_jar(
-    name = 'awssdk_utils',
-    artifact = 'software.amazon.awssdk:utils:2.13.54',
-    sha1 = 'dae698acd98027117a13550f106b1ea6539d076a',
-  )
-
-  maven_jar(
-    name = 'awssdk_http_client_spi',
-    artifact = 'software.amazon.awssdk:http-client-spi:2.13.54',
-    sha1 = 'bdecd06aa2793f1366b1eeaa385314f22336fddb',
-  )
-
-  maven_jar(
-    name = 'awssdk_query_protocol',
-    artifact = 'software.amazon.awssdk:aws-query-protocol:2.13.54',
-    sha1 = '2145252d0352b89ee59d3a4fab6b6ea03b032eb1',
-  )
-
-  maven_jar(
-    name = 'awssdk_protocol_core',
-    artifact = 'software.amazon.awssdk:protocol-core:2.13.54',
-    sha1 = '28bc71e1450dd1515a251d74511652ccf0f2af01',
-  )
-
-
-  maven_jar(
-    name = 'awssdk_netty_nio_client',
-    artifact = 'software.amazon.awssdk:netty-nio-client:2.13.54',
-    sha1 = '03de0e583e6b244743915640fa9d00d68c5fd077',
-  )
-
-  maven_jar(
-    name = 'io_netty_all',
-    artifact = 'io.netty:netty-all:4.1.51.Final',
-    sha1 = '5e5f741acc4c211ac4572c31c7e5277ec465e4e4',
-  )
-
-  maven_jar(
-      name = 'aws_java_sdk_core',
-      artifact = 'com.amazonaws:aws-java-sdk-core:1.11.820',
-      sha1 = '8902eefbbcd087a89e57a3e88c8e383ed0d7bab9',
-    )
-
-  maven_jar(
-      name = 'jackson_core',
-      artifact = 'com.fasterxml.jackson.core:jackson-core:2.11.1',
-      sha1 = '8b02908d53183fdf9758e7e20f2fdee87613a962',
-    )
-
-  maven_jar(
-      name = 'jackson_annotations',
-      artifact = 'com.fasterxml.jackson.core:jackson-annotations:2.11.1',
-      sha1 = 'f083c4ac0fb8b3c6b8d5b62cd54122228ef62cee',
-    )
-
-  maven_jar(
-      name = 'jackson_databind',
-      artifact = 'com.fasterxml.jackson.core:jackson-databind:2.11.1',
-      sha1 = 'f5d24a1dcf46000316d40c8c61196c48dd5677c5',
-    )
diff --git a/metrics-reporter-cloudwatch_plugin_deps.lock.json b/metrics-reporter-cloudwatch_plugin_deps.lock.json
new file mode 100755
index 0000000..98c6571
--- /dev/null
+++ b/metrics-reporter-cloudwatch_plugin_deps.lock.json
@@ -0,0 +1,1148 @@
+{
+  "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL",
+  "__INPUT_ARTIFACTS_HASH": {
+    "com.amazonaws:aws-java-sdk-core": -760476224,
+    "com.fasterxml.jackson.core:jackson-annotations": -2040685232,
+    "com.fasterxml.jackson.core:jackson-core": -468348107,
+    "com.fasterxml.jackson.core:jackson-databind": 1020289021,
+    "commons-codec:commons-codec": 284109768,
+    "commons-logging:commons-logging": 2056692342,
+    "io.dropwizard.metrics:metrics-core": 923383316,
+    "io.dropwizard.metrics:metrics-jvm": -778571489,
+    "io.github.azagniotov:dropwizard-metrics-cloudwatch": 896595939,
+    "io.netty:netty-all": -1377298747,
+    "org.apache.httpcomponents:httpclient": 1407535949,
+    "org.apache.httpcomponents:httpcore": -1485416135,
+    "org.reactivestreams:reactive-streams": -1978429299,
+    "org.slf4j:slf4j-api": 2145585153,
+    "repositories": -1949687017,
+    "software.amazon.awssdk:auth": -1409648089,
+    "software.amazon.awssdk:aws-core": 757004096,
+    "software.amazon.awssdk:aws-query-protocol": -890728094,
+    "software.amazon.awssdk:cloudwatch": 1516118933,
+    "software.amazon.awssdk:http-client-spi": 689681558,
+    "software.amazon.awssdk:metrics-spi": 1579132259,
+    "software.amazon.awssdk:netty-nio-client": -164699328,
+    "software.amazon.awssdk:profiles": 1274097317,
+    "software.amazon.awssdk:protocol-core": -990231087,
+    "software.amazon.awssdk:regions": -1671392090,
+    "software.amazon.awssdk:sdk-core": 1366147645,
+    "software.amazon.awssdk:utils": 316003828
+  },
+  "__RESOLVED_ARTIFACTS_HASH": {
+    "com.amazonaws:aws-java-sdk-core": 327331703,
+    "com.amazonaws:aws-java-sdk-core:jar:sources": 1081517090,
+    "com.fasterxml.jackson.core:jackson-annotations": -265492688,
+    "com.fasterxml.jackson.core:jackson-annotations:jar:sources": -1309337528,
+    "com.fasterxml.jackson.core:jackson-core": -2089765191,
+    "com.fasterxml.jackson.core:jackson-core:jar:sources": 751890736,
+    "com.fasterxml.jackson.core:jackson-databind": -1707001528,
+    "com.fasterxml.jackson.core:jackson-databind:jar:sources": -340298111,
+    "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": -493384970,
+    "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:jar:sources": 1658580724,
+    "com.typesafe.netty:netty-reactive-streams": 366732780,
+    "com.typesafe.netty:netty-reactive-streams-http": 424467685,
+    "com.typesafe.netty:netty-reactive-streams-http:jar:sources": -1159578146,
+    "com.typesafe.netty:netty-reactive-streams:jar:sources": -1825536412,
+    "io.dropwizard.metrics:metrics-jvm": 644109776,
+    "io.dropwizard.metrics:metrics-jvm:jar:sources": -175207355,
+    "io.github.azagniotov:dropwizard-metrics-cloudwatch": -134217073,
+    "io.github.azagniotov:dropwizard-metrics-cloudwatch:jar:sources": -929254740,
+    "io.netty:netty-all": -1427789709,
+    "io.netty:netty-all:jar:sources": 1397454162,
+    "io.netty:netty-buffer": -1183579524,
+    "io.netty:netty-buffer:jar:sources": 1307425966,
+    "io.netty:netty-codec": -1758678419,
+    "io.netty:netty-codec-http": 1263101516,
+    "io.netty:netty-codec-http2": -823053207,
+    "io.netty:netty-codec-http2:jar:sources": 952501689,
+    "io.netty:netty-codec-http:jar:sources": -1100008945,
+    "io.netty:netty-codec:jar:sources": 1817405911,
+    "io.netty:netty-common": -1695197269,
+    "io.netty:netty-common:jar:sources": -1310389622,
+    "io.netty:netty-handler": 1475023703,
+    "io.netty:netty-handler:jar:sources": 933948975,
+    "io.netty:netty-resolver": -1195176123,
+    "io.netty:netty-resolver:jar:sources": -348362988,
+    "io.netty:netty-transport": -238110451,
+    "io.netty:netty-transport-native-epoll:jar:linux-x86_64": 692223447,
+    "io.netty:netty-transport-native-epoll:jar:sources": -316987587,
+    "io.netty:netty-transport-native-unix-common": 1034469134,
+    "io.netty:netty-transport-native-unix-common:jar:sources": -278230020,
+    "io.netty:netty-transport:jar:sources": -674195678,
+    "joda-time:joda-time": 312773828,
+    "joda-time:joda-time:jar:sources": 1054719939,
+    "org.reactivestreams:reactive-streams": -164947187,
+    "org.reactivestreams:reactive-streams:jar:sources": -122882922,
+    "software.amazon.awssdk:annotations": -719618287,
+    "software.amazon.awssdk:annotations:jar:sources": -786016535,
+    "software.amazon.awssdk:apache-client": -745202236,
+    "software.amazon.awssdk:apache-client:jar:sources": 284554749,
+    "software.amazon.awssdk:auth": 558065957,
+    "software.amazon.awssdk:auth:jar:sources": 2095280958,
+    "software.amazon.awssdk:aws-core": 2142298177,
+    "software.amazon.awssdk:aws-core:jar:sources": -435644880,
+    "software.amazon.awssdk:aws-query-protocol": 163939277,
+    "software.amazon.awssdk:aws-query-protocol:jar:sources": 963631733,
+    "software.amazon.awssdk:cloudwatch": 176014125,
+    "software.amazon.awssdk:cloudwatch:jar:sources": 498669100,
+    "software.amazon.awssdk:http-client-spi": 354119468,
+    "software.amazon.awssdk:http-client-spi:jar:sources": 294335501,
+    "software.amazon.awssdk:metrics-spi": 996965275,
+    "software.amazon.awssdk:metrics-spi:jar:sources": -450488106,
+    "software.amazon.awssdk:netty-nio-client": -122235117,
+    "software.amazon.awssdk:netty-nio-client:jar:sources": 994871979,
+    "software.amazon.awssdk:profiles": 440606829,
+    "software.amazon.awssdk:profiles:jar:sources": -498771349,
+    "software.amazon.awssdk:protocol-core": -1168528563,
+    "software.amazon.awssdk:protocol-core:jar:sources": 584186363,
+    "software.amazon.awssdk:regions": 1425695416,
+    "software.amazon.awssdk:regions:jar:sources": 42321421,
+    "software.amazon.awssdk:sdk-core": 1806146174,
+    "software.amazon.awssdk:sdk-core:jar:sources": 1285808504,
+    "software.amazon.awssdk:utils": 766747316,
+    "software.amazon.awssdk:utils:jar:sources": 1365566185,
+    "software.amazon.eventstream:eventstream": 666815114,
+    "software.amazon.eventstream:eventstream:jar:sources": -247869379,
+    "software.amazon.ion:ion-java": -657906253,
+    "software.amazon.ion:ion-java:jar:sources": -2061161049
+  },
+  "artifacts": {
+    "com.amazonaws:aws-java-sdk-core": {
+      "shasums": {
+        "jar": "6fc5ddf39563078f719560ca1d3ba6db71100e6d3d786b7ddc65db434983b8e6",
+        "sources": "86c085b838587816b9122e1b2d32ae9e4de50b9d7bd4a7beae72a8a52ed6884c"
+      },
+      "version": "1.11.820"
+    },
+    "com.fasterxml.jackson.core:jackson-annotations": {
+      "shasums": {
+        "jar": "045e61b0b4a347d12b86cf2d0e776dea6a79204ae12095c2b08906d29e594a5a",
+        "sources": "1a50e0b9defef780686adbb47b76266f8c054175b7f03eae67bdf31a15d55ef4"
+      },
+      "version": "2.11.1"
+    },
+    "com.fasterxml.jackson.core:jackson-core": {
+      "shasums": {
+        "jar": "25461dbfb431cb48e30118a0277671de8e8a56a3b1198492e24b2fb605d7575e",
+        "sources": "50af1fb597217fa79e1648194859a3018fd712b4d641eefcc2bbe006908a08bd"
+      },
+      "version": "2.11.1"
+    },
+    "com.fasterxml.jackson.core:jackson-databind": {
+      "shasums": {
+        "jar": "b486be39d9ff4ae8bc7782792f2ea70f3a7bdaee5bd13780d295d7674231afd6",
+        "sources": "16a42b92643cbffe0a0f2432794009a9b11b85dc5cdeea5dc7e5008a4d065a54"
+      },
+      "version": "2.11.1"
+    },
+    "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
+      "shasums": {
+        "jar": "956a0fb9186a796b8a6548909da1ee55004279647e261c7f540e5d49d4f199bf",
+        "sources": "7edf31f544892b2acda0b4e361125ab187768009f14c83232eaf8f0b8d401fe1"
+      },
+      "version": "2.6.7"
+    },
+    "com.typesafe.netty:netty-reactive-streams": {
+      "shasums": {
+        "jar": "eafc52d500b49e891db095ee7baac0420aea8a97015ab7671ba1f1ccabf799d2",
+        "sources": "76df17cc7c4fac9c470e557b5cca224df51ba878ec9fd3fd8f0f89878cbf98ab"
+      },
+      "version": "2.0.4"
+    },
+    "com.typesafe.netty:netty-reactive-streams-http": {
+      "shasums": {
+        "jar": "5169968101d8e17a7c4cde324768b8595ba46031884a7dece742a8ac32e9f070",
+        "sources": "9efcb24b1d35e7533f6808aea806c7d77b51b9c1235fa4086f96861722e7c20a"
+      },
+      "version": "2.0.4"
+    },
+    "io.dropwizard.metrics:metrics-jvm": {
+      "shasums": {
+        "jar": "e4e425878241cd61056c5bc35e54afe3bf3aadf00079eb600475b574e4eb3d07",
+        "sources": "cc6c6abecdc4b5b01778b93d72c9a615b59d4f5e18bd00ff8e7e4e04258afc75"
+      },
+      "version": "4.1.10.1"
+    },
+    "io.github.azagniotov:dropwizard-metrics-cloudwatch": {
+      "shasums": {
+        "jar": "22b98726e3d085034289dfdf23648054bd50c6137bef3d7656536f13490061ed",
+        "sources": "9f422f911bbb872dd864ef4d91f1c47abb630cd25378cc5d1fdaaf9fda2773c5"
+      },
+      "version": "2.0.5"
+    },
+    "io.netty:netty-all": {
+      "shasums": {
+        "jar": "eb8fac6a0bf6885e16fdd453f7f362cdfffa730221c4906721bbfab46fe1f6bf",
+        "sources": "5a56c76a7bbd6df8befb19022258ca9a1ae8a1191d4ca9e1df178a1b9ddc8420"
+      },
+      "version": "4.1.51.Final"
+    },
+    "io.netty:netty-buffer": {
+      "shasums": {
+        "jar": "7909e51c39c5a1fcc74b6327cf550c636104e232281b8097c71a65c8fa9d14ba",
+        "sources": "1e6652249a4546d824cd7cd2ff043374d56ab98bacfac9dfc74c83ea96536f12"
+      },
+      "version": "4.1.46.Final"
+    },
+    "io.netty:netty-codec": {
+      "shasums": {
+        "jar": "38bed4165d133196784b45604abd99226e82484817808f6d0c588ea3af411533",
+        "sources": "c7413fbaa899a679b93f9067ec3c768edfcae37eabdbbe267643331768cff906"
+      },
+      "version": "4.1.46.Final"
+    },
+    "io.netty:netty-codec-http": {
+      "shasums": {
+        "jar": "1cc52520f283f14d53f88c513f4c1fac8b74a91a1001e34dce7bf00ad8850f4a",
+        "sources": "9f1ccbf77f3084c7232fc8b6be03105f480f7917ac04126ccb0d5b5a5a321361"
+      },
+      "version": "4.1.46.Final"
+    },
+    "io.netty:netty-codec-http2": {
+      "shasums": {
+        "jar": "ae7f77ead322df050e75084cc4cbca63d29d08b5ff073fc4238509f0d9ad3b53",
+        "sources": "06e19491885bb8060ea401622e6ce8258809dbbfda3e78e918101b24ffc8b395"
+      },
+      "version": "4.1.46.Final"
+    },
+    "io.netty:netty-common": {
+      "shasums": {
+        "jar": "d9b9024b36d46d97435a7a0f5960d53777b32e5fdf48345cba2a3ddd41b5ca1f",
+        "sources": "d8a26e7caef43841ee550a3944afa4f970f4d04af76b7c6109a05e8ed41113be"
+      },
+      "version": "4.1.46.Final"
+    },
+    "io.netty:netty-handler": {
+      "shasums": {
+        "jar": "05a5aa3f7df54ac496761bf81c62401b97609318f3d60556bf4efc3075e6407a",
+        "sources": "cd235fc403af9f609daa42a03415f533b93a903867c95fbe32d7470d3b95d3fa"
+      },
+      "version": "4.1.46.Final"
+    },
+    "io.netty:netty-resolver": {
+      "shasums": {
+        "jar": "fe7e3b7c1f664597b6bc0fee81f2be11a92736d6f9772f6b4ba9b765874a8611",
+        "sources": "6dc812dffed6558bf7cadc3c207f41bb3de668e8f7eec0e822bb4ff049b0d442"
+      },
+      "version": "4.1.46.Final"
+    },
+    "io.netty:netty-transport": {
+      "shasums": {
+        "jar": "1560e06eedad6c8f9c179071e8eb410e99c8708b1c7c082f6336aa2db93e2e7b",
+        "sources": "6a414bfc616fce5164d233781b885d224200eadef5ed128db9e039c8772a3e98"
+      },
+      "version": "4.1.46.Final"
+    },
+    "io.netty:netty-transport-native-epoll": {
+      "shasums": {
+        "linux-x86_64": "5a2a688d16d914e9193428e13cece79c900b7bd317d46f9094576a0b75e6a65e",
+        "sources": "65108edb924a6fd787dd7d6805f4e7b2813b61969dd22109174381e219fd16e0"
+      },
+      "version": "4.1.46.Final"
+    },
+    "io.netty:netty-transport-native-unix-common": {
+      "shasums": {
+        "jar": "e901e19597dc5947a6d11f8d0f05fa7e8a33073c69318328f4cf2c2603adc688",
+        "sources": "49bec4a1d6125fbe48c937c471ad39ba373909eac2652f77de962f03ed88256c"
+      },
+      "version": "4.1.46.Final"
+    },
+    "joda-time:joda-time": {
+      "shasums": {
+        "jar": "b4670b95f75957c974284c5f3ada966040be2578f643c5c6083d262162061fa2",
+        "sources": "59086b3e0608df2eac1b21063d6bae37851173e24efc4cacd6705326408723d9"
+      },
+      "version": "2.8.1"
+    },
+    "org.reactivestreams:reactive-streams": {
+      "shasums": {
+        "jar": "1dee0481072d19c929b623e155e14d2f6085dc011529a0a0dbefc84cf571d865",
+        "sources": "d5b4070a22c9b1ca5b9b5aa668466bcca391dbe5d5fe8311c300765c1621feba"
+      },
+      "version": "1.0.3"
+    },
+    "software.amazon.awssdk:annotations": {
+      "shasums": {
+        "jar": "ef2e45673b603c2b526162ddd84ac31e891cc6e51f5ead51f64ad82013be6fb7",
+        "sources": "9dea74b7ea1c922d1ed97062fca1098cf9adffe50ed4b0b7d6fe0ed61c4d66f0"
+      },
+      "version": "2.13.54"
+    },
+    "software.amazon.awssdk:apache-client": {
+      "shasums": {
+        "jar": "2aa74c68734e85c2b45a9f3320c66ff1782368c8df9da996153768346bacf82e",
+        "sources": "7612335678e60746f887accf8ece87f0aa20ee64b664e7215cd31f6adcb7fe64"
+      },
+      "version": "2.13.54"
+    },
+    "software.amazon.awssdk:auth": {
+      "shasums": {
+        "jar": "08fb908056804b9a970e2eed6d20f5f9623fec9f61cdb0793cacb36744e9aced",
+        "sources": "4a6235aaf009ba5a4dd7c2269cbc87abbc81c588b006815aba392e812072d79e"
+      },
+      "version": "2.13.54"
+    },
+    "software.amazon.awssdk:aws-core": {
+      "shasums": {
+        "jar": "ba420ffa3e9a8401d07b37181a9610f9bf917347e0341b3fdd529686a24250e4",
+        "sources": "fb890be2167b45f73a11cfb3cb6339871befad5eb69c0cb63f2239e87203089f"
+      },
+      "version": "2.13.54"
+    },
+    "software.amazon.awssdk:aws-query-protocol": {
+      "shasums": {
+        "jar": "6b99b18a4383a77d9170fa0e7470365f62dcd762be1dab248d9aa4fabc8945ab",
+        "sources": "872ba0fd3922e072b9f25bfe2d95110c7e286f3eebf9da483c0d584355fd60f8"
+      },
+      "version": "2.13.54"
+    },
+    "software.amazon.awssdk:cloudwatch": {
+      "shasums": {
+        "jar": "eec64f58a166ad73522d353311de3d0d2f0f3e74ac2271f7a452ff66f8dc471e",
+        "sources": "0c0dfa0ea83d8d19a672302adaf02a86127b08fc46b6db26c235deaaca29b34f"
+      },
+      "version": "2.13.54"
+    },
+    "software.amazon.awssdk:http-client-spi": {
+      "shasums": {
+        "jar": "a2325ca39c7627d982b99e0485b6292671200b0e2e5e56128f7bb5db3aea9472",
+        "sources": "d66e4357c1a62311cddfac57f5c6510722dfd10973d9a9423caa56c1ce48f931"
+      },
+      "version": "2.13.54"
+    },
+    "software.amazon.awssdk:metrics-spi": {
+      "shasums": {
+        "jar": "2b8d58fac40695c98a091d1c28df276e6fd4edee83d5eaa582f40be60cd8ff6b",
+        "sources": "53fffb3e94f89d85c931aae283f1f6a472b15f8476b658291c4f2652399ddb30"
+      },
+      "version": "2.13.54"
+    },
+    "software.amazon.awssdk:netty-nio-client": {
+      "shasums": {
+        "jar": "7900285a9bda1d9c82f6843cf8b6e1b0ab0bc4daaa6def55c4a2030c25db6560",
+        "sources": "76be7708db9abef02114139ed3f903f8a2f42a61eb7cb5c2bff2f7753122ece7"
+      },
+      "version": "2.13.54"
+    },
+    "software.amazon.awssdk:profiles": {
+      "shasums": {
+        "jar": "3fb8a4d4450ba851d42e29a70361be4cef29df20bfd0dab3e5a1aea986ae183c",
+        "sources": "805c8ed4078ad9c63eb114f8d69dd6bc5a9122ade83585d92e46c6014d38af3f"
+      },
+      "version": "2.13.54"
+    },
+    "software.amazon.awssdk:protocol-core": {
+      "shasums": {
+        "jar": "59b2e3b644ca0cf1192ca3ef8a0f375534992546fa3db2fb79abd2a5363a9a18",
+        "sources": "726343ffd1b4d36171f9084a7b665637e14cdd4a44ff12e9d77240e16579fea1"
+      },
+      "version": "2.13.54"
+    },
+    "software.amazon.awssdk:regions": {
+      "shasums": {
+        "jar": "0bb36e0329c00edcb8c31b1c569d930723210b9ff38faee9453179bc4ce31e31",
+        "sources": "1b700748f44397270e933eaf440c6229cfd49038a7356071e222582bbb18818c"
+      },
+      "version": "2.13.54"
+    },
+    "software.amazon.awssdk:sdk-core": {
+      "shasums": {
+        "jar": "dacd0758a5c3c44f745e3fbd554f7e88688944520b5e39f0185d70f8e4010ffa",
+        "sources": "3bac989b3781ce1ceb23eb549b148771d5e12bdfa8cfec34eafa32e0525d2f11"
+      },
+      "version": "2.13.54"
+    },
+    "software.amazon.awssdk:utils": {
+      "shasums": {
+        "jar": "ce382ffc191e2ee8c0680a95371f878e9e1cff76da1d00c8ce6cb08fb0711037",
+        "sources": "bd92196ca9a709e103a08ab10adcc6b51d79b84921b109f58ea5e368b93ee5b2"
+      },
+      "version": "2.13.54"
+    },
+    "software.amazon.eventstream:eventstream": {
+      "shasums": {
+        "jar": "0c37d8e696117f02c302191b8110b0d0eb20fa412fce34c3a269ec73c16ce822",
+        "sources": "8953ddf1af1680008d7ae96877df9fcfff9b8d909998d5c52519dbd583215636"
+      },
+      "version": "1.0.1"
+    },
+    "software.amazon.ion:ion-java": {
+      "shasums": {
+        "jar": "0d127b205a1fce0abc2a3757a041748651bc66c15cf4c059bac5833b27d471a5",
+        "sources": "d827fc9775443697bbcdfeb8ea2d3d75bf5ad7f2ca540dabda1a5f83cd0a39de"
+      },
+      "version": "1.0.2"
+    }
+  },
+  "dependencies": {
+    "com.amazonaws:aws-java-sdk-core": [
+      "com.fasterxml.jackson.core:jackson-databind",
+      "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor",
+      "joda-time:joda-time",
+      "software.amazon.ion:ion-java"
+    ],
+    "com.fasterxml.jackson.core:jackson-databind": [
+      "com.fasterxml.jackson.core:jackson-annotations",
+      "com.fasterxml.jackson.core:jackson-core"
+    ],
+    "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": [
+      "com.fasterxml.jackson.core:jackson-core"
+    ],
+    "com.typesafe.netty:netty-reactive-streams": [
+      "io.netty:netty-handler",
+      "org.reactivestreams:reactive-streams"
+    ],
+    "com.typesafe.netty:netty-reactive-streams-http": [
+      "com.typesafe.netty:netty-reactive-streams",
+      "io.netty:netty-codec-http"
+    ],
+    "io.github.azagniotov:dropwizard-metrics-cloudwatch": [
+      "io.dropwizard.metrics:metrics-jvm",
+      "software.amazon.awssdk:cloudwatch"
+    ],
+    "io.netty:netty-buffer": [
+      "io.netty:netty-common"
+    ],
+    "io.netty:netty-codec": [
+      "io.netty:netty-buffer",
+      "io.netty:netty-common",
+      "io.netty:netty-transport"
+    ],
+    "io.netty:netty-codec-http": [
+      "io.netty:netty-buffer",
+      "io.netty:netty-codec",
+      "io.netty:netty-common",
+      "io.netty:netty-handler",
+      "io.netty:netty-transport"
+    ],
+    "io.netty:netty-codec-http2": [
+      "io.netty:netty-buffer",
+      "io.netty:netty-codec",
+      "io.netty:netty-codec-http",
+      "io.netty:netty-common",
+      "io.netty:netty-handler",
+      "io.netty:netty-transport"
+    ],
+    "io.netty:netty-handler": [
+      "io.netty:netty-buffer",
+      "io.netty:netty-codec",
+      "io.netty:netty-common",
+      "io.netty:netty-resolver",
+      "io.netty:netty-transport"
+    ],
+    "io.netty:netty-resolver": [
+      "io.netty:netty-common"
+    ],
+    "io.netty:netty-transport": [
+      "io.netty:netty-buffer",
+      "io.netty:netty-common",
+      "io.netty:netty-resolver"
+    ],
+    "io.netty:netty-transport-native-epoll:jar:linux-x86_64": [
+      "io.netty:netty-buffer",
+      "io.netty:netty-common",
+      "io.netty:netty-transport",
+      "io.netty:netty-transport-native-unix-common"
+    ],
+    "io.netty:netty-transport-native-unix-common": [
+      "io.netty:netty-buffer",
+      "io.netty:netty-common",
+      "io.netty:netty-transport"
+    ],
+    "software.amazon.awssdk:apache-client": [
+      "software.amazon.awssdk:annotations",
+      "software.amazon.awssdk:http-client-spi",
+      "software.amazon.awssdk:metrics-spi",
+      "software.amazon.awssdk:utils"
+    ],
+    "software.amazon.awssdk:auth": [
+      "com.fasterxml.jackson.core:jackson-databind",
+      "software.amazon.awssdk:annotations",
+      "software.amazon.awssdk:http-client-spi",
+      "software.amazon.awssdk:profiles",
+      "software.amazon.awssdk:regions",
+      "software.amazon.awssdk:sdk-core",
+      "software.amazon.awssdk:utils",
+      "software.amazon.eventstream:eventstream"
+    ],
+    "software.amazon.awssdk:aws-core": [
+      "software.amazon.awssdk:annotations",
+      "software.amazon.awssdk:auth",
+      "software.amazon.awssdk:http-client-spi",
+      "software.amazon.awssdk:metrics-spi",
+      "software.amazon.awssdk:profiles",
+      "software.amazon.awssdk:regions",
+      "software.amazon.awssdk:sdk-core",
+      "software.amazon.awssdk:utils",
+      "software.amazon.eventstream:eventstream"
+    ],
+    "software.amazon.awssdk:aws-query-protocol": [
+      "software.amazon.awssdk:annotations",
+      "software.amazon.awssdk:aws-core",
+      "software.amazon.awssdk:http-client-spi",
+      "software.amazon.awssdk:protocol-core",
+      "software.amazon.awssdk:sdk-core",
+      "software.amazon.awssdk:utils"
+    ],
+    "software.amazon.awssdk:cloudwatch": [
+      "software.amazon.awssdk:annotations",
+      "software.amazon.awssdk:apache-client",
+      "software.amazon.awssdk:auth",
+      "software.amazon.awssdk:aws-core",
+      "software.amazon.awssdk:aws-query-protocol",
+      "software.amazon.awssdk:http-client-spi",
+      "software.amazon.awssdk:metrics-spi",
+      "software.amazon.awssdk:netty-nio-client",
+      "software.amazon.awssdk:protocol-core",
+      "software.amazon.awssdk:regions",
+      "software.amazon.awssdk:sdk-core",
+      "software.amazon.awssdk:utils"
+    ],
+    "software.amazon.awssdk:http-client-spi": [
+      "org.reactivestreams:reactive-streams",
+      "software.amazon.awssdk:annotations",
+      "software.amazon.awssdk:metrics-spi",
+      "software.amazon.awssdk:utils"
+    ],
+    "software.amazon.awssdk:metrics-spi": [
+      "software.amazon.awssdk:annotations",
+      "software.amazon.awssdk:utils"
+    ],
+    "software.amazon.awssdk:netty-nio-client": [
+      "com.typesafe.netty:netty-reactive-streams-http",
+      "io.netty:netty-buffer",
+      "io.netty:netty-codec",
+      "io.netty:netty-codec-http",
+      "io.netty:netty-codec-http2",
+      "io.netty:netty-common",
+      "io.netty:netty-handler",
+      "io.netty:netty-transport",
+      "io.netty:netty-transport-native-epoll:jar:linux-x86_64",
+      "org.reactivestreams:reactive-streams",
+      "software.amazon.awssdk:annotations",
+      "software.amazon.awssdk:http-client-spi",
+      "software.amazon.awssdk:metrics-spi",
+      "software.amazon.awssdk:utils"
+    ],
+    "software.amazon.awssdk:profiles": [
+      "software.amazon.awssdk:annotations",
+      "software.amazon.awssdk:utils"
+    ],
+    "software.amazon.awssdk:protocol-core": [
+      "software.amazon.awssdk:annotations",
+      "software.amazon.awssdk:http-client-spi",
+      "software.amazon.awssdk:sdk-core",
+      "software.amazon.awssdk:utils"
+    ],
+    "software.amazon.awssdk:regions": [
+      "com.fasterxml.jackson.core:jackson-annotations",
+      "com.fasterxml.jackson.core:jackson-databind",
+      "software.amazon.awssdk:annotations",
+      "software.amazon.awssdk:profiles",
+      "software.amazon.awssdk:sdk-core",
+      "software.amazon.awssdk:utils"
+    ],
+    "software.amazon.awssdk:sdk-core": [
+      "com.fasterxml.jackson.core:jackson-core",
+      "com.fasterxml.jackson.core:jackson-databind",
+      "org.reactivestreams:reactive-streams",
+      "software.amazon.awssdk:annotations",
+      "software.amazon.awssdk:http-client-spi",
+      "software.amazon.awssdk:metrics-spi",
+      "software.amazon.awssdk:profiles",
+      "software.amazon.awssdk:utils"
+    ],
+    "software.amazon.awssdk:utils": [
+      "org.reactivestreams:reactive-streams",
+      "software.amazon.awssdk:annotations"
+    ]
+  },
+  "packages": {
+    "com.amazonaws:aws-java-sdk-core": [
+      "com.amazonaws",
+      "com.amazonaws.adapters.types",
+      "com.amazonaws.annotation",
+      "com.amazonaws.arn",
+      "com.amazonaws.auth",
+      "com.amazonaws.auth.internal",
+      "com.amazonaws.auth.policy",
+      "com.amazonaws.auth.policy.conditions",
+      "com.amazonaws.auth.policy.internal",
+      "com.amazonaws.auth.presign",
+      "com.amazonaws.auth.profile",
+      "com.amazonaws.auth.profile.internal",
+      "com.amazonaws.auth.profile.internal.securitytoken",
+      "com.amazonaws.cache",
+      "com.amazonaws.client",
+      "com.amazonaws.client.builder",
+      "com.amazonaws.endpointdiscovery",
+      "com.amazonaws.event",
+      "com.amazonaws.event.request",
+      "com.amazonaws.handlers",
+      "com.amazonaws.http",
+      "com.amazonaws.http.apache",
+      "com.amazonaws.http.apache.client.impl",
+      "com.amazonaws.http.apache.request.impl",
+      "com.amazonaws.http.apache.utils",
+      "com.amazonaws.http.client",
+      "com.amazonaws.http.conn",
+      "com.amazonaws.http.conn.ssl",
+      "com.amazonaws.http.conn.ssl.privileged",
+      "com.amazonaws.http.exception",
+      "com.amazonaws.http.impl.client",
+      "com.amazonaws.http.protocol",
+      "com.amazonaws.http.request",
+      "com.amazonaws.http.response",
+      "com.amazonaws.http.settings",
+      "com.amazonaws.http.timers",
+      "com.amazonaws.http.timers.client",
+      "com.amazonaws.http.timers.request",
+      "com.amazonaws.internal",
+      "com.amazonaws.internal.auth",
+      "com.amazonaws.internal.config",
+      "com.amazonaws.internal.http",
+      "com.amazonaws.jmx",
+      "com.amazonaws.jmx.spi",
+      "com.amazonaws.log",
+      "com.amazonaws.metrics",
+      "com.amazonaws.metrics.internal",
+      "com.amazonaws.monitoring",
+      "com.amazonaws.monitoring.internal",
+      "com.amazonaws.partitions",
+      "com.amazonaws.partitions.model",
+      "com.amazonaws.profile.path",
+      "com.amazonaws.profile.path.config",
+      "com.amazonaws.profile.path.cred",
+      "com.amazonaws.protocol",
+      "com.amazonaws.protocol.json",
+      "com.amazonaws.protocol.json.internal",
+      "com.amazonaws.regions",
+      "com.amazonaws.retry",
+      "com.amazonaws.retry.internal",
+      "com.amazonaws.retry.v2",
+      "com.amazonaws.transform",
+      "com.amazonaws.util",
+      "com.amazonaws.util.endpoint",
+      "com.amazonaws.util.json",
+      "com.amazonaws.waiters"
+    ],
+    "com.fasterxml.jackson.core:jackson-annotations": [
+      "com.fasterxml.jackson.annotation"
+    ],
+    "com.fasterxml.jackson.core:jackson-core": [
+      "com.fasterxml.jackson.core",
+      "com.fasterxml.jackson.core.async",
+      "com.fasterxml.jackson.core.base",
+      "com.fasterxml.jackson.core.exc",
+      "com.fasterxml.jackson.core.filter",
+      "com.fasterxml.jackson.core.format",
+      "com.fasterxml.jackson.core.io",
+      "com.fasterxml.jackson.core.json",
+      "com.fasterxml.jackson.core.json.async",
+      "com.fasterxml.jackson.core.sym",
+      "com.fasterxml.jackson.core.type",
+      "com.fasterxml.jackson.core.util"
+    ],
+    "com.fasterxml.jackson.core:jackson-databind": [
+      "com.fasterxml.jackson.databind",
+      "com.fasterxml.jackson.databind.annotation",
+      "com.fasterxml.jackson.databind.cfg",
+      "com.fasterxml.jackson.databind.deser",
+      "com.fasterxml.jackson.databind.deser.impl",
+      "com.fasterxml.jackson.databind.deser.std",
+      "com.fasterxml.jackson.databind.exc",
+      "com.fasterxml.jackson.databind.ext",
+      "com.fasterxml.jackson.databind.introspect",
+      "com.fasterxml.jackson.databind.json",
+      "com.fasterxml.jackson.databind.jsonFormatVisitors",
+      "com.fasterxml.jackson.databind.jsonschema",
+      "com.fasterxml.jackson.databind.jsontype",
+      "com.fasterxml.jackson.databind.jsontype.impl",
+      "com.fasterxml.jackson.databind.module",
+      "com.fasterxml.jackson.databind.node",
+      "com.fasterxml.jackson.databind.ser",
+      "com.fasterxml.jackson.databind.ser.impl",
+      "com.fasterxml.jackson.databind.ser.std",
+      "com.fasterxml.jackson.databind.type",
+      "com.fasterxml.jackson.databind.util"
+    ],
+    "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": [
+      "com.fasterxml.jackson.dataformat.cbor"
+    ],
+    "com.typesafe.netty:netty-reactive-streams": [
+      "com.typesafe.netty"
+    ],
+    "com.typesafe.netty:netty-reactive-streams-http": [
+      "com.typesafe.netty.http"
+    ],
+    "io.dropwizard.metrics:metrics-jvm": [
+      "com.codahale.metrics.jvm"
+    ],
+    "io.github.azagniotov:dropwizard-metrics-cloudwatch": [
+      "io.github.azagniotov.metrics.reporter.cloudwatch",
+      "io.github.azagniotov.metrics.reporter.utils"
+    ],
+    "io.netty:netty-all": [
+      "io.netty.bootstrap",
+      "io.netty.buffer",
+      "io.netty.buffer.search",
+      "io.netty.channel",
+      "io.netty.channel.embedded",
+      "io.netty.channel.epoll",
+      "io.netty.channel.group",
+      "io.netty.channel.internal",
+      "io.netty.channel.kqueue",
+      "io.netty.channel.local",
+      "io.netty.channel.nio",
+      "io.netty.channel.oio",
+      "io.netty.channel.pool",
+      "io.netty.channel.rxtx",
+      "io.netty.channel.sctp",
+      "io.netty.channel.sctp.nio",
+      "io.netty.channel.sctp.oio",
+      "io.netty.channel.socket",
+      "io.netty.channel.socket.nio",
+      "io.netty.channel.socket.oio",
+      "io.netty.channel.udt",
+      "io.netty.channel.udt.nio",
+      "io.netty.channel.unix",
+      "io.netty.handler.address",
+      "io.netty.handler.codec",
+      "io.netty.handler.codec.base64",
+      "io.netty.handler.codec.bytes",
+      "io.netty.handler.codec.compression",
+      "io.netty.handler.codec.dns",
+      "io.netty.handler.codec.haproxy",
+      "io.netty.handler.codec.http",
+      "io.netty.handler.codec.http.cookie",
+      "io.netty.handler.codec.http.cors",
+      "io.netty.handler.codec.http.multipart",
+      "io.netty.handler.codec.http.websocketx",
+      "io.netty.handler.codec.http.websocketx.extensions",
+      "io.netty.handler.codec.http.websocketx.extensions.compression",
+      "io.netty.handler.codec.http2",
+      "io.netty.handler.codec.json",
+      "io.netty.handler.codec.marshalling",
+      "io.netty.handler.codec.memcache",
+      "io.netty.handler.codec.memcache.binary",
+      "io.netty.handler.codec.mqtt",
+      "io.netty.handler.codec.protobuf",
+      "io.netty.handler.codec.redis",
+      "io.netty.handler.codec.rtsp",
+      "io.netty.handler.codec.sctp",
+      "io.netty.handler.codec.serialization",
+      "io.netty.handler.codec.smtp",
+      "io.netty.handler.codec.socks",
+      "io.netty.handler.codec.socksx",
+      "io.netty.handler.codec.socksx.v4",
+      "io.netty.handler.codec.socksx.v5",
+      "io.netty.handler.codec.spdy",
+      "io.netty.handler.codec.stomp",
+      "io.netty.handler.codec.string",
+      "io.netty.handler.codec.xml",
+      "io.netty.handler.flow",
+      "io.netty.handler.flush",
+      "io.netty.handler.ipfilter",
+      "io.netty.handler.logging",
+      "io.netty.handler.proxy",
+      "io.netty.handler.ssl",
+      "io.netty.handler.ssl.ocsp",
+      "io.netty.handler.ssl.util",
+      "io.netty.handler.stream",
+      "io.netty.handler.timeout",
+      "io.netty.handler.traffic",
+      "io.netty.resolver",
+      "io.netty.resolver.dns",
+      "io.netty.resolver.dns.macos",
+      "io.netty.util",
+      "io.netty.util.collection",
+      "io.netty.util.concurrent",
+      "io.netty.util.internal",
+      "io.netty.util.internal.logging",
+      "io.netty.util.internal.shaded.org.jctools.queues",
+      "io.netty.util.internal.shaded.org.jctools.queues.atomic",
+      "io.netty.util.internal.shaded.org.jctools.util",
+      "io.netty.util.internal.svm"
+    ],
+    "io.netty:netty-buffer": [
+      "io.netty.buffer"
+    ],
+    "io.netty:netty-codec": [
+      "io.netty.handler.codec",
+      "io.netty.handler.codec.base64",
+      "io.netty.handler.codec.bytes",
+      "io.netty.handler.codec.compression",
+      "io.netty.handler.codec.json",
+      "io.netty.handler.codec.marshalling",
+      "io.netty.handler.codec.protobuf",
+      "io.netty.handler.codec.serialization",
+      "io.netty.handler.codec.string",
+      "io.netty.handler.codec.xml"
+    ],
+    "io.netty:netty-codec-http": [
+      "io.netty.handler.codec.http",
+      "io.netty.handler.codec.http.cookie",
+      "io.netty.handler.codec.http.cors",
+      "io.netty.handler.codec.http.multipart",
+      "io.netty.handler.codec.http.websocketx",
+      "io.netty.handler.codec.http.websocketx.extensions",
+      "io.netty.handler.codec.http.websocketx.extensions.compression",
+      "io.netty.handler.codec.rtsp",
+      "io.netty.handler.codec.spdy"
+    ],
+    "io.netty:netty-codec-http2": [
+      "io.netty.handler.codec.http2"
+    ],
+    "io.netty:netty-common": [
+      "io.netty.util",
+      "io.netty.util.collection",
+      "io.netty.util.concurrent",
+      "io.netty.util.internal",
+      "io.netty.util.internal.logging",
+      "io.netty.util.internal.shaded.org.jctools.queues",
+      "io.netty.util.internal.shaded.org.jctools.queues.atomic",
+      "io.netty.util.internal.shaded.org.jctools.util",
+      "io.netty.util.internal.svm"
+    ],
+    "io.netty:netty-handler": [
+      "io.netty.handler.address",
+      "io.netty.handler.flow",
+      "io.netty.handler.flush",
+      "io.netty.handler.ipfilter",
+      "io.netty.handler.logging",
+      "io.netty.handler.ssl",
+      "io.netty.handler.ssl.ocsp",
+      "io.netty.handler.ssl.util",
+      "io.netty.handler.stream",
+      "io.netty.handler.timeout",
+      "io.netty.handler.traffic"
+    ],
+    "io.netty:netty-resolver": [
+      "io.netty.resolver"
+    ],
+    "io.netty:netty-transport": [
+      "io.netty.bootstrap",
+      "io.netty.channel",
+      "io.netty.channel.embedded",
+      "io.netty.channel.group",
+      "io.netty.channel.internal",
+      "io.netty.channel.local",
+      "io.netty.channel.nio",
+      "io.netty.channel.oio",
+      "io.netty.channel.pool",
+      "io.netty.channel.socket",
+      "io.netty.channel.socket.nio",
+      "io.netty.channel.socket.oio"
+    ],
+    "io.netty:netty-transport-native-epoll:jar:linux-x86_64": [
+      "io.netty.channel.epoll"
+    ],
+    "io.netty:netty-transport-native-unix-common": [
+      "io.netty.channel.unix"
+    ],
+    "joda-time:joda-time": [
+      "org.joda.time",
+      "org.joda.time.base",
+      "org.joda.time.chrono",
+      "org.joda.time.convert",
+      "org.joda.time.field",
+      "org.joda.time.format",
+      "org.joda.time.tz"
+    ],
+    "org.reactivestreams:reactive-streams": [
+      "org.reactivestreams"
+    ],
+    "software.amazon.awssdk:annotations": [
+      "software.amazon.awssdk.annotations"
+    ],
+    "software.amazon.awssdk:apache-client": [
+      "software.amazon.awssdk.http.apache",
+      "software.amazon.awssdk.http.apache.internal",
+      "software.amazon.awssdk.http.apache.internal.conn",
+      "software.amazon.awssdk.http.apache.internal.impl",
+      "software.amazon.awssdk.http.apache.internal.net",
+      "software.amazon.awssdk.http.apache.internal.utils"
+    ],
+    "software.amazon.awssdk:auth": [
+      "software.amazon.awssdk.auth.credentials",
+      "software.amazon.awssdk.auth.credentials.internal",
+      "software.amazon.awssdk.auth.signer",
+      "software.amazon.awssdk.auth.signer.internal",
+      "software.amazon.awssdk.auth.signer.params"
+    ],
+    "software.amazon.awssdk:aws-core": [
+      "software.amazon.awssdk.awscore",
+      "software.amazon.awssdk.awscore.client.builder",
+      "software.amazon.awssdk.awscore.client.config",
+      "software.amazon.awssdk.awscore.client.handler",
+      "software.amazon.awssdk.awscore.endpoint",
+      "software.amazon.awssdk.awscore.eventstream",
+      "software.amazon.awssdk.awscore.exception",
+      "software.amazon.awssdk.awscore.interceptor",
+      "software.amazon.awssdk.awscore.internal",
+      "software.amazon.awssdk.awscore.internal.client.config",
+      "software.amazon.awssdk.awscore.presigner",
+      "software.amazon.awssdk.awscore.retry",
+      "software.amazon.awssdk.awscore.retry.conditions",
+      "software.amazon.awssdk.awscore.util"
+    ],
+    "software.amazon.awssdk:aws-query-protocol": [
+      "software.amazon.awssdk.protocols.query",
+      "software.amazon.awssdk.protocols.query.interceptor",
+      "software.amazon.awssdk.protocols.query.internal.marshall",
+      "software.amazon.awssdk.protocols.query.internal.unmarshall",
+      "software.amazon.awssdk.protocols.query.unmarshall"
+    ],
+    "software.amazon.awssdk:cloudwatch": [
+      "software.amazon.awssdk.services.cloudwatch",
+      "software.amazon.awssdk.services.cloudwatch.model",
+      "software.amazon.awssdk.services.cloudwatch.paginators",
+      "software.amazon.awssdk.services.cloudwatch.transform"
+    ],
+    "software.amazon.awssdk:http-client-spi": [
+      "software.amazon.awssdk.http",
+      "software.amazon.awssdk.http.async",
+      "software.amazon.awssdk.internal.http"
+    ],
+    "software.amazon.awssdk:metrics-spi": [
+      "software.amazon.awssdk.metrics",
+      "software.amazon.awssdk.metrics.internal"
+    ],
+    "software.amazon.awssdk:netty-nio-client": [
+      "software.amazon.awssdk.http.nio.netty",
+      "software.amazon.awssdk.http.nio.netty.internal",
+      "software.amazon.awssdk.http.nio.netty.internal.http2",
+      "software.amazon.awssdk.http.nio.netty.internal.nrs",
+      "software.amazon.awssdk.http.nio.netty.internal.utils"
+    ],
+    "software.amazon.awssdk:profiles": [
+      "software.amazon.awssdk.profiles",
+      "software.amazon.awssdk.profiles.internal"
+    ],
+    "software.amazon.awssdk:protocol-core": [
+      "software.amazon.awssdk.protocols.core"
+    ],
+    "software.amazon.awssdk:regions": [
+      "software.amazon.awssdk.regions",
+      "software.amazon.awssdk.regions.internal",
+      "software.amazon.awssdk.regions.internal.util",
+      "software.amazon.awssdk.regions.partitionmetadata",
+      "software.amazon.awssdk.regions.providers",
+      "software.amazon.awssdk.regions.regionmetadata",
+      "software.amazon.awssdk.regions.servicemetadata",
+      "software.amazon.awssdk.regions.util"
+    ],
+    "software.amazon.awssdk:sdk-core": [
+      "software.amazon.awssdk.core",
+      "software.amazon.awssdk.core.adapter",
+      "software.amazon.awssdk.core.async",
+      "software.amazon.awssdk.core.checksums",
+      "software.amazon.awssdk.core.client.builder",
+      "software.amazon.awssdk.core.client.config",
+      "software.amazon.awssdk.core.client.handler",
+      "software.amazon.awssdk.core.endpointdiscovery",
+      "software.amazon.awssdk.core.endpointdiscovery.providers",
+      "software.amazon.awssdk.core.exception",
+      "software.amazon.awssdk.core.http",
+      "software.amazon.awssdk.core.interceptor",
+      "software.amazon.awssdk.core.internal",
+      "software.amazon.awssdk.core.internal.async",
+      "software.amazon.awssdk.core.internal.capacity",
+      "software.amazon.awssdk.core.internal.handler",
+      "software.amazon.awssdk.core.internal.http",
+      "software.amazon.awssdk.core.internal.http.async",
+      "software.amazon.awssdk.core.internal.http.loader",
+      "software.amazon.awssdk.core.internal.http.pipeline",
+      "software.amazon.awssdk.core.internal.http.pipeline.stages",
+      "software.amazon.awssdk.core.internal.http.pipeline.stages.utils",
+      "software.amazon.awssdk.core.internal.http.timers",
+      "software.amazon.awssdk.core.internal.interceptor",
+      "software.amazon.awssdk.core.internal.io",
+      "software.amazon.awssdk.core.internal.pagination.async",
+      "software.amazon.awssdk.core.internal.retry",
+      "software.amazon.awssdk.core.internal.sync",
+      "software.amazon.awssdk.core.internal.transform",
+      "software.amazon.awssdk.core.internal.util",
+      "software.amazon.awssdk.core.io",
+      "software.amazon.awssdk.core.metrics",
+      "software.amazon.awssdk.core.pagination.async",
+      "software.amazon.awssdk.core.pagination.sync",
+      "software.amazon.awssdk.core.protocol",
+      "software.amazon.awssdk.core.retry",
+      "software.amazon.awssdk.core.retry.backoff",
+      "software.amazon.awssdk.core.retry.conditions",
+      "software.amazon.awssdk.core.runtime",
+      "software.amazon.awssdk.core.runtime.transform",
+      "software.amazon.awssdk.core.signer",
+      "software.amazon.awssdk.core.sync",
+      "software.amazon.awssdk.core.traits",
+      "software.amazon.awssdk.core.util",
+      "software.amazon.awssdk.core.util.json"
+    ],
+    "software.amazon.awssdk:utils": [
+      "software.amazon.awssdk.utils",
+      "software.amazon.awssdk.utils.async",
+      "software.amazon.awssdk.utils.builder",
+      "software.amazon.awssdk.utils.cache",
+      "software.amazon.awssdk.utils.http",
+      "software.amazon.awssdk.utils.internal"
+    ],
+    "software.amazon.eventstream:eventstream": [
+      "software.amazon.eventstream"
+    ],
+    "software.amazon.ion:ion-java": [
+      "software.amazon.ion",
+      "software.amazon.ion.apps",
+      "software.amazon.ion.facet",
+      "software.amazon.ion.impl",
+      "software.amazon.ion.impl.bin",
+      "software.amazon.ion.impl.lite",
+      "software.amazon.ion.system",
+      "software.amazon.ion.util"
+    ]
+  },
+  "repositories": {
+    "https://repo1.maven.org/maven2/": [
+      "com.amazonaws:aws-java-sdk-core",
+      "com.amazonaws:aws-java-sdk-core:jar:sources",
+      "com.fasterxml.jackson.core:jackson-annotations",
+      "com.fasterxml.jackson.core:jackson-annotations:jar:sources",
+      "com.fasterxml.jackson.core:jackson-core",
+      "com.fasterxml.jackson.core:jackson-core:jar:sources",
+      "com.fasterxml.jackson.core:jackson-databind",
+      "com.fasterxml.jackson.core:jackson-databind:jar:sources",
+      "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor",
+      "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:jar:sources",
+      "com.typesafe.netty:netty-reactive-streams",
+      "com.typesafe.netty:netty-reactive-streams-http",
+      "com.typesafe.netty:netty-reactive-streams-http:jar:sources",
+      "com.typesafe.netty:netty-reactive-streams:jar:sources",
+      "io.dropwizard.metrics:metrics-jvm",
+      "io.dropwizard.metrics:metrics-jvm:jar:sources",
+      "io.github.azagniotov:dropwizard-metrics-cloudwatch",
+      "io.github.azagniotov:dropwizard-metrics-cloudwatch:jar:sources",
+      "io.netty:netty-all",
+      "io.netty:netty-all:jar:sources",
+      "io.netty:netty-buffer",
+      "io.netty:netty-buffer:jar:sources",
+      "io.netty:netty-codec",
+      "io.netty:netty-codec-http",
+      "io.netty:netty-codec-http2",
+      "io.netty:netty-codec-http2:jar:sources",
+      "io.netty:netty-codec-http:jar:sources",
+      "io.netty:netty-codec:jar:sources",
+      "io.netty:netty-common",
+      "io.netty:netty-common:jar:sources",
+      "io.netty:netty-handler",
+      "io.netty:netty-handler:jar:sources",
+      "io.netty:netty-resolver",
+      "io.netty:netty-resolver:jar:sources",
+      "io.netty:netty-transport",
+      "io.netty:netty-transport-native-epoll:jar:linux-x86_64",
+      "io.netty:netty-transport-native-epoll:jar:sources",
+      "io.netty:netty-transport-native-unix-common",
+      "io.netty:netty-transport-native-unix-common:jar:sources",
+      "io.netty:netty-transport:jar:sources",
+      "joda-time:joda-time",
+      "joda-time:joda-time:jar:sources",
+      "org.reactivestreams:reactive-streams",
+      "org.reactivestreams:reactive-streams:jar:sources",
+      "software.amazon.awssdk:annotations",
+      "software.amazon.awssdk:annotations:jar:sources",
+      "software.amazon.awssdk:apache-client",
+      "software.amazon.awssdk:apache-client:jar:sources",
+      "software.amazon.awssdk:auth",
+      "software.amazon.awssdk:auth:jar:sources",
+      "software.amazon.awssdk:aws-core",
+      "software.amazon.awssdk:aws-core:jar:sources",
+      "software.amazon.awssdk:aws-query-protocol",
+      "software.amazon.awssdk:aws-query-protocol:jar:sources",
+      "software.amazon.awssdk:cloudwatch",
+      "software.amazon.awssdk:cloudwatch:jar:sources",
+      "software.amazon.awssdk:http-client-spi",
+      "software.amazon.awssdk:http-client-spi:jar:sources",
+      "software.amazon.awssdk:metrics-spi",
+      "software.amazon.awssdk:metrics-spi:jar:sources",
+      "software.amazon.awssdk:netty-nio-client",
+      "software.amazon.awssdk:netty-nio-client:jar:sources",
+      "software.amazon.awssdk:profiles",
+      "software.amazon.awssdk:profiles:jar:sources",
+      "software.amazon.awssdk:protocol-core",
+      "software.amazon.awssdk:protocol-core:jar:sources",
+      "software.amazon.awssdk:regions",
+      "software.amazon.awssdk:regions:jar:sources",
+      "software.amazon.awssdk:sdk-core",
+      "software.amazon.awssdk:sdk-core:jar:sources",
+      "software.amazon.awssdk:utils",
+      "software.amazon.awssdk:utils:jar:sources",
+      "software.amazon.eventstream:eventstream",
+      "software.amazon.eventstream:eventstream:jar:sources",
+      "software.amazon.ion:ion-java",
+      "software.amazon.ion:ion-java:jar:sources"
+    ]
+  },
+  "services": {
+    "com.fasterxml.jackson.core:jackson-core": {
+      "com.fasterxml.jackson.core.JsonFactory": [
+        "com.fasterxml.jackson.core.JsonFactory"
+      ]
+    },
+    "com.fasterxml.jackson.core:jackson-core:jar:sources": {
+      "com.fasterxml.jackson.core.JsonFactory": [
+        "com.fasterxml.jackson.core.JsonFactory"
+      ]
+    },
+    "com.fasterxml.jackson.core:jackson-databind": {
+      "com.fasterxml.jackson.core.ObjectCodec": [
+        "com.fasterxml.jackson.databind.ObjectMapper"
+      ]
+    },
+    "com.fasterxml.jackson.core:jackson-databind:jar:sources": {
+      "com.fasterxml.jackson.core.ObjectCodec": [
+        "com.fasterxml.jackson.databind.ObjectMapper"
+      ]
+    },
+    "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
+      "com.fasterxml.jackson.core.JsonFactory": [
+        "com.fasterxml.jackson.dataformat.cbor.CBORFactory"
+      ]
+    },
+    "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:jar:sources": {
+      "com.fasterxml.jackson.core.JsonFactory": [
+        "com.fasterxml.jackson.dataformat.cbor.CBORFactory"
+      ]
+    },
+    "io.netty:netty-common": {
+      "reactor.blockhound.integration.BlockHoundIntegration": [
+        "io.netty.util.internal.Hidden$NettyBlockHoundIntegration"
+      ]
+    },
+    "io.netty:netty-common:jar:sources": {
+      "reactor.blockhound.integration.BlockHoundIntegration": [
+        "io.netty.util.internal.Hidden$NettyBlockHoundIntegration"
+      ]
+    },
+    "software.amazon.awssdk:apache-client": {
+      "software.amazon.awssdk.http.SdkHttpService": [
+        "software.amazon.awssdk.http.apache.ApacheSdkHttpService"
+      ]
+    },
+    "software.amazon.awssdk:apache-client:jar:sources": {
+      "software.amazon.awssdk.http.SdkHttpService": [
+        "software.amazon.awssdk.http.apache.ApacheSdkHttpService"
+      ]
+    },
+    "software.amazon.awssdk:netty-nio-client": {
+      "software.amazon.awssdk.http.async.SdkAsyncHttpService": [
+        "software.amazon.awssdk.http.nio.netty.NettySdkAsyncHttpService"
+      ]
+    },
+    "software.amazon.awssdk:netty-nio-client:jar:sources": {
+      "software.amazon.awssdk.http.async.SdkAsyncHttpService": [
+        "software.amazon.awssdk.http.nio.netty.NettySdkAsyncHttpService"
+      ]
+    }
+  },
+  "version": "3"
+}
diff --git a/metrics-reporter-cloudwatch_third_party_runtime_jars.allowlist.txt b/metrics-reporter-cloudwatch_third_party_runtime_jars.allowlist.txt
new file mode 100644
index 0000000..2ed6a04
--- /dev/null
+++ b/metrics-reporter-cloudwatch_third_party_runtime_jars.allowlist.txt
@@ -0,0 +1,33 @@
+annotations
+apache-client
+auth
+aws-core
+aws-query-protocol
+cloudwatch
+dropwizard-metrics-cloudwatch
+eventstream
+http-client-spi
+jackson-annotations
+jackson-core
+jackson-databind
+metrics-jvm
+metrics-spi
+netty-buffer
+netty-codec
+netty-codec-http
+netty-codec-http2
+netty-common
+netty-handler
+netty-nio-client
+netty-reactive-streams
+netty-reactive-streams-http
+netty-resolver
+netty-transport
+netty-transport-native-epoll-4.1.46.Final-linux-x86_64
+netty-transport-native-unix-common
+profiles
+protocol-core
+reactive-streams
+regions
+sdk-core
+utils
diff --git a/src/main/resources/Documentation/build.md b/src/main/resources/Documentation/build.md
index a634655..0022b51 100644
--- a/src/main/resources/Documentation/build.md
+++ b/src/main/resources/Documentation/build.md
@@ -3,12 +3,19 @@
 This plugin can be built with Bazel.
 
 Clone (or link) this plugin to the `plugins` directory of Gerrit's source tree.
-Put the external dependency Bazel build file into the Gerrit /plugins directory,
-replacing the existing empty one.
+From Gerrit's source tree, link Gerrit's Bazel version file into the plugin
+repository.
+
+```
+  ln -sf `pwd`/.bazelversion plugins/metrics-reporter-cloudwatch
+```
+
+Put the external dependency Bazel module fragment into the Gerrit `/plugins`
+directory, replacing the existing empty one.
 
 ```
   cd gerrit/plugins
-  ln -fs metrics-reporter-cloudwatch/external_plugin_deps.bzl .
+  ln -fs metrics-reporter-cloudwatch/external_plugin_deps.MODULE.bazel .
 ```
 
 Then run:
@@ -30,6 +37,36 @@
 You can run tests with bazelisk, as such:
 
 ```bash
-bazelisk plugins/metrics-reporter-cloudwatch:metrics-reporter-cloudwatch_tests
+bazelisk test //plugins/metrics-reporter-cloudwatch/...
 ```
 
+### Updating Bazel modules
+
+When the plugin's Bazel module dependencies change, regenerate the Bazel
+module lockfile to ensure all module versions are recorded and reproducible.
+
+Example:
+
+```bash
+  ln -sf `pwd`/.bazelversion plugins/metrics-reporter-cloudwatch
+  cd plugins/metrics-reporter-cloudwatch
+  bazelisk mod deps --lockfile_mode=update
+```
+
+This updates `MODULE.bazel.lock` with the currently resolved module versions.
+
+### Pinning external dependencies
+
+When the plugin's external dependencies are updated, regenerate the dependency
+lockfile to pin the new versions.
+
+Example:
+
+```bash
+  ln -sf `pwd`/.bazelversion plugins/metrics-reporter-cloudwatch
+  cd plugins/metrics-reporter-cloudwatch
+  REPIN=1 bazelisk run @metrics-reporter-cloudwatch_plugin_deps//:pin
+```
+
+This updates `metrics-reporter-cloudwatch_plugin_deps.lock.json` with the
+latest pinned dependency versions.