diff --git a/build-logic/build-parameters/build.gradle.kts b/build-logic/build-parameters/build.gradle.kts
index 5c83b3d0cf3..a5f18f28d3d 100644
--- a/build-logic/build-parameters/build.gradle.kts
+++ b/build-logic/build-parameters/build.gradle.kts
@@ -82,6 +82,10 @@ buildParameters {
defaultValue.set(false)
description.set("Skip AutoStyle verifications")
}
+ bool("skipOpenrewrite") {
+ defaultValue.set(false)
+ description.set("Skip OpenRewrite processing")
+ }
bool("skipCheckstyle") {
defaultValue.set(false)
description.set("Skip Checkstyle verifications")
diff --git a/build-logic/build.gradle.kts b/build-logic/build.gradle.kts
index 457336af365..14feec3f256 100644
--- a/build-logic/build.gradle.kts
+++ b/build-logic/build.gradle.kts
@@ -17,7 +17,7 @@
plugins {
`embedded-kotlin` apply false
- id("com.github.autostyle") version "3.2"
+ id("com.github.autostyle") version "4.0"
}
allprojects {
diff --git a/build-logic/checksum.xml b/build-logic/checksum.xml
index 0864348dd6f..fb32f50dc6d 100644
--- a/build-logic/checksum.xml
+++ b/build-logic/checksum.xml
@@ -6,16 +6,22 @@
+
+
+
+
+
+
@@ -30,8 +36,13 @@
+
+
+
+
+
@@ -40,8 +51,10 @@
+
+
@@ -55,7 +68,9 @@
+
+
@@ -65,12 +80,19 @@
+
+
+
+
+
+
+
@@ -109,6 +131,9 @@
B23C4355CBAB2098506528D196F6C9A71D4689F4A3334494B97D9F6D868883D429D851FC319761C25ACC86F0C4E02F028B33C1868B6EF7BA1246E3D79ADF1582
+
+ 635642582701F6AE26DF91E39D5BFD9345C4C219DA73E71A27F4740A4C0C7970F52CEF667BB9CC4DD08C26D9B0447EE003C9E56D5EDE68870976356C2FCC4A5C
+
5BA8B33D023D112BCF170B49CF66610A1A3EB3DEBF0D028065E89AE40B23C55380D329B354E1698B44912FA78935294B9F7584AFA6FCE995F12CE1D1D0A329FC
@@ -118,6 +143,9 @@
397C3257C5448C26304B312212F6DA1649AD15E52CE0419C5BA647F8A68864707A0C8071FA9860C28AA9D626D66C8FAF2D5F576E693F9D01B0F71EEEB84B57FB
+
+ FAE9431F2ADE6A8460C7E86AC5FA4AB7A2E11DB919BB9C60F59BD684CF5AF42A9D0DBFD4835AC8450F0F5B36258B6DF1920E445F84CBD3CFE2944F4CE430DF58
+
5CD9C5E9C91145E6F5FC1DA819F6241ADCE8685C6C71F480CB7F7F1D2ACFCDFD19C631E7DC2E9FDDEDBA840C6063A020A377644C80543A9E366DF65642F16F8C
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/01/1f7a8f87b9d8f501.fingerprints b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/01/1f7a8f87b9d8f501.fingerprints
new file mode 100644
index 00000000000..0cae4729da7
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/01/1f7a8f87b9d8f501.fingerprints
@@ -0,0 +1 @@
+b46dc71e03feeb7f89d1f2491f7a8f87b9d8f501
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/01/b46dc71e03feeb7f89d1f2491f7a8f87b9d8f501.asc b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/01/b46dc71e03feeb7f89d1f2491f7a8f87b9d8f501.asc
new file mode 100644
index 00000000000..3b89c1af60b
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/01/b46dc71e03feeb7f89d1f2491f7a8f87b9d8f501.asc
@@ -0,0 +1,38 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQGNBGBP58sBDADYRZmxLOkqrz0QZ/yESRpv7IeHGLqDE1a8QfFtFb14MJCLSAAS
+3nMD6Szi9mEjEqYdJURRcMjbUBhePgbhzGa3FYkjAB8lj6IKbu+ogCwVm1S8+caZ
+C6HNP1CIefa1wQgi/6FNWEBKbKefUr/DoG1fBAWUvTPC2BjiYOHDaU1xFWwhF3Np
+p0gEoK2KNgGgy/aSCi9Rb1M1ynPF7CcY8vKpAo6YfJpoNnput3t5FoF0uPnIac0F
+gikw6Iz8knUoYeqW2MTKNBxgQrtS+Ji1J0EgzT2Nq1SBMPfmq4/h1+XOQweWY/NR
+GNQTzcR3v+FkLkqCIaywcWUMXkhFXB8U3TdPa4bCEbFlP/AUkEw0X/obxm0isshU
+w7MRMPoBXR3FkEApkxB+bFptY3ZbBYhu5PCf4FWBE8+FkYEJ31IS+nABC2u9Jcav
+o5TqVd0y4e8VZ2qz18ez3j2G+nVthHz2OZ3AdEmq60K6iD57RY0H8zQK7xeEe3Ye
+VoRmpZdS8Eyk2aEAEQEAAbkBjQRgT+w5AQwAz/O+ShczJAFoHvVHLkMmZ1zwRPqT
+iSk3AYlA3DmMHhw/sZmb20F++yU7IfBx6Fe5WA0CmrwzZCssnZQGNa7yDGpDgK2C
+6d5ifSxBWZ4T1zAGMNYFt4eowHPXFslJ1ahm/ELstabEEOwWJMsIKZUlRHhHtzPj
+dCGDRqnClLTngY+XHtXgnNjbfPuosE9XV9LDJhZucOnzmxRwm1jVzAt4ZCRbk7n4
+oX1I2JDdU2BHsa2gigdJyzj1Yn4RR2uapomzZaYQcDYmgQbfQAcxVunISBoXQ88V
+HVXMRVPs96xWy1JuduryaqCYG36JCNCRgBv/DIF1V8Us+3YiwZtP3Z70tDUi3D3H
+mCnMPTN6CNLxASDXvoqwaalEnVWzVpyk98HwpZNXurQh/WHV/GZTrOI4dMR7SS/M
+hJNyw7RGEdiIw0c2EdjyBKqdZSI9LNJzbm9B8nz/tt6b265BSW5SACyxeVWGfrxo
+cTXUXGV0ZXgBMdjmtEYgYmRB8UkLgw8sivdhABEBAAG5AY0EYE/sVgEMANM0si+m
+zaU0yswcmegVzulRloW6lwGUiYPyhhKmbWvsJI0EGs06FogciFW+4piZd7F2ryui
+nT4tLgZENsjwbF5h2RkUM+d9mr4r7r5ZTO1pJyv4OgyQEAKvSrYtfQjD2ltgfVLC
+FUD/jHXOVbIjT3m7+KXKug3IiGlKDYpNGHme5co2zCXtMpHZVB0DSmaQn/ka1u7W
+daeW7ycscWtC4pXuHODZ3I26/Ct7VUUBJvHQb3cY8/17zAsf7sSRsdrMNJt+Z8dS
+eBd7WpTABJsmyX53ezgCj/nHbqkqDcsCmzOL9LFGQ7L+bAVBfoTGyStgfXBYjo70
+vZKKq8aQuIc+oiWSQ3gNuavHw9kNIhG8rPUTlIVvvDHFc2f4Ly67MOzlM6B5A7Gc
+WKo/+/gqqqTfgJd0Y/wMD2/BonmQSoD0mqhM3RWexdpYzK69ygt1EjQSc3dCWd2p
+ouxeof7E4ag6swtkwEg5JHR0pxA21DdeZtoz+cfRFYf3ouNpcMMHrdihSwARAQAB
+uQGNBGBP7VUBDADgQy3SvkDWk42nnSv6Su+Lmzaqc/1kzC7UhByy6J7/XfG7zKOZ
+5+VPVyRAtmMrQNUYmerHA61czGurOyVYO47TUtX4KXBjb7dWYMGmbwu+2D6a2/a0
+ZKGVrUnZr1vukCWN6rnNg9wmByNNSPrWyV7dx5YTrG7D9PR/vyw8lsW/zYvSzh/3
+2ka18SZPDP+oXfQofQPw0HcCKgfjZmSxLl67anNEVl65fTgAHL31YzPsrzWTEyHU
+N2vtN7ZcxiY4tXhOm4YyBBhEDo/yjufCVc4fZpVouUagHWC5p7GH1nySdRdr5QUW
+WXzj3naVFWDdHBsEp1LWEwsdaNJk1bD2gTTm7HHEbLI7kxa2ebhdE1y5LWEHKEJF
+rUtJE9wu1Lsaksq2Dci9v+jg9CcXp0J6yE74DmFKAk8wBMCGVoRidahbn+tsLWhy
+31XDaHD+6xI69Y7NNO+CvcsRLn8urZrsoc/+36DeGGEmbxXJ70PtUqXUfukSSKpy
+72A+jTAh+Z5bBSMAEQEAAQ==
+=AxP0
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/06/1f47744c9b6e14f2049c2857f1f111af65925306.asc b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/06/1f47744c9b6e14f2049c2857f1f111af65925306.asc
new file mode 100644
index 00000000000..6ac00ccc757
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/06/1f47744c9b6e14f2049c2857f1f111af65925306.asc
@@ -0,0 +1,16 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQENBFS2J+0BCADZI8RYk32YeO9gnEkY9RN+4dKb+H1AR4v+IGxmy0UYy+O8bo4m
+YzkQHTlPpEPGe10/quKk1embDifEfNa9mwcSJl+XUPFlTrSA97SR31mdyK/Ua146
+GKMW0F6v8aCgLUlm9BCJo/OmOat2jsc94SuKnPiRRywhmapte/8o9t7/0GghqLyj
+X+Ifz4WSKyKZ8oe9mRFg1ZIA+z52a8QnfyI8WS8bpGHM/dXkBXZpzIDlrfKvoZYb
+I2DcbOotJK/ZzStAZ81e4E/q2BEw96NUKJC5X+G8qahEFNJDcJz33UAxLiTFqWmw
+iKLqy8oL8p9qPYlx0IAXoW/GxV7E0rBoA95pABEBAAG5AQ0EVLYn7QEIAMde+nVU
+cozJy9dzLCUpn91SCoWld/wTaSckxTnVMcr4uNLlJI/2PFjMb9ya91grr1yuwqSG
+3jE8P0Qdk9Bi6t6NkMIGUSJuzyIipsDDWaiCfjWxs7seFd9c+rgcH6r9CaUbNRfU
+rPqEZSeL+RDwIIz1gQkXmosF94DjZHP9abZYObH1/Or64CSRD8Ocf6kTRndwJOZk
+RdDtUX5NPFSiU17E/DoEkyryuXMR+Ci0b/hjQ4JnriGeyy6c0StWQUW18SEYPV0j
+3VyRRUcOLhJajEu8KU4Xaaxgb/2X7o/BosjjQ8BPPUdTz2wRluU/1tKUQ8D+O8QH
+7dCR3lJt76kKWbsAEQEAAQ==
+=ZM2y
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/06/f1f111af65925306.fingerprints b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/06/f1f111af65925306.fingerprints
new file mode 100644
index 00000000000..ca0701ed6fe
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/06/f1f111af65925306.fingerprints
@@ -0,0 +1 @@
+1f47744c9b6e14f2049c2857f1f111af65925306
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/0b/74c249541619ff0b.fingerprints b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/0b/74c249541619ff0b.fingerprints
new file mode 100644
index 00000000000..b65145cdc99
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/0b/74c249541619ff0b.fingerprints
@@ -0,0 +1 @@
+5719e50eac5a4b1dd390b72c2a742740e08e7f8d
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/1e/8a57131a07e0911e.fingerprints b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/1e/8a57131a07e0911e.fingerprints
new file mode 100644
index 00000000000..12884b6f291
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/1e/8a57131a07e0911e.fingerprints
@@ -0,0 +1 @@
+56b505dc8a29c69138a430b9429c8816dea04cdb
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/25/48b086a7d843cfa258e83286928fbf39003c0425.asc b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/25/48b086a7d843cfa258e83286928fbf39003c0425.asc
new file mode 100644
index 00000000000..5a00b228ae5
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/25/48b086a7d843cfa258e83286928fbf39003c0425.asc
@@ -0,0 +1,15 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBGPF4agBEADsWnQn3m/dMw1Q6FLALQCEucRkRLw4wcmtzXuuYb2M17aHvEb5
++OnXDdgQ2QcnnjK4S3zQp/Jt4ZQnnLORqx919+c+1gT24U06VxeGPW/TLRn/hnKA
+ZM7bwGCz7em/GQ7JaIXPn3aqGrCiy8j8N5jAQ4ePP5ESQLeWisQFlbKMFVU09B7t
+0IPG/LQ8xJs/SveQw8sGrz9zqyYE58EauyIKfiI91Ruk2jMcb/m+SRL9Bhen3Q12
+g6kFrHurLtEWzy1rwELt9g9OILv0FokPa2m0goQRHx4nFY0kIpJ/r9kDUg/tlg4H
+OxP+5XTJxEXGW2gb9zpmDpdR8aUgi67/Kdm8+norzpTTMAuKCgclCv3bJz2D8Jnl
+IgEXmSoznn1EnFkm0Qsr8JwkaPC6LkGcI7YqvEdCXtRXduot+9GgWytp/IxrlJ4X
+vFEhOmChdVdn5lT1T0ka6NxEJcmf5mfgyz9jRUVHINNJxQKP1Gh7LyMFeWw6V/X7
+RAeU/th1pL2rAeBqn3gnK+CIR82/AVDJJa86BAHiQBYilgs+bGYriXYd0qmIFvYO
+sSfC87Dbl3kzwcAGWB4d6tezLxrzscfbzWFIa9woy31/OcqK+uglSKbTFsIklhM8
+Rr2B0tQS1iNzq5gyWGKnh8FsqcAiGvDpwhF7irGhU7fNRVVSuamVDnV0BQARAQAB
+=1wAs
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/25/928fbf39003c0425.fingerprints b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/25/928fbf39003c0425.fingerprints
new file mode 100644
index 00000000000..aaa5f6828db
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/25/928fbf39003c0425.fingerprints
@@ -0,0 +1 @@
+48b086a7d843cfa258e83286928fbf39003c0425
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/29/25bd9b5e49968329.fingerprints b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/29/25bd9b5e49968329.fingerprints
new file mode 100644
index 00000000000..c5833dbaa52
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/29/25bd9b5e49968329.fingerprints
@@ -0,0 +1 @@
+e113159331a1f87bfc2a93d0960d2e8635a91268
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/2c/5f69ad087600b22c.fingerprints b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/2c/5f69ad087600b22c.fingerprints
new file mode 100644
index 00000000000..417448c8d0f
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/2c/5f69ad087600b22c.fingerprints
@@ -0,0 +1 @@
+a5bd02b93e7a40482eb1d66a5f69ad087600b22c
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/2c/8747963db7a6422c.fingerprints b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/2c/8747963db7a6422c.fingerprints
new file mode 100644
index 00000000000..9b5f56b066a
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/2c/8747963db7a6422c.fingerprints
@@ -0,0 +1 @@
+7119b89feb81209430e65c62c2ad9c8a7d4e988a
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/2c/a5bd02b93e7a40482eb1d66a5f69ad087600b22c.asc b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/2c/a5bd02b93e7a40482eb1d66a5f69ad087600b22c.asc
new file mode 100644
index 00000000000..0c531a4d999
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/2c/a5bd02b93e7a40482eb1d66a5f69ad087600b22c.asc
@@ -0,0 +1,16 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQENBE7JURcBCADO+9Dc4/JnB+wX+fq+Fr2zUGSPOT6/qjE5kXL4FEbJKsqDSAKG
+VnbtRrsIUdmNIFQmz71bBDFhRBbrSrkz927k8eUPhYtxE2NmmWSuKgrjF4qviPQv
+m/7SqGx378m/qw4EvpgGUB8EYif98LYdWp5vsU/zx0Ps9auqvetAzJaL9489oE0F
+q8FVhve6BMfUUV7zOTCmJnf438YO68upjU0PVBdfFE6Qx4cgCeWbQGy2cooW5azN
+iIenhuYU1qikmxMHq2xZzN4uSTWLGDpimPyz+Y1aTSYJ/bgn9gPStbI9sojWo9SS
+5gvNK3XqJzMwxwFow86UcIE0vPD2T6ZlBAXRABEBAAG5AQ0ETslRFwEIANrjVe+1
+SPgEY9Xfe2+XGN/3q9DHHPP0PXLTGPuWKUmAzkBddNEAXTkPKtyCbH4WXhf4jBZR
+yFIpLkoGrW/yIeJZNfoq5xET7ldjDaAMNxb59/78JfyctGbEAgUlzueFONk3Dl0s
+DS5GDiWqJg4orqOtUcY+46oo6Z8ncKBbxIvOL+qv1KLWtzIoxjG81PUMk1/CfTij
+HgklKtLlbpOHs3m47/28AP2sf6kESKxBwzjgdSyeSci2nCuPoeSfLTJBJlsREL+z
+DaJES4G2nj6r/rXX9YHnuH9n0hNxFyhcY0ztsIyz1wqx0kiOYHnLIpUJ+2TcR/YN
+mFCYqZ/co98sDMUAEQEAAQ==
+=Pb2+
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/2e/9c61220417aaa02e.fingerprints b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/2e/9c61220417aaa02e.fingerprints
new file mode 100644
index 00000000000..31b8edc48ac
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/2e/9c61220417aaa02e.fingerprints
@@ -0,0 +1 @@
+cde577234159e222bc56e50f9c61220417aaa02e
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/2e/cde577234159e222bc56e50f9c61220417aaa02e.asc b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/2e/cde577234159e222bc56e50f9c61220417aaa02e.asc
new file mode 100644
index 00000000000..2fdb234adee
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/2e/cde577234159e222bc56e50f9c61220417aaa02e.asc
@@ -0,0 +1,26 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBGQYtMQBEACmLu7LRrKxzEnLmRI/fWXuO3lcr2Hazd7DVmMSqH5sf+D6taoL
+uNRchspbHp804GOltu7lR6rNI5htQOpwVuiF6hu8HORujpv++N/yGdW3LGoT3R9a
+wNkJIudgOCxSZnNON+gKe4pqdk1R3WKWQzXe5o7PBn8zJen5uYP9MBN66lQxXw7T
+XsDDXjGRHJth7lOzJi/JStcO3Nc/n8PYz6b+t7LW7vZYshogRq6yc4d0Uktr3ZJw
+IgiN6vT4I2nHU48O+nqvKevfspNZdyWyrUCkAC9heANiXNEnr34j3EjTpJy4Cfmg
+By1QxFEaJN7HPf6y4OtTd3AThepK/8o69nw2LIjK6mvWa2ERXSNAVWbSKPlKf74e
+/x6bBDDqevDx9NXApTLrHRzBKDgQ2I0r68sX8RZTgbzx12I5CYTpDo1JRprVtn+T
+dfO50o1pxwvlDBuWCPqHERIzF9QhNXUDy7uh6J2s9qho+p6LKn01cOXoOrlMg6ZK
+syd5Ffo/kqiDv77IMAdaXmYmZelX2y3I0tfM3ccH90u5cDKEhRdiFiW48JPnhcz9
+QKUvGtT8hywsjkU7MpJf56uVQT1ApKmdL9rOgnjGnGeB9HNxEhXl1z9Sqjc0QAx9
+mq1TZ9K454lk+AqwAkUppoMez3tmJWULqDFqZkLuh/uAjycHhLSHmOWq1QARAQAB
+uQINBGQYtMQBEADaTQ8FyQYGKEFydGosLSOPet+Z4VaWWrjF4TOElczfhJnDhGIl
+iDU8c2hHFbovdWfW5fb2G+mgckyXnUFtO0FhIDpho2Mmz1sR4ZY/1dXJdaeSy2kb
+OxVTcVVJ3iIefvV7P7k6FGz36ROTthLN+Y0O3ZS9QlXDjtpOcANszgS3zaC2y6T6
+YDjubU8lMfHAad/VNgCtuG0IcErI23s2hNH5IpzndyuZoYff31UTzMW6KufbQC4c
+Ak7u3SQYVCq0HP7o4MiC+Tt43tLLE4WZUPpHU2REu96FZTot9/6WROTm7SzSNzS0
+q764jKe3Q1Y3AY01t6kpQHv0mE1bQ99e6yD/Gm1J3Fet+0z6Q6yB1Evt0Omac6yy
+EJ1eePB4whGmeyoC5oz94jbTkGkhXS8Cxwl+M7HetH82ShC1XPl6dz67WnUndddX
+LQnOr1PfXI4k81qUyPuojvMLwKhX9lWhAJImQp2e3PqAa3pZOcjdw7pE77ZvKF2a
+gwUJ0nEenzfM9oyj2/V5NGCI845Lk1K/319XmxaYghEJIaNBAVDrrkoVdY6tD4le
+5RKdjfTvnndYsZYh/rJZn+fp5GZAk1hHQsj/yiS4kQ3h/Lt6Gztv5Nsh7U7M1mat
+SLZtB/pfyHZxHmS4khcR0HGyHUSZyPBbz1Xno0hqU4xWOlndax+peHjnHQARAQAB
+=IBhn
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/4b/0440006d577eae4b.fingerprints b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/4b/0440006d577eae4b.fingerprints
new file mode 100644
index 00000000000..417448c8d0f
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/4b/0440006d577eae4b.fingerprints
@@ -0,0 +1 @@
+a5bd02b93e7a40482eb1d66a5f69ad087600b22c
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/68/960d2e8635a91268.fingerprints b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/68/960d2e8635a91268.fingerprints
new file mode 100644
index 00000000000..c5833dbaa52
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/68/960d2e8635a91268.fingerprints
@@ -0,0 +1 @@
+e113159331a1f87bfc2a93d0960d2e8635a91268
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/68/e113159331a1f87bfc2a93d0960d2e8635a91268.asc b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/68/e113159331a1f87bfc2a93d0960d2e8635a91268.asc
new file mode 100644
index 00000000000..fc86c797b48
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/68/e113159331a1f87bfc2a93d0960d2e8635a91268.asc
@@ -0,0 +1,26 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBFqz2mMBEADf9rwaUU4Up4hEHRt7JnhIClBNYqQr8Oc3QLvtEmsMv6UWHQ/h
+l70MhvCrAZnxnDmcSEE5/A5VeZSDBm4qM+jH8x+B9zIVMoWS2c3IJeE0Q0bt6MO+
+j6TQrrXmetyCvzYMz/Dbr6f3alEvh89ImkSZ4XdEByFcoXTdpQ7WUzYNw643F3W+
+pXg2eMm0DVN6Sqagbeqt1qZQ1S/3RwtSIgfGt0T88eBYMe8fhrLhLvsakERrPBKj
+01uzeBJ5BuUNZ8OrI23RaF7upDVkoxlZW6dz9u2W0YiKozo0IHP5JdllSAtg4Bbn
+sSfNdia0TbTT5Pwoz6ncY5ivUnCeHP2nZ02IjTAwNs2mni2KLRKop/SRqKG0jqRT
+wFDS4XeocvBqpCAHR/Gf1LmR2j+jGGkohnFAqS9ds7yZISnp+5VnEvjs+vGwMh2U
+ybwGpFJTFE70ntg7t5S48P+IjuUDGWoEE1vZsMmm4ytAHPxRBeERvMhPL7PLLYPY
+pejtRIsc6qSCBVi9DHneXhP1bh9Osjg9YOckShNQTsZGo2IHxjC1dqXXWn0RNYLa
+oxqz6/RY1uA809N7/kwG1xBgaRMJl/HNfBVAFf3Tx0ILI7cVGvKrHpDiUfSxLpY4
+M3EWBRlJ925bkFhEIQ2XHhVh6fhy7W8oB47dnYpTlVyEi6iPh+clUKuZ0wARAQAB
+uQINBFqz2mMBEACt5yWpYhiY2Tk4NXOVBGBe/r8vwwfKiilH7RcUVi5t7JP9n4IY
+8vzp6sENykHtsTITRu32QOj7KAu1xo6hSdJ9aUUuL0/xiWF6eiISqa8isj54XuKA
+4xgDTJb6gS7EFAZgU1PWVAihX75cEWMmNfPLulfqOGaxKm9kgdeo1BGDxp5aFm31
+EptDrCl2h3VgWDaBOm+Zo2xQyjMEpsBmrZTLtv+VEjDGb6J93sgsTFMd6eAhd+Lu
+yq62Ap/SmavBbYyhUIv+ay/2Kv+8h8lLc8KJSt2Ox/hDD8NFShEw6Q5VDU6+fsjy
+CauFeCCuDco9hSSFx9d5dNod51dXKlUz9Umwd5NhdLa/OYW5rA3ohsoP/4HbSPzw
+2DBacf+No4jHxnk58SU4XGyvDtWSuiTVyDrZGiFEYpPjEXUuwjidiSCa3jb3gfl0
+0lJjg5wKf47TWgVh94AgHjkZGutv6votGc1SoGS0QNJjRFeTjpr1nEwOihz0AH3a
+FTkiNBd78rsMctURswvfIjHwGijJMrSKzgKysgUTuuyKhvhEH6C739YweArhJkNo
+HP4Z91FEDrn5PCtUHY7deGHiARLPcgnN74wq45iGNYmK7Qt7sbWcJQzJqtMzHI9c
+MyM+h9nm7lOflBVvJo4kTYkIgqwg6rV/BLCv6/ONqmmMmEEh7B5c4GA2IQARAQAB
+=/Car
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/75/ef375eebbdefd775.fingerprints b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/75/ef375eebbdefd775.fingerprints
new file mode 100644
index 00000000000..ca0701ed6fe
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/75/ef375eebbdefd775.fingerprints
@@ -0,0 +1 @@
+1f47744c9b6e14f2049c2857f1f111af65925306
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/7b/32bbf14af07ca77b.fingerprints b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/7b/32bbf14af07ca77b.fingerprints
new file mode 100644
index 00000000000..c6ef2dc3355
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/7b/32bbf14af07ca77b.fingerprints
@@ -0,0 +1 @@
+ed09733fa05dedf15100abeb32bbf14af07ca77b
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/7b/ed09733fa05dedf15100abeb32bbf14af07ca77b.asc b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/7b/ed09733fa05dedf15100abeb32bbf14af07ca77b.asc
new file mode 100644
index 00000000000..e3e216517fa
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/7b/ed09733fa05dedf15100abeb32bbf14af07ca77b.asc
@@ -0,0 +1,26 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBFPaQqUBEACzwC+QX+uZlPAmU3ds3+HMgw12yoEb4Wahc3hqL1nSekUZ4oN1
+EdKtzIrTORcB5eH987FfbgM4wPeott91ZTNuxr0X6ulHH/YzkLnytMjlipEuoxZ1
+FwXjTBN187Xc6Tbewco+Tm9BpPNVO7eNlmJih4TRXPmb7Nd3WAb9UYOO/L+iHluo
+6SmZ9fIw3AReNdfVjIOV2w7fTQJdBt+UpN39hrHU1o2Ok/H5EsS7gf170HQWgpHd
+0GgXVF49BKTVVu/D+X3+C54DHfMJUwsxJ+KNYuYIsWV8nUf+Prayji3IJLeFBegL
+VO0ZzoQs+u/PyOQIOTz2odvUIwde0rZCveILi1W4wj9ijhL0eT0n+tepE85vlYr+
+ZHXrlEelJHq4LhC4a7JSdhJ0UreJM3oTIS4svmR6TuwUjAiO1ewYwfjWB5EWoz/7
+qQ2fj5gjgP2A69DXtJ4dhj0lrUWpCDy8lgdKAgIpxepE03o7SaZhLRslwCQWBRW9
+SdSEByx2KwZMcu7cmXSgavc+AiSDD5KIZQJdHwEP7r4OewyRpCa/wplcPAimVUs4
+KTt7bXtBnw4jiGiLmTiHwZqMmCmSEUOzivG+7wuXsBA0ucivmert1IWamSdT3NRt
+C6IdH7KR8tZXzmkIl6ARH0WGz109ZrqhU1vCG1tLWhmaqW6VuOr4J7lA0wARAQAB
+uQINBFPaQqUBEAC0uU0KPaS4FjwYB0fvD2bJ7zLg4PGhlAYkGGOIWMSys4pNd0Ql
+TIdKqlZ6hmCEiPQOwLAGN+B4Fpp9dU7MhPOTfEWY/ccYcOiebktJvtY5C0KbC3JX
+bVvYKZXSszVcVIvlEMTXt2WtRTov2cff8uWE7vadXSNQozBH3pGBnBlkzTiYJf8y
+h9BNqgQ4evJG+nRfTPOPHtPKRCtDaC8CwF5rnyD9CBDuFLxd20i9i7T3tsWkfOV1
+5FDutdtZU97S43cI5d0apQX5wk4XzM3cEmlYSvW3EffK5K0gi+Vyka8JxpR9bwA0
+RzuCwwbP4HloAhxVB/R3Zcsy4wweK2r6tFOdA12FigOGbO5+s3Us6zp1q0GL8N83
+D0D7Y8HMMJmLoPhK2Ddg5T6zrti+2z0vO8d6elmJluASzbMYYk4NMxuJTp+gw0i8
+iTp9k28/FNZbHsVReoHOeigybawoAOZX3x+b52ehcoIWdX7IiVyTFYsPb5hPPmrK
+185KDwAnYxwSaoamxhj7MybCNteUFCjVQtbD2UHl7q5nzEwUbJIO2ibwOCTBw7FO
+zmdCVQ4ex85y/agKnzaqxBg3fnpuRKQmflG24oPhwu64gUW2GZskfCQLmLPX0Lqq
+06FIcS9qgl2o7LaLDLTdS853E4696B9tMXUOgEtvIftZKdVKE/9RqQ6PdwARAQAB
+=Dpj/
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/7e/7a1d848e7c2af85eeba69c99e7bf252cf360097e.asc b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/7e/7a1d848e7c2af85eeba69c99e7bf252cf360097e.asc
new file mode 100644
index 00000000000..2c29fbdf287
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/7e/7a1d848e7c2af85eeba69c99e7bf252cf360097e.asc
@@ -0,0 +1,16 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQENBFKQ78QBCAC7JYRWDFIDUVKg3upqCY4TtA9wO88x9Madd+2SsZX6dkmMXgDD
+MCAOP5zqFgX0ZoPh/sOnkEx9I8owfwfITN2H85tOdJ9rVvuWzgZXQpDkWExDG25L
+VNVzcTlOC3ZrJevjo62WNL4QPKEnrFPvXa9G+fQabixAPFqBwTjVP5WNABr49tol
+nwNIKNtiqXHXES9J3G02SIjIS8OgbzW0WtSwP8qi8EUzggnCTRCh+lt/Zz1XxEx/
+Zlk07uurOebvJ2wKJU2jhzYKMI48h4AI7qowjU7+IrGmEmSQ/UIyAnPFCcmf4Xyi
+Sa795ddZd1KKy5Zxl7SZk+2s2RXzYP3Yyty5ABEBAAG5AQ0EUpDvxAEIAKYmziBF
+eMz5y9+sl5nOhCZ52H6tbCbmPT5pDS8ct0hFuAocFaOlq0fUyPPtH3S3vgCaNsg+
+yrZgzUSdvwWKWBiJw/vg+Yw8cluNnNScRzaZOlW29rBnKZAvZVuMoQ3WoR/8kF26
+BgSaJ1hRduAQLQMmjONWuQSGsU/AyA0K1TQsHNpAuVJIS2PdOuAnf67YDx9WOn8u
++Bk302Z+7ppy88s95/IyG8Mpv3cqNaaGyfHRwMPIEZxSOKwnh5yhvgp2Il0BTfwW
+WZeK8Ls/uBask2FllcQLgQMxkWFRODUaTK9cjSkmXuu+O/9kLnexUvuCdFUdxHqw
+lz3uqx1u7XBxnBkAEQEAAQ==
+=sePN
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/7e/e7bf252cf360097e.fingerprints b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/7e/e7bf252cf360097e.fingerprints
new file mode 100644
index 00000000000..eee3f4f0e3a
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/7e/e7bf252cf360097e.fingerprints
@@ -0,0 +1 @@
+7a1d848e7c2af85eeba69c99e7bf252cf360097e
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/82/120d6f34e627ed3a772ebbfe55c7e5e701832382.asc b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/82/120d6f34e627ed3a772ebbfe55c7e5e701832382.asc
new file mode 100644
index 00000000000..5fc3aa02a8d
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/82/120d6f34e627ed3a772ebbfe55c7e5e701832382.asc
@@ -0,0 +1,7 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mI0EVdDLQQEEAJMtYCaTA56YsP5RzQzPvqVTaR2nZ27qRk36blHB9WmXK+NHpGeH
+PHgq59mLPVueo2/M5k/fFrCe36jHePP31gYpFtueeYDfsofHwod0WhsHyC7JfG8d
+jEnSczTCmOHRZ3ed9ef6SeWUozYCQAX/tAbpoCthe0lTDYhFhkzVCe/FABEBAAE=
+=45ZY
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/82/55c7e5e701832382.fingerprints b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/82/55c7e5e701832382.fingerprints
new file mode 100644
index 00000000000..b51de8c0cdb
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/82/55c7e5e701832382.fingerprints
@@ -0,0 +1 @@
+120d6f34e627ed3a772ebbfe55c7e5e701832382
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/8a/7119b89feb81209430e65c62c2ad9c8a7d4e988a.asc b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/8a/7119b89feb81209430e65c62c2ad9c8a7d4e988a.asc
new file mode 100644
index 00000000000..b39d4d222b4
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/8a/7119b89feb81209430e65c62c2ad9c8a7d4e988a.asc
@@ -0,0 +1,26 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBFyrDesBEADSY9ho1u1DQ8MY+jc4xApFAagCd8VB+YT96A8FzvPLuj7f8M4T
+JNjd/Te7kR47SW5KoROiucoVw/YrUnyaHw5Ph+vF1msTlxD3OKU2PiVHI5JJgg/1
+WUioL4wASue+r2QCOc73a2s3eVfSFjozNE7I/gXlbceuN5+7O8a2eEBDCErH6TPn
+yD4ShnnRPtMfBTYKMCV+sclIsjO4buxyCfqySyxHS4vGXxgGxZVvc2HrSbL+JFo0
+PMcjPSaK6u+w2KBo06HS7TngrRkxHmqzuoo4xc8HGaSA9XKyQPOrcerIsdns9EpD
+ahk556qOtRQay77tDwF5bJZvA37DJI3QfVVXTZBFpPhFHmP5Ji/6OTsodVhpTQr1
+mycP+zAyMOzD+gvnJO302PFWCZblMXbmVMToefNIXAAobTOaG3QwDsvftwQX9c0V
+ZTDSoZJXTsYdX/2AOWOU1RMzE+qbzgm/GLZZ9ytLHGdodL4tmo3mitPsm4FLwyUH
+TjcP/SsZZQk2mZyiR7/vl+BvSTqnHTXj+10p1+MIOPiUAwaa9JVglV4odkJHZwwI
+7yEKNqyDeMRBbxtZn79l+qmzsMi+51MRdgPiBRktPdwC6w+bkxfSKCSWdD59fbNg
+91jFktNtUMK3L2NLX6YRuQ6+VRKGqEOI4l8hEDKM7/eS8Y5Dxe5RmesoeQARAQAB
+uQINBFyrDesBEACqVQoHqtE2l/1crv6Ym49ZHT+wtmtfS4D/ZkthHz3Bc0Zne4+B
+DbXtdG1WhUvO+S7CRfeczXxDMmMsUeN0/hzcCG03QguFHQyQL9IIccAZRij6TR2I
+aF/N43fZgfL1ai/TaMgXDv7LTbe44MK3w4jqfrd31Ee+laN+gluG+o+LJBkYfpzC
+MlkXp1Xa5kuFFoaGn+Dyy0MTs37jnbgblyraGogkciERzlOA+3hMnolxTfx5v/Th
+Mq1tngshYw/PkLACejKCpJvi03tJF3Q9d5q81AqSyqthSnfIITfOJ40U3J9pDM8Z
+WJXkkXunlQIUcdNvQAzjegMg1KB8TdVuNcFW7ZrtPAOsSxEBk+Ty/xhXBLxoeHXj
+WwVlbeSAumCZgVqkkvuxc+0gIocqUKjC/VqTyoENX1z8/dbkiGRmvebUJaYxoiPE
+x8h9O30zqKh42ovM5xiEHajZ0kJBLJgg225VCdJ+4ce42LkZ0x67EcDZYdQ97iRo
+rOPqBK11ReeexFsrkfcJoywBnlxIuPKqJ1T70JoqDX9TJHAM2n07kbxjU8E/pqGE
+jezk+oQpJqGTXibFRizvZbKDeBPmJXVCUHGphs0ZXyzgk+WGEqBuqR7K3dZKykCm
+AZui12ZyHxSA/PKzaUKMAQmXrg4f3LxmI8GDl4EmuSykK6wAO0I+/X08pwARAQAB
+=BwIl
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/8a/c2ad9c8a7d4e988a.fingerprints b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/8a/c2ad9c8a7d4e988a.fingerprints
new file mode 100644
index 00000000000..9b5f56b066a
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/8a/c2ad9c8a7d4e988a.fingerprints
@@ -0,0 +1 @@
+7119b89feb81209430e65c62c2ad9c8a7d4e988a
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/8d/2a742740e08e7f8d.fingerprints b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/8d/2a742740e08e7f8d.fingerprints
new file mode 100644
index 00000000000..b65145cdc99
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/8d/2a742740e08e7f8d.fingerprints
@@ -0,0 +1 @@
+5719e50eac5a4b1dd390b72c2a742740e08e7f8d
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/8d/5719e50eac5a4b1dd390b72c2a742740e08e7f8d.asc b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/8d/5719e50eac5a4b1dd390b72c2a742740e08e7f8d.asc
new file mode 100644
index 00000000000..e2d909ce835
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/8d/5719e50eac5a4b1dd390b72c2a742740e08e7f8d.asc
@@ -0,0 +1,33 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQMuBGJIi4URCADFspeHyziASBuPXpLpikWjmC3D6VtTaDT17ogOyGLf6/sjsQUz
+0KS3PzWBuPoqRGRpTtZxJ5yr10apr8mJF9Po5LFkrtcexaiYmUWAZAik894OhKt1
+O9he2Sh1OTUiTmFU4ImQY+AeRqASZMYabhbbJOfQLJV2Er+foKzRC0T2MSQVjDho
+NywU1IsQG58lXEQNOA50uCuhnaCUy7Mh/GKCejyBaqXMtd517evHhqsJd9tWMNW/
+W2xKvGiH2mWSRjgllZ0h3zHuUEo8xqetOuHrDGGRpkzRES0kIT7En39hpVpP662Y
+97Wolv4C0/UE4rlfCmiplf6mG9QPET8wZeRvAQDh+Z27sD3ODWU2P5s/EXzsmBoi
+kK2KzGE+n32kRY4fHQf7BE9PfZ3f58KICY7p5apxP/6+bl8uq9vcszGPHl1aT2cH
+oQpPm5i2UHRoWXh7U9TpKWxxqx+yvJlPhV1c2DTvdbx530xEMF6up1f04+axhlqE
+DzjzOenwpnS3DR5iUqflEM33njj4tK+Tw51kXjyBxafPmaKEwuqzYzCFoojidmSx
+Vk4la9hCvIJzGQ+3iTX6OR4d1lGvRGmVm2g2AVrpZ1yPncgjCu5qFH9UiBblE8LV
+SVGBufS86pRwTrwW+fXaKw5iIyiPMSSE11H8uw4q75uFVnmEd4JUtQxGjnv7vbjq
+7hAeE3T4HlLPFBr3y8c3829HY0ozNVKKtXs0/lBzwwgAm/59t1B/dMl61BaufnY1
+5tYFAcStTrl0c3ZAYHO6DWYTJ8ZZQqiBfeyVI3yqWKQAYg0DxC9AzTtNSOs7SGJK
+dgdencJoa0ElraZuVXfb2Pr6cBv5wKRfU7ZBvHfCE56vJ/0zAvGbIRy4DYup8+Pj
+vcLSSWvQMT0iHk9TTw6sJNV/S4aH37Ux2N3SsARvqR1nZ7rQaGN5eTg7qHmwgIgd
+AoHa2Jd3ixOKuLzwIF4hoh+XKI7bYzVHwYq6yVZWevloxlky0FfAXCH2/lrTGyvj
+i83tPUIushngZ07senzgK0IWQIuLVjl03tJ/rc12AtiZkx1/ykssQ2uJolIRLfou
+u7kCDQRiSIuFEAgA+Roa4drFpqXxAR4ZjJ2WA0v9WUGWmbZr03BpqjoWzgHvM453
+IbSQ3e+l+DYzfxw0EpVKs+7GiRLP4/a1f3v0ubBPf/QHfiY/lzfqUDwCUNfB8Zkw
+ygvsydthI+DD6hgWOnd6la3O5vtFHvpuH8cv6uYJVWIn5wVbvAbyhJIn1Ug3++Qq
+/g4Dm7QCKsu/phulcgJtaZuDTPRGKLNhmwVbO7E9chjW1peaEbYhwI0H1jHU8onX
+s+00uiM0baOnpI20+5bvI8Zm8wYu3FGmzhykOLKOwd8y8NlR2VSaTYZAGO2+h2vm
+/PWuMnnl9v8mpYi9XbHdrf9KndAcfx+gYtjdxwAFEwgAqg9KGwxXoPtahCzrBdq4
+M4FK7zJyq5GVtSQXFEzPjnlF4xvcF9ntG+67S7vuPAvTsHyhvfGaqBsssi/eDSVC
+xD9FIYXGZDrrVCCoMkM1R7qmE3EZKr2fjBKUmmQb8qu6sknjDqUkNwyolhMip129
+AUvrOW7SV0HK33SSLlbzdv9z+COYM5lyLvgqmWjInKziuXpG5ATszGqlz1BMH8xh
+tFDoOApVnVPXPO+pLGbxruy2t5DhVIEnsuV/A7rs6ko8XCXk1+njvIyCQndU4m+j
+NRqPU86Qch3+qZyUBuhwmL/u9VsKcrOl0w7KXwxWTbkqQSZynt+NVtpuPKNxoaKz
+OA==
+=DT4Z
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/a7/7d1be4480b61e2a7.fingerprints b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/a7/7d1be4480b61e2a7.fingerprints
new file mode 100644
index 00000000000..0cae4729da7
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/a7/7d1be4480b61e2a7.fingerprints
@@ -0,0 +1 @@
+b46dc71e03feeb7f89d1f2491f7a8f87b9d8f501
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/af/c2148900bcd3c2af.fingerprints b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/af/c2148900bcd3c2af.fingerprints
new file mode 100644
index 00000000000..0cae4729da7
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/af/c2148900bcd3c2af.fingerprints
@@ -0,0 +1 @@
+b46dc71e03feeb7f89d1f2491f7a8f87b9d8f501
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/b1/07d3516820bcf6b1.fingerprints b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/b1/07d3516820bcf6b1.fingerprints
new file mode 100644
index 00000000000..6ea37287df5
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/b1/07d3516820bcf6b1.fingerprints
@@ -0,0 +1 @@
+635ee627345f3c1dd422b2e207d3516820bcf6b1
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/b1/635ee627345f3c1dd422b2e207d3516820bcf6b1.asc b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/b1/635ee627345f3c1dd422b2e207d3516820bcf6b1.asc
new file mode 100644
index 00000000000..6ffd46c2336
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/b1/635ee627345f3c1dd422b2e207d3516820bcf6b1.asc
@@ -0,0 +1,16 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQENBF3HgdMBCAC3ET5ipFXdZ9GGMbtsCQ3HGT40saajsNDOdov2nMJxzKkVe3wk
+sN3bpgbsqBU9ykVkIhX8zV5+v8DOBzkV0pJ2eLjFa9jBPvNjV+KoK2BAI5pzNzYg
+sHPwo1aRXdI0MvCy+7iaIiiGF4/O16AhU4LmALHnaRQZCyuN6VOQ8rlqNvcczwUf
+J2DQeLHqR/tsch7S01hGpPAptBeu19PyAlQsntYN0yLCLKoe9dFXWCDkvd1So5LF
+6So+ryPqupumBbh4WxCmTp9qwDJYJItjAE0zyPe890FurOtxrFTwtRtX6d6qGKkY
+/B4T3r0tTE1EiOUpmSnxmGNItMh7/l5UtnHjABEBAAG5AQ0EXceB0wEIAK7dVAoq
+ZqBw9twxk6psNcTmIrfQbvjasKl/+PfLCfBNklD/nwe0CLz799fFSFMezCg43ZPC
+KIescCQ5t74r0D6O/QTGMpUyZD+w4JhZkMQYy2HjImfMNtPVOWb+XaLku/RloPt9
+MSG2mtA25TTp295N4mzMPKq0r1PzSa8jj4Yfn3AzzSXXLq6PwoDiljQ91IWBvJL2
+IAUAMaxSxzq3UqJnlbX2h0yMM+VC0nbSmbkK8mUNltg1EnngJKV1mKRG+Y1GDmZZ
+1Es19tEwUMsV9x1gt05YlecC31woUkL0//8i1kWuWG7dqRMf/8cXaTFA1brVJ33b
+/G0VQP/a03UaVd8AEQEAAQ==
+=AghA
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/c1/11f4ce313a637cc1.fingerprints b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/c1/11f4ce313a637cc1.fingerprints
new file mode 100644
index 00000000000..6ea37287df5
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/c1/11f4ce313a637cc1.fingerprints
@@ -0,0 +1 @@
+635ee627345f3c1dd422b2e207d3516820bcf6b1
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/c2/f508c72df8d222c2.fingerprints b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/c2/f508c72df8d222c2.fingerprints
new file mode 100644
index 00000000000..4c2d6088abd
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/c2/f508c72df8d222c2.fingerprints
@@ -0,0 +1 @@
+f36ca0c4b500f0cdde0c5aa1913f763cd0f9cfd8
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/c4/d66472cf54179cc4.fingerprints b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/c4/d66472cf54179cc4.fingerprints
new file mode 100644
index 00000000000..9fddcf29fc6
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/c4/d66472cf54179cc4.fingerprints
@@ -0,0 +1 @@
+e77417ac194160a3fabd04969a259c7ee636c5ed
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/d8/913f763cd0f9cfd8.fingerprints b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/d8/913f763cd0f9cfd8.fingerprints
new file mode 100644
index 00000000000..4c2d6088abd
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/d8/913f763cd0f9cfd8.fingerprints
@@ -0,0 +1 @@
+f36ca0c4b500f0cdde0c5aa1913f763cd0f9cfd8
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/d8/f36ca0c4b500f0cdde0c5aa1913f763cd0f9cfd8.asc b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/d8/f36ca0c4b500f0cdde0c5aa1913f763cd0f9cfd8.asc
new file mode 100644
index 00000000000..10f25d77d22
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/d8/f36ca0c4b500f0cdde0c5aa1913f763cd0f9cfd8.asc
@@ -0,0 +1,26 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBGA+eiIBEADDcMhLJttJzEdu0drh/9d3wtVvdCm6cfDk9dVFxk4dt5MLe0f+
+Bv8+WKMmfbsmZzj4/f9nwYMXk3yx41iiN41uuc+YTT8lHwsOdmlPClBAQmtg+VT+
+xTIXqGKQmsElNjKSnGMzC4wI126cZrlv9uuy1NkDfjv1UM5hCVW/e+mysfgDbF9G
+cEJajBJIQc4Ps99YruNzbZr+kRis76A9CGtBcxVDniNcNNO7ch7rQ13Df87gQl0x
+WJrech4mJRhfprqkeM9RD6khTpBAXSXuPOrM6x0hIWEILq0JllYQ00G1AznXgogP
+fbsqbnN1wiztwXRVOupSOsH01CN8ANS5e+ZIWrc49QxpRHLue+r9ijDVAWQlF3N7
+2AhUcK1//BApF095z2g1d9W/+BVbwn0MZnLjjNHZqU0myJxSSBfSS3HsKd+xWurk
+Lp5yBEUaxgKBg90f8ikOl2DQxNt1EPucI51DwsfPbMXkAEEuBTOaZssIAI8DMxNX
+32VmM5O9ZPR8HuMDoTgwYBCuemp0Zt5JnWyhWWBvpWzz+4qh3ssAysjO7Zmpkh6G
+2vmG4WNzY0ZsttpvKLC/Ry1c8oKpw5vCM7+EYpH/lj7i9200hLQ+82D2ndxNPbBJ
+RNUBzBmiyAPcBQ8IZZjOpAfBC4UqaCHDfgz9hPlhEHZAEFHLBHEGd9eXwQARAQAB
+uQINBGA+eiIBEACXWHVGrQDyqTqboO3vXxCyM7NJgCEeN5Cp7xK+SGBPz/z2qfol
+IR/lbiFqL/aaGVaSsCKh2yz8kGuPNVsGLyfvO0pWRb8reEG9eXTBVJxZmOQ4Ulhm
+oBKLvEniOzPCqEPWGxSv2FBhXKeJyViLMD+go/6+jXfJmqBPFFALAN3CWiIZDrCj
+FqiduWXMapSWptVDtWsq2Q+LD97U0+ESWzvt7BVs/NWzTbUWvXHYvipZ2ZFZstr+
+ym1G4IsjYB2iy46gjePYh2aG6YSsG9tGe0FMVf1/dJaGz3U0ZMD6qicm5FYDNaXq
+217pXOd+gvvpi3SxdaOiSMfYPuhoAv5y66+x+zqWNsNVPeRZydtWhbvhpNERSvCx
+r9Agh+4WC0XPQEGrC+Hyau8rYcwMndAwR/Pw4wNKJuB7IqWnk8y/1m3Br2vbc+hi
+uhFVOx+ZkBJrlUcFLVT2D/3fonDrxPWmOJvzgqlSeZaFMFNe5/UoXBAbZb/1E1pj
+6uWrun11NOrZdsD4Eic6PzERdWYoWgd+7fFqeR3CQDMyOY1XvetOgPTCzwAYjLzR
+UXTENayf/mhXtIbiqYLrx8ljz3HN5XUcFo9Q5Zep1e3IJNrC34dea6azh/N8cgPa
+4vEKkHI3g+udt8n08WXGMMgrdvi3W/5Sx2UuKjJn/Iu0s13e+C9/odyLhwARAQAB
+=X8g8
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/db/429c8816dea04cdb.fingerprints b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/db/429c8816dea04cdb.fingerprints
new file mode 100644
index 00000000000..12884b6f291
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/db/429c8816dea04cdb.fingerprints
@@ -0,0 +1 @@
+56b505dc8a29c69138a430b9429c8816dea04cdb
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/db/56b505dc8a29c69138a430b9429c8816dea04cdb.asc b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/db/56b505dc8a29c69138a430b9429c8816dea04cdb.asc
new file mode 100644
index 00000000000..b5fe8cac30d
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/db/56b505dc8a29c69138a430b9429c8816dea04cdb.asc
@@ -0,0 +1,26 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBGB980QBEADLBOfY981RbUf7zI9AoXcxGignXkYbeSvxIMML9vAbnhmuHwa6
+h+81ZTY2XK7Rz211y129YidPykkiLX9mY+OWvJsj7dTyVTcIm6MU5ETDvovfmKWg
+5sJRrANAnkZ73UVJIKTQC9HonBIpiPLmDEBfReHkNsXtYqS4fyZO5tkjy9ejaw2p
+5qpOS9WixIvZT43OfzH+8O4ecmDrOZ20azogcWqLCQ/ZDbfnyHFH+BvA8bn4bS6y
+304655N6cxDbShHrLWP6erbGozmLu/hVabCMSJgGRRb8NcUzJQ5rwh27SvKyMGKE
+8u1ek57d2wv2pI+sACBMzYlrP1S9MTcpUsQ4YvDQi9Ic1QDw7f2KkEsEnxs7h17h
+AhbBwEvNWqpFkKjI4ApYsM+/fPo0/lsT0lskjKrCnoEL9+sLKDcp85cR1dPC5ELf
+b2bhgjqccIk2gASrjmTiryF7gUiMTgZVU5PF9f0+p1pGqC4GIjJOf/JGhhGEyzVt
+BNvJWUgImqWbSFOKWfvnmdjZyULAVouxrrxF1vPN2U7KFurmSQV6tq/1Uf/qccR9
+/uhEI30ypv4OrVi+8WoVsEamag/AlnRLFCEjdfB0oUy7V/lPqMxRoxmhiTX+cCjM
+QkFfcspJt830vwct0pi4rtYt9pk1Roh9tOKh2UKRDGL5DE3rZbJYs+6TAQARAQAB
+uQINBGB980QBEADfm6alrriLjrDLwBlQDIayE/SCyieZlfCsdcM2tcnFF8dznHMp
+Dimke7NmZ7YYpuSi4im6920D3omARVBHE+JKAcIchCRPRTH0ZvbVx7bzdiPztc/6
+su9YJ6NbJS81Mk5c2pAdw6e0qd6Zw98aVyjfcd8Dy42uuBfQrHSuYYpXy8kn+WZ7
+zou7d0CVskvel8GhqPshY4Vwm8aBDXrydEIoEYhlhnzQTUmVylaHLQAnKSJmkWCK
+o7UUkH1B2vfTZXAIVOt1q+5bkR82AT95Jj5JzKfoneoeXeIwIIbj+j7y1FM44e3V
+DhjY7TsN4tyOqzMRZ5/6GcVpJ9Zns35o+pGrVa02CUQFEdZFrH1fF84MglydRgHJ
+QsFuqOUt5cQgRpXMAhu/aex+Y1YBjyWPqRFtIqJMqejLRZ2SGAxQWOXOrW8nJQ0+
+2leLsFhgbOvtYRI9NBm2kPZomHnrHmmG5EaBwjOu0xXPMEooIICUfCPlqmonXJNI
+Pm2pZXp7geJ9zV7b83iWkJK4YqIs4UM78T1kb2EUHguAR+eS7kc8Z0wKxn0n/1e7
+lT5/hlp7ZR7wn/qjr3SAR6RjfIevakD1tK1zj4wJgPWmTnraeyyzrOCq7z4tNGgG
+ZSvSrKWckb4h35iSEs6mcAEVRrzB6a++HBGlTCOQQ/is/0uUFr4yP5R7oQARAQAB
+=HqzY
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/e3/fb8a646f1e894ce3.fingerprints b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/e3/fb8a646f1e894ce3.fingerprints
new file mode 100644
index 00000000000..c6ef2dc3355
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/e3/fb8a646f1e894ce3.fingerprints
@@ -0,0 +1 @@
+ed09733fa05dedf15100abeb32bbf14af07ca77b
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/e9/cff46ee3c17e53e9.fingerprints b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/e9/cff46ee3c17e53e9.fingerprints
new file mode 100644
index 00000000000..0cae4729da7
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/e9/cff46ee3c17e53e9.fingerprints
@@ -0,0 +1 @@
+b46dc71e03feeb7f89d1f2491f7a8f87b9d8f501
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/ec/fb98a869bd0d34ec.fingerprints b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/ec/fb98a869bd0d34ec.fingerprints
new file mode 100644
index 00000000000..eee3f4f0e3a
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/ec/fb98a869bd0d34ec.fingerprints
@@ -0,0 +1 @@
+7a1d848e7c2af85eeba69c99e7bf252cf360097e
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/ed/9a259c7ee636c5ed.fingerprints b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/ed/9a259c7ee636c5ed.fingerprints
new file mode 100644
index 00000000000..9fddcf29fc6
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/ed/9a259c7ee636c5ed.fingerprints
@@ -0,0 +1 @@
+e77417ac194160a3fabd04969a259c7ee636c5ed
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/ed/e77417ac194160a3fabd04969a259c7ee636c5ed.asc b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/ed/e77417ac194160a3fabd04969a259c7ee636c5ed.asc
new file mode 100644
index 00000000000..385bd035fe4
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/ed/e77417ac194160a3fabd04969a259c7ee636c5ed.asc
@@ -0,0 +1,26 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBFKD+PgBEAC8IkWujQlmU0/7+QPZFsc/z/rXgg7BQyo330QK4HeMzeCK6WHa
+SWzVDM9h6nFDs6Xln6YexbZUjLsxS/a/Ox2i26Qg8B+NghgiratbdJsByRrU/3la
+0d8eYXrKO8BU024o+go+LzJEBqOb3+bn23dwF96dyCUfnhabYz+ZbPd3VmZV5D3G
+fv0vBMnQnJkToOW6fVEoqjzCpEQmSFCWe6Cryj0veci2JmFIiiLA45hwuMg3hj92
+Czd+mdxcURtwm4XFfUoO32a5nAhNfrzKfz2eoV4my79MC8JA8OwQau5aksVu0Ohs
+3z5IsdXi2hUqPF3s+j6BQFwSPmLo3r5XwZWTx9RAM7D6cOHWr2jW61o32t6ABSiI
+cfhECTb0arEvjGtr56kD2JhgTA5GTIBGPwbdNBHMKZc4VmIFITnUlJ7MLoRv/gP6
+XyCerPB4Cm6kOTcNZnm33yUMNB6GfR1/l/+3hCFP+0z4/WJ0aK10d3/9opikkmep
+gmNtedS6ScgOnU3pj9UF8jEMleK47nD2njc7FhGKdB5+I59L1ri0tSUdMhpuBAEd
+u497Ei/Q1rt+vkNwA8uMQgXOGka7NLpgPcNw6sDCq1fecCEpt/HgmGrHdK6pY8KE
+3I1xEGP6GG5DcBs57cbZv1Jdjf3A8fIozX7Ntn+7nBCHUVEWCzaASlQYrQARAQAB
+uQINBFKD+PgBEAC8ZqGlqxaPZ+Y9QNsroptbfZ8/YL/+09qEki6bJ/bPn1wwAOpf
+Q57LSHryrVFZXnqMO/+oSTb6zNRvy4C5VG8Lvoc7JqGSo/fc5nfeZwFS1v58j4d+
+6AfWPPmg0f4mt3JASoHqJVwsRTEQsZsuaykPulA9DUsB5/wMQXlJLU/YewcmkDig
+QHw1bhG3KROTFnnFp1bWwEQ0C3zTaB9mJcrCswKUnauDIWGeR0r3ALGllPwvzr4R
+cwwTLUHzaQeeRzJL39oRpU+iq/3WW4HN6at8BQ2jHiat6QidtWOQNKQTvrjybs6X
+gkRskZniombGiTbDgsTp1/4BRMDb+0nRGh2z3QIj4ZPVg0d2ISf82M0AMdZpzPXX
+6Jw3o/A7Tv4pJa5gHzOUTDThkOFiQROgVP65nvPt8JPBIvwL5eaG5rzDXm4iWq6a
+cMnREGz7jQdC07UvVxRAbVa4mCHGJKNskRDbWdGZDT4clYFoMQbMup2CMMkObJac
+OTxiZ4xy7vQWZ2obNkb37RNrIKqCFxCcuQl/9AhlkbAFFrodEqTjNHOFH0uq1/0B
+uH3XiW9Xih3AZ0fL1wq7qrl2DXBIYMAbzABoQviGYoRXvApSSfuozFnV9B/y8hyJ
+DQRInzHslXW/lkdrBWiBYDb9rxKKXCzE1WYYHhcw0BG8dj3T1LJ3c4NKcwARAQAB
+=Irkl
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/fb/5531748394c323fb.fingerprints b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/fb/5531748394c323fb.fingerprints
new file mode 100644
index 00000000000..31b8edc48ac
--- /dev/null
+++ b/build-logic/gradle/checksum-dependency-plugin/cached-pgp-keys/fb/5531748394c323fb.fingerprints
@@ -0,0 +1 @@
+cde577234159e222bc56e50f9c61220417aaa02e
diff --git a/build-logic/jvm/build.gradle.kts b/build-logic/jvm/build.gradle.kts
index 899c13c1560..b3f8e263161 100644
--- a/build-logic/jvm/build.gradle.kts
+++ b/build-logic/jvm/build.gradle.kts
@@ -22,6 +22,7 @@ plugins {
dependencies {
api(projects.buildParameters)
api(projects.verification)
+ api(projects.openrewrite)
api("me.champeau.jmh:me.champeau.jmh.gradle.plugin:0.7.2")
api("com.github.vlsi.crlf:com.github.vlsi.crlf.gradle.plugin:1.90")
api("com.github.vlsi.gradle-extensions:com.github.vlsi.gradle-extensions.gradle.plugin:1.90")
diff --git a/build-logic/jvm/src/main/kotlin/build-logic.openrewrite.gradle.kts b/build-logic/jvm/src/main/kotlin/build-logic.openrewrite.gradle.kts
new file mode 100644
index 00000000000..3b6da9e179a
--- /dev/null
+++ b/build-logic/jvm/src/main/kotlin/build-logic.openrewrite.gradle.kts
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+plugins {
+ id("build-logic.openrewrite-base")
+}
+
+dependencies {
+ openrewrite(platform("org.openrewrite.recipe:rewrite-recipe-bom:latest.integration"))
+ openrewrite("org.openrewrite.recipe:rewrite-static-analysis")
+ openrewrite("org.openrewrite.recipe:rewrite-testing-frameworks")
+}
+
+openrewrite {
+ configFile = project.rootProject.file("config/openrewrite/rewrite.yml")
+ failOnDryRunResults = false
+ activeStyles.add("org.apache.jmeter.style.Style")
+ // See config/openrewrite/rewrite.yml
+ activeRecipes.add("org.apache.jmeter.staticanalysis.CodeCleanup")
+ // See https://github.com/openrewrite/rewrite-static-analysis/blob/8c803a9c50b480841a4af031f60bac5ee443eb4e/src/main/resources/META-INF/rewrite/common-static-analysis.yml#L21
+ activeRecipes.add("org.apache.jmeter.staticanalysis.CommonStaticAnalysis")
+ plugins.withId("build-logic.test-junit5") {
+ // See https://github.com/openrewrite/rewrite-testing-frameworks/blob/47ccd370247f1171fa9df005da8a9a3342d19f3f/src/main/resources/META-INF/rewrite/junit5.yml#L18C7-L18C62
+ activeRecipes.add("org.openrewrite.java.testing.junit5.JUnit5BestPractices")
+ // See https://github.com/openrewrite/rewrite-testing-frameworks/blob/47ccd370247f1171fa9df005da8a9a3342d19f3f/src/main/resources/META-INF/rewrite/junit5.yml#L255C7-L255C60
+ activeRecipes.add("org.openrewrite.java.testing.junit5.CleanupAssertions")
+ }
+}
+
+//// See https://github.com/openrewrite/rewrite-gradle-plugin/issues/255
+//tasks.withType().configureEach {
+// doFirst {
+// if (reportPath.exists()) {
+// // RewriteDryRunTask keeps the report file if there are no violations, so we remove it
+// reportPath.delete()
+// }
+// }
+// doLast {
+// if (reportPath.exists()) {
+// throw GradleException(
+// "The following files have format violations. " +
+// "Execute ./gradlew ${path.replace("Dry", "")} to apply the changes:\n" +
+// reportPath.readText()
+// )
+// }
+// }
+//}
diff --git a/build-logic/openrewrite/build.gradle.kts b/build-logic/openrewrite/build.gradle.kts
new file mode 100644
index 00000000000..ae1f0c3bafc
--- /dev/null
+++ b/build-logic/openrewrite/build.gradle.kts
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+plugins {
+ id("build-logic.kotlin-dsl-gradle-plugin")
+}
+
+val latest = "latest.release"
+
+dependencies {
+ api(projects.buildParameters)
+ api("org.openrewrite.rewrite:org.openrewrite.rewrite.gradle.plugin:6.6.3")
+
+ implementation(platform("org.openrewrite:rewrite-bom:latest.integration"))
+ implementation("org.openrewrite:rewrite-core")
+ implementation("org.openrewrite:rewrite-gradle")
+ implementation("org.openrewrite:rewrite-groovy")
+ implementation("org.openrewrite:rewrite-hcl")
+ implementation("org.openrewrite:rewrite-java")
+ implementation("org.openrewrite:rewrite-json")
+ implementation("org.openrewrite:rewrite-kotlin:latest.integration")
+ implementation("org.openrewrite:rewrite-properties")
+ implementation("org.openrewrite:rewrite-protobuf")
+ implementation("org.openrewrite:rewrite-xml")
+ implementation("org.openrewrite:rewrite-yaml")
+ implementation("org.openrewrite:rewrite-polyglot:latest.integration")
+ // implementation("com.puppycrawl.tools:checkstyle:9.3")
+ implementation("org.jetbrains.kotlin.kapt:org.jetbrains.kotlin.kapt.gradle.plugin:1.9.22")
+}
diff --git a/build-logic/openrewrite/src/main/kotlin/build-logic.openrewrite-base.gradle.kts b/build-logic/openrewrite/src/main/kotlin/build-logic.openrewrite-base.gradle.kts
new file mode 100644
index 00000000000..3a32bd0be11
--- /dev/null
+++ b/build-logic/openrewrite/src/main/kotlin/build-logic.openrewrite-base.gradle.kts
@@ -0,0 +1,101 @@
+import org.apache.jmeter.buildtools.openrewrite.OpenRewriteExtension
+import org.apache.jmeter.buildtools.openrewrite.OpenRewriteProcessTask
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+val openrewrite by configurations.creating {
+ description = "OpenRewrite dependencies"
+ isCanBeConsumed = false
+ isCanBeResolved = false
+}
+
+val openrewriteClasspath by configurations.creating {
+ description = "OpenRewrite classpath"
+ isCanBeConsumed = false
+ isCanBeResolved = true
+ extendsFrom(openrewrite)
+ attributes {
+ // TODO: add toolchain and prefer the relevant JVM target variant
+ attribute(
+ Bundling.BUNDLING_ATTRIBUTE,
+ project.objects.named(Bundling::class.java, Bundling.EXTERNAL)
+ )
+ attribute(
+ TargetJvmEnvironment.TARGET_JVM_ENVIRONMENT_ATTRIBUTE,
+ project.objects.named(TargetJvmEnvironment::class.java, TargetJvmEnvironment.STANDARD_JVM)
+ )
+ }
+}
+
+val openrewriteExtension = project.extensions.create(OpenRewriteExtension.NAME)
+
+val rewriteRun by tasks.registering(OpenRewriteProcessTask::class) {
+}
+
+val rewriteDryRun by tasks.registering {
+}
+
+plugins.withId("java") {
+ val java = project.the()
+ java.sourceSets.whenObjectRemoved {
+ val removedName = name
+ rewriteRun.configure {
+ sourceSets.remove(sourceSets[removedName])
+ }
+ }
+ java.sourceSets.all {
+ val sourceSet = this
+ rewriteRun.configure {
+ sourceSets.create(sourceSet.name) {
+ compileClasspath.from(sourceSet.compileClasspath)
+ compileClasspath.from(sourceSet.output.classesDirs)
+ javaRelease.set(
+ tasks.named(sourceSet.compileJavaTaskName)
+ .flatMap { it.options.release }
+ )
+ srcDirSets.create("resources") {
+ sourceDirectories.from(sourceSet.resources.sourceDirectories)
+ filter = sourceSet.resources.filter
+ }
+ srcDirSets.create("java") {
+ sourceDirectories.from(sourceSet.java.sourceDirectories)
+ filter = sourceSet.java.filter
+ }
+ }
+ }
+ }
+}
+
+plugins.withId("org.jetbrains.kotlin.jvm") {
+ val java = project.the()
+ java.sourceSets.all {
+ val sourceSet = this
+ val kotlin: SourceDirectorySet by (sourceSet as ExtensionAware).extensions
+ rewriteRun.configure {
+ sourceSets.named(sourceSet.name) {
+ srcDirSets.create("kotlin") {
+ sourceDirectories.from(kotlin.sourceDirectories)
+ filter = kotlin.filter
+ // Kotlin source set includes java, however OpenRewrite does not need it for Kotlin.
+ // OpenRewrite uses compiled classes instead to get Java types
+ includes.add("**/*.kt")
+ }
+ }
+ }
+ }
+}
diff --git a/build-logic/openrewrite/src/main/kotlin/org/apache/jmeter/buildtools/openrewrite/OpenRewriteExtension.kt b/build-logic/openrewrite/src/main/kotlin/org/apache/jmeter/buildtools/openrewrite/OpenRewriteExtension.kt
new file mode 100644
index 00000000000..f833c356b7a
--- /dev/null
+++ b/build-logic/openrewrite/src/main/kotlin/org/apache/jmeter/buildtools/openrewrite/OpenRewriteExtension.kt
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jmeter.buildtools.openrewrite
+
+import org.gradle.api.model.ObjectFactory
+import org.gradle.kotlin.dsl.property
+import org.gradle.kotlin.dsl.setProperty
+import javax.inject.Inject
+
+open class OpenRewriteExtension @Inject constructor(objects: ObjectFactory) {
+ companion object {
+ const val NAME = "openrewrite"
+ }
+
+ val configFile = objects.fileProperty()
+
+ val activeStyles = objects.setProperty()
+
+ val activeRecipes = objects.setProperty()
+
+ val failOnDryRunResults = objects.property().convention(true)
+
+ val resourceRecipes = objects.setProperty()
+}
diff --git a/build-logic/openrewrite/src/main/kotlin/org/apache/jmeter/buildtools/openrewrite/OpenRewriteProcessTask.kt b/build-logic/openrewrite/src/main/kotlin/org/apache/jmeter/buildtools/openrewrite/OpenRewriteProcessTask.kt
new file mode 100644
index 00000000000..8bccb831474
--- /dev/null
+++ b/build-logic/openrewrite/src/main/kotlin/org/apache/jmeter/buildtools/openrewrite/OpenRewriteProcessTask.kt
@@ -0,0 +1,122 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jmeter.buildtools.openrewrite
+
+import org.gradle.api.DefaultTask
+import org.gradle.api.file.ProjectLayout
+import org.gradle.api.internal.file.FileOperations
+import org.gradle.api.model.ObjectFactory
+import org.gradle.api.tasks.CacheableTask
+import org.gradle.api.tasks.Classpath
+import org.gradle.api.tasks.Input
+import org.gradle.api.tasks.InputFile
+import org.gradle.api.tasks.Nested
+import org.gradle.api.tasks.OutputDirectory
+import org.gradle.api.tasks.PathSensitive
+import org.gradle.api.tasks.PathSensitivity
+import org.gradle.api.tasks.TaskAction
+import org.gradle.kotlin.dsl.domainObjectContainer
+import org.gradle.kotlin.dsl.listProperty
+import org.gradle.kotlin.dsl.submit
+import org.gradle.kotlin.dsl.the
+import org.gradle.workers.WorkerExecutionException
+import org.gradle.workers.WorkerExecutor
+import javax.inject.Inject
+
+@CacheableTask
+abstract class OpenRewriteProcessTask @Inject constructor(
+ objects: ObjectFactory,
+ private val layout: ProjectLayout,
+ private val executor: WorkerExecutor,
+ private val fileOperations: FileOperations,
+) : DefaultTask() {
+ @Input
+ val activeRecipes = objects.listProperty().convention(
+ project.the().activeRecipes
+ )
+
+ @Classpath
+ val rewriteRuntimeClasspath = objects.fileCollection()
+ .from(project.configurations.named("openrewriteClasspath"))
+
+ @InputFile
+ @PathSensitive(PathSensitivity.NONE)
+ val configFile = objects.fileProperty().convention(
+ project.the().configFile
+ )
+
+ @get:Nested
+ val sourceSets = objects.domainObjectContainer(SourceSetConfig::class)
+
+ @OutputDirectory
+ val outputDirectory = objects.directoryProperty()
+ .convention(project.layout.buildDirectory.dir("openrewrite/$name/formatted"))
+
+ init {
+ // Gradle does not have FileSystemOperations.fileTree, so we can't have .files initialization
+ // in SourceDirectorySetConfig
+ sourceSets.all {
+ srcDirSets.all {
+ files.set(
+ project.provider {
+ sourceDirectories.map {
+ project.fileTree(it) {
+ matching(filter)
+ include(includes)
+ }
+ }
+ }
+ )
+ }
+ }
+ }
+
+ @TaskAction
+ fun run() {
+ val outputDir = outputDirectory.get().asFile
+ // Currently the task is not incremental, so we delete previous data
+ fileOperations.delete(outputDir)
+ fileOperations.mkdir(outputDir)
+ val queue = executor.processIsolation {
+ classpath.from(rewriteRuntimeClasspath)
+ }
+ val taskProps = this
+ queue.submit(OpenRewriteWork::class) {
+ logCompilationWarningsAndErrors.set(true)
+ outputDirectory.set(taskProps.outputDirectory)
+ baseDir.set(layout.buildDirectory)
+ configFile.set(taskProps.configFile)
+ activeRecipes.set(taskProps.activeRecipes)
+ rewriteRuntimeClasspath.set(taskProps.rewriteRuntimeClasspath)
+ taskProps.sourceSets.all {
+ sourceSets.add(toSnapshot())
+ }
+ }
+
+ try {
+ queue.await()
+ } catch (e: WorkerExecutionException) {
+ // The queue has classpath isolation, so `it is RewriteException` can't be used here
+// e.causes?.singleOrNull()?.cause
+// ?.takeIf { it::class.qualifiedName == RewriteException::class.qualifiedName }
+// ?.let { throw it }
+ throw e
+ }
+ }
+
+}
diff --git a/build-logic/openrewrite/src/main/kotlin/org/apache/jmeter/buildtools/openrewrite/OpenRewriteWork.kt b/build-logic/openrewrite/src/main/kotlin/org/apache/jmeter/buildtools/openrewrite/OpenRewriteWork.kt
new file mode 100644
index 00000000000..2e182294283
--- /dev/null
+++ b/build-logic/openrewrite/src/main/kotlin/org/apache/jmeter/buildtools/openrewrite/OpenRewriteWork.kt
@@ -0,0 +1,391 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jmeter.buildtools.openrewrite
+
+import org.gradle.api.Named
+import org.gradle.api.NamedDomainObjectContainer
+import org.gradle.api.file.ConfigurableFileCollection
+import org.gradle.api.file.ConfigurableFileTree
+import org.gradle.api.file.DirectoryProperty
+import org.gradle.api.file.RegularFileProperty
+import org.gradle.api.provider.Property
+import org.gradle.api.provider.ProviderFactory
+import org.gradle.api.provider.SetProperty
+import org.gradle.api.tasks.Classpath
+import org.gradle.api.tasks.Input
+import org.gradle.api.tasks.InputFiles
+import org.gradle.api.tasks.Internal
+import org.gradle.api.tasks.Nested
+import org.gradle.api.tasks.PathSensitive
+import org.gradle.api.tasks.PathSensitivity
+import org.gradle.api.tasks.util.PatternFilterable
+import org.gradle.workers.WorkAction
+import org.gradle.workers.WorkParameters
+import org.openrewrite.ExecutionContext
+import org.openrewrite.InMemoryExecutionContext
+import org.openrewrite.Parser
+import org.openrewrite.RecipeRun
+import org.openrewrite.Result
+import org.openrewrite.SourceFile
+import org.openrewrite.Tree
+import org.openrewrite.Validated
+import org.openrewrite.config.Environment
+import org.openrewrite.config.OptionDescriptor
+import org.openrewrite.config.RecipeDescriptor
+import org.openrewrite.config.YamlResourceLoader
+import org.openrewrite.gradle.isolated.ResultsContainer
+import org.openrewrite.gradle.isolated.deleted
+import org.openrewrite.gradle.isolated.generated
+import org.openrewrite.gradle.isolated.moved
+import org.openrewrite.gradle.isolated.refactoredInPlace
+import org.openrewrite.internal.InMemoryLargeSourceSet
+import org.openrewrite.java.JavaParser
+import org.openrewrite.java.internal.JavaTypeCache
+import org.openrewrite.java.marker.JavaVersion
+import org.openrewrite.java.style.Autodetect
+import org.openrewrite.java.tree.J
+import org.openrewrite.kotlin.KotlinParser
+import org.openrewrite.kotlin.tree.K
+import org.openrewrite.tree.ParsingExecutionContextView
+import org.openrewrite.xml.tree.Xml
+import org.slf4j.LoggerFactory
+import java.io.File
+import java.io.Serializable
+import java.net.URL
+import java.util.*
+import java.util.zip.ZipFile
+import javax.inject.Inject
+import kotlin.system.measureTimeMillis
+
+abstract class SourceSetConfig(
+ private val name: String,
+) : Named, Serializable {
+ @Internal
+ override fun getName(): String = name
+
+ @get:Input
+ abstract val javaRelease: Property
+
+ @get:Nested
+ abstract val srcDirSets: NamedDomainObjectContainer
+
+ @get:Classpath
+ abstract val compileClasspath: ConfigurableFileCollection
+
+}
+
+abstract class SourceDirectorySetConfig(
+ private val name: String,
+) : Named, Serializable {
+ @Internal
+ override fun getName(): String = name
+
+ @get:Internal
+ abstract val sourceDirectories: ConfigurableFileCollection
+
+ @get:Internal
+ lateinit var filter: PatternFilterable
+
+ @get:Internal
+ abstract val includes: SetProperty
+
+ @get:Inject
+ abstract val providers: ProviderFactory
+
+ @get:InputFiles
+ @get:PathSensitive(PathSensitivity.RELATIVE)
+ abstract val files: SetProperty
+}
+
+fun SourceSetConfig.toSnapshot() =
+ SourceSetSnapshot(
+ name = name,
+ javaRelease = javaRelease.get(),
+ srcDirSets = srcDirSets.associateBy({ it.name }) { it.toSnapshot() },
+ compileClasspath = compileClasspath.elements.get()
+ .mapNotNullTo(mutableSetOf()) { it.asFile.takeIf { it.exists() } },
+ )
+
+fun SourceDirectorySetConfig.toSnapshot() =
+ SourceDirectorySetSnapshot(
+ name = name,
+ // TODO: this causes serializing the file names
+ files = files.get().mapNotNull {
+ SourceDirectorySetFilesSnapshot(
+ baseDir = it.dir,
+ files = it.files,
+ ).takeIf { it.files.isNotEmpty() }
+ }
+ )
+
+data class SourceSetSnapshot(
+ val name: String,
+ val javaRelease: Int,
+ val srcDirSets: Map,
+ val compileClasspath: Set,
+) : Serializable
+
+data class SourceDirectorySetSnapshot(
+ val name: String,
+ val files: List,
+) : Serializable
+
+data class SourceDirectorySetFilesSnapshot(
+ val baseDir: File,
+ val files: Set,
+) : Serializable
+
+interface OpenRewriteParameters : WorkParameters {
+ val outputDirectory: DirectoryProperty
+ val baseDir: DirectoryProperty
+ val configFile: RegularFileProperty
+ val activeRecipes: SetProperty
+ val sourceSets: SetProperty
+ val rewriteRuntimeClasspath: SetProperty
+ val logCompilationWarningsAndErrors: Property
+}
+
+abstract class OpenRewriteWork : WorkAction {
+ companion object {
+ val logger = LoggerFactory.getLogger(OpenRewriteWork::class.java) as org.gradle.api.logging.Logger
+ }
+
+// @get:Inject
+// abstract val fileOperations: FileOperations
+
+
+ override fun execute() {
+ val view = ParsingExecutionContextView.view(
+ InMemoryExecutionContext { logger.warn("Error rewriting", it) }
+ )
+ val results = listResults(view)
+ run2(results, view)
+ }
+
+ fun run2(results: ResultsContainer, view: ParsingExecutionContextView) {
+ if (!results.isNotEmpty) {
+ return
+ }
+ results.firstException?.let {
+ throw it
+ }
+ for (result: Result in results.generated) {
+ logger.lifecycle("Generated new file " + result.after!!.sourcePath + " by:")
+ logRecipesThatMadeChanges(result)
+ }
+ for (result: Result in results.deleted) {
+ logger.lifecycle("Deleted file " + result.before!!.sourcePath + " by:")
+ logRecipesThatMadeChanges(result)
+ }
+ for (result: Result in results.moved) {
+ logger.lifecycle(
+ "File has been moved from " +
+ result.before!!.sourcePath + " to " +
+ result.after!!.sourcePath + " by:"
+ )
+ logRecipesThatMadeChanges(result)
+ }
+ for (result: Result in results.refactoredInPlace) {
+ logger.lifecycle("Changes have been made to " + result.before!!.sourcePath + " by:")
+ logRecipesThatMadeChanges(result)
+ }
+ }
+
+ private fun logRecipesThatMadeChanges(result: Result) {
+ val indent = " "
+ var prefix = " "
+ for (recipeDescriptor in result.recipeDescriptorsThatMadeChanges) {
+ logRecipe(recipeDescriptor, prefix)
+ prefix += indent
+ }
+ }
+
+ private fun logRecipe(rd: RecipeDescriptor, prefix: String) {
+ val recipeString = StringBuilder(prefix + rd.name)
+ if (rd.options.isNotEmpty()) {
+ val opts = rd.options
+ .mapNotNull { option: OptionDescriptor ->
+ if (option.value != null) {
+ option.name + "=" + option.value
+ } else {
+ null
+ }
+ }
+ .joinToString(", ")
+ if (opts.isNotEmpty()) {
+ recipeString.append(": {").append(opts).append("}")
+ }
+ }
+ logger.warn("{}", recipeString)
+ for (rChild in rd.recipeList) {
+ logRecipe(rChild, "$prefix ")
+ }
+ }
+
+ private fun listResults(ctx: ExecutionContext): ResultsContainer {
+ val baseDir = parameters.baseDir.get().asFile.toPath()
+ val env = createEnvironment()
+ val recipe = env.activateRecipes(parameters.activeRecipes.get());
+ if (recipe.recipeList.isEmpty()) {
+ logger.warn("No recipes were activated. Activate a recipe with rewriteTask.activeRecipes.add(\"com.fully.qualified.RecipeClassName\") in your build file")
+ return ResultsContainer(baseDir, null)
+ }
+
+ val validated = recipe.validateAll(ctx, mutableListOf>())
+ val failedValidations = validated.flatMap {
+ it.failures().map { failure ->
+ IllegalArgumentException(
+ "Recipe validation error in ${failure.property}: ${failure.message}",
+ failure.exception
+ )
+ }
+ }
+ if (failedValidations.size == 1) {
+ throw failedValidations.first()
+ } else if (failedValidations.size > 1) {
+ throw IllegalArgumentException(
+ "Multiple recipe failed validations: ${failedValidations.map { it.toString() }}"
+ ).apply {
+ failedValidations.forEach { addSuppressed(it) }
+ }
+ }
+
+ val javaDetector = Autodetect.detector()
+ val kotlinDetector = org.openrewrite.kotlin.style.Autodetect.detector()
+ val xmlDetector = org.openrewrite.xml.style.Autodetect.detector()
+ var sourceFiles = parse(ctx)
+ .onEach { s ->
+ when (s) {
+ is K.CompilationUnit ->
+ kotlinDetector.sample(s)
+
+ is J.CompilationUnit ->
+ javaDetector.sample(s)
+
+ else ->
+ xmlDetector.sample(s)
+ }
+ }
+ .toList()
+
+ val stylesByType = mapOf(
+ J.CompilationUnit::class.java to javaDetector.build(),
+ K.CompilationUnit::class.java to kotlinDetector.build(),
+ Xml.Document::class.java to xmlDetector.build(),
+ )
+
+ sourceFiles = sourceFiles.map {
+ for ((klass, format) in stylesByType) {
+ if (klass.isInstance(it)) {
+ return@map it.withMarkers(it.markers.add(format))
+ }
+ }
+ it
+ }
+
+// logger.lifecycle(
+// "All sources parsed, running active recipes: {}",
+// recipe.recipeList.joinToString(", ")
+// )
+ val recipeRun = recipe.run(InMemoryLargeSourceSet(sourceFiles), ctx)
+ return ResultsContainer(baseDir, recipeRun)
+ }
+
+ private fun createEnvironment() = Environment.builder()
+ .apply {
+ parameters.rewriteRuntimeClasspath.get().forEach { cpFile ->
+ if (cpFile.isFile && cpFile.path.endsWith(".jar", ignoreCase = true)) {
+ val baseUrl by lazy { URL(cpFile.toURI().toURL(), "!/") }
+ ZipFile(cpFile).use { zip ->
+ zip.entries().asSequence().forEach { ze ->
+ if (ze.name.startsWith("META-INF/rewrite/") && (
+ ze.name.endsWith(".yml", ignoreCase = true) ||
+ ze.name.endsWith(".yaml", ignoreCase = true)
+ )
+ ) {
+ zip.getInputStream(ze).use {
+ val uri = URL(baseUrl, ze.name).toURI()
+ load(YamlResourceLoader(it, uri, Properties(), this::class.java.classLoader))
+ }
+ }
+ }
+ }
+ }
+ }
+ val configFile = parameters.configFile.asFile.get()
+ configFile.inputStream().use { stream ->
+ load(YamlResourceLoader(stream, configFile.toURI(), Properties(), this::class.java.classLoader))
+ }
+ }
+ .build()
+
+ private fun parse(ctx: ExecutionContext): Sequence {
+ var res = sequenceOf()
+ for (sourceSet in parameters.sourceSets.get()) {
+ val javaTypeCache = JavaTypeCache()
+
+ val javaVersion = JavaVersion(
+ Tree.randomId(),
+ System.getProperty("java.runtime.version"),
+ System.getProperty("java.vm.vendor"),
+ sourceSet.javaRelease.toString(),
+ sourceSet.javaRelease.toString()
+ )
+
+ fun Parser.parse(srcDirSet: SourceDirectorySetSnapshot) {
+ srcDirSet.files.forEach { root ->
+ val files = root.files.filter { it.path.endsWith(".kt") }.map { it.toPath() }
+ if (files.isEmpty()) {
+ return@forEach
+ }
+ logger.lifecycle("Parsing {} files in {}: {}", files.size, root.baseDir, files)
+ res = res.plus(
+ parse(files, root.baseDir.toPath(), ctx).iterator()
+ .asSequence()
+ .map {
+ it.withMarkers(it.markers.add(javaVersion))
+ }
+ )
+ }
+ }
+
+ sourceSet.srcDirSets["java"]?.let { srcDirSet ->
+ val parser = JavaParser.fromJavaVersion()
+ .classpath(sourceSet.compileClasspath.map { it.toPath() })
+// .styles(styles)
+ .typeCache(javaTypeCache)
+ .logCompilationWarningsAndErrors(parameters.logCompilationWarningsAndErrors.get())
+ .build()
+
+ parser.parse(srcDirSet)
+ }
+
+ sourceSet.srcDirSets["kotlin"]?.let { srcDirSet ->
+ val parser = KotlinParser.builder()
+ .classpath(sourceSet.compileClasspath.map { it.toPath() })
+// .styles(styles)
+ .typeCache(javaTypeCache)
+ .logCompilationWarningsAndErrors(parameters.logCompilationWarningsAndErrors.get())
+ .build()
+
+ parser.parse(srcDirSet)
+ }
+ }
+ return res
+ }
+}
diff --git a/build-logic/openrewrite/src/main/kotlin/org/openrewrite/gradle/isolated/ResultsContainerExtensions.kt b/build-logic/openrewrite/src/main/kotlin/org/openrewrite/gradle/isolated/ResultsContainerExtensions.kt
new file mode 100644
index 00000000000..dc4bce5f283
--- /dev/null
+++ b/build-logic/openrewrite/src/main/kotlin/org/openrewrite/gradle/isolated/ResultsContainerExtensions.kt
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.openrewrite.gradle.isolated
+
+public val ResultsContainer.generated: List
+ get() = this.generated
+
+public val ResultsContainer.deleted: List
+ get() = this.deleted
+
+public val ResultsContainer.moved: List
+ get() = this.moved
+
+public val ResultsContainer.refactoredInPlace: List
+ get() = this.refactoredInPlace
diff --git a/build-logic/settings.gradle.kts b/build-logic/settings.gradle.kts
index c3d1415f69f..a4f12986d8a 100644
--- a/build-logic/settings.gradle.kts
+++ b/build-logic/settings.gradle.kts
@@ -46,6 +46,7 @@ include("basics")
include("batchtest")
include("build-parameters")
include("jvm")
+include("openrewrite")
include("publishing")
include("root-build")
include("verification")
diff --git a/build-logic/verification/build.gradle.kts b/build-logic/verification/build.gradle.kts
index f9e901c1679..f5503081fc0 100644
--- a/build-logic/verification/build.gradle.kts
+++ b/build-logic/verification/build.gradle.kts
@@ -22,7 +22,7 @@ plugins {
dependencies {
api(projects.basics)
api(projects.buildParameters)
- api("com.github.autostyle:com.github.autostyle.gradle.plugin:3.2")
+ api("com.github.autostyle:com.github.autostyle.gradle.plugin:4.0")
api("com.github.spotbugs:com.github.spotbugs.gradle.plugin:6.0.4")
api("com.github.vlsi.ide:com.github.vlsi.ide.gradle.plugin:1.90")
api("com.github.vlsi.gradle-extensions:com.github.vlsi.gradle-extensions.gradle.plugin:1.90")
diff --git a/build-logic/verification/src/main/kotlin/build-logic.autostyle.gradle.kts b/build-logic/verification/src/main/kotlin/build-logic.autostyle.gradle.kts
index 7117e87abad..3c8ea00f8fb 100644
--- a/build-logic/verification/src/main/kotlin/build-logic.autostyle.gradle.kts
+++ b/build-logic/verification/src/main/kotlin/build-logic.autostyle.gradle.kts
@@ -74,8 +74,6 @@ plugins.withId("java") {
autostyle {
java {
license()
- importOrder("static ", "java.", "javax", "org", "net", "com", "")
- removeUnusedImports()
indentWithSpaces(4)
}
}
diff --git a/build-logic/verification/src/main/kotlin/build-logic.style.gradle.kts b/build-logic/verification/src/main/kotlin/build-logic.style.gradle.kts
index fa56eaa38f4..174c6fc7cfa 100644
--- a/build-logic/verification/src/main/kotlin/build-logic.style.gradle.kts
+++ b/build-logic/verification/src/main/kotlin/build-logic.style.gradle.kts
@@ -15,6 +15,8 @@
* limitations under the License.
*/
+import com.github.autostyle.gradle.AutostyleTask
+import de.thetaphi.forbiddenapis.gradle.CheckForbiddenApis
import org.gradle.kotlin.dsl.apply
import org.gradle.language.base.plugins.LifecycleBasePlugin
@@ -26,6 +28,14 @@ if (!buildParameters.skipAutostyle) {
apply(plugin = "build-logic.autostyle")
}
+// OpenRewrite Gradle plugin applies to allprojects when it is applied to the root project
+// So the workaround is to avoid applying openrewrite to the root
+val skipOpenrewrite = project == rootProject || buildParameters.skipOpenrewrite
+
+if (!skipOpenrewrite) {
+ apply(plugin = "build-logic.openrewrite")
+}
+
val skipCheckstyle = buildParameters.skipCheckstyle || run {
logger.info("Checkstyle requires Java 11+")
buildParameters.buildJdkVersion < 11
@@ -61,13 +71,32 @@ if (!skipCheckstyle && !buildParameters.skipAutostyle) {
}
}
-if (!buildParameters.skipAutostyle || !skipCheckstyle || !buildParameters.skipForbiddenApis) {
+if (!buildParameters.skipAutostyle || !skipCheckstyle || !buildParameters.skipForbiddenApis || !skipOpenrewrite) {
tasks.register("style") {
group = LifecycleBasePlugin.VERIFICATION_GROUP
description = "Formats code (license header, import order, whitespace at end of line, ...) and executes Checkstyle verifications"
if (!buildParameters.skipAutostyle) {
dependsOn("autostyleApply")
}
+ if (!skipOpenrewrite) {
+ dependsOn("rewriteRun")
+ }
+ if (!skipCheckstyle) {
+ dependsOn("checkstyleAll")
+ }
+ if (!buildParameters.skipForbiddenApis) {
+ dependsOn("forbiddenApis")
+ }
+ }
+ tasks.register("styleCheck") {
+ group = LifecycleBasePlugin.VERIFICATION_GROUP
+ description = "Report code style violations (license header, import order, whitespace at end of line, ...)"
+ if (!buildParameters.skipAutostyle) {
+ dependsOn("autostyleCheck")
+ }
+ if (!skipOpenrewrite) {
+ dependsOn("rewriteDryRun")
+ }
if (!skipCheckstyle) {
dependsOn("checkstyleAll")
}
@@ -75,6 +104,7 @@ if (!buildParameters.skipAutostyle || !skipCheckstyle || !buildParameters.skipFo
dependsOn("forbiddenApis")
}
}
+
}
tasks.register("checkstyle") {
@@ -90,3 +120,22 @@ tasks.register("checkstyle") {
dependsOn("forbiddenApis")
}
}
+
+// OpenRewrite fixes many warnings, so it should run the first
+if (!skipOpenrewrite) {
+ if (!buildParameters.skipForbiddenApis) {
+ tasks.withType().configureEach {
+ mustRunAfter("rewriteRun", "rewriteDryRun")
+ }
+ }
+ if (!buildParameters.skipCheckstyle) {
+ tasks.withType().configureEach {
+ mustRunAfter("rewriteRun", "rewriteDryRun")
+ }
+ }
+ if (!buildParameters.skipAutostyle) {
+ tasks.withType().configureEach {
+ mustRunAfter("rewriteRun", "rewriteDryRun")
+ }
+ }
+}
diff --git a/checksum.xml b/checksum.xml
index cbbfe400079..8e40c5f5266 100644
--- a/checksum.xml
+++ b/checksum.xml
@@ -11,14 +11,19 @@
+
+
+
+
+
@@ -85,16 +90,23 @@
+
+
+
+
+
+
+
@@ -170,10 +182,12 @@
+
+
@@ -195,11 +209,17 @@
+
+
+
+
+
+
@@ -207,16 +227,20 @@
+
+
+
+
@@ -322,6 +346,9 @@
B23C4355CBAB2098506528D196F6C9A71D4689F4A3334494B97D9F6D868883D429D851FC319761C25ACC86F0C4E02F028B33C1868B6EF7BA1246E3D79ADF1582
+
+ 635642582701F6AE26DF91E39D5BFD9345C4C219DA73E71A27F4740A4C0C7970F52CEF667BB9CC4DD08C26D9B0447EE003C9E56D5EDE68870976356C2FCC4A5C
+
09D6B646399888DBD6498D24C2B6FABBEF49444FD0710E8F93FE266FFFD11A4A2C1CFEE3431D52AD03CA781E2EFAB60896DCA53AE56924AA0C48F9C85FCE66BB
@@ -346,6 +373,9 @@
397C3257C5448C26304B312212F6DA1649AD15E52CE0419C5BA647F8A68864707A0C8071FA9860C28AA9D626D66C8FAF2D5F576E693F9D01B0F71EEEB84B57FB
+
+ FAE9431F2ADE6A8460C7E86AC5FA4AB7A2E11DB919BB9C60F59BD684CF5AF42A9D0DBFD4835AC8450F0F5B36258B6DF1920E445F84CBD3CFE2944F4CE430DF58
+
BE273F8E886BBCFDA81180917145996AB8FD26A17264EBEB5E1FC2337950A309D64DC8CBD373220009728622A8CBF56B8578E960B5561C22EA66848D296AE44E
diff --git a/config/openrewrite/rewrite.yml b/config/openrewrite/rewrite.yml
new file mode 100644
index 00000000000..1a388670669
--- /dev/null
+++ b/config/openrewrite/rewrite.yml
@@ -0,0 +1,163 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+---
+# See reference at https://docs.openrewrite.org/concepts-explanations/styles#declarative-styles
+type: specs.openrewrite.org/v1beta/style
+name: org.apache.jmeter.style.Style
+styleConfigs:
+ - org.openrewrite.java.style.TabsAndIndentsStyle:
+ # See https://github.com/openrewrite/rewrite/issues/3666
+ # For now, it should be the same as in .editorconfig
+ useTabCharacter: false
+ tabSize: 2
+ indentSize: 2
+ continuationIndent: 4
+ - org.openrewrite.java.style.SpacesStyle:
+ # See https://github.com/openrewrite/rewrite/blob/1d0aeec11e2d7f239f2f656bfd964b17ca8e4d17/rewrite-java/src/main/java/org/openrewrite/java/style/SpacesStyle.java#L26C14-L26C25
+ other:
+ afterForSemicolon: true
+ - org.openrewrite.java.style.NoWhitespaceAfterStyle:
+ # This is to workaround https://github.com/openrewrite/rewrite/issues/3869
+ arrayDeclarator: false
+ - org.openrewrite.java.style.ImportLayoutStyle:
+ classCountToUseStarImport: 999
+ nameCountToUseStarImport: 999
+ # The order of the imports should match ij_java_imports_layout in .editorconfig
+ layout:
+ - import static all other imports
+ -
+ - import java.*
+ -
+ - import javax.*
+ -
+ - import org.*
+ -
+ - import net.*
+ -
+ - import com.*
+ -
+ - import all other imports
+---
+type: specs.openrewrite.org/v1beta/recipe
+name: org.apache.jmeter.staticanalysis.CodeCleanup
+displayName: Code cleanup
+description: Automatically cleanup code, e.g. remove unnecessary parentheses, simplify expressions.
+recipeList:
+ # The list is taken from https://github.com/openrewrite/rewrite-static-analysis/blob/8c803a9c50b480841a4af031f60bac5ee443eb4e/src/main/resources/META-INF/rewrite/static-analysis.yml#L16C1-L42
+ - org.openrewrite.staticanalysis.DefaultComesLast
+ - org.openrewrite.staticanalysis.EmptyBlock
+ - org.openrewrite.java.format.EmptyNewlineAtEndOfFile
+ - org.openrewrite.staticanalysis.ForLoopControlVariablePostfixOperators
+ - org.openrewrite.staticanalysis.FinalizePrivateFields
+ - org.openrewrite.java.format.MethodParamPad
+ - org.openrewrite.java.format.NoWhitespaceAfter
+ - org.openrewrite.java.format.NoWhitespaceBefore
+ - org.openrewrite.java.format.PadEmptyForLoopComponents
+ - org.openrewrite.staticanalysis.TypecastParenPad
+ - org.openrewrite.staticanalysis.EqualsAvoidsNull
+ - org.openrewrite.staticanalysis.ExplicitInitialization
+ - org.openrewrite.staticanalysis.FallThrough
+ # It breaks backward compatibility, so
+ # - org.openrewrite.staticanalysis.HideUtilityClassConstructor
+ - org.openrewrite.staticanalysis.NeedBraces
+ - org.openrewrite.staticanalysis.OperatorWrap
+ - org.openrewrite.staticanalysis.UnnecessaryParentheses
+ - org.openrewrite.staticanalysis.ReplaceThreadRunWithThreadStart
+ - org.openrewrite.staticanalysis.ChainStringBuilderAppendCalls
+ - org.openrewrite.staticanalysis.ReplaceStringBuilderWithString
+ - org.openrewrite.java.ShortenFullyQualifiedTypeReferences
+ - org.openrewrite.staticanalysis.MissingOverrideAnnotation
+ - org.openrewrite.java.OrderImports
+---
+# Copied from https://github.com/openrewrite/rewrite-static-analysis/blob/8c803a9c50b480841a4af031f60bac5ee443eb4e/src/main/resources/META-INF/rewrite/common-static-analysis.yml#L17-L93
+type: specs.openrewrite.org/v1beta/recipe
+name: org.apache.jmeter.staticanalysis.CommonStaticAnalysis
+displayName: Common static analysis issues
+description: Resolve common static analysis issues discovered through 3rd party tools.
+recipeList:
+ # - org.openrewrite.staticanalysis.AddSerialVersionUidToSerializable
+ - org.openrewrite.staticanalysis.AtomicPrimitiveEqualsUsesGet
+ - org.openrewrite.staticanalysis.BigDecimalRoundingConstantsToEnums
+ - org.openrewrite.staticanalysis.BooleanChecksNotInverted
+ - org.openrewrite.staticanalysis.CaseInsensitiveComparisonsDoNotChangeCase
+ - org.openrewrite.staticanalysis.CatchClauseOnlyRethrows
+ - org.openrewrite.staticanalysis.ChainStringBuilderAppendCalls
+ - org.openrewrite.staticanalysis.CovariantEquals
+ - org.openrewrite.staticanalysis.DefaultComesLast
+ - org.openrewrite.staticanalysis.EmptyBlock
+ - org.openrewrite.staticanalysis.EqualsAvoidsNull
+ - org.openrewrite.staticanalysis.ExplicitInitialization
+ - org.openrewrite.staticanalysis.ExternalizableHasNoArgsConstructor
+ - org.openrewrite.staticanalysis.FinalizePrivateFields
+ # pgjdbc: see https://github.com/openrewrite/rewrite/issues/3668
+ # - org.openrewrite.staticanalysis.FallThrough
+ # pgjdbc: it might break backward compatibility
+ # - org.openrewrite.staticanalysis.FinalClass
+ - org.openrewrite.staticanalysis.FixStringFormatExpressions
+ - org.openrewrite.staticanalysis.ForLoopIncrementInUpdate
+ # - org.openrewrite.staticanalysis.HideUtilityClassConstructor
+ - org.openrewrite.staticanalysis.IndexOfChecksShouldUseAStartPosition
+ - org.openrewrite.staticanalysis.IndexOfReplaceableByContains
+ - org.openrewrite.staticanalysis.IndexOfShouldNotCompareGreaterThanZero
+ - org.openrewrite.staticanalysis.InlineVariable
+ - org.openrewrite.staticanalysis.IsEmptyCallOnCollections
+ - org.openrewrite.staticanalysis.LambdaBlockToExpression
+ # - org.openrewrite.staticanalysis.LowercasePackage
+ - org.openrewrite.staticanalysis.MethodNameCasing
+ - org.openrewrite.staticanalysis.MinimumSwitchCases
+ - org.openrewrite.staticanalysis.ModifierOrder
+ - org.openrewrite.staticanalysis.MultipleVariableDeclarations
+ - org.openrewrite.staticanalysis.NeedBraces
+ - org.openrewrite.staticanalysis.NestedEnumsAreNotStatic
+ - org.openrewrite.staticanalysis.NewStringBuilderBufferWithCharArgument
+ - org.openrewrite.staticanalysis.NoDoubleBraceInitialization
+ - org.openrewrite.staticanalysis.NoEmptyCollectionWithRawType
+ - org.openrewrite.staticanalysis.NoEqualityInForCondition
+ - org.openrewrite.staticanalysis.NoFinalizer
+ - org.openrewrite.staticanalysis.NoPrimitiveWrappersForToStringOrCompareTo
+ - org.openrewrite.staticanalysis.NoRedundantJumpStatements
+ - org.openrewrite.staticanalysis.NoToStringOnStringType
+ - org.openrewrite.staticanalysis.NoValueOfOnStringType
+ - org.openrewrite.staticanalysis.ObjectFinalizeCallsSuper
+ - org.openrewrite.staticanalysis.PrimitiveWrapperClassConstructorToValueOf
+ - org.openrewrite.staticanalysis.RedundantFileCreation
+ - org.openrewrite.staticanalysis.RemoveExtraSemicolons
+ # - org.openrewrite.staticanalysis.RemoveRedundantTypeCast
+ - org.openrewrite.java.RemoveUnusedImports
+ # - org.openrewrite.staticanalysis.RemoveUnusedLocalVariables
+ # - org.openrewrite.staticanalysis.RemoveUnusedPrivateMethods
+ - org.openrewrite.staticanalysis.RenameLocalVariablesToCamelCase
+ - org.openrewrite.staticanalysis.RenameMethodsNamedHashcodeEqualOrTostring
+ - org.openrewrite.staticanalysis.RenamePrivateFieldsToCamelCase
+ - org.openrewrite.staticanalysis.ReplaceLambdaWithMethodReference
+ - org.openrewrite.staticanalysis.ReplaceStringBuilderWithString
+ - org.openrewrite.staticanalysis.SimplifyBooleanExpression
+ - org.openrewrite.staticanalysis.SimplifyBooleanReturn
+ - org.openrewrite.staticanalysis.StaticMethodNotFinal
+ - org.openrewrite.staticanalysis.StringLiteralEquality
+ - org.openrewrite.staticanalysis.UnnecessaryCloseInTryWithResources
+ - org.openrewrite.staticanalysis.UnnecessaryExplicitTypeArguments
+ - org.openrewrite.staticanalysis.UnnecessaryParentheses
+ - org.openrewrite.staticanalysis.UnnecessaryPrimitiveAnnotations
+ - org.openrewrite.staticanalysis.UpperCaseLiteralSuffixes
+ # - org.openrewrite.staticanalysis.UnnecessaryThrows
+ # - org.openrewrite.staticanalysis.UseCollectionInterfaces
+ - org.openrewrite.staticanalysis.UseDiamondOperator
+ - org.openrewrite.staticanalysis.UseJavaStyleArrayDeclarations
+ # https://github.com/openrewrite/rewrite-static-analysis/issues/10
+ # - org.openrewrite.staticanalysis.UseLambdaForFunctionalInterface
+ # - org.openrewrite.staticanalysis.UseStringReplace
+ - org.openrewrite.staticanalysis.WhileInsteadOfFor
+ - org.openrewrite.staticanalysis.WriteOctalValuesAsDecimal
diff --git a/gradle.properties b/gradle.properties
index 83166e07ac1..6f4cc7aed7e 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -15,7 +15,7 @@
# limitations under the License.
#
-org.gradle.jvmargs=-Xmx1500m -XX:MaxMetaspaceSize=768m
+org.gradle.jvmargs=-Xmx2500m -XX:MaxMetaspaceSize=768m
org.gradle.parallel=true
# Build cache can be disabled with --no-build-cache option
org.gradle.caching=true
diff --git a/gradle/checksum-dependency-plugin/cached-pgp-keys/06/1f47744c9b6e14f2049c2857f1f111af65925306.asc b/gradle/checksum-dependency-plugin/cached-pgp-keys/06/1f47744c9b6e14f2049c2857f1f111af65925306.asc
new file mode 100644
index 00000000000..6ac00ccc757
--- /dev/null
+++ b/gradle/checksum-dependency-plugin/cached-pgp-keys/06/1f47744c9b6e14f2049c2857f1f111af65925306.asc
@@ -0,0 +1,16 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQENBFS2J+0BCADZI8RYk32YeO9gnEkY9RN+4dKb+H1AR4v+IGxmy0UYy+O8bo4m
+YzkQHTlPpEPGe10/quKk1embDifEfNa9mwcSJl+XUPFlTrSA97SR31mdyK/Ua146
+GKMW0F6v8aCgLUlm9BCJo/OmOat2jsc94SuKnPiRRywhmapte/8o9t7/0GghqLyj
+X+Ifz4WSKyKZ8oe9mRFg1ZIA+z52a8QnfyI8WS8bpGHM/dXkBXZpzIDlrfKvoZYb
+I2DcbOotJK/ZzStAZ81e4E/q2BEw96NUKJC5X+G8qahEFNJDcJz33UAxLiTFqWmw
+iKLqy8oL8p9qPYlx0IAXoW/GxV7E0rBoA95pABEBAAG5AQ0EVLYn7QEIAMde+nVU
+cozJy9dzLCUpn91SCoWld/wTaSckxTnVMcr4uNLlJI/2PFjMb9ya91grr1yuwqSG
+3jE8P0Qdk9Bi6t6NkMIGUSJuzyIipsDDWaiCfjWxs7seFd9c+rgcH6r9CaUbNRfU
+rPqEZSeL+RDwIIz1gQkXmosF94DjZHP9abZYObH1/Or64CSRD8Ocf6kTRndwJOZk
+RdDtUX5NPFSiU17E/DoEkyryuXMR+Ci0b/hjQ4JnriGeyy6c0StWQUW18SEYPV0j
+3VyRRUcOLhJajEu8KU4Xaaxgb/2X7o/BosjjQ8BPPUdTz2wRluU/1tKUQ8D+O8QH
+7dCR3lJt76kKWbsAEQEAAQ==
+=ZM2y
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/gradle/checksum-dependency-plugin/cached-pgp-keys/06/f1f111af65925306.fingerprints b/gradle/checksum-dependency-plugin/cached-pgp-keys/06/f1f111af65925306.fingerprints
new file mode 100644
index 00000000000..ca0701ed6fe
--- /dev/null
+++ b/gradle/checksum-dependency-plugin/cached-pgp-keys/06/f1f111af65925306.fingerprints
@@ -0,0 +1 @@
+1f47744c9b6e14f2049c2857f1f111af65925306
diff --git a/gradle/checksum-dependency-plugin/cached-pgp-keys/1a/82047fb369dd111a.fingerprints b/gradle/checksum-dependency-plugin/cached-pgp-keys/1a/82047fb369dd111a.fingerprints
new file mode 100644
index 00000000000..e68b6df4938
--- /dev/null
+++ b/gradle/checksum-dependency-plugin/cached-pgp-keys/1a/82047fb369dd111a.fingerprints
@@ -0,0 +1 @@
+2655176f748fd83725b4805ff2a01147d830c125
diff --git a/gradle/checksum-dependency-plugin/cached-pgp-keys/1e/8a57131a07e0911e.fingerprints b/gradle/checksum-dependency-plugin/cached-pgp-keys/1e/8a57131a07e0911e.fingerprints
new file mode 100644
index 00000000000..12884b6f291
--- /dev/null
+++ b/gradle/checksum-dependency-plugin/cached-pgp-keys/1e/8a57131a07e0911e.fingerprints
@@ -0,0 +1 @@
+56b505dc8a29c69138a430b9429c8816dea04cdb
diff --git a/gradle/checksum-dependency-plugin/cached-pgp-keys/25/2655176f748fd83725b4805ff2a01147d830c125.asc b/gradle/checksum-dependency-plugin/cached-pgp-keys/25/2655176f748fd83725b4805ff2a01147d830c125.asc
new file mode 100644
index 00000000000..d9ef88d18c9
--- /dev/null
+++ b/gradle/checksum-dependency-plugin/cached-pgp-keys/25/2655176f748fd83725b4805ff2a01147d830c125.asc
@@ -0,0 +1,16 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQENBFf0S68BCACovMXnHqnBYRmC+rsIIPOoT1vSusHWu56beDBG7t/og/nziZq1
+mcZhX4oFG/IKnY3af20Flcv0X0gNodH9fOErvQ7hZDvHBgB9HVpeKiMx7OQqRWke
++vV/vcUFkt0ICyMzDvEVod7asjAakKZHKiVpEb0mM8Zvn3MPUzFDveK+tHWdbuWo
+WFmmNzmRpkK6hbMlXlyeTYs5jvYv9P5FHm3xYTcHJxrPYTF/uZTJu8Tqol8K1ImX
+kH11pnhgTzI6l0oIm0JmH+40LGNYrsczW0JdxwQzfQbsQM3LR9kCAMr0LMEya70l
+ozvY4LsX8Y7irBqlF1519pakI6Ss9Cz6sSLpABEBAAG5AQ0EV/RLrwEIAMHMulFu
+vwuB6Eq7jocJ83udZu1snzxbtR5QttTwL/Ck6ZwD/8dmFY1Chi8paJJsHzSZpo6N
+UiaVRqBgvR/umMMHNTdlUftKdK9pbG6/hPeSw2856C+cFHuJKDAfbaAIgMb2MIMA
+WL2iTle9zc7IBM9ly0rj9L7hrW46YxaBKZD4XGsFgpv/2/Tnkq2pZM6ou/kDyAAU
+28A5kbazSaU25/a8jPp5dFW1qCZmNNJN4d2TvvXb6pxz79B54adgEQcGOck17Po9
+fknD/RceX5VbFpXIPuaU3GdL0lee7gDOWGbyTbgnlx5JTzemGiDqay9o3fMpIRjz
+7meVf41AFEedxv0AEQEAAQ==
+=HiTl
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/gradle/checksum-dependency-plugin/cached-pgp-keys/25/48b086a7d843cfa258e83286928fbf39003c0425.asc b/gradle/checksum-dependency-plugin/cached-pgp-keys/25/48b086a7d843cfa258e83286928fbf39003c0425.asc
new file mode 100644
index 00000000000..5a00b228ae5
--- /dev/null
+++ b/gradle/checksum-dependency-plugin/cached-pgp-keys/25/48b086a7d843cfa258e83286928fbf39003c0425.asc
@@ -0,0 +1,15 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBGPF4agBEADsWnQn3m/dMw1Q6FLALQCEucRkRLw4wcmtzXuuYb2M17aHvEb5
++OnXDdgQ2QcnnjK4S3zQp/Jt4ZQnnLORqx919+c+1gT24U06VxeGPW/TLRn/hnKA
+ZM7bwGCz7em/GQ7JaIXPn3aqGrCiy8j8N5jAQ4ePP5ESQLeWisQFlbKMFVU09B7t
+0IPG/LQ8xJs/SveQw8sGrz9zqyYE58EauyIKfiI91Ruk2jMcb/m+SRL9Bhen3Q12
+g6kFrHurLtEWzy1rwELt9g9OILv0FokPa2m0goQRHx4nFY0kIpJ/r9kDUg/tlg4H
+OxP+5XTJxEXGW2gb9zpmDpdR8aUgi67/Kdm8+norzpTTMAuKCgclCv3bJz2D8Jnl
+IgEXmSoznn1EnFkm0Qsr8JwkaPC6LkGcI7YqvEdCXtRXduot+9GgWytp/IxrlJ4X
+vFEhOmChdVdn5lT1T0ka6NxEJcmf5mfgyz9jRUVHINNJxQKP1Gh7LyMFeWw6V/X7
+RAeU/th1pL2rAeBqn3gnK+CIR82/AVDJJa86BAHiQBYilgs+bGYriXYd0qmIFvYO
+sSfC87Dbl3kzwcAGWB4d6tezLxrzscfbzWFIa9woy31/OcqK+uglSKbTFsIklhM8
+Rr2B0tQS1iNzq5gyWGKnh8FsqcAiGvDpwhF7irGhU7fNRVVSuamVDnV0BQARAQAB
+=1wAs
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/gradle/checksum-dependency-plugin/cached-pgp-keys/25/928fbf39003c0425.fingerprints b/gradle/checksum-dependency-plugin/cached-pgp-keys/25/928fbf39003c0425.fingerprints
new file mode 100644
index 00000000000..aaa5f6828db
--- /dev/null
+++ b/gradle/checksum-dependency-plugin/cached-pgp-keys/25/928fbf39003c0425.fingerprints
@@ -0,0 +1 @@
+48b086a7d843cfa258e83286928fbf39003c0425
diff --git a/gradle/checksum-dependency-plugin/cached-pgp-keys/25/f2a01147d830c125.fingerprints b/gradle/checksum-dependency-plugin/cached-pgp-keys/25/f2a01147d830c125.fingerprints
new file mode 100644
index 00000000000..e68b6df4938
--- /dev/null
+++ b/gradle/checksum-dependency-plugin/cached-pgp-keys/25/f2a01147d830c125.fingerprints
@@ -0,0 +1 @@
+2655176f748fd83725b4805ff2a01147d830c125
diff --git a/gradle/checksum-dependency-plugin/cached-pgp-keys/29/25bd9b5e49968329.fingerprints b/gradle/checksum-dependency-plugin/cached-pgp-keys/29/25bd9b5e49968329.fingerprints
new file mode 100644
index 00000000000..c5833dbaa52
--- /dev/null
+++ b/gradle/checksum-dependency-plugin/cached-pgp-keys/29/25bd9b5e49968329.fingerprints
@@ -0,0 +1 @@
+e113159331a1f87bfc2a93d0960d2e8635a91268
diff --git a/gradle/checksum-dependency-plugin/cached-pgp-keys/2b/34920ce8926b312b.fingerprints b/gradle/checksum-dependency-plugin/cached-pgp-keys/2b/34920ce8926b312b.fingerprints
new file mode 100644
index 00000000000..1666ae48805
--- /dev/null
+++ b/gradle/checksum-dependency-plugin/cached-pgp-keys/2b/34920ce8926b312b.fingerprints
@@ -0,0 +1 @@
+bd3b8aab16ea001cda79d4773e8a7f8a3597e7fb
diff --git a/gradle/checksum-dependency-plugin/cached-pgp-keys/2c/8747963db7a6422c.fingerprints b/gradle/checksum-dependency-plugin/cached-pgp-keys/2c/8747963db7a6422c.fingerprints
new file mode 100644
index 00000000000..9b5f56b066a
--- /dev/null
+++ b/gradle/checksum-dependency-plugin/cached-pgp-keys/2c/8747963db7a6422c.fingerprints
@@ -0,0 +1 @@
+7119b89feb81209430e65c62c2ad9c8a7d4e988a
diff --git a/gradle/checksum-dependency-plugin/cached-pgp-keys/2e/9c61220417aaa02e.fingerprints b/gradle/checksum-dependency-plugin/cached-pgp-keys/2e/9c61220417aaa02e.fingerprints
new file mode 100644
index 00000000000..31b8edc48ac
--- /dev/null
+++ b/gradle/checksum-dependency-plugin/cached-pgp-keys/2e/9c61220417aaa02e.fingerprints
@@ -0,0 +1 @@
+cde577234159e222bc56e50f9c61220417aaa02e
diff --git a/gradle/checksum-dependency-plugin/cached-pgp-keys/2e/cde577234159e222bc56e50f9c61220417aaa02e.asc b/gradle/checksum-dependency-plugin/cached-pgp-keys/2e/cde577234159e222bc56e50f9c61220417aaa02e.asc
new file mode 100644
index 00000000000..2fdb234adee
--- /dev/null
+++ b/gradle/checksum-dependency-plugin/cached-pgp-keys/2e/cde577234159e222bc56e50f9c61220417aaa02e.asc
@@ -0,0 +1,26 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBGQYtMQBEACmLu7LRrKxzEnLmRI/fWXuO3lcr2Hazd7DVmMSqH5sf+D6taoL
+uNRchspbHp804GOltu7lR6rNI5htQOpwVuiF6hu8HORujpv++N/yGdW3LGoT3R9a
+wNkJIudgOCxSZnNON+gKe4pqdk1R3WKWQzXe5o7PBn8zJen5uYP9MBN66lQxXw7T
+XsDDXjGRHJth7lOzJi/JStcO3Nc/n8PYz6b+t7LW7vZYshogRq6yc4d0Uktr3ZJw
+IgiN6vT4I2nHU48O+nqvKevfspNZdyWyrUCkAC9heANiXNEnr34j3EjTpJy4Cfmg
+By1QxFEaJN7HPf6y4OtTd3AThepK/8o69nw2LIjK6mvWa2ERXSNAVWbSKPlKf74e
+/x6bBDDqevDx9NXApTLrHRzBKDgQ2I0r68sX8RZTgbzx12I5CYTpDo1JRprVtn+T
+dfO50o1pxwvlDBuWCPqHERIzF9QhNXUDy7uh6J2s9qho+p6LKn01cOXoOrlMg6ZK
+syd5Ffo/kqiDv77IMAdaXmYmZelX2y3I0tfM3ccH90u5cDKEhRdiFiW48JPnhcz9
+QKUvGtT8hywsjkU7MpJf56uVQT1ApKmdL9rOgnjGnGeB9HNxEhXl1z9Sqjc0QAx9
+mq1TZ9K454lk+AqwAkUppoMez3tmJWULqDFqZkLuh/uAjycHhLSHmOWq1QARAQAB
+uQINBGQYtMQBEADaTQ8FyQYGKEFydGosLSOPet+Z4VaWWrjF4TOElczfhJnDhGIl
+iDU8c2hHFbovdWfW5fb2G+mgckyXnUFtO0FhIDpho2Mmz1sR4ZY/1dXJdaeSy2kb
+OxVTcVVJ3iIefvV7P7k6FGz36ROTthLN+Y0O3ZS9QlXDjtpOcANszgS3zaC2y6T6
+YDjubU8lMfHAad/VNgCtuG0IcErI23s2hNH5IpzndyuZoYff31UTzMW6KufbQC4c
+Ak7u3SQYVCq0HP7o4MiC+Tt43tLLE4WZUPpHU2REu96FZTot9/6WROTm7SzSNzS0
+q764jKe3Q1Y3AY01t6kpQHv0mE1bQ99e6yD/Gm1J3Fet+0z6Q6yB1Evt0Omac6yy
+EJ1eePB4whGmeyoC5oz94jbTkGkhXS8Cxwl+M7HetH82ShC1XPl6dz67WnUndddX
+LQnOr1PfXI4k81qUyPuojvMLwKhX9lWhAJImQp2e3PqAa3pZOcjdw7pE77ZvKF2a
+gwUJ0nEenzfM9oyj2/V5NGCI845Lk1K/319XmxaYghEJIaNBAVDrrkoVdY6tD4le
+5RKdjfTvnndYsZYh/rJZn+fp5GZAk1hHQsj/yiS4kQ3h/Lt6Gztv5Nsh7U7M1mat
+SLZtB/pfyHZxHmS4khcR0HGyHUSZyPBbz1Xno0hqU4xWOlndax+peHjnHQARAQAB
+=IBhn
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/gradle/checksum-dependency-plugin/cached-pgp-keys/68/960d2e8635a91268.fingerprints b/gradle/checksum-dependency-plugin/cached-pgp-keys/68/960d2e8635a91268.fingerprints
new file mode 100644
index 00000000000..c5833dbaa52
--- /dev/null
+++ b/gradle/checksum-dependency-plugin/cached-pgp-keys/68/960d2e8635a91268.fingerprints
@@ -0,0 +1 @@
+e113159331a1f87bfc2a93d0960d2e8635a91268
diff --git a/gradle/checksum-dependency-plugin/cached-pgp-keys/68/e113159331a1f87bfc2a93d0960d2e8635a91268.asc b/gradle/checksum-dependency-plugin/cached-pgp-keys/68/e113159331a1f87bfc2a93d0960d2e8635a91268.asc
new file mode 100644
index 00000000000..fc86c797b48
--- /dev/null
+++ b/gradle/checksum-dependency-plugin/cached-pgp-keys/68/e113159331a1f87bfc2a93d0960d2e8635a91268.asc
@@ -0,0 +1,26 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBFqz2mMBEADf9rwaUU4Up4hEHRt7JnhIClBNYqQr8Oc3QLvtEmsMv6UWHQ/h
+l70MhvCrAZnxnDmcSEE5/A5VeZSDBm4qM+jH8x+B9zIVMoWS2c3IJeE0Q0bt6MO+
+j6TQrrXmetyCvzYMz/Dbr6f3alEvh89ImkSZ4XdEByFcoXTdpQ7WUzYNw643F3W+
+pXg2eMm0DVN6Sqagbeqt1qZQ1S/3RwtSIgfGt0T88eBYMe8fhrLhLvsakERrPBKj
+01uzeBJ5BuUNZ8OrI23RaF7upDVkoxlZW6dz9u2W0YiKozo0IHP5JdllSAtg4Bbn
+sSfNdia0TbTT5Pwoz6ncY5ivUnCeHP2nZ02IjTAwNs2mni2KLRKop/SRqKG0jqRT
+wFDS4XeocvBqpCAHR/Gf1LmR2j+jGGkohnFAqS9ds7yZISnp+5VnEvjs+vGwMh2U
+ybwGpFJTFE70ntg7t5S48P+IjuUDGWoEE1vZsMmm4ytAHPxRBeERvMhPL7PLLYPY
+pejtRIsc6qSCBVi9DHneXhP1bh9Osjg9YOckShNQTsZGo2IHxjC1dqXXWn0RNYLa
+oxqz6/RY1uA809N7/kwG1xBgaRMJl/HNfBVAFf3Tx0ILI7cVGvKrHpDiUfSxLpY4
+M3EWBRlJ925bkFhEIQ2XHhVh6fhy7W8oB47dnYpTlVyEi6iPh+clUKuZ0wARAQAB
+uQINBFqz2mMBEACt5yWpYhiY2Tk4NXOVBGBe/r8vwwfKiilH7RcUVi5t7JP9n4IY
+8vzp6sENykHtsTITRu32QOj7KAu1xo6hSdJ9aUUuL0/xiWF6eiISqa8isj54XuKA
+4xgDTJb6gS7EFAZgU1PWVAihX75cEWMmNfPLulfqOGaxKm9kgdeo1BGDxp5aFm31
+EptDrCl2h3VgWDaBOm+Zo2xQyjMEpsBmrZTLtv+VEjDGb6J93sgsTFMd6eAhd+Lu
+yq62Ap/SmavBbYyhUIv+ay/2Kv+8h8lLc8KJSt2Ox/hDD8NFShEw6Q5VDU6+fsjy
+CauFeCCuDco9hSSFx9d5dNod51dXKlUz9Umwd5NhdLa/OYW5rA3ohsoP/4HbSPzw
+2DBacf+No4jHxnk58SU4XGyvDtWSuiTVyDrZGiFEYpPjEXUuwjidiSCa3jb3gfl0
+0lJjg5wKf47TWgVh94AgHjkZGutv6votGc1SoGS0QNJjRFeTjpr1nEwOihz0AH3a
+FTkiNBd78rsMctURswvfIjHwGijJMrSKzgKysgUTuuyKhvhEH6C739YweArhJkNo
+HP4Z91FEDrn5PCtUHY7deGHiARLPcgnN74wq45iGNYmK7Qt7sbWcJQzJqtMzHI9c
+MyM+h9nm7lOflBVvJo4kTYkIgqwg6rV/BLCv6/ONqmmMmEEh7B5c4GA2IQARAQAB
+=/Car
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/gradle/checksum-dependency-plugin/cached-pgp-keys/75/ef375eebbdefd775.fingerprints b/gradle/checksum-dependency-plugin/cached-pgp-keys/75/ef375eebbdefd775.fingerprints
new file mode 100644
index 00000000000..ca0701ed6fe
--- /dev/null
+++ b/gradle/checksum-dependency-plugin/cached-pgp-keys/75/ef375eebbdefd775.fingerprints
@@ -0,0 +1 @@
+1f47744c9b6e14f2049c2857f1f111af65925306
diff --git a/gradle/checksum-dependency-plugin/cached-pgp-keys/7b/32bbf14af07ca77b.fingerprints b/gradle/checksum-dependency-plugin/cached-pgp-keys/7b/32bbf14af07ca77b.fingerprints
new file mode 100644
index 00000000000..c6ef2dc3355
--- /dev/null
+++ b/gradle/checksum-dependency-plugin/cached-pgp-keys/7b/32bbf14af07ca77b.fingerprints
@@ -0,0 +1 @@
+ed09733fa05dedf15100abeb32bbf14af07ca77b
diff --git a/gradle/checksum-dependency-plugin/cached-pgp-keys/7b/ed09733fa05dedf15100abeb32bbf14af07ca77b.asc b/gradle/checksum-dependency-plugin/cached-pgp-keys/7b/ed09733fa05dedf15100abeb32bbf14af07ca77b.asc
new file mode 100644
index 00000000000..e3e216517fa
--- /dev/null
+++ b/gradle/checksum-dependency-plugin/cached-pgp-keys/7b/ed09733fa05dedf15100abeb32bbf14af07ca77b.asc
@@ -0,0 +1,26 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBFPaQqUBEACzwC+QX+uZlPAmU3ds3+HMgw12yoEb4Wahc3hqL1nSekUZ4oN1
+EdKtzIrTORcB5eH987FfbgM4wPeott91ZTNuxr0X6ulHH/YzkLnytMjlipEuoxZ1
+FwXjTBN187Xc6Tbewco+Tm9BpPNVO7eNlmJih4TRXPmb7Nd3WAb9UYOO/L+iHluo
+6SmZ9fIw3AReNdfVjIOV2w7fTQJdBt+UpN39hrHU1o2Ok/H5EsS7gf170HQWgpHd
+0GgXVF49BKTVVu/D+X3+C54DHfMJUwsxJ+KNYuYIsWV8nUf+Prayji3IJLeFBegL
+VO0ZzoQs+u/PyOQIOTz2odvUIwde0rZCveILi1W4wj9ijhL0eT0n+tepE85vlYr+
+ZHXrlEelJHq4LhC4a7JSdhJ0UreJM3oTIS4svmR6TuwUjAiO1ewYwfjWB5EWoz/7
+qQ2fj5gjgP2A69DXtJ4dhj0lrUWpCDy8lgdKAgIpxepE03o7SaZhLRslwCQWBRW9
+SdSEByx2KwZMcu7cmXSgavc+AiSDD5KIZQJdHwEP7r4OewyRpCa/wplcPAimVUs4
+KTt7bXtBnw4jiGiLmTiHwZqMmCmSEUOzivG+7wuXsBA0ucivmert1IWamSdT3NRt
+C6IdH7KR8tZXzmkIl6ARH0WGz109ZrqhU1vCG1tLWhmaqW6VuOr4J7lA0wARAQAB
+uQINBFPaQqUBEAC0uU0KPaS4FjwYB0fvD2bJ7zLg4PGhlAYkGGOIWMSys4pNd0Ql
+TIdKqlZ6hmCEiPQOwLAGN+B4Fpp9dU7MhPOTfEWY/ccYcOiebktJvtY5C0KbC3JX
+bVvYKZXSszVcVIvlEMTXt2WtRTov2cff8uWE7vadXSNQozBH3pGBnBlkzTiYJf8y
+h9BNqgQ4evJG+nRfTPOPHtPKRCtDaC8CwF5rnyD9CBDuFLxd20i9i7T3tsWkfOV1
+5FDutdtZU97S43cI5d0apQX5wk4XzM3cEmlYSvW3EffK5K0gi+Vyka8JxpR9bwA0
+RzuCwwbP4HloAhxVB/R3Zcsy4wweK2r6tFOdA12FigOGbO5+s3Us6zp1q0GL8N83
+D0D7Y8HMMJmLoPhK2Ddg5T6zrti+2z0vO8d6elmJluASzbMYYk4NMxuJTp+gw0i8
+iTp9k28/FNZbHsVReoHOeigybawoAOZX3x+b52ehcoIWdX7IiVyTFYsPb5hPPmrK
+185KDwAnYxwSaoamxhj7MybCNteUFCjVQtbD2UHl7q5nzEwUbJIO2ibwOCTBw7FO
+zmdCVQ4ex85y/agKnzaqxBg3fnpuRKQmflG24oPhwu64gUW2GZskfCQLmLPX0Lqq
+06FIcS9qgl2o7LaLDLTdS853E4696B9tMXUOgEtvIftZKdVKE/9RqQ6PdwARAQAB
+=Dpj/
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/gradle/checksum-dependency-plugin/cached-pgp-keys/7e/7a1d848e7c2af85eeba69c99e7bf252cf360097e.asc b/gradle/checksum-dependency-plugin/cached-pgp-keys/7e/7a1d848e7c2af85eeba69c99e7bf252cf360097e.asc
new file mode 100644
index 00000000000..2c29fbdf287
--- /dev/null
+++ b/gradle/checksum-dependency-plugin/cached-pgp-keys/7e/7a1d848e7c2af85eeba69c99e7bf252cf360097e.asc
@@ -0,0 +1,16 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQENBFKQ78QBCAC7JYRWDFIDUVKg3upqCY4TtA9wO88x9Madd+2SsZX6dkmMXgDD
+MCAOP5zqFgX0ZoPh/sOnkEx9I8owfwfITN2H85tOdJ9rVvuWzgZXQpDkWExDG25L
+VNVzcTlOC3ZrJevjo62WNL4QPKEnrFPvXa9G+fQabixAPFqBwTjVP5WNABr49tol
+nwNIKNtiqXHXES9J3G02SIjIS8OgbzW0WtSwP8qi8EUzggnCTRCh+lt/Zz1XxEx/
+Zlk07uurOebvJ2wKJU2jhzYKMI48h4AI7qowjU7+IrGmEmSQ/UIyAnPFCcmf4Xyi
+Sa795ddZd1KKy5Zxl7SZk+2s2RXzYP3Yyty5ABEBAAG5AQ0EUpDvxAEIAKYmziBF
+eMz5y9+sl5nOhCZ52H6tbCbmPT5pDS8ct0hFuAocFaOlq0fUyPPtH3S3vgCaNsg+
+yrZgzUSdvwWKWBiJw/vg+Yw8cluNnNScRzaZOlW29rBnKZAvZVuMoQ3WoR/8kF26
+BgSaJ1hRduAQLQMmjONWuQSGsU/AyA0K1TQsHNpAuVJIS2PdOuAnf67YDx9WOn8u
++Bk302Z+7ppy88s95/IyG8Mpv3cqNaaGyfHRwMPIEZxSOKwnh5yhvgp2Il0BTfwW
+WZeK8Ls/uBask2FllcQLgQMxkWFRODUaTK9cjSkmXuu+O/9kLnexUvuCdFUdxHqw
+lz3uqx1u7XBxnBkAEQEAAQ==
+=sePN
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/gradle/checksum-dependency-plugin/cached-pgp-keys/7e/e7bf252cf360097e.fingerprints b/gradle/checksum-dependency-plugin/cached-pgp-keys/7e/e7bf252cf360097e.fingerprints
new file mode 100644
index 00000000000..eee3f4f0e3a
--- /dev/null
+++ b/gradle/checksum-dependency-plugin/cached-pgp-keys/7e/e7bf252cf360097e.fingerprints
@@ -0,0 +1 @@
+7a1d848e7c2af85eeba69c99e7bf252cf360097e
diff --git a/gradle/checksum-dependency-plugin/cached-pgp-keys/81/1d339b6a68ae2e8daeda65d5276962ca56e73c81.asc b/gradle/checksum-dependency-plugin/cached-pgp-keys/81/1d339b6a68ae2e8daeda65d5276962ca56e73c81.asc
new file mode 100644
index 00000000000..97ea9354896
--- /dev/null
+++ b/gradle/checksum-dependency-plugin/cached-pgp-keys/81/1d339b6a68ae2e8daeda65d5276962ca56e73c81.asc
@@ -0,0 +1,16 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQENBFwrcpEBCADYHRnfzETbqrTG345y82fkw/qxr0oryHuCrb1iqYCk77w32PQz
+jspoJBRSCrxTZT9BQJw9Y9kni3ZhlMxJJYT+BdcRPUkxgSw6N0r3CH/mna1XYL39
+hvlhyfh+s9brneYLbOIxOrHAsT3ASgYcDDuNKrgYgGrUB7VifhE7DW6oFnDrYmQI
+CH2ixTeDfuzdcZ66w3+z8eQZLbdDJ9aNY8syvKkvyGsmUhkwSHBJDwW34+nV7MnP
+hDZcfm/yZL/AZ1q5D8SobBJBDnxQSOcGPNgCnPM4UiwrmvTuneEN1vNPM4xWq17B
+/+KurSjDbIndZCnzq0l1xsurq8qeK8tsNNrJABEBAAG5AQ0EXCtykQEIAK64QjtN
+b11UNUk9GAlhkcUPCBSrlnQM4A3Za3sHOT1owfYov6DQxgppDuqTJ10NdluD7M2U
+MuIYw6nuoILcteXFQNlhGsz8Xjze5EPpg18t9c6ZoFUMPVUtDyjyZuKM1yHyo1w8
+Z9zRRmSGgHCWH83+VDUjF1D2CZ4Sfii6Ji5GnGxH68Dq4ZucWArPYGgr3hhz73lx
+SAD8KVyXeMD46hD+lhqlg5lbQ9k+mHwpKUgft35jAuewwhPbY6wb1P/oQOgIFJ7/
+0GsZwJ5zUu+lp6l7N17wLDUCQisz6+MJvyY9wDtiHzI+zBLS2ecacfpOT4GE9K+H
+pmS6gk7fAsRC/8UAEQEAAQ==
+=/SFy
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/gradle/checksum-dependency-plugin/cached-pgp-keys/81/276962ca56e73c81.fingerprints b/gradle/checksum-dependency-plugin/cached-pgp-keys/81/276962ca56e73c81.fingerprints
new file mode 100644
index 00000000000..3f694739bb1
--- /dev/null
+++ b/gradle/checksum-dependency-plugin/cached-pgp-keys/81/276962ca56e73c81.fingerprints
@@ -0,0 +1 @@
+1d339b6a68ae2e8daeda65d5276962ca56e73c81
diff --git a/gradle/checksum-dependency-plugin/cached-pgp-keys/82/120d6f34e627ed3a772ebbfe55c7e5e701832382.asc b/gradle/checksum-dependency-plugin/cached-pgp-keys/82/120d6f34e627ed3a772ebbfe55c7e5e701832382.asc
new file mode 100644
index 00000000000..5fc3aa02a8d
--- /dev/null
+++ b/gradle/checksum-dependency-plugin/cached-pgp-keys/82/120d6f34e627ed3a772ebbfe55c7e5e701832382.asc
@@ -0,0 +1,7 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mI0EVdDLQQEEAJMtYCaTA56YsP5RzQzPvqVTaR2nZ27qRk36blHB9WmXK+NHpGeH
+PHgq59mLPVueo2/M5k/fFrCe36jHePP31gYpFtueeYDfsofHwod0WhsHyC7JfG8d
+jEnSczTCmOHRZ3ed9ef6SeWUozYCQAX/tAbpoCthe0lTDYhFhkzVCe/FABEBAAE=
+=45ZY
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/gradle/checksum-dependency-plugin/cached-pgp-keys/82/55c7e5e701832382.fingerprints b/gradle/checksum-dependency-plugin/cached-pgp-keys/82/55c7e5e701832382.fingerprints
new file mode 100644
index 00000000000..b51de8c0cdb
--- /dev/null
+++ b/gradle/checksum-dependency-plugin/cached-pgp-keys/82/55c7e5e701832382.fingerprints
@@ -0,0 +1 @@
+120d6f34e627ed3a772ebbfe55c7e5e701832382
diff --git a/gradle/checksum-dependency-plugin/cached-pgp-keys/8a/7119b89feb81209430e65c62c2ad9c8a7d4e988a.asc b/gradle/checksum-dependency-plugin/cached-pgp-keys/8a/7119b89feb81209430e65c62c2ad9c8a7d4e988a.asc
new file mode 100644
index 00000000000..b39d4d222b4
--- /dev/null
+++ b/gradle/checksum-dependency-plugin/cached-pgp-keys/8a/7119b89feb81209430e65c62c2ad9c8a7d4e988a.asc
@@ -0,0 +1,26 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBFyrDesBEADSY9ho1u1DQ8MY+jc4xApFAagCd8VB+YT96A8FzvPLuj7f8M4T
+JNjd/Te7kR47SW5KoROiucoVw/YrUnyaHw5Ph+vF1msTlxD3OKU2PiVHI5JJgg/1
+WUioL4wASue+r2QCOc73a2s3eVfSFjozNE7I/gXlbceuN5+7O8a2eEBDCErH6TPn
+yD4ShnnRPtMfBTYKMCV+sclIsjO4buxyCfqySyxHS4vGXxgGxZVvc2HrSbL+JFo0
+PMcjPSaK6u+w2KBo06HS7TngrRkxHmqzuoo4xc8HGaSA9XKyQPOrcerIsdns9EpD
+ahk556qOtRQay77tDwF5bJZvA37DJI3QfVVXTZBFpPhFHmP5Ji/6OTsodVhpTQr1
+mycP+zAyMOzD+gvnJO302PFWCZblMXbmVMToefNIXAAobTOaG3QwDsvftwQX9c0V
+ZTDSoZJXTsYdX/2AOWOU1RMzE+qbzgm/GLZZ9ytLHGdodL4tmo3mitPsm4FLwyUH
+TjcP/SsZZQk2mZyiR7/vl+BvSTqnHTXj+10p1+MIOPiUAwaa9JVglV4odkJHZwwI
+7yEKNqyDeMRBbxtZn79l+qmzsMi+51MRdgPiBRktPdwC6w+bkxfSKCSWdD59fbNg
+91jFktNtUMK3L2NLX6YRuQ6+VRKGqEOI4l8hEDKM7/eS8Y5Dxe5RmesoeQARAQAB
+uQINBFyrDesBEACqVQoHqtE2l/1crv6Ym49ZHT+wtmtfS4D/ZkthHz3Bc0Zne4+B
+DbXtdG1WhUvO+S7CRfeczXxDMmMsUeN0/hzcCG03QguFHQyQL9IIccAZRij6TR2I
+aF/N43fZgfL1ai/TaMgXDv7LTbe44MK3w4jqfrd31Ee+laN+gluG+o+LJBkYfpzC
+MlkXp1Xa5kuFFoaGn+Dyy0MTs37jnbgblyraGogkciERzlOA+3hMnolxTfx5v/Th
+Mq1tngshYw/PkLACejKCpJvi03tJF3Q9d5q81AqSyqthSnfIITfOJ40U3J9pDM8Z
+WJXkkXunlQIUcdNvQAzjegMg1KB8TdVuNcFW7ZrtPAOsSxEBk+Ty/xhXBLxoeHXj
+WwVlbeSAumCZgVqkkvuxc+0gIocqUKjC/VqTyoENX1z8/dbkiGRmvebUJaYxoiPE
+x8h9O30zqKh42ovM5xiEHajZ0kJBLJgg225VCdJ+4ce42LkZ0x67EcDZYdQ97iRo
+rOPqBK11ReeexFsrkfcJoywBnlxIuPKqJ1T70JoqDX9TJHAM2n07kbxjU8E/pqGE
+jezk+oQpJqGTXibFRizvZbKDeBPmJXVCUHGphs0ZXyzgk+WGEqBuqR7K3dZKykCm
+AZui12ZyHxSA/PKzaUKMAQmXrg4f3LxmI8GDl4EmuSykK6wAO0I+/X08pwARAQAB
+=BwIl
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/gradle/checksum-dependency-plugin/cached-pgp-keys/8a/c2ad9c8a7d4e988a.fingerprints b/gradle/checksum-dependency-plugin/cached-pgp-keys/8a/c2ad9c8a7d4e988a.fingerprints
new file mode 100644
index 00000000000..9b5f56b066a
--- /dev/null
+++ b/gradle/checksum-dependency-plugin/cached-pgp-keys/8a/c2ad9c8a7d4e988a.fingerprints
@@ -0,0 +1 @@
+7119b89feb81209430e65c62c2ad9c8a7d4e988a
diff --git a/gradle/checksum-dependency-plugin/cached-pgp-keys/c2/f508c72df8d222c2.fingerprints b/gradle/checksum-dependency-plugin/cached-pgp-keys/c2/f508c72df8d222c2.fingerprints
new file mode 100644
index 00000000000..4c2d6088abd
--- /dev/null
+++ b/gradle/checksum-dependency-plugin/cached-pgp-keys/c2/f508c72df8d222c2.fingerprints
@@ -0,0 +1 @@
+f36ca0c4b500f0cdde0c5aa1913f763cd0f9cfd8
diff --git a/gradle/checksum-dependency-plugin/cached-pgp-keys/cf/2b724c66faa750cf.fingerprints b/gradle/checksum-dependency-plugin/cached-pgp-keys/cf/2b724c66faa750cf.fingerprints
new file mode 100644
index 00000000000..3f694739bb1
--- /dev/null
+++ b/gradle/checksum-dependency-plugin/cached-pgp-keys/cf/2b724c66faa750cf.fingerprints
@@ -0,0 +1 @@
+1d339b6a68ae2e8daeda65d5276962ca56e73c81
diff --git a/gradle/checksum-dependency-plugin/cached-pgp-keys/d8/913f763cd0f9cfd8.fingerprints b/gradle/checksum-dependency-plugin/cached-pgp-keys/d8/913f763cd0f9cfd8.fingerprints
new file mode 100644
index 00000000000..4c2d6088abd
--- /dev/null
+++ b/gradle/checksum-dependency-plugin/cached-pgp-keys/d8/913f763cd0f9cfd8.fingerprints
@@ -0,0 +1 @@
+f36ca0c4b500f0cdde0c5aa1913f763cd0f9cfd8
diff --git a/gradle/checksum-dependency-plugin/cached-pgp-keys/d8/f36ca0c4b500f0cdde0c5aa1913f763cd0f9cfd8.asc b/gradle/checksum-dependency-plugin/cached-pgp-keys/d8/f36ca0c4b500f0cdde0c5aa1913f763cd0f9cfd8.asc
new file mode 100644
index 00000000000..10f25d77d22
--- /dev/null
+++ b/gradle/checksum-dependency-plugin/cached-pgp-keys/d8/f36ca0c4b500f0cdde0c5aa1913f763cd0f9cfd8.asc
@@ -0,0 +1,26 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBGA+eiIBEADDcMhLJttJzEdu0drh/9d3wtVvdCm6cfDk9dVFxk4dt5MLe0f+
+Bv8+WKMmfbsmZzj4/f9nwYMXk3yx41iiN41uuc+YTT8lHwsOdmlPClBAQmtg+VT+
+xTIXqGKQmsElNjKSnGMzC4wI126cZrlv9uuy1NkDfjv1UM5hCVW/e+mysfgDbF9G
+cEJajBJIQc4Ps99YruNzbZr+kRis76A9CGtBcxVDniNcNNO7ch7rQ13Df87gQl0x
+WJrech4mJRhfprqkeM9RD6khTpBAXSXuPOrM6x0hIWEILq0JllYQ00G1AznXgogP
+fbsqbnN1wiztwXRVOupSOsH01CN8ANS5e+ZIWrc49QxpRHLue+r9ijDVAWQlF3N7
+2AhUcK1//BApF095z2g1d9W/+BVbwn0MZnLjjNHZqU0myJxSSBfSS3HsKd+xWurk
+Lp5yBEUaxgKBg90f8ikOl2DQxNt1EPucI51DwsfPbMXkAEEuBTOaZssIAI8DMxNX
+32VmM5O9ZPR8HuMDoTgwYBCuemp0Zt5JnWyhWWBvpWzz+4qh3ssAysjO7Zmpkh6G
+2vmG4WNzY0ZsttpvKLC/Ry1c8oKpw5vCM7+EYpH/lj7i9200hLQ+82D2ndxNPbBJ
+RNUBzBmiyAPcBQ8IZZjOpAfBC4UqaCHDfgz9hPlhEHZAEFHLBHEGd9eXwQARAQAB
+uQINBGA+eiIBEACXWHVGrQDyqTqboO3vXxCyM7NJgCEeN5Cp7xK+SGBPz/z2qfol
+IR/lbiFqL/aaGVaSsCKh2yz8kGuPNVsGLyfvO0pWRb8reEG9eXTBVJxZmOQ4Ulhm
+oBKLvEniOzPCqEPWGxSv2FBhXKeJyViLMD+go/6+jXfJmqBPFFALAN3CWiIZDrCj
+FqiduWXMapSWptVDtWsq2Q+LD97U0+ESWzvt7BVs/NWzTbUWvXHYvipZ2ZFZstr+
+ym1G4IsjYB2iy46gjePYh2aG6YSsG9tGe0FMVf1/dJaGz3U0ZMD6qicm5FYDNaXq
+217pXOd+gvvpi3SxdaOiSMfYPuhoAv5y66+x+zqWNsNVPeRZydtWhbvhpNERSvCx
+r9Agh+4WC0XPQEGrC+Hyau8rYcwMndAwR/Pw4wNKJuB7IqWnk8y/1m3Br2vbc+hi
+uhFVOx+ZkBJrlUcFLVT2D/3fonDrxPWmOJvzgqlSeZaFMFNe5/UoXBAbZb/1E1pj
+6uWrun11NOrZdsD4Eic6PzERdWYoWgd+7fFqeR3CQDMyOY1XvetOgPTCzwAYjLzR
+UXTENayf/mhXtIbiqYLrx8ljz3HN5XUcFo9Q5Zep1e3IJNrC34dea6azh/N8cgPa
+4vEKkHI3g+udt8n08WXGMMgrdvi3W/5Sx2UuKjJn/Iu0s13e+C9/odyLhwARAQAB
+=X8g8
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/gradle/checksum-dependency-plugin/cached-pgp-keys/db/429c8816dea04cdb.fingerprints b/gradle/checksum-dependency-plugin/cached-pgp-keys/db/429c8816dea04cdb.fingerprints
new file mode 100644
index 00000000000..12884b6f291
--- /dev/null
+++ b/gradle/checksum-dependency-plugin/cached-pgp-keys/db/429c8816dea04cdb.fingerprints
@@ -0,0 +1 @@
+56b505dc8a29c69138a430b9429c8816dea04cdb
diff --git a/gradle/checksum-dependency-plugin/cached-pgp-keys/db/56b505dc8a29c69138a430b9429c8816dea04cdb.asc b/gradle/checksum-dependency-plugin/cached-pgp-keys/db/56b505dc8a29c69138a430b9429c8816dea04cdb.asc
new file mode 100644
index 00000000000..b5fe8cac30d
--- /dev/null
+++ b/gradle/checksum-dependency-plugin/cached-pgp-keys/db/56b505dc8a29c69138a430b9429c8816dea04cdb.asc
@@ -0,0 +1,26 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBGB980QBEADLBOfY981RbUf7zI9AoXcxGignXkYbeSvxIMML9vAbnhmuHwa6
+h+81ZTY2XK7Rz211y129YidPykkiLX9mY+OWvJsj7dTyVTcIm6MU5ETDvovfmKWg
+5sJRrANAnkZ73UVJIKTQC9HonBIpiPLmDEBfReHkNsXtYqS4fyZO5tkjy9ejaw2p
+5qpOS9WixIvZT43OfzH+8O4ecmDrOZ20azogcWqLCQ/ZDbfnyHFH+BvA8bn4bS6y
+304655N6cxDbShHrLWP6erbGozmLu/hVabCMSJgGRRb8NcUzJQ5rwh27SvKyMGKE
+8u1ek57d2wv2pI+sACBMzYlrP1S9MTcpUsQ4YvDQi9Ic1QDw7f2KkEsEnxs7h17h
+AhbBwEvNWqpFkKjI4ApYsM+/fPo0/lsT0lskjKrCnoEL9+sLKDcp85cR1dPC5ELf
+b2bhgjqccIk2gASrjmTiryF7gUiMTgZVU5PF9f0+p1pGqC4GIjJOf/JGhhGEyzVt
+BNvJWUgImqWbSFOKWfvnmdjZyULAVouxrrxF1vPN2U7KFurmSQV6tq/1Uf/qccR9
+/uhEI30ypv4OrVi+8WoVsEamag/AlnRLFCEjdfB0oUy7V/lPqMxRoxmhiTX+cCjM
+QkFfcspJt830vwct0pi4rtYt9pk1Roh9tOKh2UKRDGL5DE3rZbJYs+6TAQARAQAB
+uQINBGB980QBEADfm6alrriLjrDLwBlQDIayE/SCyieZlfCsdcM2tcnFF8dznHMp
+Dimke7NmZ7YYpuSi4im6920D3omARVBHE+JKAcIchCRPRTH0ZvbVx7bzdiPztc/6
+su9YJ6NbJS81Mk5c2pAdw6e0qd6Zw98aVyjfcd8Dy42uuBfQrHSuYYpXy8kn+WZ7
+zou7d0CVskvel8GhqPshY4Vwm8aBDXrydEIoEYhlhnzQTUmVylaHLQAnKSJmkWCK
+o7UUkH1B2vfTZXAIVOt1q+5bkR82AT95Jj5JzKfoneoeXeIwIIbj+j7y1FM44e3V
+DhjY7TsN4tyOqzMRZ5/6GcVpJ9Zns35o+pGrVa02CUQFEdZFrH1fF84MglydRgHJ
+QsFuqOUt5cQgRpXMAhu/aex+Y1YBjyWPqRFtIqJMqejLRZ2SGAxQWOXOrW8nJQ0+
+2leLsFhgbOvtYRI9NBm2kPZomHnrHmmG5EaBwjOu0xXPMEooIICUfCPlqmonXJNI
+Pm2pZXp7geJ9zV7b83iWkJK4YqIs4UM78T1kb2EUHguAR+eS7kc8Z0wKxn0n/1e7
+lT5/hlp7ZR7wn/qjr3SAR6RjfIevakD1tK1zj4wJgPWmTnraeyyzrOCq7z4tNGgG
+ZSvSrKWckb4h35iSEs6mcAEVRrzB6a++HBGlTCOQQ/is/0uUFr4yP5R7oQARAQAB
+=HqzY
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/gradle/checksum-dependency-plugin/cached-pgp-keys/e3/fb8a646f1e894ce3.fingerprints b/gradle/checksum-dependency-plugin/cached-pgp-keys/e3/fb8a646f1e894ce3.fingerprints
new file mode 100644
index 00000000000..c6ef2dc3355
--- /dev/null
+++ b/gradle/checksum-dependency-plugin/cached-pgp-keys/e3/fb8a646f1e894ce3.fingerprints
@@ -0,0 +1 @@
+ed09733fa05dedf15100abeb32bbf14af07ca77b
diff --git a/gradle/checksum-dependency-plugin/cached-pgp-keys/ec/fb98a869bd0d34ec.fingerprints b/gradle/checksum-dependency-plugin/cached-pgp-keys/ec/fb98a869bd0d34ec.fingerprints
new file mode 100644
index 00000000000..eee3f4f0e3a
--- /dev/null
+++ b/gradle/checksum-dependency-plugin/cached-pgp-keys/ec/fb98a869bd0d34ec.fingerprints
@@ -0,0 +1 @@
+7a1d848e7c2af85eeba69c99e7bf252cf360097e
diff --git a/gradle/checksum-dependency-plugin/cached-pgp-keys/fb/3e8a7f8a3597e7fb.fingerprints b/gradle/checksum-dependency-plugin/cached-pgp-keys/fb/3e8a7f8a3597e7fb.fingerprints
new file mode 100644
index 00000000000..1666ae48805
--- /dev/null
+++ b/gradle/checksum-dependency-plugin/cached-pgp-keys/fb/3e8a7f8a3597e7fb.fingerprints
@@ -0,0 +1 @@
+bd3b8aab16ea001cda79d4773e8a7f8a3597e7fb
diff --git a/gradle/checksum-dependency-plugin/cached-pgp-keys/fb/5531748394c323fb.fingerprints b/gradle/checksum-dependency-plugin/cached-pgp-keys/fb/5531748394c323fb.fingerprints
new file mode 100644
index 00000000000..31b8edc48ac
--- /dev/null
+++ b/gradle/checksum-dependency-plugin/cached-pgp-keys/fb/5531748394c323fb.fingerprints
@@ -0,0 +1 @@
+cde577234159e222bc56e50f9c61220417aaa02e
diff --git a/gradle/checksum-dependency-plugin/cached-pgp-keys/fb/bd3b8aab16ea001cda79d4773e8a7f8a3597e7fb.asc b/gradle/checksum-dependency-plugin/cached-pgp-keys/fb/bd3b8aab16ea001cda79d4773e8a7f8a3597e7fb.asc
new file mode 100644
index 00000000000..cf26dbb3b9a
--- /dev/null
+++ b/gradle/checksum-dependency-plugin/cached-pgp-keys/fb/bd3b8aab16ea001cda79d4773e8a7f8a3597e7fb.asc
@@ -0,0 +1,21 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQGNBGIGFdMBDACxYTVySewU+L9mF1hsrTeML4l3FgbPeTMscRE+WDwAIwdZ3Pr1
+jbXzjaMf/VZ2C0Z0hgau9kYa39QgFfa308MphaFgpx4zqgywkd5DpzWDeV4yoKpi
+BobMNjt+Ue1bc5OxtCR4WJ2q63WfBqXVcAs+ldHCILhMhcftyf12b3+PkSWPX4aF
+oAsDURNyAW6G8ZGj+CpcKJpHQCchKIeM7kjJICIr9Z+0yvgPUhBwmGUSEzjJcp8a
+e+p1hYsrbOStvzjksEYX/oi7X8PZOxcX3h5E07y/d7/dBplU6ayUm6IH1XQi6hX1
+XVT15JXGMhaVs4097X6kQqWpXesfCnyRT+emrbRv1yvM+mMudH2Gf7OeKtD6TOre
+MpKw5fhcoFGfLJg7YyU9ZQORWpyR5OUykNEeq9uTm7YFXe08FITlorEfdF8McK2X
+bq0SmbBwb2v+L1iCdv1B27ZgZ3NVB/42rdk/+Zr8EqUj65u7h/OEGN17sYxt98Ag
+MfAdZg+AHB80IQkAEQEAAbkBjQRiBhXTAQwAxbeF7bwIXysejls1ij1k4mHt+mnW
+LTdfjZov8J80EAW2VWKPGZvG2YaA4f02tXv3T7hVhc6DExLUkRJkkmFcGgk3N2Wg
+Cq8Sr/zDSNUpLvrL9YWDVuWKevpg1Pf7BC8HY59eflhzNxVs3hfR+XyZHt/RIfQu
+pE5bRnjaNbxbabajTujiUF2CKy8ncy+aAVWGAuRkSoZvV+eTDSLPkbO452oHZ5Gx
+YQILzmYvhB85CMf7mn4CkPoI22KHkvxym8BP0rJkeTVX0TIRSHLM46VjwKjCMfOg
+tj+XrS150kyDhf5blev6GurbQOUOAB/6mKqDUYbnGI/7/z/HwaImztRVvMKLMl6Y
+gV6CgG2i+yGatVNaHHM0nC0G34Pg8qycItKDwBrJVa7VvMe/S+JLR9KICsgl8oEj
+Tcrubkhs+CMp7UyPUlxFnguD+aW+Atq1yclCsKIEXmpp+kNKUZYN+33jCBOH3TzS
+WonRa6C/sN+gWa3of2VJvY42bji6CxnLBw0nABEBAAE=
+=UZaf
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/src/bshclient/src/main/java/org/apache/jmeter/util/BeanShellClient.java b/src/bshclient/src/main/java/org/apache/jmeter/util/BeanShellClient.java
index 207009bd905..dcf510d6cc5 100644
--- a/src/bshclient/src/main/java/org/apache/jmeter/util/BeanShellClient.java
+++ b/src/bshclient/src/main/java/org/apache/jmeter/util/BeanShellClient.java
@@ -36,9 +36,9 @@ public class BeanShellClient {
private static final int MINARGS = 3;
- public static void main(String [] args) throws Exception{
+ public static void main(String [] args) throws Exception {
if (args.length < MINARGS){
- System.out.println("Please provide "+MINARGS+" or more arguments:");
+ System.out.println("Please provide " + MINARGS + " or more arguments:");
System.out.println("serverhost serverport filename [arg1 arg2 ...]");
System.out.println("e.g. ");
System.out.println("localhost 9000 extras/remote.bsh apple blake 7");
@@ -50,9 +50,9 @@ public static void main(String [] args) throws Exception{
int port=Integer.parseInt(portString)+1;// convert to telnet port
- System.out.println("Connecting to BSH server on "+host+":"+portString);
+ System.out.println("Connecting to BSH server on " + host + ":" + portString);
- try (Socket sock = new Socket(host,port);
+ try (Socket sock = new Socket(host, port);
InputStream is = sock.getInputStream();
OutputStream os = sock.getOutputStream()) {
SockRead sockRead = new SockRead(is);
@@ -79,7 +79,7 @@ public static void main(String [] args) throws Exception{
}
}
- private static void sendLine( String line, OutputStream outPipe )
+ private static void sendLine(String line, OutputStream outPipe)
throws IOException
{
outPipe.write(line.getBytes(StandardCharsets.UTF_8));
@@ -96,7 +96,7 @@ public SockRead(InputStream _is) {
@Override
@SuppressWarnings("CatchAndPrintStackTrace")
- public void run(){
+ public void run() {
System.out.println("Reading responses from server ...");
int x = 0;
try {